Difference between revisions of "Character Script External Code"
(→Global Functions) |
(→Classes: Add documentation for collision query classes) |
||
Line 84: | Line 84: | ||
== Classes == | == Classes == | ||
+ | === [[#ASCollisions class|ASCollisions class]] === | ||
+ | <pre style="white-space: pre-wrap;">class ASCollisions;</pre> | ||
+ | Invoke collision test queries. Results are stored in the global SphereCollision sphere_col object instance. | ||
+ | |||
+ | '''Methods''' | ||
+ | <pre style="white-space: pre-wrap;">vec3 GetSlidingCapsuleCollision(vec3 start, vec3 end, float radius); | ||
+ | void GetSlidingSphereCollision(vec3 pos, float radius); | ||
+ | void GetSlidingSphereCollisionDoubleSided(vec3 pos, float radius); | ||
+ | void GetScaledSphereCollision(vec3 pos, float radius, vec3 scale); | ||
+ | void GetScaledSpherePlantCollision(vec3 pos, float radius, vec3 scale); | ||
+ | void GetSlidingScaledSphereCollision(vec3 pos, float radius, vec3 scale); | ||
+ | void GetCylinderCollision(vec3 pos, float radius, float height); | ||
+ | void GetCylinderCollisionDoubleSided(vec3 pos, float radius, float height); | ||
+ | void GetSweptSphereCollision(const vec3 &in start, const vec3 &in end, float radius); | ||
+ | void GetSweptSphereCollisionCharacters(vec3 start, vec3 end, float radius); | ||
+ | void GetSweptCylinderCollision(vec3 start, vec3 end, float radius, float height); | ||
+ | void GetSweptCylinderCollisionDoubleSided(vec3 start, vec3 end, float radius, float height); | ||
+ | void GetSweptBoxCollision(vec3 start, vec3 end, vec3 dimensions); | ||
+ | void CheckRayCollisionCharacters(vec3 start, vec3 end); | ||
+ | vec3 GetRayCollision(vec3 start, vec3 end); | ||
+ | void GetObjRayCollision(vec3 start, vec3 end); | ||
+ | void GetPlantRayCollision(vec3 start, vec3 end); | ||
+ | void GetObjectsInSphere(vec3 pos, float radius);</pre> | ||
− | <pre style="white-space: pre-wrap;">class | + | '''Related Global Variables''' |
+ | <pre style="white-space: pre-wrap;">ASCollisions col; // The global instance of this class</pre> | ||
+ | <pre style="white-space: pre-wrap;">SphereCollision sphere_col; // Results of the last invoked collision method are stored here</pre> | ||
+ | ---- | ||
<pre style="white-space: pre-wrap;">class AttackScriptGetter;</pre> | <pre style="white-space: pre-wrap;">class AttackScriptGetter;</pre> | ||
+ | ---- | ||
+ | === [[#CollisionPoint class|CollisionPoint class]] === | ||
<pre style="white-space: pre-wrap;">class CollisionPoint;</pre> | <pre style="white-space: pre-wrap;">class CollisionPoint;</pre> | ||
+ | An contact point from a collision query. There may be multiple of these for a given collision. | ||
+ | |||
+ | '''Properties''' | ||
+ | <pre style="white-space: pre-wrap;">vec3 position; // The position where the intersection occurred | ||
+ | vec3 normal; // The surface normal at the point of intersection | ||
+ | vec3 custom_normal; // TODO: What is this? I assume a secondary normal for certain objects? | ||
+ | int id; // The collision id - TODO: What is this good for? | ||
+ | int tri; // The index of the triangle that was intersected with - TODO: What is this good for?</pre> | ||
+ | |||
+ | '''Related Global Variables''' | ||
+ | <pre style="white-space: pre-wrap;">ASCollisions col; // The global instance of a class you can use to perform these collision queries</pre> | ||
+ | <pre style="white-space: pre-wrap;">SphereCollision sphere_col; // The global instance of a class where you can get the list of these collision points from the last collision query</pre> | ||
+ | ---- | ||
<pre style="white-space: pre-wrap;">class NavPath;</pre> | <pre style="white-space: pre-wrap;">class NavPath;</pre> | ||
<pre style="white-space: pre-wrap;">class NavPoint;</pre> | <pre style="white-space: pre-wrap;">class NavPoint;</pre> | ||
<pre style="white-space: pre-wrap;">class ReactionScriptGetter;</pre> | <pre style="white-space: pre-wrap;">class ReactionScriptGetter;</pre> | ||
+ | ---- | ||
+ | === [[#SphereCollision class|SphereCollision class]] === | ||
<pre style="white-space: pre-wrap;">class SphereCollision;</pre> | <pre style="white-space: pre-wrap;">class SphereCollision;</pre> | ||
+ | Stored results for the last collision test query performed. | ||
+ | |||
+ | '''Properties''' | ||
+ | <pre style="white-space: pre-wrap;">vec3 position; // The origin passed when invoking the collision query | ||
+ | vec3 adjusted_position; // TODO: What is this? Is this if it is adjusted to be out of initial contact? | ||
+ | float radius; // The radius passed when invoking the collision query</pre> | ||
+ | |||
+ | '''Methods''' | ||
+ | <pre style="white-space: pre-wrap;">int NumContacts(); // Get the count of contacts from the last collision test | ||
+ | CollisionPoint GetContact(int index); // Get the contact point with a given index from the last collision test</pre> | ||
+ | |||
+ | '''Related Global Variables''' | ||
+ | <pre style="white-space: pre-wrap;">ASCollisions col; // The global instance of a class you can use to perform these collision queries</pre> | ||
+ | <pre style="white-space: pre-wrap;">SphereCollision sphere_col; // The global instance of this class</pre> |
Revision as of 10:24, 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?
Contents
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
ASCollisions class
class ASCollisions;
Invoke collision test queries. Results are stored in the global SphereCollision sphere_col object instance.
Methods
vec3 GetSlidingCapsuleCollision(vec3 start, vec3 end, float radius); void GetSlidingSphereCollision(vec3 pos, float radius); void GetSlidingSphereCollisionDoubleSided(vec3 pos, float radius); void GetScaledSphereCollision(vec3 pos, float radius, vec3 scale); void GetScaledSpherePlantCollision(vec3 pos, float radius, vec3 scale); void GetSlidingScaledSphereCollision(vec3 pos, float radius, vec3 scale); void GetCylinderCollision(vec3 pos, float radius, float height); void GetCylinderCollisionDoubleSided(vec3 pos, float radius, float height); void GetSweptSphereCollision(const vec3 &in start, const vec3 &in end, float radius); void GetSweptSphereCollisionCharacters(vec3 start, vec3 end, float radius); void GetSweptCylinderCollision(vec3 start, vec3 end, float radius, float height); void GetSweptCylinderCollisionDoubleSided(vec3 start, vec3 end, float radius, float height); void GetSweptBoxCollision(vec3 start, vec3 end, vec3 dimensions); void CheckRayCollisionCharacters(vec3 start, vec3 end); vec3 GetRayCollision(vec3 start, vec3 end); void GetObjRayCollision(vec3 start, vec3 end); void GetPlantRayCollision(vec3 start, vec3 end); void GetObjectsInSphere(vec3 pos, float radius);
Related Global Variables
ASCollisions col; // The global instance of this class
SphereCollision sphere_col; // Results of the last invoked collision method are stored here
class AttackScriptGetter;
CollisionPoint class
class CollisionPoint;
An contact point from a collision query. There may be multiple of these for a given collision.
Properties
vec3 position; // The position where the intersection occurred vec3 normal; // The surface normal at the point of intersection vec3 custom_normal; // TODO: What is this? I assume a secondary normal for certain objects? int id; // The collision id - TODO: What is this good for? int tri; // The index of the triangle that was intersected with - TODO: What is this good for?
Related Global Variables
ASCollisions col; // The global instance of a class you can use to perform these collision queries
SphereCollision sphere_col; // The global instance of a class where you can get the list of these collision points from the last collision query
class NavPath;
class NavPoint;
class ReactionScriptGetter;
SphereCollision class
class SphereCollision;
Stored results for the last collision test query performed.
Properties
vec3 position; // The origin passed when invoking the collision query vec3 adjusted_position; // TODO: What is this? Is this if it is adjusted to be out of initial contact? float radius; // The radius passed when invoking the collision query
Methods
int NumContacts(); // Get the count of contacts from the last collision test CollisionPoint GetContact(int index); // Get the contact point with a given index from the last collision test
Related Global Variables
ASCollisions col; // The global instance of a class you can use to perform these collision queries
SphereCollision sphere_col; // The global instance of this class