home *** CD-ROM | disk | FTP | other *** search
- // ========================================================================
- // animshape.cs
- //
- // This module contains the definition of a test shape, which uses
- // a model of a stylized 3D logo. It also contains functions for placing
- // the test shape in the game world and then animating the shape using
- // a recurring scheduled function call.
- // ========================================================================
-
-
- function AnimShape(%shape, %dist, %angle, %scale)
- // ----------------------------------------------------
- // moves the %shape by %dist amount, and then
- // schedules itself to be called again in 1/5
- // of a second.
- // ----------------------------------------------------
- {
- echo("AnimShape: shape:", %shape, " dist:",
- %dist, " angle:", %angle, " scale:", %scale);
- if ( %shape $= "" ||
- %dist $= "" ||
- %angle $= "" ||
- %scale $= "" )
- {
- error("AnimShape needs 4 parameters.syntax:");
- error("AnimShape(id,moveDist,turnAng,scaleVal);");
- return;
- }
- %xfrm = %shape.getTransform();
- %lx = getword(%xfrm,0); // first, get the current
- %ly = getword(%xfrm,1); // transform values
- %lz = getword(%xfrm,2);
- %rx = getword(%xfrm,3);
- %ry = getword(%xfrm,4);
- %rz = getword(%xfrm,5);
- %lx += %dist; // set the new x position
- %angle += 1.0;
- %rd = %angle; // Set the rotation angle
-
- if ($grow) // if the shape is growing larger
- {
- if (%scale < 5.0) // and hasn't gotten too big
- %scale += 0.3; // make it bigger
- else
- $grow = false; // if it's too big, then
- } // don't let it grow more
- else // if it's shrinking
- {
- if (%scale > 3.0) // and isn't too small
- %scale -= 0.3; // then make it smaller
- else
- $grow = true; // if it's too small,
- } // don't let it grow smaller
-
- %shape.setScale(%scale SPC %scale SPC %scale);
- %shape.setTransform(%lx SPC %ly SPC %lz SPC
- %rx SPC %ry SPC %rz SPC %rd);
- schedule(200,0,AnimShape, %shape, %dist, %angle, %scale);
- }
-
- function DoAnimTest(%shape)
- // ----------------------------------------------------
- // a function to tie together the instantion
- // and the movement in one easy to type function
- // call.
- // ----------------------------------------------------
- {
- if (%shape $= "" && isObject(%shape))
- {
- error("DoAnimTest requires 1 parameter.");
- error("DoAnimTest syntax: DoAnimTest(shapeID);");
- return;
- }
- $grow = true;
- AnimShape(%shape, 0.2, 1, 2);
- }
-