Celestia/Celx Scripting/CELX Lua Methods/Celx celscript

< Celestia < Celx Scripting < CELX Lua Methods

Celx Scripting: CELscript

CELscript

Within CELX scripting it is possible to create a "celscript" object from a string, containing a valid CEL script.

A "celscript" object can be used to execute a CEL script embedded in a CELX script. This is done by passing the CEL script in a string to the celestia:createcelscript() method and thus create a "celscript" object. If the string doesn't contain a valid CEL script, this method will cause an error.

Methods

This chapter contains a list of all available celscript methods, which can be used on "celscript" objects.

tick

boolean celscript:tick()

Return a boolean, indicating that the CEL script within the "celscript" object has terminated.

Notes:

  1. LUA supports a syntax for long strings using double brackets which is useful here. Using this you can in nearly all cases simply copy and paste complete CEL scripts without modification into the CELX script.
  2. When using CEL script parts within a CELX script, the PAUSE function by pressing the [Spacebar] key will not work completely correct. Although the scene you’re looking at will pause directly, the CEL script parts will continue to run in the background, resulting in a part of the script being visually skipped when you press the [Spacebar] key again to continue the script.
  3. When using a "celscript" object repeatedly within a CELX script, it is advised to first define the following function at the beginning of your script, which can be used on differt places in the main script:
function CEL(source) 
   local script = celestia:createcelscript(source) 
   while script:tick() do 
      wait(0) 
   end 
end

<... other CELX script code ...>
CEL([[{ string:cel }]])
<... other CELX script code ...>

Example:
The following example orbits Saturn for 12 seconds, using CEL commands within a CELX script:

function CEL(source) 
   local script = celestia:createcelscript(source) 
   while script:tick() do 
      wait(0) 
   end 
end
--
CEL([[{
   select { object "Sol/Saturn" }
   center { }
   goto   { time 3 distance 8 up [ 0 1 0 ] upframe "equatorial" }
   wait   { duration 3 }
   orbit  { axis [ 0 1 0 ] rate 30 duration 12 }
   }]])


Return to the celscript method index.


This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.