Преглед изворни кода

add reload status to onNewDataBlock callback
and skip calling onremove/onadd if we're not reloading

AzaezelX пре 5 месеци
родитељ
комит
2ae10c7ce1

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

@@ -345,7 +345,7 @@ bool Camera::onNewDataBlock( GameBaseData *dptr, bool reload )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
 
 
    return true;
    return true;
 }
 }

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

@@ -601,7 +601,7 @@ bool Debris::onNewDataBlock( GameBaseData *dptr, bool reload )
 
 
    if (mDataBlock->isTempClone())
    if (mDataBlock->isTempClone())
       return true;
       return true;
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 
 
 }
 }

+ 1 - 1
Engine/source/T3D/fx/explosion.cpp

@@ -1127,7 +1127,7 @@ bool Explosion::onNewDataBlock( GameBaseData *dptr, bool reload )
 
 
    if (mDataBlock->isTempClone())
    if (mDataBlock->isTempClone())
       return true;
       return true;
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -474,7 +474,7 @@ bool Lightning::onNewDataBlock( GameBaseData *dptr, bool reload )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

+ 1 - 1
Engine/source/T3D/fx/particleEmitter.cpp

@@ -1131,7 +1131,7 @@ bool ParticleEmitter::onNewDataBlock( GameBaseData *dptr, bool reload )
      return true;
      return true;
    }
    }
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

+ 1 - 1
Engine/source/T3D/fx/particleEmitterNode.cpp

@@ -254,7 +254,7 @@ bool ParticleEmitterNode::onNewDataBlock( GameBaseData *dptr, bool reload )
       return false;
       return false;
 
 
    // Todo: Uncomment if this is a "leaf" class
    // Todo: Uncomment if this is a "leaf" class
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

+ 1 - 1
Engine/source/T3D/fx/precipitation.cpp

@@ -614,7 +614,7 @@ bool Precipitation::onNewDataBlock( GameBaseData *dptr, bool reload )
       initMaterials();
       initMaterials();
    }
    }
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

+ 1 - 1
Engine/source/T3D/fx/ribbonNode.cpp

@@ -159,7 +159,7 @@ bool RibbonNode::onNewDataBlock( GameBaseData *dptr, bool reload )
       return false;
       return false;
 
 
    // Todo: Uncomment if this is a "leaf" class
    // Todo: Uncomment if this is a "leaf" class
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

+ 1 - 1
Engine/source/T3D/fx/splash.cpp

@@ -451,7 +451,7 @@ bool Splash::onNewDataBlock( GameBaseData *dptr, bool reload )
    if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
    if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -95,7 +95,7 @@ IMPLEMENT_CALLBACK( GameBaseData, onAdd, void, ( GameBase* obj ), ( obj ),
       "}\n\n"
       "}\n\n"
    "@endtsexample\n" );
    "@endtsexample\n" );
 
 
-IMPLEMENT_CALLBACK( GameBaseData, onNewDataBlock, void, ( GameBase* obj ), ( obj ),
+IMPLEMENT_CALLBACK( GameBaseData, onNewDataBlock, void, ( GameBase* obj, bool reload), ( obj, reload),
    "@brief Called when the object has a new datablock assigned.\n\n"
    "@brief Called when the object has a new datablock assigned.\n\n"
    "@param obj the GameBase object\n\n"
    "@param obj the GameBase object\n\n"
    "@see onAdd for an example\n" );
    "@see onAdd for an example\n" );
@@ -512,12 +512,12 @@ void GameBase::scriptOnAdd()
       mDataBlock->onAdd_callback( this );
       mDataBlock->onAdd_callback( this );
 }
 }
 
 
-void GameBase::scriptOnNewDataBlock()
+void GameBase::scriptOnNewDataBlock(bool reload)
 {
 {
    // Script onNewDataBlock() must be called by the leaf class
    // Script onNewDataBlock() must be called by the leaf class
    // after everything is loaded.
    // after everything is loaded.
    if (mDataBlock && !isGhost())
    if (mDataBlock && !isGhost())
-      mDataBlock->onNewDataBlock_callback( this );
+      mDataBlock->onNewDataBlock_callback( this, reload);
 }
 }
 
 
 void GameBase::scriptOnRemove()
 void GameBase::scriptOnRemove()

+ 2 - 2
Engine/source/T3D/gameBase/gameBase.h

@@ -115,7 +115,7 @@ public:
    /// @{
    /// @{
    DECLARE_CALLBACK( void, onAdd, ( GameBase* obj ) );
    DECLARE_CALLBACK( void, onAdd, ( GameBase* obj ) );
    DECLARE_CALLBACK( void, onRemove, ( GameBase* obj ) );
    DECLARE_CALLBACK( void, onRemove, ( GameBase* obj ) );
-   DECLARE_CALLBACK( void, onNewDataBlock, ( GameBase* obj ) );
+   DECLARE_CALLBACK( void, onNewDataBlock, ( GameBase* obj, bool reload) );
    DECLARE_CALLBACK( void, onMount, ( SceneObject* obj, SceneObject* mountObj, S32 node ) );
    DECLARE_CALLBACK( void, onMount, ( SceneObject* obj, SceneObject* mountObj, S32 node ) );
    DECLARE_CALLBACK( void, onUnmount, ( SceneObject* obj, SceneObject* mountObj, S32 node ) );
    DECLARE_CALLBACK( void, onUnmount, ( SceneObject* obj, SceneObject* mountObj, S32 node ) );
    /// @}
    /// @}
@@ -299,7 +299,7 @@ public:
    /// Executes the 'onNewDataBlock' script function for this object.
    /// Executes the 'onNewDataBlock' script function for this object.
    ///
    ///
    /// @note This must be called after everything is loaded.
    /// @note This must be called after everything is loaded.
-   void scriptOnNewDataBlock();
+   void scriptOnNewDataBlock(bool reload = false);
 
 
    /// Executes the 'onRemove' script function for this object.
    /// Executes the 'onRemove' script function for this object.
    /// @note This must be called while the object is still valid
    /// @note This must be called while the object is still valid

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

@@ -422,7 +422,7 @@ bool Item::onNewDataBlock( GameBaseData *dptr, bool reload )
       return false;
       return false;
 
 
    if (!mSubclassItemHandlesScene)
    if (!mSubclassItemHandlesScene)
-      scriptOnNewDataBlock();
+      scriptOnNewDataBlock(reload);
 
 
    if ( isProperlyAdded() )
    if ( isProperlyAdded() )
       _updatePhysics();
       _updatePhysics();

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

@@ -142,7 +142,7 @@ bool MissionMarker::onNewDataBlock( GameBaseData *dptr, bool reload )
    mDataBlock = dynamic_cast<MissionMarkerData*>( dptr );
    mDataBlock = dynamic_cast<MissionMarkerData*>( dptr );
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
       return(false);
       return(false);
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return(true);
    return(true);
 }
 }
 
 

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

@@ -181,7 +181,7 @@ bool PathCamera::onNewDataBlock( GameBaseData *dptr, bool reload )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -134,7 +134,7 @@ bool PathShape::onNewDataBlock(GameBaseData* dptr, bool reload)
    if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
    if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -1923,7 +1923,7 @@ bool Player::onNewDataBlock( GameBaseData *dptr, bool reload )
    onScaleChanged();
    onScaleChanged();
    resetWorldBox();
    resetWorldBox();
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -350,7 +350,7 @@ bool ProximityMine::onNewDataBlock( GameBaseData* dptr, bool reload )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -906,7 +906,7 @@ bool RigidShape::onNewDataBlock(GameBaseData* dptr, bool reload)
    else
    else
       mRigid.setObjectInertia(mObjBox.maxExtents - mObjBox.minExtents);
       mRigid.setObjectInertia(mObjBox.maxExtents - mObjBox.minExtents);
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
 
 
    return true;
    return true;
 }
 }

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

@@ -219,7 +219,7 @@ bool StaticShape::onNewDataBlock(GameBaseData* dptr, bool reload)
    if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
    if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -465,7 +465,7 @@ bool Trigger::onNewDataBlock( GameBaseData *dptr, bool reload )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
    if ( !mDataBlock || !Parent::onNewDataBlock( dptr, reload ) )
       return false;
       return false;
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -545,7 +545,7 @@ bool AITurretShape::onNewDataBlock(GameBaseData* dptr, bool reload)
       mShapeInstance->setTimeScale(mStateAnimThread,0);
       mShapeInstance->setTimeScale(mStateAnimThread,0);
    }
    }
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

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

@@ -440,7 +440,7 @@ bool TurretShape::onNewDataBlock(GameBaseData* dptr, bool reload)
 
 
    if (!mSubclassTurretShapeHandlesScene)
    if (!mSubclassTurretShapeHandlesScene)
    {
    {
-      scriptOnNewDataBlock();
+      scriptOnNewDataBlock(reload);
    }
    }
 
 
    return true;
    return true;

+ 1 - 1
Engine/source/T3D/vehicles/flyingVehicle.cpp

@@ -407,7 +407,7 @@ bool FlyingVehicle::onNewDataBlock(GameBaseData* dptr, bool reload)
          mJetThread[i] = 0;
          mJetThread[i] = 0;
    }
    }
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

+ 1 - 1
Engine/source/T3D/vehicles/hoverVehicle.cpp

@@ -549,7 +549,7 @@ bool HoverVehicle::onNewDataBlock(GameBaseData* dptr, bool reload)
    }
    }
 
 
    // Todo: Uncomment if this is a "leaf" class
    // Todo: Uncomment if this is a "leaf" class
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
 
 
    return true;
    return true;
 }
 }

+ 1 - 1
Engine/source/T3D/vehicles/wheeledVehicle.cpp

@@ -711,7 +711,7 @@ bool WheeledVehicle::onNewDataBlock(GameBaseData* dptr, bool reload)
          mJetSound = SFX->createSource( mDataBlock->getWheeledVehicleSoundsProfile(WheeledVehicleData::JetSound), &getTransform() );
          mJetSound = SFX->createSource( mDataBlock->getWheeledVehicleSoundsProfile(WheeledVehicleData::JetSound), &getTransform() );
    }
    }
 
 
-   scriptOnNewDataBlock();
+   scriptOnNewDataBlock(reload);
    return true;
    return true;
 }
 }
 
 

+ 1 - 1
Engine/source/afx/afxSpellBook.cpp

@@ -206,7 +206,7 @@ bool afxSpellBook::onNewDataBlock(GameBaseData* dptr, bool reload)
   if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
   if (!mDataBlock || !Parent::onNewDataBlock(dptr, reload))
     return false;
     return false;
 
 
-  scriptOnNewDataBlock();
+  scriptOnNewDataBlock(reload);
 
 
   return true;
   return true;
 }
 }

+ 4 - 4
Engine/source/afx/ce/afxParticleEmitter.cpp

@@ -1064,7 +1064,7 @@ bool afxParticleEmitter::onNewDataBlock(GameBaseData* dptr, bool reload)
   if (mDataBlock->isTempClone())
   if (mDataBlock->isTempClone())
     return true;
     return true;
 
 
-  scriptOnNewDataBlock();
+  scriptOnNewDataBlock(reload);
   return true;
   return true;
 }
 }
 
 
@@ -1108,7 +1108,7 @@ bool afxParticleEmitterVector::onNewDataBlock(GameBaseData* dptr, bool reload)
   if (mDataBlock->isTempClone())
   if (mDataBlock->isTempClone())
     return true;
     return true;
 
 
-  scriptOnNewDataBlock();
+  scriptOnNewDataBlock(reload);
   return true;
   return true;
 }
 }
 
 
@@ -1177,7 +1177,7 @@ bool afxParticleEmitterCone::onNewDataBlock(GameBaseData* dptr, bool reload)
   if (mDataBlock->isTempClone())
   if (mDataBlock->isTempClone())
     return true;
     return true;
 
 
-  scriptOnNewDataBlock();
+  scriptOnNewDataBlock(reload);
   return true;
   return true;
 }
 }
 
 
@@ -1294,7 +1294,7 @@ bool afxParticleEmitterPath::onNewDataBlock(GameBaseData* dptr, bool reload)
   if (mDataBlock->isTempClone())
   if (mDataBlock->isTempClone())
     return true;
     return true;
 
 
-  scriptOnNewDataBlock();
+  scriptOnNewDataBlock(reload);
   return true;
   return true;
 }
 }
 
 

+ 2 - 4
Templates/BaseGame/game/core/utility/scripts/gameObjectManagement.tscript

@@ -78,17 +78,15 @@ function spawnGameObject(%name, %addToScene)
 	return 0;
 	return 0;
 }
 }
 
 
-function GameBaseData::onNewDataBlock(%this, %obj)
+function GameBaseData::onNewDataBlock(%this, %obj, %reload)
 {
 {
-   if (%obj.firstDataCheck)
+   if (%reload)
    {
    {
       if(%this.isMethod("onRemove"))
       if(%this.isMethod("onRemove"))
          %this.onRemove(%obj);
          %this.onRemove(%obj);
       if(%this.isMethod("onAdd"))
       if(%this.isMethod("onAdd"))
          %this.onAdd(%obj);
          %this.onAdd(%obj);
    }
    }
-   else
-      %obj.firstDataCheck = true;
 }
 }
 
 
 function saveGameObject(%name, %tamlPath, %scriptPath)
 function saveGameObject(%name, %tamlPath, %scriptPath)