Browse Source

Resolve issue #163

Fixed and assert on changing material, and we now map the material to the MATMGR by name instead of type.
thecelloman 12 năm trước cách đây
mục cha
commit
7e5ddf4ca2

+ 2 - 2
Engine/source/T3D/shapeBase.cpp

@@ -5127,8 +5127,8 @@ DefineEngineMethod( ShapeBase, changeMaterial, void, ( const char* mapTo, Materi
 
    newMat->mMapTo = mapTo;
 
-   // Map the material in the in the matmgr
-   MATMGR->mapMaterial( mapTo, newMat->mMapTo );
+   // Map the material by name in the matmgr
+   MATMGR->mapMaterial( mapTo, newMat->getName() );
 
    // Replace instances with the new material being traded in. For ShapeBase
    // class we have to update the server/client objects separately so both

+ 2 - 2
Engine/source/T3D/tsStatic.cpp

@@ -1120,8 +1120,8 @@ DefineEngineMethod( TSStatic, changeMaterial, void, ( const char* mapTo, Materia
 
    newMat->mMapTo = mapTo;
 
-   // Map the material in the in the matmgr
-   MATMGR->mapMaterial( mapTo, newMat->mMapTo );
+   // Map the material by name in the matmgr
+   MATMGR->mapMaterial( mapTo, newMat->getName() );
 
    // Replace instances with the new material being traded in. Lets make sure that we only
    // target the specific targets per inst, this is actually doing more than we thought

+ 24 - 0
Engine/source/core/tokenizer.cpp

@@ -384,6 +384,30 @@ bool Tokenizer::advanceToken(const bool crossLine, const bool assertAvail)
                   cont = false;
                }
             }
+            else if (c == '/' && mpBuffer[mCurrPos+1] == '*')
+            {
+               // Block quote...
+               if (currPosition == 0)
+               {
+                  // continue to end of block, then let crossLine determine on the next pass
+                  while (mCurrPos < mBufferSize - 1 && (mpBuffer[mCurrPos] != '*' || mpBuffer[mCurrPos + 1] != '/'))
+                     mCurrPos++;
+
+                  if (mCurrPos < mBufferSize - 1)
+                     mCurrPos += 2;
+               }
+               else
+               {
+                  // This is the end of the token.  Continue to EOL
+                  while (mCurrPos < mBufferSize - 1 && (mpBuffer[mCurrPos] != '*' || mpBuffer[mCurrPos + 1] != '/'))
+                     mCurrPos++;
+
+                  if (mCurrPos < mBufferSize - 1)
+                     mCurrPos += 2;
+
+                  cont = false;
+               }
+            }
             else
             {
                // If this is the first non-token character then store the