2
0
Эх сурвалжийг харах

Expose SimPersistID to EngineAPI

Lukas Joergensen 6 жил өмнө
parent
commit
e95a5bf139

+ 20 - 0
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();
+}

+ 19 - 12
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 );