瀏覽代碼

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

Areloch 9 年之前
父節點
當前提交
b3bc199975
共有 2 個文件被更改,包括 27 次插入0 次删除
  1. 25 0
      Engine/source/console/consoleTypes.cpp
  2. 2 0
      Engine/source/console/consoleTypes.h

+ 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 }");
       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
 // TypeSimObjectName
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------

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

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