Animation:LuaExamples: Difference between revisions

From Spring
Jump to navigationJump to search
Flozi (talk | contribs)
categorise
Flozi (talk | contribs)
→LUS Script Examples: <code> -> <syntaxhighlight lang="lua">
Line 7: Line 7:
== Script Scaffolds ==
== Script Scaffolds ==
=== Builder ===
=== Builder ===
<code><pre>
<syntaxhighlight lang="lua">
local nanoPieces = {}
local nanoPieces = {}
-- FIXME: this example has 2 nano pieces to alternate between
-- FIXME: this example has 2 nano pieces to alternate between
Line 24: Line 24:
     SetUnitValue(COB.INBUILDSTANCE, false)
     SetUnitValue(COB.INBUILDSTANCE, false)
end
end
</pre></code>
</syntaxhighlight>


=== Factory ===
=== Factory ===
<code><pre>
<syntaxhighlight lang="lua">
local nanoPieces = {}
local nanoPieces = {}
-- FIXME: this example has 2 nano pieces to alternate between
-- FIXME: this example has 2 nano pieces to alternate between
Line 72: Line 72:
     -- TODO: You can run any animation that signifies the end of the build process here
     -- TODO: You can run any animation that signifies the end of the build process here
end
end
</pre></code>
</syntaxhighlight>


=== Wind Generator ===
=== Wind Generator ===
<code><pre>
<syntaxhighlight lang="lua">
-- FIXME: Assumes model has pieces named 'tower' and 'blades'
-- FIXME: Assumes model has pieces named 'tower' and 'blades'
local tower, blades = piece("tower", "blades")
local tower, blades = piece("tower", "blades")
Line 86: Line 86:
   Spin(blades, z_axis, strength * 0.5)
   Spin(blades, z_axis, strength * 0.5)
end
end
</pre></code>
</syntaxhighlight>


[[Category:Animation]]
[[Category:Animation]]

Revision as of 18:02, 21 October 2018

LUS Script Examples

How to use

  • FIXME - Indicates a section of code you will need to tweak to suit your own unit / model
  • TODO - Indicates an optional section of code is missing that you may wish to pad out e.g. with an animation

Script Scaffolds

Builder

<syntaxhighlight lang="lua"> local nanoPieces = {} -- FIXME: this example has 2 nano pieces to alternate between for i = 1, 2 do

    -- FIXME: the pieces are named nanoPiece1 and nanoPiece2 in the model
   nanoPieces[i] = piece("nanoPiece" .. i)

end Spring.SetUnitNanoPieces(unitID, nanoPieces)

function script.StartBuilding(heading, pitch)

   -- TODO: This is where you would add your unpack / point towards animation
   SetUnitValue(COB.INBUILDSTANCE, true)

end function script.StopBuilding()

   -- TODO: This is where you would add your pack-up animation
   SetUnitValue(COB.INBUILDSTANCE, false)

end </syntaxhighlight>

Factory

<syntaxhighlight lang="lua"> local nanoPieces = {} -- FIXME: this example has 2 nano pieces to alternate between for i = 1, 2 do

    -- FIXME: the pieces are named nanoPiece1 and nanoPiece2 in the model
   nanoPieces[i] = piece("nanoPiece" .. i)

end Spring.SetUnitNanoPieces(unitID, nanoPieces)

function script.QueryBuildInfo()

   -- FIXME: the pad piece is named buildPad in the model
   return piece("buildPad")

end

local function OpenCloseAnim(open)

   Signal(1) -- Kill any other copies of this thread
   SetSignalMask(1) -- Allow this thread to be killed by fresh copies
   if open then
       -- TODO: This is where you would add your opening up anim
   else
       -- TODO: This is where you would add your closing up anim
   end
   SetUnitValue(COB.INBUILDSTANCE, open)
   SetUnitValue(COB.BUGGER_OFF, open)

end

-- Called when factory yard opens function script.Activate()

   -- OpenCloseAnim must be threaded to call Sleep() or WaitFor functions
   StartThread(OpenCloseAnim, true)

end

-- Called when factory yard closes function script.Deactivate()

   -- OpenCloseAnim must be threaded to call Sleep() or WaitFor functions
   StartThread(OpenCloseAnim, false)

end

function script.StartBuilding()

   -- TODO: You can run any animation that continues throughout the build process here e.g. spin pad

end

function script.StopBuilding()

   -- TODO: You can run any animation that signifies the end of the build process here

end </syntaxhighlight>

Wind Generator

<syntaxhighlight lang="lua"> -- FIXME: Assumes model has pieces named 'tower' and 'blades' local tower, blades = piece("tower", "blades")

function script.WindChanged (number heading, number strength)

 -- Turn the tower to face the wind at 30deg/s
 Turn(tower, y_axis, heading, math.rad(30))
 -- Spin the turbine blades relative to wind strength
 -- FIXME: Here I set rotational speed to half of strength
 Spin(blades, z_axis, strength * 0.5)

end </syntaxhighlight>