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

Scheduling functions


Scheduling allows for an action to occur sometime in the future. In TorqueScript we may have a schedule invoke a function after a specified amount of time has passed. In this recipe we will learn how to schedule a function.

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

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

    function scheduleFunction1()
    {
       // Schedule a function to execute 250ms from now.  This
       // function takes one parameter: the time the schedule
       // was started.  We store the returned event ID in case
       // we want to cancel the scedule before it calls the
       // function.
       $MyEventID = 
          schedule(250, 0, myScheduledFunction, getRealTime());
    }
    
    // Our function that will be executed by the schedule.
    function myScheduledFunction(%startTime)
    {
       // Get the current time
       %currentTime = getRealTime();
       
       // Calculate the time delta
       %delta = %currentTime - %startTime;
       
       // Output to the console
       echo("Event ID " @ $MyEventID @ " sat for " 
            @ %delta @ "ms before it was called");
    }
  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:

    scheduleFunction1();
    

    In the console we will see the following output:

    ==>scheduleFunction1();
    Event ID 1 sat for 256ms before it was called
    

How it works...

The example code schedules our MyScheduleFunction using the schedule() function that has the following form:

eventID = schedule( time, SimObjectID, function args… );

Here, the time parameter is the delay in milliseconds before the function is executed. The SimObjectID parameter is an optional object to invoke this function on (or 0 if no object), the function parameter is the name of the function to execute, and the args… parameter is actually a variable number of optional arguments that are passed to the given function. The eventID parameter of the scheduled event is returned by schedule() so that we may cancel the schedule before it is invoked.

If a SimObject ID is provided to the schedule() function, the schedule essentially operates as if we used the SimObject schedule() method. If the SimObject ID is left as 0 then the function is invoked on its own.

The actual time taken for the scheduled method to execute may be greater than the delay time requested. This can be due to a number of factors, such as current engine load. However, the delay will never be less than the requested time.

There's more...

It is possible to manually cancel a schedule by using the cancel() function. This function has the following form:

cancel( eventID ); 

Here the eventID parameter is the value returned by the schedule() function.

See also

  • Scheduling SimObject methods

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