Procházet zdrojové kódy

Adds a TypeSimObjectPtr type for easy reference to other objects as a field.

Areloch před 9 roky
rodič
revize
b3bc199975

+ 25 - 0
Engine/source/console/consoleTypes.cpp

@@ -710,6 +710,31 @@ ConsoleSetType( TypeColorI )
       Con::printf("Color must be set as { r, g, b [,a] }, { r g b [b] }  or { stockColorName }");
 }
 
+//-----------------------------------------------------------------------------
+// TypeSimObjectPtr
+//-----------------------------------------------------------------------------
+ConsoleType(SimObject, TypeSimObjectPtr, SimObject*, "")
+
+ConsoleSetType(TypeSimObjectPtr)
+{
+   if (argc == 1)
+   {
+      SimObject **obj = (SimObject **)dptr;
+      *obj = Sim::findObject(argv[0]);
+   }
+   else
+      Con::printf("(TypeSimObjectPtr) Cannot set multiple args to a single S32.");
+}
+
+ConsoleGetType(TypeSimObjectPtr)
+{
+   SimObject **obj = (SimObject**)dptr;
+   static const U32 bufSize = 128;
+   char* returnBuffer = Con::getReturnBuffer(bufSize);
+   dSprintf(returnBuffer, bufSize, "%s", *obj ? (*obj)->getName() ? (*obj)->getName() : (*obj)->getIdString() : "");
+   return returnBuffer;
+}
+
 //-----------------------------------------------------------------------------
 // TypeSimObjectName
 //-----------------------------------------------------------------------------

+ 2 - 0
Engine/source/console/consoleTypes.h

@@ -123,6 +123,8 @@ DefineConsoleType( TypeColorF, ColorF )
 DefineConsoleType( TypeSimObjectName, SimObject* )
 DefineConsoleType( TypeShader, GFXShader * )
 
+DefineConsoleType(TypeSimObjectPtr, SimObject*)
+
 /// A persistent reference to an object.  This reference indirectly goes
 /// through the referenced object's persistent ID.
 DefineConsoleType( TypeSimPersistId, SimPersistID* )