Creating a new internal name only SimObject instance
The internal name of a SimObject
instance is not exposed to the world in the same way that its optional globally unique name is. We may access it using the internalName
property of the SimObject
instance and it is useful when searching for SimObject
instances within a SimGroup
or SimSet
collection. When working with the GuiControl
objects we will often make use of the internal name. Creating a new internal name only SimObject
instance is a rarely used feature of TorqueScript, but we will learn to create it in this recipe.
How to do it...
Creating an internal name only
SimObject
instance is almost the same as creating an ordinary SimObject
instance. The difference comes down to how we decorate the name we use. Here we will create a ScriptObject
instance with an internal name, the simplest SimObject
derived class, and assign it to a variable:
%object = new ScriptObject([MyScriptObject]);
How it works...
By surrounding the name of the SimObject
instance with square brackets, Torque 3D automatically sets the
internalName
property of object rather than its globally unique name. If we call the
getName()
method on our new ScriptObject
instance, it will return an empty string. But if we call the
getInternalName()
method, MyScriptObject
will be returned.
There's more...
This shortcut to setting the internal name of a SimObject
instance can be handy when working with GuiControl
instances. The normal pattern works like the following:
new GuiWindowCtrl(MyDialog) { ... some properties here ... new GuiControl() { internalName = "control1"; ... some properties here ... }; new GuiControl() { internalName = "control2"; ... some properties here ... }; };
With this pattern we have to set the
internalName
property of each GuiControl
class manually. Using the special name decorators, the internalName
property will be set automatically as follows:
new GuiWindowCtrl(MyDialog) { ... some properties here ... new GuiControl([control1]) { ... some properties here ... }; new GuiControl([control2]) { ... some properties here ... };
See also
Creating a new SimObject instance
Creating a new Datablock object
Creating a new singleton
Extending a SimObject instance using the class property