ChargeComponent - acrimi/Raven GitHub Wiki

Extends StatefulComponent

ChargeComponent is an extension of StatefulComponent that represents a charging action of an entity. While in the "active" state, a force will be indirectly applied via the MovementComponent in the direction of the entity's orientation. A separate max speed different from the entity's natural max speed can be defined, and a custom external coefficient of friction can be provided to, for example, negate slippery conditions only while charging.

Configuration

When used inside the components block, the initial state of the component can be configured with the following parameters:

Key Type Description
chargeForce float The force that will be applied while the component is active
chargeSpeed float An optional max speed, in gl units per second, that the entity will be limited to while the component is active, or -1 for no max speed. Defaults to -1.
tractionCoefficient float An optional value that will overwrite the entity's detected external coefficient of friction while the component is active, or -1 to use the existing coefficient of friction. Defaults to -1.
duration* float The duration, in seconds, of the "active" state for this component. Defaults to -1, which is treated as infinite duration.
enterStates* (string|object)[] An array of states that will be passed through when going from the "inactive" state to the "active" state. Each state can be defined as either an object with a single key value pair corresponding the state's name and duration, or as a string representing the state name. States defined as a string will have an infinite duration. The array values can be heterogenous.
      [stateName]* float The key represents the name of this state and the value is the duration, in seconds. For infinite duration, use a value of -1
exitStates* (string|object)[] An array of states that will be passed through when going from the "active" state to the "inactive" state. Each state can be defined as either an object with a single key value pair corresponding the state's name and duration, or as a string representing the state name. States defined as a string will have an infinite duration. The array values can be heterogenous.
      [stateName]* float The key represents the name of this state and the value is the duration, in seconds. For infinite duration, use a value of -1
initialState* string The state the component will start in. Must be one of "inactive", "active", or any of the custom states provided via enterStates or exitStates. By default, the component will start in the "inactive" state. Setting a different initial state will not cause events to fire for entering that state.
isActive* boolean Equivalent to passing "active" to initialState. Defaults to false.

* from StatefulComponent

Example:

"ChargeComponent": {
  "duration": 1.2,
  "chargeForce": 9000,
  "chargeSpeed": 100,
  "tractionCoefficient": 1
}

Properties

The following properties are readable by property accessors (eg render state and persistence definitions):

Key Type Description
isActive* boolean Whether or not the current state is "active"
isInactive* boolean Whether or not the current state is "inactive"
state* string The name of the current state
progress* float The percentage, from 0 to 1, of how much time has elapsed for the current state relative to its duration (elapsedTime / duration). If the current state has an infinite duration, this value is always 0.

* from StatefulComponent

⚠️ **GitHub.com Fallback** ⚠️