add reload status to onNewDataBlock callback

and skip calling onremove/onadd if we're not reloading
This commit is contained in:
AzaezelX 2025-04-27 19:49:13 -05:00
parent 2852b33cec
commit 2ae10c7ce1
28 changed files with 35 additions and 37 deletions

View file

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

View file

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