Difference between revisions of "Common Script External Code"
m |
(→Classes) |
||
Line 441: | Line 441: | ||
== Classes == | == Classes == | ||
− | <pre style="white-space: pre-wrap;">class array<T>;</pre> | + | <pre style="white-space: pre-wrap;">class array<T>; // A generic array for holding indexable lists of values of the same type</pre> |
− | <pre style="white-space: pre-wrap;">class mat3;</pre> | + | <pre style="white-space: pre-wrap;">class mat3; // A 3x3 matrix for doing linear algebra (transformations on objects)</pre> |
− | <pre style="white-space: pre-wrap;">class mat4;</pre> | + | <pre style="white-space: pre-wrap;">class mat4; // A 4x4 matrix for doing linear algebra (transformations on objects)</pre> |
− | <pre style="white-space: pre-wrap;">class quaternion;</pre> | + | <pre style="white-space: pre-wrap;">class quaternion; // A quaternion for doing linear algebra (rotations on objects)</pre> |
− | <pre style="white-space: pre-wrap;">class vec2;</pre> | + | <pre style="white-space: pre-wrap;">class vec2; // A two-dimensional vector, useful for specifying x/y coordinates</pre> |
− | <pre style="white-space: pre-wrap;">class vec3;</pre> | + | <pre style="white-space: pre-wrap;">class vec3; // A three-dimensional vector, useful for specifying x/y/z coordinates</pre> |
− | <pre style="white-space: pre-wrap;">class vec4;</pre> | + | <pre style="white-space: pre-wrap;">class vec4; // A four-dimensional vector, most useful for specifying r/g/b/alpha colors</pre> |
− | <pre style="white-space: pre-wrap;">class ASContext;</pre> | + | <pre style="white-space: pre-wrap;">class ASContext; // An instance of a running angel script context</pre> |
<pre style="white-space: pre-wrap;">class AnimationClient;</pre> | <pre style="white-space: pre-wrap;">class AnimationClient;</pre> | ||
<pre style="white-space: pre-wrap;">class BoneTransform; // An efficient way to define an unscaled transformation</pre> | <pre style="white-space: pre-wrap;">class BoneTransform; // An efficient way to define an unscaled transformation</pre> | ||
− | <pre style="white-space: pre-wrap;">class Camera;</pre> | + | <pre style="white-space: pre-wrap;">class Camera; // A camera object, either bound to the editor camera or the player camera</pre> |
<pre style="white-space: pre-wrap;">class Campaign;</pre> | <pre style="white-space: pre-wrap;">class Campaign;</pre> | ||
<pre style="white-space: pre-wrap;">class CharacterScriptGetter;</pre> | <pre style="white-space: pre-wrap;">class CharacterScriptGetter;</pre> | ||
− | <pre style="white-space: pre-wrap;">class EnvObject;</pre> | + | <pre style="white-space: pre-wrap;">class EnvObject; // An environmental game object, such as a plant or rock</pre> |
− | <pre style="white-space: pre-wrap;">class Hotspot;</pre> | + | <pre style="white-space: pre-wrap;">class Hotspot; // A game object that supports custom per-object logic, and possibly supports enter/exit events</pre> |
− | <pre style="white-space: pre-wrap;">class ItemObject;</pre> | + | <pre style="white-space: pre-wrap;">class ItemObject; // An item game object, such as a weapon or an inert object you can pick up</pre> |
<pre style="white-space: pre-wrap;">class JSON;</pre> | <pre style="white-space: pre-wrap;">class JSON;</pre> | ||
<pre style="white-space: pre-wrap;">class JSONValue;</pre> | <pre style="white-space: pre-wrap;">class JSONValue;</pre> | ||
<pre style="white-space: pre-wrap;">class KeyboardPress;</pre> | <pre style="white-space: pre-wrap;">class KeyboardPress;</pre> | ||
− | <pre style="white-space: pre-wrap;">class Level;</pre> | + | <pre style="white-space: pre-wrap;">class Level; // An instance of the currently running level</pre> |
<pre style="white-space: pre-wrap;">class LevelDetails;</pre> | <pre style="white-space: pre-wrap;">class LevelDetails;</pre> | ||
<pre style="white-space: pre-wrap;">class MenuItem;</pre> | <pre style="white-space: pre-wrap;">class MenuItem;</pre> | ||
<pre style="white-space: pre-wrap;">class ModID;</pre> | <pre style="white-space: pre-wrap;">class ModID;</pre> | ||
<pre style="white-space: pre-wrap;">class ModLevel;</pre> | <pre style="white-space: pre-wrap;">class ModLevel;</pre> | ||
− | <pre style="white-space: pre-wrap;">class MovementObject;</pre> | + | <pre style="white-space: pre-wrap;">class MovementObject; // A character game object</pre> |
− | <pre style="white-space: pre-wrap;">class Object;</pre> | + | <pre style="white-space: pre-wrap;">class Object; // The base class for all game objects, for accessing common behavior</pre> |
<pre style="white-space: pre-wrap;">class PathPointObject;</pre> | <pre style="white-space: pre-wrap;">class PathPointObject;</pre> | ||
<pre style="white-space: pre-wrap;">class Physics;</pre> | <pre style="white-space: pre-wrap;">class Physics;</pre> |
Revision as of 12:43, 4 November 2017
This is a list of the external code that is available inside all scripts - variables, functions, and classes that "magically" exist.
To see a list of external code that is available only in specific scripts, please see the corresponding page page - Level Script External Code Character Script External Code
This list is pulled from the ~/Documents/Wolfire/Overgrowth/ directory, from the aschar_docs.h and aslevel_docs.h files, which are 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
TODO: Provide different groupings as well? Might be fine to duplicate them into feature sections of this page or another page.
TODO: It's possible some of these might not work in hotspot scripts. If you find that to be the case, please copy a function to level scripts/character scripts and remove it from here.
Global Variables
Camera camera;
CharacterScriptGetter character_getter;
ASContext context;
float last_controller_event_time; // The time the last game controller input event occurred
float last_keyboard_event_time; // The time the last keyboard input event occurred
float last_mouse_event_time; // The time the last mouse input event occurred
Level level;
Physics physics;
uint UINT32MAX;
Constants
enum AttachmentType { _at_attachment, _at_grip, _at_sheathe, _at_unspecified, };
enum CameraFlags { kEditorCamera, kPreviewCamera, };
enum DebugDrawLifespanType : int { _delete_on_draw, _delete_on_update, _fade, _persistent, };
enum EngineState { kEngineNoState, kEngineLevelState, kEngineEditorLevelState, kEngineEngineScriptableUIState, kEngineCampaignState, };
enum EntityType { _env_object, _decal_object, _item_object, _movement_object, _hotspot_object, _placeholder_object, _path_point_object, _dynamic_light_object, };
enum ItemType : int { _collectable, _item_no_type, _misc, _weapon, };
enum JsonValueType { JSONnullValue, JSONintValue, JSONuintValue, JSONrealValue, JSONstringValue, JSONbooleanValue, JSONarrayValue, JSONobjectValue, };
enum KeyboardInputModeFlag { KIMF_NO, KIMF_MENU, KIMF_PLAYING, KIMF_LEVEL_EDITOR_GENERAL, KIMF_LEVEL_EDITOR_DIALOGUE_EDITOR, KIMF_GUI_GENERAL, KIMF_ANY, };
enum KnockedOutType : int { _awake, _dead, _unconscious, };
enum LogType { fatal, error, warning, info, debug, spam, };
enum MessageType : int { _editor_msg; _plant_movement_msg; };
enum SDLNumeric { K_ENTER, KP_ENTER, K_BACKSPACE, K_0, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, KP_0, KP_1, KP_2, KP_3, KP_4, KP_5, KP_6, KP_7, KP_8, KP_9, };
enum SoundGroupPriorityType : int { _sound_priority_high, _sound_priority_low, _sound_priority_max, _sound_priority_med, _sound_priority_very_high, };
enum TextAtlasFlags { kSmallLowercase, };
enum UserVote { k_VoteUnknown, k_VoteNone, k_VoteUp, k_VoteDown, };
Global Functions
float abs(float);
float acos(float);
float asin(float);
void assert(bool val);
float atan(float);
float atan2(float, float);
float atof(const string &in str);
int atoi(const string &in str);
float ceil(float);
float cos(float);
vec3 cross(const vec3 &in, const vec3 &in);
float distance(const vec2 &in, const vec2 &in);
float distance(const vec3 &in, const vec3 &in);
float distance_squared(const vec2 &in, const vec2 &in);
float distance_squared(const vec3 &in, const vec3 &in);
float dot(const vec2 &in, const vec2 &in);
float dot(const vec3 &in, const vec3 &in);
float floor(float);
double fpFromIEEE(uint64);
float fpFromIEEE(uint);
uint fpToIEEE(float);
uint64 fpToIEEE(double);
BoneTransform mix(const BoneTransform &in a, const BoneTransform &in b, float alpha);
float mix(float a, float b, float amount);
float mix(float a, float b, float amount);
mat4 mix(const mat4 &in a, const mat4 &in b, float alpha);
quaternion mix(const quaternion &in a, const quaternion &in b, float alpha);
vec2 mix(vec2 a, vec2 b, float alpha);
vec3 mix(vec3 a, vec3 b, float alpha);
vec4 mix(vec4 a, vec4 b, float alpha);
vec2 normalize(const vec2 &in);
vec3 normalize(const vec3 &in);
float pow(float val, float exponent);
int rand();
vec2 reflect(const vec2 &in vec, const vec2 &in normal);
vec3 reflect(const vec3 &in vec, const vec3 &in normal);
float sin(float);
float sqrt(float);
float tan(float);
mat4 transpose(mat4);
float xz_distance(const vec3 &in, const vec3 &in);
float xz_distance_squared(const vec3 &in, const vec3 &in);
void ActivateKeyboardEvents();
void AddDebugDrawRibbonPoint(int which, vec3 pos, vec4 color, float width);
bool AddMusic(const string &in);
void Breakpoint(int);
bool CheckSaveLevelChanges();
void ClearTemporaryDecals(); // Like blood splats and footprints
void ClearUndoHistory();
void ConnectParticles(uint32 id_a, uint32 id_b); // Used for ribbon particles, like throat-cut blood
void CreateCustomHull(const string &in key, const array<vec3> &vertices);
int CreateObject(const string &in path);
int CreateObject(const string &in path, bool exclude_from_save);
void DeactivateAllMods();
void DeactivateKeyboardEvents();
int DebugDrawBillboard(const string &in path, vec3 center, float scale, vec4 color, int lifespan);
int DebugDrawCircle(mat4 transform, vec4 color, int lifespan);
int DebugDrawLine(vec3 start, vec3 end, vec3 color, int lifespan);
int DebugDrawLine(vec3 start, vec3 end, vec3 start_color, vec3 end_color, int lifespan);
int DebugDrawLine(vec3 start, vec3 end, vec4 start_color, vec4 end_color, int lifespan);
int DebugDrawLines(const array<vec3> &vertices, vec4 color, int lifespan);
int DebugDrawPoint(vec3 pos, vec4 color, int lifespan);
void DebugDrawRemove(int id);
int DebugDrawRibbon(int lifespan);
int DebugDrawRibbon(vec3 start, vec3 end, vec4 start_color, vec4 end_color, float start_width, float end_width, int lifespan);
int DebugDrawText(vec3 pos, string text, float scale, bool screen_space, int lifespan);
int DebugDrawWireBox(vec3 pos, vec3 dimensions, vec3 color, int lifespan);
int DebugDrawWireCylinder(vec3 pos, float radius, float height, vec3 color, int lifespan);
int DebugDrawWireMesh(string path, mat4 transform, vec4 color, int lifespan);
int DebugDrawWireScaledSphere(vec3 pos, float radius, vec3 scale, vec3 color, int lifespan);
int DebugDrawWireScaledSphere(vec3 pos, float radius, vec3 scale, vec4 color, int lifespan);
int DebugDrawWireSphere(vec3 pos, float radius, vec3 color, int lifespan);
bool DebugKeysEnabled();
int DebugSetPosition(int id, vec3 pos);
void DebugText(string key, string display_text, float lifetime);
void DeleteObjectID(int);
void DeselectAll();
void DisplayError(const string &in title, const string &in contents);
void DisposeTextAtlases();
bool DoesItemFitInItem(int item_id, int holster_item_id);
void DrawTextAtlas(const string &in path, int pixel_height, int flags, const string &in txt, int x, int y, vec4 color);
void DrawTextAtlas2(const string &in path, int pixel_height, int flags, const string &in txt, int x, int y, vec4 color, uint char_limit);
int DuplicateObject(Object@ obj);
bool EditorEnabled();
bool EditorModeActive();
void EnterTelemetryZone(const string &in name);
bool FileExists(string &in);
int FindFirstCharacterInGroup(int id);
string FloatString(float val, int digits);
array<ModID>@ GetActiveModSids();
array<string>@ GetAvailableBindingCategories();
array<string>@ GetAvailableBindings(const string &in);
vec3 GetBaseSkyTint();
string GetBindingValue(string binding_category, string binding);
int GetBloodLevel();
const vec3& GetBloodTint();
string GetBuildTimestamp( );
string GetBuildVersionFull( );
string GetBuildVersionShort( );
Campaign GetCampaign(string& campaign_id);
array<Campaign>@ GetCampaigns();
void GetCharacters(array<int>@ id_array);
void GetCharactersInHull(string model_path, mat4, array<int>@ id_array);
void GetCharactersInSphere(vec3 position, float radius, array<int>@ id_array);
int GetCodeForKey(string key_name);
uint GetCodepointCount( const string &in );
bool GetConfigValueBool(string index);
float GetConfigValueFloat(string index);
int GetConfigValueInt(string key);
array<string>@ GetConfigValueOptions(string index);
string GetConfigValueString(string index);
string GetCurrCampaignID();
string GetCurrLevel();
string GetCurrLevelAbsPath();
string GetCurrLevelID();
string GetCurrLevelName();
string GetCurrLevelRelPath();
string GetCurrentLevelModsourceID();
string GetCurrentMenuModsourceID();
int GetFontFaceID(const string &in path, int pixel_height);
float GetFriction(const vec3 &in position);
float GetHDRBlackPoint(void);
float GetHDRBloomMult(void);
float GetHDRWhitePoint(void);
bool GetInputDown(int controller_id, const string &in input_label);
bool GetInputDownFiltered(int controller_id, const string &in input_label, uint filter);
uint GetInputMode();
bool GetInputPressed(int controller_id, const string &in input_label);
bool GetInputPressedFiltered(int controller_id, const string &in input_label, uint filter);
string GetInterlevelData(const string &in);
float GetLayerGain(const string &in layer);
array<string>@ GetLayerNames();
uint GetLengthInBytesForNCodepoints( const string &in, uint codepoint_index );
string GetLevelName(const string& path);
string GetLocaleStringForScancode(int scancode);
float GetLookXAxis(int controller_id);
float GetLookYAxis(int controller_id);
bool GetMenuPaused(); // Is game paused by a menu
array<ModID>@ GetModSids();
float GetMoveXAxis(int controller_id);
float GetMoveYAxis(int controller_id);
int GetNumCharacters();
int GetNumHotspots();
int GetNumItems();
array<int>@ GetObjectIDs();
array<int>@ GetObjectIDsType(int type);
void GetObjectsInHull(string model_path, mat4, array<int>@ id_array);
uint64 GetPerformanceCounter(); // Get high precision time info for profiling
uint64 GetPerformanceFrequency(); // Used to convert PerformanceCounter into seconds
array<vec2>@ GetPossibleResolutions();
array<KeyboardPress>@ GetRawKeyboardInputs();
void GetRotationBetweenVectors(const vec3 &in start, const vec3 &in end, quaternion &out rotation);
int GetScreenHeight();
int GetScreenWidth();
string GetSegment();
vec3 GetSkyTint();
string GetSong();
bool GetSplitscreen();
string GetStringDescriptionForBinding( const string &in, const string &in );
float GetSunAmbient();
vec3 GetSunColor();
vec3 GetSunPosition();
TextMetrics GetTextAtlasMetrics(const string &in path, int pixel_height, int flags, const string &in txt );
TextMetrics GetTextAtlasMetrics2(const string &in path, int pixel_height, int flags, const string &in txt, uint char_limit );
bool IsGroupDerived(int id);
bool IsKeyDown(int key_code);
bool IsWorkshopAvailable();
bool IsWorkshopMod(ModID& id);
bool IsWorkshopSubscribed(ModID& id);
void LeaveTelemetryZone();
void LoadEditorLevel();
void LoadLevel(string level_path);
void LoadLevelID(string id);
void Log( LogType level, const string &in str );
uint32 MakeParticle(string path, vec3 pos, vec3 vel);
uint32 MakeParticle(string path, vec3 pos, vec3 vel, vec3 color);
mat3 Mat3FromQuaternion(const quaternion &in);
mat4 Mat4FromQuaternion(const quaternion &in);
bool MediaMode();
bool ModActivation(ModID& sid, bool active);
bool ModCanActivate(ModID& id);
string ModGetAuthor(ModID& id);
array<ModLevel>@ ModGetCampaignLevels(ModID& sid);
string ModGetDescription(ModID& id);
string ModGetID(ModID& id);
array<MenuItem>@ ModGetMenuItems(ModID& sid);
string ModGetName(ModID& id);
string ModGetPath(ModID& sid);
array<ModLevel>@ ModGetSingleLevels(ModID& sid);
int ModGetSource(ModID& id);
string ModGetTags(ModID& id);
string ModGetThumbnail(ModID& sid);
UserVote ModGetUserVote(ModID& sid);
string ModGetValidityString(ModID& sid);
string ModGetVersion(ModID& id);
bool ModIsActive(ModID& id);
bool ModIsCore(ModID& id);
bool ModIsFavorite(ModID& id);
bool ModIsValid(ModID& id);
bool ModNeedsRestart(ModID& id);
bool MovementObjectExists(int id);
vec3 Mult(quaternion, vec3); // Applies a quaternion rotation to a vector
bool ObjectExists();
bool ObjectExists(int id);
void OpenModAuthorWorkshopPage(ModID& id);
void OpenModWorkshopPage(ModID& id);
void OpenWorkshop();
void PlaySegment(const string &in);
void PlaySong(const string &in);
int PlaySound(string path);
int PlaySound(string path, vec3 position);
int PlaySoundGroup(string path);
int PlaySoundGroup(string path, float gain);
int PlaySoundGroup(string path, vec3 position);
int PlaySoundGroup(string path, vec3 position, float gain);
int PlaySoundGroup(string path, vec3 position, int priority);
int PlaySoundLoop(const string &in path, float gain);
int PlaySoundLoopAtLocation(const string &in path, vec3 pos, float gain);
void PrintCallstack();
quaternion QuaternionFromMat4(const mat4 &in);
void QueueDeleteObjectID(int);
void QueueSegment(const string &in);
float RangedRandomFloat(float min, float max);
MovementObject@ ReadCharacter(int index); // e.g. first character in scene
MovementObject@ ReadCharacterID(int id); // e.g. character with object ID 39
EnvObject@ ReadEnvObjectID(int id);
Hotspot@ ReadHotspot(int index);
ItemObject@ ReadItem(int index);
ItemObject@ ReadItemID(int id);
Object@ ReadObjectFromID(int);
void ReloadMods();
void ReloadStaticValues();
bool RemoveMusic(const string &in);
void RequestModSetFavorite(ModID& id, bool fav);
void RequestModSetUserVote(ModID& id, bool voteup);
void RequestWorkshopSubscribe(ModID& id);
void RequestWorkshopUnSubscribe(ModID& id);
void ResetBinding(string binding_category, string binding);
void ResetLevel();
void RibbonItemFlash(const string &in);
void RibbonItemSetEnabled(const string &in, bool);
void RibbonItemSetToggled(const string &in, bool);
string SaveConfig();
void SendGlobalMessage(string msg);
void SendMessage(int target, int type, vec3 vec_a, vec3 vec_b);
void SendMessage(int type, string msg);
void SetAirWhoosh(float volume, float pitch);
void SetBindingValue(string binding_category, string binding, string value);
void SetCampaignID(string id);
void SetConfigValueBool(string key, bool value);
void SetConfigValueFloat(string key, float value);
void SetConfigValueInt(string key, int value);
void SetConfigValueString(string key, string value);
void SetFlareDiffuse(float);
void SetGrabMouse(bool);
void SetHDRBlackPoint(float);
void SetHDRBloomMult(float);
void SetHDRWhitePoint(float);
void SetInterlevelData(const string &in, const string &in);
void SetKeyboardBindingValue(string binding_category, string binding, uint32 scancode);
void SetLayerGain(const string &in layer, float gain);
void SetMediaMode(bool);
void SetPaused(bool paused);
void SetSegment(const string &in);
void SetSkyTint(vec3);
void SetSong(const string &in);
void SetSoundGain(int handle, float gain);
void SetSoundPitch(int handle, float pitch);
void SetSoundPosition(int handle, vec3 pos);
void SetSunAmbient(float);
void SetSunColor(vec3);
void SetSunPosition(vec3);
void StartStopwatch();
void StartTextInput();
uint64 StopAndReportStopwatch();
void StopSound(int handle);
void StopTextInput();
int StorageGetInt32(string index);
string StorageGetString(string index);
bool StorageHasInt32(string index);
bool StorageHasString(string index);
void StorageSetInt32(string index, int value);
void StorageSetString(string index, string value);
void TimedSlowMotion(float target_time_scale, float how_long, float delay); // Used to trigger brief periods of slow motion
void TintParticle(uint32 id, const vec3 &in color);
string ToUpper(string &in);
void UpdateListener(vec3 pos, vec3 vel, vec3 facing, vec3 up);
uint WorkshopDownloadPendingCount();
uint WorkshopDownloadingCount();
uint WorkshopNeedsUpdateCount();
uint WorkshopSubscribedNotInstalledCount();
float WorkshopTotalDownloadProgress();
Classes
class array<T>; // A generic array for holding indexable lists of values of the same type
class mat3; // A 3x3 matrix for doing linear algebra (transformations on objects)
class mat4; // A 4x4 matrix for doing linear algebra (transformations on objects)
class quaternion; // A quaternion for doing linear algebra (rotations on objects)
class vec2; // A two-dimensional vector, useful for specifying x/y coordinates
class vec3; // A three-dimensional vector, useful for specifying x/y/z coordinates
class vec4; // A four-dimensional vector, most useful for specifying r/g/b/alpha colors
class ASContext; // An instance of a running angel script context
class AnimationClient;
class BoneTransform; // An efficient way to define an unscaled transformation
class Camera; // A camera object, either bound to the editor camera or the player camera
class Campaign;
class CharacterScriptGetter;
class EnvObject; // An environmental game object, such as a plant or rock
class Hotspot; // A game object that supports custom per-object logic, and possibly supports enter/exit events
class ItemObject; // An item game object, such as a weapon or an inert object you can pick up
class JSON;
class JSONValue;
class KeyboardPress;
class Level; // An instance of the currently running level
class LevelDetails;
class MenuItem;
class ModID;
class ModLevel;
class MovementObject; // A character game object
class Object; // The base class for all game objects, for accessing common behavior
class PathPointObject;
class Physics;
class RiggedObject;
class ScriptParams;
class Skeleton;
class TextCanvasTexture;
class TextMetrics;
class TextStyle;