Difference between revisions of "Character Script External Code"

From Wolfire Games Wiki
Jump to: navigation, search
(Global Variables)
(Global Functions)
Line 68: Line 68:
 
== Global Functions ==
 
== Global Functions ==
  
<pre style="white-space: pre-wrap;">float GetAnimationEventTime( string &in anim_path, string &in event_label );</pre>
+
<pre style="white-space: pre-wrap;">float GetAnimationEventTime( string &in anim_path, string &in event_label ); // Query the time an animation event occurs in an animation</pre>
<pre style="white-space: pre-wrap;">NavPoint GetNavPoint(vec3);</pre>
+
<pre style="white-space: pre-wrap;">NavPoint GetNavPoint(vec3 target_pos); // Do a navigation query to the given position</pre>
<pre style="white-space: pre-wrap;">vec3 GetNavPointPos(vec3);</pre>
+
<pre style="white-space: pre-wrap;">vec3 GetNavPointPos(vec3 target_pos);
<pre style="white-space: pre-wrap;">NavPath GetPath(vec3 start, vec3 end);</pre>
+
// Shortcut to GetNavPoint(target_pos).GetPos(), without checking if the resulting query resulted in a valid position - warning, might return the origin!</pre>
<pre style="white-space: pre-wrap;">NavPath GetPath(vec3 start, vec3 end, uint16 include_poly_flags, uint16 exclude_poly_flags);</pre>
+
<pre style="white-space: pre-wrap;">NavPath GetPath(vec3 start, vec3 end); // Do a navigation query (including retrieving waypoints) to a given position</pre>
<pre style="white-space: pre-wrap;">vec3 LineLineIntersect(vec3 start_a, vec3 end_a, vec3 start_b, vec3 end_b); // Get closest point between two line segments</pre>
+
<pre style="white-space: pre-wrap;">NavPath GetPath(vec3 start, vec3 end, uint16 include_poly_flags, uint16 exclude_poly_flags);
<pre style="white-space: pre-wrap;">vec3 NavRaycast(vec3 start, vec3 end);</pre>
+
// Do a navigation query (including retrieving waypoints) to a given position, allowing certain navigation types to be filtered or excluded.
<pre style="white-space: pre-wrap;">vec3 NavRaycastSlide(vec3 start, vec3 end, int depth);</pre>
+
// Filtering and exclusion currently just used to filter out jump nodes for non-rabbits</pre>
 +
<pre style="white-space: pre-wrap;">vec3 LineLineIntersect(vec3 start_a, vec3 end_a, vec3 start_b, vec3 end_b);
 +
// Get closest point between two line segments
 +
// Useful for per-poly intersection tests, for example with weapon strikes to create blood lines and detect if metal was hit</pre>
 +
<pre style="white-space: pre-wrap;">vec3 NavRaycast(vec3 start, vec3 end); // Used for path prediction - TODO: More detail</pre>
 +
<pre style="white-space: pre-wrap;">vec3 NavRaycastSlide(vec3 start, vec3 end, int depth); // Used for path prediction - TODO: More detail,
 +
and difference between slide/not slide</pre>
  
 
== Classes ==
 
== Classes ==

Revision as of 10:05, 5 November 2017

This is a list of the external code that is only available to be used inside a character script - variables, functions, and classes that "magically" exist.

To see a list of external code that is available to all scripts, please see this page - Common Script External Code

This list is pulled from the ~/Documents/Wolfire/Overgrowth/aschar_docs.h file, which is automatically generated by the game.

See this page to find the location for the Wolfire/Overgrowth folder on each OS - How to clear the game's cache

TODO: These can be documented individually, possibly on their own pages - or maybe as just subsections?

Global Variables

ASCollisions col;  // Access collision functions
ScriptParams params;  // Access the script parameters for the current character
ReactionScriptGetter reaction_getter;  // Access to the attack reaction animation data file for the character
SphereCollision sphere_col;  // Stores results of collision functions
MovementObject this_mo;  // The current character's MovementObject instance

Constants

Types in this section that specify the base type for the enum aren't actually exposed via enums. They are defined as const instances of the base type.

Functions that take those parameters will take the base type instead. E.g. _front is actually defined in your script as an "const int _front".

"Flags" enums can be combined using a bit-wise "or" operator, optionally using a temporary variable. E.g. _ANM_FROM_START | _ANM_MIRRORED

enum AnimationFlags : uint8 {
    _ANM_FROM_START,
    _ANM_MIRRORED,
    _ANM_MOBILE,
    _ANM_SUPER_MOBILE,
    _ANM_SWAP,
};
enum AttackerDirectionType : int {
    _front,
    _left,
    _right,
};
enum AttackerHeightType : int {
    _high,
    _low,
    _medium,
};
enum CollisionSides {
    DOUBLE_SIDED,
    SINGLE_SIDED,
};
enum NavPathFlag {
    DT_STRAIGHTPATH_START,
    DT_STRAIGHTPATH_END,
    DT_STRAIGHTPATH_OFFMESH_CONNECTION,
};
enum SamplePolyFlag {
    POLYFLAGS_NONE,
    POLYFLAGS_WALK,
    POLYFLAGS_SWIM,
    POLYFLAGS_DOOR,
    POLYFLAGS_JUMP1,
    POLYFLAGS_JUMP2,
    POLYFLAGS_JUMP3,
    POLYFLAGS_JUMP4,
    POLYFLAGS_JUMP5,
    POLYFLAGS_JUMP_ALL,
    POLYFLAGS_DISABLED,
    POLYFLAGS_ALL,
};

Global Functions

float GetAnimationEventTime( string &in anim_path, string &in event_label );  // Query the time an animation event occurs in an animation
NavPoint GetNavPoint(vec3 target_pos);  // Do a navigation query to the given position
vec3 GetNavPointPos(vec3 target_pos);
// Shortcut to GetNavPoint(target_pos).GetPos(), without checking if the resulting query resulted in a valid position - warning, might return the origin!
NavPath GetPath(vec3 start, vec3 end);  // Do a navigation query (including retrieving waypoints) to a given position
NavPath GetPath(vec3 start, vec3 end, uint16 include_poly_flags, uint16 exclude_poly_flags);
// Do a navigation query (including retrieving waypoints) to a given position, allowing certain navigation types to be filtered or excluded.
// Filtering and exclusion currently just used to filter out jump nodes for non-rabbits
vec3 LineLineIntersect(vec3 start_a, vec3 end_a, vec3 start_b, vec3 end_b);
// Get closest point between two line segments
// Useful for per-poly intersection tests, for example with weapon strikes to create blood lines and detect if metal was hit
vec3 NavRaycast(vec3 start, vec3 end);  // Used for path prediction - TODO: More detail
vec3 NavRaycastSlide(vec3 start, vec3 end, int depth);  // Used for path prediction - TODO: More detail,
 and difference between slide/not slide

Classes

class ASCollisions;
class AttackScriptGetter;
class CollisionPoint;
class NavPath;
class NavPoint;
class ReactionScriptGetter;
class SphereCollision;