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

This commit is contained in:
Areloch 2016-04-30 23:38:35 -05:00
parent de0fe06bc8
commit b3bc199975
2 changed files with 27 additions and 0 deletions

View file

@ -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
//-----------------------------------------------------------------------------

View file

@ -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* )