Getting a random object from a SimSet or SimGroup collection
Sometimes we have a collection of
SimObject
instances in a SimSet
or SimGroup
collection and we would like to retrieve a single, random object from this collection. In this recipe we will discover a quick and easy method to do just that.
Getting ready
We will be adding a new TorqueScript function to a project based on the Torque 3D Full
template and try it out using the Empty Terrain
level. If you haven't already, use the Torque Project Manager (Project Manager.exe
) to create a new project from the Full
template. It will be found under the My Projects
directory. Then start up your favorite script editor, such as Torsion, and let's get going!
How to do it...
We are going to write a TorqueScript function that will demonstrate how to retrieve a random SimObject
instance from a SimSet
or SimGroup
collection as follows:
Open the
game/scripts/server/game.cs
script file and add the following code to the bottom:function getRandomObject1() { // Retrieve a random object from the MissionGroup. This holds // the top level objects from the loaded level. %object = MissionGroup.getRandom(); // Print some information about the object to the console echo(%object.getId() SPC %object.getClassName()); }
Start up our game under the
My Projects
directory and load theEmpty Terrain
level. Open the console using the tilde (~) key and enter the following at the bottom of the screen:getRandomObject1();
In the console, we will see the following output (you may have a different object chosen):
==>getRandomObject1(); 4276 ScatterSky
How it works...
The getRandom()
method of a SimSet
and SimGroup
collection returns a randomly selected SimObject
ID from the collection. If the
collection is empty, a value of -1
is returned.
See also
Iterating on objects in a SimSet or SimGroup collection
Finding an object in a SimSet or SimGroup collection using its internal name
Executing a method on a SimSet or SimGroup collection.