ThrowComponent - acrimi/Raven GitHub Wiki
Extends StatefulComponent, ChildLinkedComponent
ThrowComponent is an extension of StatefulComponent that represents a throwing action. While the component is "active", a continuous force will be applied to its target entity along the 2d plane and optionally along the z axis. The target will have its TransformComponent detached, if necessary, and can also have a hit code added to its HitBoxComponent to become a projectile.
The component does not support custom enter/exit states, and cannot be initialized in a non-inactive state. Instead, the component always has a single exit state named "followThrough" that has a configurable duration parameter.
When used inside the components block, the initial state of the component can be configured with the following parameters:
| Key | Type | Description |
|---|---|---|
| force | float | The horizontal force that will be applied to thrown entity in the direction of the thrower's orientation while the component is active. Measured relative to gl units (mass * glUnits/second^2). Defaults to 0. |
| verticalForce | float | The force along the z axis that will be applied to thrown entity while the component is active. Measured relative to gl units (mass * glUnits/second^2). Defaults to 0. |
| hitCode | int | An optional hit code that will be set on the thrown entity's HitBoxComponent, if present. |
| followThrough | float | The duration, in seconds, of the the follow through exit state. Defaults to 0. |
| duration* | float | The duration, in seconds, of the "active" state for this component. Defaults to -1, which is treated as infinite duration. |
* from StatefulComponent
Example:
"ThrowComponent": {
"duration": 0.3,
"followThrough": 0.1,
"force": 13000,
"verticalForce": 4000,
"hitCode": 2
}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. |
| childId** | int | The id of the child entity referenced by this component, or -1 if no entity is currently linked |
| hasChild** | boolean | True if an entity is currently referenced by this component, false otherwise |
* from StatefulComponent
** from ChildLinkedComponent