Reader small image

You're reading from  Torque 3D Game Development Cookbook

Product typeBook
Published inJan 2013
Reading LevelIntermediate
PublisherPackt
ISBN-139781849693547
Edition1st Edition
Languages
Right arrow
Author (1)
DAVID WYAND
DAVID WYAND
author image
DAVID WYAND

David Wyand has been using GarageGames' Torque Game Engine for the past 10 years. Among his other interestes are 3D graphics applications, computer networking and Artificial Intelligence for computer games.
Read more about DAVID WYAND

Right arrow

Using call() to call a variable function with arguments


There are times when we don't know the name of a script function while writing a script code. In these circumstances, we need to be able to call a function based on a variable. This recipe will show how to use the call() method to execute a function, with possible passed-in arguments.

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 programmatically call a function as follows:

  1. Open the game/scripts/server/game.cs script file and add the following code to the bottom:

    function getUniqueID1(%idType)
    {
       // Determine the function to use based on the
       // passed-in ID type
       switch$ (%idType)
       {
          case 0:
             %function = "generateUUID";
          
          case 1:
             %function = "getRealTime";
          
          case 2:
             %function = "getSimTime";
          
          default:
             %function = "generateUUID";
       }
       
       // Call the function
       %result = call(%function);
    
       // Return the result   
       return "Your unique ID is: " @ %result;
    }
  2. Start up our game under the My Projects directory and load the Empty Terrain level. Open the console using the tilde (~) key and enter the following at the bottom of the screen:

    getUniqueID1(0);
    

    In the console we will see the following output:

    ==>getUniqueID1(0);
    Your unique ID is: 7be5014c-7d5a-11e1-b801-e57f4eda779f
    
  3. We can try another run by entering a new command at the bottom of the screen:

    getUniqueID1(1);
    

    In the console we will see the following output:

    ==>getUniqueID1(1);
    Your unique ID is: 294298553
    

How it works...

Our example code chooses a particular function name to use based on a parameter passed into our function. It then uses the standard call() function to call the function by name, do something with the result, and return the result to the caller. The call() function has the following form:

result = call( function, args… );

Here the function parameter is the console function we want to call, and the args… parameter is actually an optional set of arguments to pass into function. The call() function returns the result denoted by the result parameter of the function call, if any.

If the given function does not exist, an empty string is returned. No error will be output to the console.

There's more...

If we are unsure whether a particular function exists, we can use the isFunction() method. It has the following form:

result = isFunction( functionName );

Here the functionName parameter is the function name to search for, and result is either true or false, depending on whether the function exists or not.

See also

  • Using call() to call a variable method on a SimObject instance with arguments

Previous PageNext Page
You have been reading a chapter from
Torque 3D Game Development Cookbook
Published in: Jan 2013Publisher: PacktISBN-13: 9781849693547
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
undefined
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime

Author (1)

author image
DAVID WYAND

David Wyand has been using GarageGames' Torque Game Engine for the past 10 years. Among his other interestes are 3D graphics applications, computer networking and Artificial Intelligence for computer games.
Read more about DAVID WYAND