|
@@ -24,6 +24,7 @@
|
|
|
// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames
|
|
|
// Copyright (C) 2015 Faust Logic, Inc.
|
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
|
+
|
|
|
#include "platform/platform.h"
|
|
|
#include "console/console.h"
|
|
|
|
|
@@ -965,6 +966,38 @@ breakContinue:
|
|
|
currentNewObject->setModDynamicFields(true);
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ currentNewObject->reloadReset(); // AFX (reload-reset)
|
|
|
+ // Does it have a parent object? (ie, the copy constructor : syntax, not inheriance)
|
|
|
+ if(*objParent)
|
|
|
+ {
|
|
|
+ // Find it!
|
|
|
+ SimObject *parent;
|
|
|
+ if(Sim::findObject(objParent, parent))
|
|
|
+ {
|
|
|
+ // Con::printf(" - Parent object found: %s", parent->getClassName());
|
|
|
+
|
|
|
+ // temporarily block name change
|
|
|
+ SimObject::preventNameChanging = true;
|
|
|
+ currentNewObject->setCopySource( parent );
|
|
|
+ currentNewObject->assignFieldsFrom(parent);
|
|
|
+ // restore name changing
|
|
|
+ SimObject::preventNameChanging = false;
|
|
|
+
|
|
|
+ // copy any substitution statements
|
|
|
+ SimDataBlock* parent_db = dynamic_cast<SimDataBlock*>(parent);
|
|
|
+ if (parent_db)
|
|
|
+ {
|
|
|
+ SimDataBlock* currentNewObject_db = dynamic_cast<SimDataBlock*>(currentNewObject);
|
|
|
+ if (currentNewObject_db)
|
|
|
+ currentNewObject_db->copySubstitutionsFrom(parent_db);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ Con::errorf(ConsoleLogEntry::General, "%d: Unable to find parent object %s for %s.", lineNumber, objParent, (const char*)callArgv[1]);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// Advance the IP past the create info...
|
|
|
ip += 7;
|