diff --git a/Engine/source/console/simPersistID.cpp b/Engine/source/console/simPersistID.cpp index c4f26e18e..92b183c9a 100644 --- a/Engine/source/console/simPersistID.cpp +++ b/Engine/source/console/simPersistID.cpp @@ -24,16 +24,26 @@ #include "console/simObject.h" #include "core/util/tDictionary.h" #include "core/util/safeDelete.h" +#include "engineAPI.h" //#define DEBUG_SPEW +IMPLEMENT_CLASS(SimPersistID, "") +END_IMPLEMENT_CLASS; SimPersistID::LookupTableType* SimPersistID::smLookupTable; //----------------------------------------------------------------------------- +SimPersistID::SimPersistID() +{ + mObject = NULL; + mUUID.generate(); + smLookupTable->insertUnique(mUUID, this); +} + SimPersistID::SimPersistID( SimObject* object ) : mObject( object ) { @@ -136,3 +146,13 @@ SimPersistID* SimPersistID::findOrCreate( const Torque::UUID& uuid ) return pid; } + +DefineNewEngineMethod(SimPersistID, getUUID, Torque::UUID, (), , "") +{ + return object->getUUID(); +} + +DefineNewEngineMethod(SimPersistID, getObject, SimObject*, (), , "") +{ + return object->getObject(); +} diff --git a/Engine/source/console/simPersistID.h b/Engine/source/console/simPersistID.h index 46b1a4559..1035f0768 100644 --- a/Engine/source/console/simPersistID.h +++ b/Engine/source/console/simPersistID.h @@ -30,6 +30,9 @@ #include "core/util/refBase.h" #endif +#ifndef _ENGINEOBJECT_H_ + #include "console/engineObject.h" +#endif /// @file /// Persistent IDs for SimObjects. @@ -40,12 +43,27 @@ template< typename, typename > class HashTable; /// A globally unique persistent ID for a SimObject. -class SimPersistID : public StrongRefBase +class SimPersistID : public EngineObject { public: + DECLARE_CLASS(SimPersistID, EngineObject); typedef void Parent; friend class SimObject; + + /// + SimPersistID(); + + /// Construct a new persistent ID for "object" by generating a fresh + /// unique identifier. + SimPersistID(SimObject* object); + + /// Construct a persistent ID stub for the given unique identifier. + /// The stub remains not bound to any object until it is resolved. + SimPersistID(const Torque::UUID& uuid); + + /// + ~SimPersistID(); protected: @@ -60,17 +78,6 @@ class SimPersistID : public StrongRefBase /// Table of persistent object IDs. static LookupTableType* smLookupTable; - - /// Construct a new persistent ID for "object" by generating a fresh - /// unique identifier. - SimPersistID( SimObject* object ); - - /// Construct a persistent ID stub for the given unique identifier. - /// The stub remains not bound to any object until it is resolved. - SimPersistID( const Torque::UUID& uuid ); - - /// - ~SimPersistID(); /// Bind this unresolved PID to the given object. void resolve( SimObject* object );