Ver código fonte

Merge pull request #1014 from Azaezel/alpha41/EnumErrata

add safeties for enum math across define boundaries
Brian Roberts 2 anos atrás
pai
commit
3538da30d0

+ 1 - 1
Engine/source/T3D/assets/ShapeAsset.h

@@ -104,7 +104,7 @@ public:
 
    static StringTableEntry smNoShapeAssetFallback;
 
-   static const String mShapeErrCodeStrings[ShapeAssetErrCode::Extended - Parent::Extended + 1];
+   static const String mShapeErrCodeStrings[U32(ShapeAssetErrCode::Extended) - U32(Parent::Extended) + 1];
 
    static U32 getAssetErrCode(AssetPtr<ShapeAsset> shapeAsset) { if (shapeAsset) return shapeAsset->mLoadedState; else return 0; }
 

+ 2 - 2
Engine/source/T3D/fx/lightning.cpp

@@ -691,7 +691,7 @@ void Lightning::processEvent(LightningStrikeEvent* pEvent)
          start.z = mObjScale.z * 0.5f + getPosition().z;
          strikePoint.z += -mObjScale.z * 0.5f;
          bool rayHit = gClientContainer.castRay( start, strikePoint,
-                                      (STATIC_COLLISION_TYPEMASK | WaterObjectType),
+                                      ((U32)STATIC_COLLISION_TYPEMASK | (U32)WaterObjectType),
                                       &rayInfo);
          if( rayHit )
          {
@@ -933,7 +933,7 @@ U32 Lightning::packUpdate(NetConnection* con, U32 mask, BitStream* stream)
    U32 retMask = Parent::packUpdate(con, mask, stream);
 
    // Only write data if this is the initial packet or we've been inspected.
-   if (stream->writeFlag(mask & (InitialUpdateMask | ExtendedInfoMask)))
+   if (stream->writeFlag(mask & ((U32)InitialUpdateMask | (U32)ExtendedInfoMask)))
    {
       // Initial update
       mathWrite(*stream, getPosition());

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

@@ -442,7 +442,7 @@ void GroundPlane::createGeometry( const Frustum& frustum )
    U32 width = mCeil( ( max.x - min.x ) / mSquareSize );
    if( width > MAX_WIDTH )
    {
-      mSquareSize = mCeil( ( max.x - min.x ) / MAX_WIDTH );
+      mSquareSize = mCeil( ( max.x - min.x ) / (F32)MAX_WIDTH );
       width = MAX_WIDTH;
    }
    else if( !width )
@@ -451,7 +451,7 @@ void GroundPlane::createGeometry( const Frustum& frustum )
    U32 height = mCeil( ( max.y - min.y ) / mSquareSize );
    if( height > MAX_HEIGHT )
    {
-      mSquareSize = mCeil( ( max.y - min.y ) / MAX_HEIGHT );
+      mSquareSize = mCeil( ( max.y - min.y ) / (F32)MAX_HEIGHT );
       height = MAX_HEIGHT;
    }
    else if( !height )

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

@@ -1289,14 +1289,14 @@ bool Item::_setStatic(void *object, const char *index, const char *data)
 {
    Item *i = static_cast<Item*>(object);
    i->mAtRest = dAtob(data);
-   i->setMaskBits(InitialUpdateMask | PositionMask);
+   i->setMaskBits((U32)InitialUpdateMask | (U32)PositionMask);
    return true;
 }
 
 bool Item::_setRotate(void *object, const char *index, const char *data)
 {
    Item *i = static_cast<Item*>(object);
-   i->setMaskBits(InitialUpdateMask | RotationMask);
+   i->setMaskBits((U32)InitialUpdateMask | (U32)RotationMask);
    return true;
 }
 

+ 4 - 4
Engine/source/T3D/lightFlareData.cpp

@@ -40,10 +40,10 @@
 #include "collision/collision.h"
 #include "lighting/lightManager.h"
 
-const U32 LightFlareData::LosMask = STATIC_COLLISION_TYPEMASK |
-                                    ShapeBaseObjectType |
-                                    StaticShapeObjectType |
-                                    ItemObjectType;
+const U32 LightFlareData::LosMask = (U32)STATIC_COLLISION_TYPEMASK |
+                                    (U32)ShapeBaseObjectType |
+                                    (U32)StaticShapeObjectType |
+                                    (U32)ItemObjectType;
 
 
 LightFlareState::~LightFlareState()

+ 3 - 3
Engine/source/T3D/player.cpp

@@ -3937,7 +3937,7 @@ void Player::updateActionThread()
 
          if( gClientContainer.castRay( Point3F( pos.x, pos.y, pos.z + 0.01f ),
                Point3F( pos.x, pos.y, pos.z - 2.0f ),
-               STATIC_COLLISION_TYPEMASK | VehicleObjectType, &rInfo ) )
+               (U32)STATIC_COLLISION_TYPEMASK | (U32)VehicleObjectType, &rInfo ) )
          {
             Material* material = ( rInfo.material ? dynamic_cast< Material* >( rInfo.material->getMaterial() ) : 0 );
 
@@ -5562,7 +5562,7 @@ void Player::setTransform(const MatrixF& mat)
    mat.getColumn(3,&pos);
    Point3F rot(0.0f, 0.0f, -mAtan2(-vec.x,vec.y));
    setPosition(pos,rot);
-   setMaskBits(MoveMask | NoWarpMask);
+   setMaskBits((U32)MoveMask | (U32)NoWarpMask);
 }
 
 void Player::getEyeTransform(MatrixF* mat)
@@ -7073,7 +7073,7 @@ void Player:: playImpactSound()
 
       if( gClientContainer.castRay( Point3F( pos.x, pos.y, pos.z + 0.01f ),
                                     Point3F( pos.x, pos.y, pos.z - 2.0f ),
-                                    STATIC_COLLISION_TYPEMASK | VehicleObjectType,
+                                    (U32)STATIC_COLLISION_TYPEMASK | (U32)VehicleObjectType,
                                     &rInfo ) )
       {
          Material* material = ( rInfo.material ? dynamic_cast< Material* >( rInfo.material->getMaterial() ) : 0 );

+ 1 - 1
Engine/source/T3D/staticShape.cpp

@@ -271,7 +271,7 @@ void StaticShape::onUnmount(SceneObject* obj, S32 node)
 U32 StaticShape::packUpdate(NetConnection *connection, U32 mask, BitStream *bstream)
 {
    U32 retMask = Parent::packUpdate(connection,mask,bstream);
-   if (bstream->writeFlag(mask & (PositionMask | ExtendedInfoMask)))
+   if (bstream->writeFlag(mask & ((U32)PositionMask | (U32)ExtendedInfoMask)))
    {
 
       // Write the transform (do _not_ use writeAffineTransform.  Since this is a static

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

@@ -554,7 +554,7 @@ void Trigger::setTransform(const MatrixF & mat)
       base.mul(mWorldToObj);
       mClippedList.setBaseTransform(base);
 
-      setMaskBits(TransformMask | ScaleMask);
+      setMaskBits((U32)TransformMask | (U32)ScaleMask);
    }
 
    testObjects();
@@ -564,7 +564,7 @@ void Trigger::onUnmount( SceneObject *obj, S32 node )
 {
     Parent::onUnmount( obj, node );
    // Make sure the client get's the final server pos.
-   setMaskBits(TransformMask | ScaleMask);
+   setMaskBits((U32)TransformMask | (U32)ScaleMask);
 }
 
 void Trigger::prepRenderImage( SceneRenderState *state )

+ 1 - 1
Engine/source/T3D/turret/aiTurretShape.cpp

@@ -1169,7 +1169,7 @@ U32 AITurretShape::packUpdate(NetConnection *connection, U32 mask, BitStream *bs
    U32 retMask = Parent::packUpdate(connection,mask,bstream);
 
    // Indicate that the transform has changed to update the scan box
-   bstream->writeFlag(mask & (PositionMask | ExtendedInfoMask));
+   bstream->writeFlag(mask & ((U32)PositionMask | (U32)ExtendedInfoMask));
 
    // Handle any state changes that need to be passed along
    if (bstream->writeFlag(mask & TurretStateMask))

+ 3 - 3
Engine/source/afx/afxEffectWrapper.cpp

@@ -827,8 +827,8 @@ void afxEffectWrapper::prestart()
   if ((mEW_timing.fade_in_time + mEW_timing.fade_out_time) > 0.0f)
   {
     mFade_in_end = mEW_timing.delay + mEW_timing.fade_in_time;
-    if (mFull_lifetime == INFINITE_LIFETIME)
-      mFade_out_start = INFINITE_LIFETIME;
+    if (mFull_lifetime == (F32)INFINITE_LIFETIME)
+      mFade_out_start = (F32)INFINITE_LIFETIME;
     else
       mFade_out_start = mEW_timing.delay + mEW_timing.lifetime;
     mDo_fade_inout = true;
@@ -1088,7 +1088,7 @@ void afxEffectWrapper::stop()
   mStopped = true; 
 
   // this resets full_lifetime so it starts to shrink or fade
-  if (mFull_lifetime == INFINITE_LIFETIME)
+  if (mFull_lifetime == (F32)INFINITE_LIFETIME)
   {
     mFull_lifetime = (mElapsed - mEW_timing.delay) + afterStopTime();
 	mLife_end = mElapsed;

+ 2 - 2
Engine/source/afx/ea/afxEA_AnimClip.cpp

@@ -89,7 +89,7 @@ bool afxEA_AnimClip::ea_start()
   do_runtime_substitutions();
 
   afxConstraint* pos_constraint = getPosConstraint();
-  if (mFull_lifetime == INFINITE_LIFETIME && pos_constraint != 0)
+  if (mFull_lifetime == (F32)INFINITE_LIFETIME && pos_constraint != 0)
     anim_lifetime = pos_constraint->getAnimClipDuration(clip_data->clip_name);
   else 
     anim_lifetime = mFull_lifetime;
@@ -197,4 +197,4 @@ bool afxEA_AnimClipDesc::requiresStop(const afxEffectWrapperData* ew, const afxE
   return (timing.lifetime < 0);
 }
 
-//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
+//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//

+ 2 - 2
Engine/source/afx/ea/afxEA_CameraShake.cpp

@@ -91,7 +91,7 @@ bool afxEA_CameraShake::ea_start()
 
   if (aim_constraint && pos_constraint)
   {
-    if (mFull_lifetime <= 0 || mFull_lifetime == INFINITE_LIFETIME)
+    if (mFull_lifetime <= 0 || mFull_lifetime == (F32)INFINITE_LIFETIME)
     {
       Con::errorf("afxEA_CameraShake::ea_start() --  effect requires a finite lifetime.");
       return false;
@@ -193,4 +193,4 @@ bool afxEA_CameraShakeDesc::requiresStop(const afxEffectWrapperData* ew, const a
   return (timing.lifetime < 0);
 }
 
-//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
+//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//

+ 1 - 1
Engine/source/afx/xm/afxXfmMod.cpp

@@ -204,7 +204,7 @@ afxXM_WeightedBaseData::afxXM_WeightedBaseData(const afxXM_WeightedBaseData& oth
 
 bool afxXM_WeightedBaseData::hasFixedWeight() const
 {
-  return (delay == 0.0f && lifetime == afxEffectDefs::INFINITE_LIFETIME && fade_in_time == 0.0f && fade_out_time == 0.0f);
+  return (delay == 0.0f && lifetime == (F32)afxEffectDefs::INFINITE_LIFETIME && fade_in_time == 0.0f && fade_out_time == 0.0f);
 }
 
 F32 afxXM_WeightedBaseData::getWeightFactor() const

+ 18 - 18
Engine/source/gui/containers/guiScrollCtrl.cpp

@@ -149,15 +149,15 @@ bool GuiScrollCtrl::onWake()
       return false;
 
    mTextureObject = mProfile->getBitmapResource();
-   if (mTextureObject && (mProfile->constructBitmapArray() >= BmpStates * BmpCount))
+   if (mTextureObject && (mProfile->constructBitmapArray() >= (U32)BmpStates * (U32)BmpCount))
    {
       mBitmapBounds = mProfile->mBitmapArrayRects.address();
 
       //init
-      mBaseThumbSize = mBitmapBounds[BmpStates * BmpVThumbTopCap].extent.y +
-         mBitmapBounds[BmpStates * BmpVThumbBottomCap].extent.y;
-      mScrollBarThickness      = mBitmapBounds[BmpStates * BmpVPage].extent.x;
-      mScrollBarArrowBtnLength = mBitmapBounds[BmpStates * BmpUp].extent.y;
+      mBaseThumbSize = mBitmapBounds[(U32)BmpStates * (U32)BmpVThumbTopCap].extent.y +
+         mBitmapBounds[(U32)BmpStates * (U32)BmpVThumbBottomCap].extent.y;
+      mScrollBarThickness      = mBitmapBounds[(U32)BmpStates * (U32)BmpVPage].extent.x;
+      mScrollBarArrowBtnLength = mBitmapBounds[(U32)BmpStates * (U32)BmpUp].extent.y;
       computeSizes();
    } 
    else
@@ -1095,7 +1095,7 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     Point2I pos = ( offset + mUpArrowRect.point );
 
     // Up Arrow.
-    S32 upArrowBitmap = ( BmpStates * BmpUp );
+    S32 upArrowBitmap = ((U32)BmpStates * (U32)BmpUp );
     if ( !mVBarEnabled )
     {
         upArrowBitmap += BmpDisabled;
@@ -1114,7 +1114,7 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     pos.y += mBitmapBounds[upArrowBitmap].extent.y;
 
     // Track.
-    S32 trackBitmap = ( BmpStates * BmpVPage );
+    S32 trackBitmap = ((U32)BmpStates * (U32)BmpVPage );
     if ( !mVBarEnabled )
     {
         trackBitmap += BmpDisabled;
@@ -1142,7 +1142,7 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     pos.y += trackRect.extent.y;
 
     // Down Arrow.
-    S32 downArrowBitmap = ( BmpStates * BmpDown );
+    S32 downArrowBitmap = ((U32)BmpStates * (U32)BmpDown );
     if ( !mVBarEnabled )
     {
         downArrowBitmap += BmpDisabled;
@@ -1167,9 +1167,9 @@ void GuiScrollCtrl::drawVScrollBar(const Point2I &offset)
     pos.y = ( offset.y + mVThumbPos );
 
     // Determine the Bitmaps.
-    S32 thumbBitmapTop    = ( BmpStates * BmpVThumbTopCap );
-    S32 thumbBitmapMiddle = ( BmpStates * BmpVThumb );
-    S32 thumbBitmapBottom = ( BmpStates * BmpVThumbBottomCap );
+    S32 thumbBitmapTop    = ((U32)BmpStates * (U32)BmpVThumbTopCap );
+    S32 thumbBitmapMiddle = ((U32)BmpStates * (U32)BmpVThumb );
+    S32 thumbBitmapBottom = ((U32)BmpStates * (U32)BmpVThumbBottomCap );
 
     if ( mHitRegion == VertThumb && mStateDepressed )
     {
@@ -1220,7 +1220,7 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     Point2I pos = ( offset + mLeftArrowRect.point );
 
     // Left Arrow.
-    S32 leftArrowBitmap = ( BmpStates * BmpLeft );
+    S32 leftArrowBitmap = ((U32)BmpStates * (U32)BmpLeft );
     if ( !mHBarEnabled )
     {
         leftArrowBitmap += BmpDisabled;
@@ -1239,7 +1239,7 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     pos.x += mBitmapBounds[leftArrowBitmap].extent.x;
 
     // Track.
-    S32 trackBitmap = ( BmpStates * BmpHPage );
+    S32 trackBitmap = ((U32)BmpStates * (U32)BmpHPage );
     if ( !mHBarEnabled )
     {
         trackBitmap += BmpDisabled;
@@ -1267,7 +1267,7 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     pos.x += trackRect.extent.x;
 
     // Right Arrow.
-    S32 rightArrowBitmap = ( BmpStates * BmpRight );
+    S32 rightArrowBitmap = ((U32)BmpStates * (U32)BmpRight );
     if ( !mHBarEnabled )
     {
         rightArrowBitmap += BmpDisabled;
@@ -1292,9 +1292,9 @@ void GuiScrollCtrl::drawHScrollBar(const Point2I &offset)
     pos.x = ( offset.x + mHThumbPos );
 
     // Determine the Bitmaps.
-    S32 thumbBitmapLeft   = ( BmpStates * BmpHThumbLeftCap );
-    S32 thumbBitmapMiddle = ( BmpStates * BmpHThumb );
-    S32 thumbBitmapRight  = ( BmpStates * BmpHThumbRightCap );
+    S32 thumbBitmapLeft   = ((U32)BmpStates * (U32)BmpHThumbLeftCap );
+    S32 thumbBitmapMiddle = ((U32)BmpStates * (U32)BmpHThumb );
+    S32 thumbBitmapRight  = ((U32)BmpStates * (U32)BmpHThumbRightCap );
 
     if ( mHitRegion == HorizThumb && mStateDepressed )
     {
@@ -1340,7 +1340,7 @@ void GuiScrollCtrl::drawScrollCorner(const Point2I &offset)
    pos.x += mRightArrowRect.point.x + mRightArrowRect.extent.x - 1;
    pos.y += mRightArrowRect.point.y;
    GFX->getDrawUtil()->clearBitmapModulation();
-   GFX->getDrawUtil()->drawBitmapSR(mTextureObject, pos, mBitmapBounds[BmpStates * BmpResize]);
+   GFX->getDrawUtil()->drawBitmapSR(mTextureObject, pos, mBitmapBounds[(U32)BmpStates * (U32)BmpResize]);
 }
 
 //-----------------------------------------------------------------------------

+ 8 - 8
Engine/source/gui/containers/guiWindowCtrl.cpp

@@ -692,7 +692,7 @@ bool GuiWindowCtrl::onWake()
    mTextureObject = mProfile->getBitmapResource();
 
    mBitmapBounds = mProfile->mBitmapArrayRects.address();
-   S32 buttonHeight = mBitmapBounds[BmpStates * BmpClose].extent.y;
+   S32 buttonHeight = mBitmapBounds[(U32)BmpStates * (U32)BmpClose].extent.y;
 
    mTitleHeight = buttonHeight + 4;
 
@@ -1397,7 +1397,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
    // Draw the close button
    Point2I tempUL;
    Point2I tempLR;
-   S32 bmp = BmpStates * BmpClose;
+   S32 bmp = (U32)BmpStates * (U32)BmpClose;
 
    if( mCanClose ) {
       if( mCloseButton.pointInRect( mMousePosition ) )
@@ -1414,9 +1414,9 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
 
    // Draw the maximize button
    if( mMaximized )
-      bmp = BmpStates * BmpNormal;
+      bmp = (U32)BmpStates * (U32)BmpNormal;
    else
-      bmp = BmpStates * BmpMaximize;
+      bmp = (U32)BmpStates * (U32)BmpMaximize;
 
    if( mCanMaximize ) {
       if( mMaximizeButton.pointInRect( mMousePosition ) )
@@ -1433,9 +1433,9 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
 
    // Draw the minimize button
    if( mMinimized )
-      bmp = BmpStates * BmpNormal;
+      bmp = (U32)BmpStates * (U32)BmpNormal;
    else
-      bmp = BmpStates * BmpMinimize;
+      bmp = (U32)BmpStates * (U32)BmpMinimize;
 
    if( mCanMinimize ) {
       if( mMinimizeButton.pointInRect( mMousePosition ) )
@@ -1502,8 +1502,8 @@ void GuiWindowCtrl::positionButtons(void)
    if( !mBitmapBounds || !mAwake )
       return;
 
-   S32 buttonWidth = mBitmapBounds[BmpStates * BmpClose].extent.x;
-   S32 buttonHeight = mBitmapBounds[BmpStates * BmpClose].extent.y;
+   S32 buttonWidth = mBitmapBounds[(U32)BmpStates * (U32)BmpClose].extent.x;
+   S32 buttonHeight = mBitmapBounds[(U32)BmpStates * (U32)BmpClose].extent.y;
    Point2I mainOff = mProfile->mTextOffset;
 
    // Until a pref, if alignment is LEFT, put buttons RIGHT justified.

+ 1 - 1
Engine/source/math/mathUtils.cpp

@@ -1682,7 +1682,7 @@ bool clipFrustumByPolygon( const Point3F* points, U32 numPoints, const RectI& vi
    enum
    {
       MAX_RESULT_VERTICES = 64,
-      MAX_INPUT_VERTICES = MAX_RESULT_VERTICES - Frustum::PlaneCount // Clipping against each plane may add a vertex.
+      MAX_INPUT_VERTICES = (U32)MAX_RESULT_VERTICES - (U32)Frustum::PlaneCount // Clipping against each plane may add a vertex.
    };
 
    AssertFatal( numPoints <= MAX_INPUT_VERTICES, "MathUtils::clipFrustumByPolygon - Too many vertices!" );

+ 1 - 1
Engine/source/navigation/coverPoint.cpp

@@ -326,7 +326,7 @@ void CoverPoint::render(ObjectRenderInst *ri, SceneRenderState *state, BaseMatIn
 
    // Data for decorations.
    GFXStateBlockDesc desc;
-   F32 height = (float)(mSize + 1) / NumSizes * 2.0f;
+   F32 height = (float)(mSize + 1) / (F32)NumSizes * 2.0f;
 
    // Draw an X if we're occupied.
    if(isOccupied())

+ 1 - 1
Engine/source/navigation/navMesh.cpp

@@ -1293,7 +1293,7 @@ bool NavMesh::testEdgeCover(const Point3F &pos, const VectorF &dir, CoverPointDa
    U32 hits = 0;
    for(U32 j = 0; j < CoverPoint::NumSizes; j++)
    {
-      Point3F test = pos + Point3F(0.0f, 0.0f, mWalkableHeight * j / CoverPoint::NumSizes);
+      Point3F test = pos + Point3F(0.0f, 0.0f, mWalkableHeight * j / (F32)CoverPoint::NumSizes);
       if(getContainer()->castRay(test, test + norm * mCoverDist, StaticObjectType, &ray))
       {
          // Test peeking.

+ 14 - 14
Engine/source/persistence/rapidjson/document.h

@@ -1921,20 +1921,20 @@ private:
         kInlineStrFlag  = 0x1000,
 
         // Initial flags of different types.
-        kNullFlag = kNullType,
-        kTrueFlag = kTrueType | kBoolFlag,
-        kFalseFlag = kFalseType | kBoolFlag,
-        kNumberIntFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag,
-        kNumberUintFlag = kNumberType | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag,
-        kNumberInt64Flag = kNumberType | kNumberFlag | kInt64Flag,
-        kNumberUint64Flag = kNumberType | kNumberFlag | kUint64Flag,
-        kNumberDoubleFlag = kNumberType | kNumberFlag | kDoubleFlag,
-        kNumberAnyFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag,
-        kConstStringFlag = kStringType | kStringFlag,
-        kCopyStringFlag = kStringType | kStringFlag | kCopyFlag,
-        kShortStringFlag = kStringType | kStringFlag | kCopyFlag | kInlineStrFlag,
-        kObjectFlag = kObjectType,
-        kArrayFlag = kArrayType,
+        kNullFlag = (U32)kNullType,
+        kTrueFlag = (U32)kTrueType | (U32)kBoolFlag,
+        kFalseFlag = (U32)kFalseType | (U32)kBoolFlag,
+        kNumberIntFlag = (U32)kNumberType | (U32)kNumberFlag | (U32)kIntFlag | (U32)kInt64Flag,
+        kNumberUintFlag = (U32)kNumberType | (U32)kNumberFlag | (U32)kUintFlag | (U32)kUint64Flag | (U32)kInt64Flag,
+        kNumberInt64Flag = (U32)kNumberType | (U32)kNumberFlag | kInt64Flag,
+        kNumberUint64Flag = (U32)kNumberType | (U32)kNumberFlag | (U32)kUint64Flag,
+        kNumberDoubleFlag = (U32)kNumberType | (U32)kNumberFlag | (U32)kDoubleFlag,
+        kNumberAnyFlag = (U32)kNumberType | (U32)kNumberFlag | (U32)kIntFlag | (U32)kInt64Flag | (U32)kUintFlag | (U32)kUint64Flag | (U32)kDoubleFlag,
+        kConstStringFlag = (U32)kStringType | (U32)kStringFlag,
+        kCopyStringFlag = (U32)kStringType | (U32)kStringFlag | (U32)kCopyFlag,
+        kShortStringFlag = (U32)kStringType | (U32)kStringFlag | (U32)kCopyFlag | (U32)kInlineStrFlag,
+        kObjectFlag = (U32)kObjectType,
+        kArrayFlag = (U32)kArrayType,
 
         kTypeMask = 0x07
     };

+ 2 - 2
Engine/source/ts/loader/tsShapeLoader.cpp

@@ -116,12 +116,12 @@ void TSShapeLoader::generateNodeTransform(AppNode* node, F32 t, bool blend, F32
 void TSShapeLoader::updateProgress(S32 major, const char* msg, S32 numMinor, S32 minor)
 {
    // Calculate progress value
-   F32 progress = (F32)major / NumLoadPhases;
+   F32 progress = (F32)major / (F32)NumLoadPhases;
    const char *progressMsg = msg;
 
    if (numMinor)
    {
-      progress += (minor * (1.0f / NumLoadPhases) / numMinor);
+      progress += (minor * (1.0f / (F32)NumLoadPhases) / numMinor);
       progressMsg = avar("%s (%d of %d)", msg, minor + 1, numMinor);
    }