Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

You can control the flow of script execution by using the following types of statements to manage the order in which operations are executed:

Table of ContentsmaxLevel

Scroll only
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-htmltrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
2

Use conditional statements (if, else, else if, switch)

...

You write a test condition by enclosed it in parentheses (). The resulting value must be an int, float, or vector data type. The test condition value is then converted to an int data type to represent either true or false.

Code Block
languagetext
// if (test condition) execute statement;

...


if (0 < 1) print "zebra";

If the test condition has a value of type int or float, the test condition is true only if the value, converted to type int is not 0:

Code Block
languagetext
if (<<0,0,0>> == <<0,0,0>>) print "referee"; //true

You can use the following types of conditional statements in Shogun Post:

Tip
Tip
To make conditional statements easy to debug, group the commands to be executed under the IF statement.

Scroll pagebreak

IF statements

Anchor
IFState
IFState

...

The IF statement works as follows: if the test condition is true, the statement is executed.

...

If you are using multiple statements, use grouping to control scope execution by enclosing the statements within braces {}.

For example:

Code Block
languagetext
if ( 2 < 3 )

...


 {

...


 string $blah = "This worked";

...


 print ($blah);

...


 }

ELSE statements

Anchor
ELSEState
ELSEState

...

The ELSE statement always follows the IF statement. The ELSE statement is executed when the preceding IF statement is false.

...

if (test condition)
{
execute statement_1;
}
else
{
execute statement_2;
}

For example:

Code Block
languagetext
if (5 % 2 >1)

...


 {

...


 print "bah";

...


 }

...


 else

...


 {

...


 print "humbug";

...


 }

Scroll pagebreak

ELSE IF statements

Anchor
ELSEIFState
ELSEIFState

...

The ELSE IF statement is always paired with the IF conditional statement. Unlike the else command which executes a statement when the IF statement is false, the ELSE IF statement requires another test condition to be true, or it will not execute either statement.

...

if (test_condition_A)
{
execute statement_1;
}
else if (test_condition_B)
{
execute statement_2;
}

For example:

Code Block
languagetext
if (-1 >= 1)

...


 {

...


 print "Statement 1";

...


 }

...


 else if (-1 <= 1)

...


 {

...


 print "Statement 2";

...


 }

Scroll pagebreak

SWITCH statements

Anchor
SWITCHState
SWITCHState

...

The switch statement is a conditional statement that executes a code block depending on which one of a number of given cases is matched to the switch expression.

...

You write a switch statement in this format:

switch (expression)
{
  case n;
    code block
    break;
  case n;
   code block
   break;
}

For example:

Code Block
languagetext
int $test = 2;

...


switch($test)

...


{

...


 case 1:

...


   print "1";

...


   break;

...


 case 2: 

...

   print "2";

...


   break;

...


 case 3: 

...


   print "3";

...


   break;

...


}

Scroll pagebreak

Use looping statements (while, do while, for)

...

You can use the following types of looping statements in Shogun Post:

Tip
Tip
You can use Interruption statements to affect the flow control in looping statements.

WHILE statements

Anchor
WHILEState
WHILEState

...

A WHILE looping statement continuously executes designated statements as long as a specific condition remains true.

...

while (test condition)
execute statement;

For example:

Code Block
languagetext
int $PJ = 5;

...


  while ($PJ > 0)

...


    {

...


     print

...


     ("There are " + string($PJ) + " P.J. sandwiches left.");

...


     $PJ = $PJ - 1;

...


    }

...


  print ("Houston, we have a problem!");

Scroll pagebreak

DO WHILE statements

Anchor
DOWHILEState
DOWHILEState

...

A DO WHILE looping statement executes a specific statement then checks whether or not to repeat the loop. This ensures that the statement is executed at least once.

...

do
execute statement;
while (test condition);

For example:

Code Block
languagetext
int $peanuts = 1;

...


 do {

...


 print ("Elephants work for peanuts");

...


 $peanuts += 1;

...


 print ($peanuts);

...


 }

...


 while ( $peanuts < 10);

FOR statements

Anchor
FORState
FORState

...

A FOR looping statement provides loop control that has initialization, test, and an increment statement.

...

for (initializers; test condition; incrementor)
execute statement;

For example:

Code Block
languagetext
string $blah;

...


 int $i;

...


 for( $i = 1; $i < 6; $i += 1 )

...


 {

...


 $blah = "This is what happens when things coincide";

...


 print( $blah );

...


 }

Scroll pagebreak

Looping examples

...

You can use the script below as a template for creating single and nested loops. Refer to the comments to learn what each set of statements does. You may want to save this script to a file called loop-example.hsl for future reference.

Code Block
languagetext
//Define the statement you are going to print each iteration

...


 string $statement;

...


//Define variables to use as counters

...


 int $i, $ j;

...


//Start the $i loop and specify start, end, and amount to increment

...


 for( $i = 1; $i < 6; $i += 1 ) {

...


//Start the $ j loop and specify start, end, and amount to increment 

...

   for( $j = 1; $j < 15; $j += 2 ) {

...


//Tell Shogun Post to print something if $i < $J

...


     if( $i < $j )

...


       $statement = string( $i ) + " is less than " + string( $j );

...


//Tell Shogun Post to print something else if $i > $j

...


     else if( $i > $j )

...


       $statement = string( $i ) + " is greater than " + string( $j );

...


//Tell Shogun Post what to print if the two counters are equal

...


     else

...


       $statement = "This is what happens when things coincide";

...


//Tell Shogun Post to actually print the statement you've assembled

...


   print( $statement );

...


//Close the second loop

...


   }

...


//Close the first loop

...


 }

Loop through objects in a scene

...

The following example shows you how to list all the objects in a scene by name. You can modify this set of steps to perform the tasks listed above, and to handle any activity which requires you to execute one or more operations on through a given set of objects in a scene.

Code Block
languagetext
// Courtesy of Jake Wilson of SCEA
// Initialize Variables
print " ";  
// Create array of children under 'Actor' Mary's character node
string $childarray[] = `getChildren Mary`;    
// Determine # of children
int $childcount = `getCount $childarray`;  
// Create a $childarrayloop to hold a number 
int $childarrayloop = 0;  
// Print an empty string
   string $ proptest;
// Start a loop which run once for each of Mary's children
for ( $childarrayloop=0 ;
 $childarrayloop < $childcount ;
 $childarrayloop +=1 ){
    // print name of current child marker in array   
    print ( string ($ childarray[$childarrayloop] ) );
    // return the name of the marker and compare the name 
    // of the marker to the name"LFWT"
    $ proptest = ` getStringProperty $ childarray[$childarrayloop] Name`; 
    if ($ proptest==LKNE){
        // if that LFWT marker is found, this tells the loop to quit
        $ childarrayloop=$childcount; 
        print ( "EXITING LOOP" );
        }
    }

Use interruption statements (break)

...

looping_statement (test condition)
execute statement;
break;

For example:

Code Block
languagetext
int $parole = 3;

...


 while ($parole <8)

...


 {

...


 print (string($parole) + " days until $parole");

...


 $parole -= 1;

...


 if ($parole <= 0)

...


 break;

...


 }

...


 print "monopoly";