Adds a onPostAdd callback to simObject so we can do handling AFTER the object and it's children have been added successfully.

This commit is contained in:
Areloch 2016-04-30 23:32:10 -05:00
parent bab55d46a9
commit 86dd8a8cf7
2 changed files with 8 additions and 0 deletions

View file

@ -994,6 +994,7 @@ breakContinue:
// This error is usually caused by failing to call Parent::initPersistFields in the class' initPersistFields().
Con::warnf(ConsoleLogEntry::General, "%s: Register object failed for object %s of class %s.", getFileLine(ip), currentNewObject->getName(), currentNewObject->getClassName());
delete currentNewObject;
currentNewObject = NULL;
ip = failJump;
// Prevent stack value corruption
CSTK.popFrame();
@ -1094,6 +1095,9 @@ breakContinue:
case OP_FINISH_OBJECT:
{
if (currentNewObject)
currentNewObject->onPostAdd();
//Assert( objectCreationStackIndex >= 0 );
// Restore the object info from the stack [7/9/2007 Black]
currentNewObject = objectCreationStack[ --objectCreationStackIndex ].newObject;

View file

@ -606,6 +606,10 @@ class SimObject: public ConsoleObject, public TamlCallbacks
/// Called when the object's name is changed.
virtual void onNameChange(const char *name);
/// Called when the adding of the object to the sim is complete, all sub-objects have been processed as well
// This is a special-case function that only really gets used with Entities/BehaviorObjects.
virtual void onPostAdd() {}
///
/// Specifically, these are called by setDataField
/// when a static or dynamic field is modified, see