Difference between revisions of "Animation Code"

From FreeSpace Wiki
Jump to: navigation, search
m (forgot a little thing)
 
(23 intermediate revisions by 10 users not shown)
Line 1: Line 1:
 +
{{TableVersion|5211|5332}}
 +
 
Known commonly as Bob's animation code as the code was written by Bobboau. Enables submodels defined in [[ships.tbl]] or in any related modular table to be animated in game. Animation code is included to the subsystem entry in similar manner as with [[Animation_Code#Setting_Turret_Angle|multipart turrets]]
 
Known commonly as Bob's animation code as the code was written by Bobboau. Enables submodels defined in [[ships.tbl]] or in any related modular table to be animated in game. Animation code is included to the subsystem entry in similar manner as with [[Animation_Code#Setting_Turret_Angle|multipart turrets]]
  
==Animation Class==
+
{{Table220|
 +
'''DEPRECATED''': Unless setting initial orientation of multipart turrets, consider using the [[Animation.tbl]] in combination with [[Ships.tbl#.24Animations:|$Animations:]]
 +
}}
 +
 
 +
==Important Note: "$triggered:" Subobject Property==
 +
For any animated subobject other than turrets, you must have "$triggered:" written in the subobject properties field of that subobject for the model file (POF) that you wish to animate. See [[Subsystem]] for more information on Subsystem flags and options.
 +
 
 +
==$Animation:==
 +
{{Table3610|
 
*Animation classes are defined in submodels description
 
*Animation classes are defined in submodels description
*Syntax: '''$animation:''' ''Class''
+
*Syntax: '''String''', animation ''class''
*'''Triggered'''
+
*'''Available animation types:'''
**Currently only supported animation class
+
**Triggered}}
 +
 
  
 
===Animation Type===
 
===Animation Type===
 +
{{Table3610|
 
*Animation type defines when the animation is used
 
*Animation type defines when the animation is used
 
*Currently supported animation types:
 
*Currently supported animation types:
Line 16: Line 28:
 
**'''docked'''
 
**'''docked'''
 
***Animation code is started when ship is docked
 
***Animation code is started when ship is docked
**'''primary bank'''
+
**'''primary-bank'''
 
***Animation code is started when a primary bank is selected (armed)
 
***Animation code is started when a primary bank is selected (armed)
**'''secondary bank'''
+
**'''secondary-bank'''
 
***Animation code is started when a secondary bank is selected (armed)
 
***Animation code is started when a secondary bank is selected (armed)
**'''door'''
+
**'''fighterbay'''
***Animation code starts when ship launches or retrives others through it's fighterbay.
+
***Animation code starts when ship launches from or receives others through its fighterbay
*Syntax: '''$type:''' ''Type''
+
**'''afterburner'''
 +
***Animation code is started when ships afterburner is engaged
 +
**'''turret-firing'''
 +
***Animation code is started when selected turret is firing
 +
**'''scripted'''
 +
***Animation code is started when it is triggered with scripts (see [[scripting.tbl]])
 +
{{Table3615|
 +
*'''turret-fired'''
 +
**Animation code is started whenever a turret has fired (Useful for recoil or similar things)}}
 +
*Syntax: '''$type:''' ''Type''}}
  
 
===Animation Sub-Type===
 
===Animation Sub-Type===
 +
{{Table3610|
 
*Optional more accurate descriptor for the animation type
 
*Optional more accurate descriptor for the animation type
*For example used when defined primary bank is fired
+
*'''primary-bank''' or '''secondary-bank'''
*Syntax: '''+sub_type:''' ''Value'', (0 = 1st weapon bank, 1 = 2nd weapon bank, etc.)
+
**Syntax: '''+sub_type:''' ''Value'', 0 is the 1st weapon bank, 1 is the 2nd weapon bank, etc.
 +
*'''turret-firing'''
 +
**Syntax: '''+sub_type:''' ''Value'', model number of the turret that triggers the animation. NOTE: This feature currently does not work on multipart turrets.
 +
{{Table371|
 +
*'''fighterbay'''
 +
**Syntax: '''+sub_type:''' ''Value'', number of the bay path that must be used for this animation to trigger. A negative can be used to allow the animation to trigger only when the path is '''not''' used. The number of a bay path is the number in its name; for example, use 3 to restrict the animation to the path $bay03, or -1 to prevent it from triggering when the path $bay01 is used.}}
 +
}}
  
 
===Animation Code===
 
===Animation Code===
 +
 +
 +
====Initial type====
 +
{{Table3610|
 +
*'''+absolute_angle:''' OR '''+relative_angle:'''
 +
**Defines the rotation degrees with three floats that give the x, y, and z. Absolute means in world terms; relative means relative to the ship. So a 90 degree angle on the ship would always be straight up in relative degrees; it would vary depending how the ship was rotated in absolute degrees.
 +
**Syntax: '''Vector''', three ''floats'' in degrees, x, y, z respectively
 +
**Example: ''90,180,0''}}
 +
 +
====Other types====
 +
{{Table3610|
 
*'''+delay:'''
 
*'''+delay:'''
 
**Defines how long til the trigger starts.
 
**Defines how long til the trigger starts.
**Syntax: ''Value'', (seconds)
+
**Syntax: '''Integer''', milliseconds
*'''+reverse delay:'''
+
*'''+reverse_delay:'''
**
+
**Defines how long til the trigger starts.
**Syntax: ''Value'', (seconds)
+
**Syntax: '''Integer''', milliseconds
*'''+absolute angle:''' OR '''+relative angle:'''
+
*'''+absolute_angle:''' OR '''+relative_angle:'''
**Defines the rotation degrees with three floats that give the x, y, and z. Absolute means in world terms; relative means relative to the ship. So a 90 degree angle on the ship would always be straight up in relative degrees; it would vary depending how the ship was rotated in absolute degrees.  
+
**Defines the rotation degrees with three floats that give the x, y, and z. Absolute means in world terms; relative means relative to the ship. So a 90 degree angle on the ship would always be straight up in relative degrees; it would vary depending how the ship was rotated in absolute degrees.
**Syntax: ''Value,Value,Value'', (degrees)
+
**Syntax: '''Vector''', three ''floats'' in degrees, x, y, z respectively
 +
**Example: ''90,180,0''
 
*'''+velocity:'''
 
*'''+velocity:'''
**Defines subobject rotation speed, in relative terms. Defined with x, y and z floats.
+
**Defines subobject rotation speed, in relative terms. Units are in degrees per second.  Defined with x, y and z floats.
**Syntax: ''Value,Value,Value'', (meters)
+
**Syntax: '''Vector''', three ''floats'', x, y, z respectively
 
*'''+acceleration:'''
 
*'''+acceleration:'''
**Defeines acceleration speed of subobject rotation. Defined with three floats, x, y and z
+
**Defines acceleration speed of subobject rotation. Units are in degrees per second squared.  Defined with three floats, x, y and z
**Syntax: ''Value,Value,Value''
+
**Syntax: '''Vector''', three ''floats'', x, y, z respectively
 
*'''+time:'''
 
*'''+time:'''
**Defines time for object to rotate, move, whatever.  
+
**Defines the amount of time that the object will rotate, move, whatever.
**Syntax: ''Value'', (seconds)
+
**Syntax: '''Integer''', milliseconds
 
*'''$Sound:''' (Does not work with 'initial' animations)
 
*'''$Sound:''' (Does not work with 'initial' animations)
 
**Defines sounds that are played with the animation
 
**Defines sounds that are played with the animation
 
**'''+Start:'''
 
**'''+Start:'''
 
***Defines the sound that is played when animation starts
 
***Defines the sound that is played when animation starts
***Syntax: ????
+
***Syntax: '''Integer'''
 
**'''+Loop:'''
 
**'''+Loop:'''
 
***Defines the sound that is played when animation is going on
 
***Defines the sound that is played when animation is going on
***Syntax: ????
+
***Syntax: '''Integer'''
 
**'''+End:'''
 
**'''+End:'''
 
***Defines the sound that is played when animation stops
 
***Defines the sound that is played when animation stops
***Syntax: ????
+
***Syntax: '''Integer'''
 
**'''+Radius:'''
 
**'''+Radius:'''
 
***Defines the distance from the submodel where the sound is audible
 
***Defines the distance from the submodel where the sound is audible
***Syntax: ''Value'', (meters)
+
***Syntax: '''Float''', meters}}
  
 
==Animation Examples==
 
==Animation Examples==
 +
 +
 
===Setting Turret Angle===
 
===Setting Turret Angle===
 
*Animation code can be used to set multipart turrets barrel angle at the beginning of the mission
 
*Animation code can be used to set multipart turrets barrel angle at the beginning of the mission
Line 70: Line 112:
 
*'''Animation Type''' = initial
 
*'''Animation Type''' = initial
 
**As we want the barrels to align themselves at the beginning of the mission
 
**As we want the barrels to align themselves at the beginning of the mission
*'''Animation Code'''  
+
*'''Animation Code'''
 
**'''+relative_angle:''' is good for this purpose
 
**'''+relative_angle:''' is good for this purpose
 
**Notes about angles:
 
**Notes about angles:
 
***First value is used to determine the turret's barrels deviation from the turrets normal. So barrel elevation in degrees is ( 90 - the first value ).
 
***First value is used to determine the turret's barrels deviation from the turrets normal. So barrel elevation in degrees is ( 90 - the first value ).
***Second value is used to determine the turret facing. With ''0'' the turret facing is in the normal setting and with ''180'' turn the turret completely around. Do note that turrets on the underside of the model normally face backwards so to get these turrets pointing to forward directin the second value has to be set to 180.
+
***Second value is used to determine the turret facing. With ''0'' the turret facing is in the normal setting and with ''180'' turn the turret completely around. Do note that turrets on the underside of the model normally face backwards, so to get these turrets pointing forwards the second value has to be set to 180.
+
 
====Example====
+
 
  $Subsystem:            turret02,0.833,1.0
+
====Examples====
  $Default PBanks:      (  "Terran Turret" )
+
 
  $animation: triggered
+
<pre>
  $type: initial
+
$Subsystem:            turret02,0.833,1.0
 +
$Default PBanks:      (  "Terran Turret" )
 +
$animation: triggered
 +
$type: initial
 
   +relative_angle:      90,180,0
 
   +relative_angle:      90,180,0
 +
</pre>
  
 +
<pre>
 +
$Subsystem: DockingClaw1, 0, 1.0
 +
$Flags: ( "untargetable" )
 +
$animation: triggered
 +
$type: docking                          ;;The claw opens on approach
 +
  +sub_type:      0              ;;The number of the associated dock (works with multidocking)
 +
  +delay:          0
 +
  +relative_angle: 0,0,90
 +
  +velocity:      0,0,10
 +
  +acceleration:  0,0,5
 +
  +time:          2000
 +
$animation: triggered
 +
$type: docked                          ;;The claw closes once docked
 +
  +sub_type:      0
 +
  +delay:          0
 +
  +relative_angle: 0,0,-90
 +
  +velocity:      0,0,10
 +
  +acceleration:  0,0,5
 +
  +time:          2000
 +
</pre>
  
 
[[Category:Tables]]
 
[[Category:Tables]]

Latest revision as of 07:58, 10 December 2021

Revision information.....

FSO Revision: 5211
Note: Please update the version when the page is updated. If your edit had nothing to do with new code entries then please do not edit the version


Known commonly as Bob's animation code as the code was written by Bobboau. Enables submodels defined in ships.tbl or in any related modular table to be animated in game. Animation code is included to the subsystem entry in similar manner as with multipart turrets


FS2 Open, 22.0:

DEPRECATED: Unless setting initial orientation of multipart turrets, consider using the Animation.tbl in combination with $Animations:

Important Note: "$triggered:" Subobject Property

For any animated subobject other than turrets, you must have "$triggered:" written in the subobject properties field of that subobject for the model file (POF) that you wish to animate. See Subsystem for more information on Subsystem flags and options.

$Animation:

FS2 Open 3.6.10:
  • Animation classes are defined in submodels description
  • Syntax: String, animation class
  • Available animation types:
    • Triggered


Animation Type

FS2 Open 3.6.10:
  • Animation type defines when the animation is used
  • Currently supported animation types:
    • initial
      • Animation code is started when the mission begins. Unlike other animation types this requires only angle to be set
    • docking
      • Animation code is started when ship starts docking
    • docked
      • Animation code is started when ship is docked
    • primary-bank
      • Animation code is started when a primary bank is selected (armed)
    • secondary-bank
      • Animation code is started when a secondary bank is selected (armed)
    • fighterbay
      • Animation code starts when ship launches from or receives others through its fighterbay
    • afterburner
      • Animation code is started when ships afterburner is engaged
    • turret-firing
      • Animation code is started when selected turret is firing
    • scripted
      • Animation code is started when it is triggered with scripts (see scripting.tbl)
FS2 Open, 3.6.16:
  • turret-fired
    • Animation code is started whenever a turret has fired (Useful for recoil or similar things)
  • Syntax: $type: Type
  • Animation Sub-Type

    FS2 Open 3.6.10:
    • Optional more accurate descriptor for the animation type
    • primary-bank or secondary-bank
      • Syntax: +sub_type: Value, 0 is the 1st weapon bank, 1 is the 2nd weapon bank, etc.
    • turret-firing
      • Syntax: +sub_type: Value, model number of the turret that triggers the animation. NOTE: This feature currently does not work on multipart turrets.
    FS2 Open, 3.7.2:
    • fighterbay
      • Syntax: +sub_type: Value, number of the bay path that must be used for this animation to trigger. A negative can be used to allow the animation to trigger only when the path is not used. The number of a bay path is the number in its name; for example, use 3 to restrict the animation to the path $bay03, or -1 to prevent it from triggering when the path $bay01 is used.

    Animation Code

    Initial type

    FS2 Open 3.6.10:
    • +absolute_angle: OR +relative_angle:
      • Defines the rotation degrees with three floats that give the x, y, and z. Absolute means in world terms; relative means relative to the ship. So a 90 degree angle on the ship would always be straight up in relative degrees; it would vary depending how the ship was rotated in absolute degrees.
      • Syntax: Vector, three floats in degrees, x, y, z respectively
      • Example: 90,180,0

    Other types

    FS2 Open 3.6.10:
    • +delay:
      • Defines how long til the trigger starts.
      • Syntax: Integer, milliseconds
    • +reverse_delay:
      • Defines how long til the trigger starts.
      • Syntax: Integer, milliseconds
    • +absolute_angle: OR +relative_angle:
      • Defines the rotation degrees with three floats that give the x, y, and z. Absolute means in world terms; relative means relative to the ship. So a 90 degree angle on the ship would always be straight up in relative degrees; it would vary depending how the ship was rotated in absolute degrees.
      • Syntax: Vector, three floats in degrees, x, y, z respectively
      • Example: 90,180,0
    • +velocity:
      • Defines subobject rotation speed, in relative terms. Units are in degrees per second. Defined with x, y and z floats.
      • Syntax: Vector, three floats, x, y, z respectively
    • +acceleration:
      • Defines acceleration speed of subobject rotation. Units are in degrees per second squared. Defined with three floats, x, y and z
      • Syntax: Vector, three floats, x, y, z respectively
    • +time:
      • Defines the amount of time that the object will rotate, move, whatever.
      • Syntax: Integer, milliseconds
    • $Sound: (Does not work with 'initial' animations)
      • Defines sounds that are played with the animation
      • +Start:
        • Defines the sound that is played when animation starts
        • Syntax: Integer
      • +Loop:
        • Defines the sound that is played when animation is going on
        • Syntax: Integer
      • +End:
        • Defines the sound that is played when animation stops
        • Syntax: Integer
      • +Radius:
        • Defines the distance from the submodel where the sound is audible
        • Syntax: Float, meters

    Animation Examples

    Setting Turret Angle

    • Animation code can be used to set multipart turrets barrel angle at the beginning of the mission
    • Animation Class = triggered
      • The only one available
    • Animation Type = initial
      • As we want the barrels to align themselves at the beginning of the mission
    • Animation Code
      • +relative_angle: is good for this purpose
      • Notes about angles:
        • First value is used to determine the turret's barrels deviation from the turrets normal. So barrel elevation in degrees is ( 90 - the first value ).
        • Second value is used to determine the turret facing. With 0 the turret facing is in the normal setting and with 180 turn the turret completely around. Do note that turrets on the underside of the model normally face backwards, so to get these turrets pointing forwards the second value has to be set to 180.


    Examples

    $Subsystem:            turret02,0.833,1.0
    $Default PBanks:       (  "Terran Turret" )
    $animation: triggered
    $type: initial
       +relative_angle:       90,180,0
    
    $Subsystem: DockingClaw1, 0, 1.0
    $Flags: ( "untargetable" )
    $animation: triggered
    $type: docking                           ;;The claw opens on approach
       +sub_type:       0               ;;The number of the associated dock (works with multidocking)
       +delay:          0
       +relative_angle: 0,0,90
       +velocity:       0,0,10
       +acceleration:   0,0,5
       +time:           2000
    $animation: triggered
    $type: docked                           ;;The claw closes once docked
       +sub_type:       0
       +delay:          0
       +relative_angle: 0,0,-90
       +velocity:       0,0,10
       +acceleration:   0,0,5
       +time:           2000