2023-11-09 18:28:02 +00:00
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" / >
< head >
2025-03-28 23:39:49 +01:00
< title > TombEngine 1.8.1 Lua API< / title >
2023-11-09 18:28:02 +00:00
< link rel = "stylesheet" href = "../ldoc.css" type = "text/css" / >
< / head >
< body >
< div id = "container" >
< div id = "product" >
< div id = "product_logo" > < / div >
< div id = "product_name" > < big > < b > < / b > < / big > < / div >
< div id = "product_description" > < / div >
< / div > <!-- id="product" -->
< div id = "main" >
<!-- Menu -->
< div id = "navigation" >
< br / >
2024-12-15 19:24:49 +03:00
< h1 > TombEngine< / h1 >
2023-11-09 18:28:02 +00:00
< ul >
< li > < a href = "../index.html" > Index< / a > < / li >
< / ul >
< h2 > 1 Modules< / h2 >
< ul class = "nowrap" >
< li > < a href = "../1 modules/Effects.html" > Effects< / a > < / li >
< li > < a href = "../1 modules/Flow.html" > Flow< / a > < / li >
< li > < a href = "../1 modules/Input.html" > Input< / a > < / li >
< li > < a href = "../1 modules/Inventory.html" > Inventory< / a > < / li >
< li > < a href = "../1 modules/Logic.html" > Logic< / a > < / li >
< li > < a href = "../1 modules/Objects.html" > Objects< / a > < / li >
< li > < a href = "../1 modules/Sound.html" > Sound< / a > < / li >
< li > < a href = "../1 modules/Strings.html" > Strings< / a > < / li >
< li > < here > Util< / here > < / li >
< li > < a href = "../1 modules/View.html" > View< / a > < / li >
< / ul >
< h2 > 2 Classes< / h2 >
< ul class = "nowrap" >
2025-03-05 03:13:48 -05:00
< li > < a href = "../2 classes/Collision.Probe.html" > Collision.Probe< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../2 classes/Flow.Level.html" > Flow.Level< / a > < / li >
< li > < a href = "../2 classes/Flow.Settings.html" > Flow.Settings< / a > < / li >
2024-12-15 23:59:31 +01:00
< li > < a href = "../2 classes/Flow.Statistics.html" > Flow.Statistics< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../2 classes/Objects.AIObject.html" > Objects.AIObject< / a > < / li >
< li > < a href = "../2 classes/Objects.Camera.html" > Objects.Camera< / a > < / li >
< li > < a href = "../2 classes/Objects.LaraObject.html" > Objects.LaraObject< / a > < / li >
< li > < a href = "../2 classes/Objects.Moveable.html" > Objects.Moveable< / a > < / li >
< li > < a href = "../2 classes/Objects.Room.html" > Objects.Room< / a > < / li >
< li > < a href = "../2 classes/Objects.Sink.html" > Objects.Sink< / a > < / li >
< li > < a href = "../2 classes/Objects.SoundSource.html" > Objects.SoundSource< / a > < / li >
< li > < a href = "../2 classes/Objects.Static.html" > Objects.Static< / a > < / li >
< li > < a href = "../2 classes/Objects.Volume.html" > Objects.Volume< / a > < / li >
< li > < a href = "../2 classes/Strings.DisplayString.html" > Strings.DisplayString< / a > < / li >
2024-12-15 19:24:49 +03:00
< li > < a href = "../2 classes/View.DisplaySprite.html" > View.DisplaySprite< / a > < / li >
2023-11-09 18:28:02 +00:00
< / ul >
< h2 > 3 Primitive Classes< / h2 >
< ul class = "nowrap" >
2024-12-15 19:24:49 +03:00
< li > < a href = "../3 primitive classes/Flow.Fog.html" > Flow.Fog< / a > < / li >
2025-03-08 23:30:07 -05:00
< li > < a href = "../3 primitive classes/Flow.Horizon.html" > Flow.Horizon< / a > < / li >
2024-12-15 19:24:49 +03:00
< li > < a href = "../3 primitive classes/Flow.InventoryItem.html" > Flow.InventoryItem< / a > < / li >
< li > < a href = "../3 primitive classes/Flow.LensFlare.html" > Flow.LensFlare< / a > < / li >
< li > < a href = "../3 primitive classes/Flow.SkyLayer.html" > Flow.SkyLayer< / a > < / li >
2025-03-15 01:01:05 +01:00
< li > < a href = "../3 primitive classes/Flow.Starfield.html" > Flow.Starfield< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../3 primitive classes/Color.html" > Color< / a > < / li >
< li > < a href = "../3 primitive classes/Rotation.html" > Rotation< / a > < / li >
2024-12-15 19:24:49 +03:00
< li > < a href = "../3 primitive classes/Time.html" > Time< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../3 primitive classes/Vec2.html" > Vec2< / a > < / li >
< li > < a href = "../3 primitive classes/Vec3.html" > Vec3< / a > < / li >
< / ul >
< h2 > 4 Enums< / h2 >
< ul class = "nowrap" >
2025-03-05 03:13:48 -05:00
< li > < a href = "../4 enums/Collision.MaterialType.html" > Collision.MaterialType< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../4 enums/Effects.BlendID.html" > Effects.BlendID< / a > < / li >
< li > < a href = "../4 enums/Effects.EffectID.html" > Effects.EffectID< / a > < / li >
2025-03-15 20:19:13 +01:00
< li > < a href = "../4 enums/Effects.StreamerFeatherMode.html" > Effects.StreamerFeatherMode< / a > < / li >
2025-03-08 22:45:25 -05:00
< li > < a href = "../4 enums/Effects.ParticleAnimationType.html" > Effects.ParticleAnimationType< / a > < / li >
2024-12-15 19:24:49 +03:00
< li > < a href = "../4 enums/Flow.ErrorMode.html" > Flow.ErrorMode< / a > < / li >
2024-11-20 23:54:39 +03:00
< li > < a href = "../4 enums/Flow.FreezeMode.html" > Flow.FreezeMode< / a > < / li >
2023-12-26 20:47:08 +00:00
< li > < a href = "../4 enums/Flow.GameStatus.html" > Flow.GameStatus< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../4 enums/Input.ActionID.html" > Input.ActionID< / a > < / li >
< li > < a href = "../4 enums/Objects.AmmoType.html" > Objects.AmmoType< / a > < / li >
2025-02-06 16:35:59 +11:00
< li > < a href = "../4 enums/Objects.HandStatus.html" > Objects.HandStatus< / a > < / li >
2024-12-15 23:34:33 +01:00
< li > < a href = "../4 enums/Objects.WeaponType.html" > Objects.WeaponType< / a > < / li >
2023-12-26 20:47:08 +00:00
< li > < a href = "../4 enums/Objects.MoveableStatus.html" > Objects.MoveableStatus< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../4 enums/Objects.ObjID.html" > Objects.ObjID< / a > < / li >
< li > < a href = "../4 enums/Objects.RoomFlagID.html" > Objects.RoomFlagID< / a > < / li >
< li > < a href = "../4 enums/Objects.RoomReverb.html" > Objects.RoomReverb< / a > < / li >
< li > < a href = "../4 enums/Sound.SoundTrackType.html" > Sound.SoundTrackType< / a > < / li >
2024-11-16 22:07:57 +11:00
< li > < a href = "../4 enums/Strings.DisplayStringOption.html" > Strings.DisplayStringOption< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../4 enums/Util.LogLevel.html" > Util.LogLevel< / a > < / li >
2023-11-11 12:16:23 +00:00
< li > < a href = "../4 enums/View.AlignMode.html" > View.AlignMode< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../4 enums/View.CameraType.html" > View.CameraType< / a > < / li >
2024-01-07 13:22:52 +00:00
< li > < a href = "../4 enums/View.PostProcessMode.html" > View.PostProcessMode< / a > < / li >
2023-11-11 12:16:23 +00:00
< li > < a href = "../4 enums/View.ScaleMode.html" > View.ScaleMode< / a > < / li >
2023-11-09 18:28:02 +00:00
< / ul >
< h2 > 5 Lua utility modules< / h2 >
< ul class = "nowrap" >
2025-03-08 23:59:49 -05:00
< li > < a href = "../5 lua utility modules/CustomBar.html" > CustomBar< / a > < / li >
2025-02-06 18:05:25 -05:00
< li > < a href = "../5 lua utility modules/Diary.html" > Diary< / a > < / li >
2023-11-09 18:28:02 +00:00
< li > < a href = "../5 lua utility modules/EventSequence.html" > EventSequence< / a > < / li >
< li > < a href = "../5 lua utility modules/Timer.html" > Timer< / a > < / li >
2024-12-16 21:33:37 +01:00
< li > < a href = "../5 lua utility modules/Type.html" > Type< / a > < / li >
2023-11-09 18:28:02 +00:00
< / ul >
< / div >
< div id = "content" >
< h1 > Table < code > Util< / code > < / h1 >
< p > Utility functions for various calculations.< / p >
< p >
< / p >
< h2 > < a href = "#Functions" > Functions< / a > < / h2 >
< table class = "function_list" >
< tr >
< td class = "name" > < a href = "#HasLineOfSight" > HasLineOfSight(roomID, posA, posB)< / a > < / td >
< td class = "summary" > Determine if there is a clear line of sight between two positions.< / td >
< / tr >
< tr >
< td class = "name" > < a href = "#CalculateHorizontalDistance" > CalculateHorizontalDistance(posA, posB)< / a > < / td >
< td class = "summary" > Calculate the horizontal distance between two positions.< / td >
< / tr >
< tr >
2023-12-26 20:47:08 +00:00
< td class = "name" > < a href = "#GetDisplayPosition" > GetDisplayPosition(worldPos)< / a > < / td >
< td class = "summary" > Get the projected display space position of a 3D world position.< / td >
< / tr >
< tr >
2023-11-09 18:28:02 +00:00
< td class = "name" > < a href = "#PercentToScreen" > PercentToScreen(x, y)< / a > < / td >
< td class = "summary" > Translate a pair display position coordinates to pixel coordinates.< / td >
< / tr >
< tr >
< td class = "name" > < a href = "#ScreenToPercent" > ScreenToPercent(x, y)< / a > < / td >
< td class = "summary" > Translate a pair of pixel coordinates to display position coordinates.< / td >
< / tr >
< tr >
2023-12-26 20:47:08 +00:00
< td class = "name" > < a href = "#PickMoveableByDisplayPosition" > PickMoveableByDisplayPosition(Display)< / a > < / td >
< td class = "summary" > Pick a moveable by the given display position.< / td >
2023-11-09 18:28:02 +00:00
< / tr >
< tr >
2023-12-26 20:47:08 +00:00
< td class = "name" > < a href = "#PickStaticByDisplayPosition" > PickStaticByDisplayPosition(Display)< / a > < / td >
< td class = "summary" > Pick a static mesh by the given display position.< / td >
< / tr >
< tr >
< td class = "name" > < a href = "#PrintLog" > PrintLog(message, logLevel[, allowSpam])< / a > < / td >
< td class = "summary" > Write messages within the Log file< / td >
2023-11-09 18:28:02 +00:00
< / tr >
< / table >
< br / >
< br / >
< h2 class = "section-header " > < a name = "Functions" > < / a > Functions< / h2 >
< dl class = "function" >
< dt >
< a name = "HasLineOfSight" > < / a >
< strong > HasLineOfSight(roomID, posA, posB)< / strong >
< / dt >
< dd >
Determine if there is a clear line of sight between two positions.
NOTE: Limited to room geometry. Objects are ignored.()
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > roomID< / span >
< span class = "types" > < span class = "type" > float< / span > < / span >
Room ID of the first position's room.
< / li >
< li > < span class = "parameter" > posA< / span >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec3.html#" > Vec3< / a > < / span >
First position.
< / li >
< li > < span class = "parameter" > posB< / span >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec3.html#" > Vec3< / a > < / span >
Second position.
< / li >
< / ul >
< h3 > Returns:< / h3 >
< ol >
< span class = "types" > < span class = "type" > bool< / span > < / span >
< strong > true< / strong > if there is a line of sight, < strong > false< / strong > if not.
< / ol >
< h3 > Usage:< / h3 >
< ul >
< pre class = "example" > < span class = "keyword" > local< / span > flamePlinthPos = flamePlinth:GetPosition() + Vec3(< span class = "number" > 0< / span > , flamePlinthHeight, < span class = "number" > 0< / span > );
< span class = "global" > print< / span > (Misc.HasLineOfSight(enemyHead:GetRoomNumber(), enemyHead:GetPosition(), flamePlinthPos))< / pre >
< / ul >
< / dd >
< dt >
< a name = "CalculateHorizontalDistance" > < / a >
< strong > CalculateHorizontalDistance(posA, posB)< / strong >
< / dt >
< dd >
Calculate the horizontal distance between two positions.
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > posA< / span >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec3.html#" > Vec3< / a > < / span >
First position.
< / li >
< li > < span class = "parameter" > posB< / span >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec3.html#" > Vec3< / a > < / span >
Second position.
< / li >
< / ul >
< h3 > Returns:< / h3 >
< ol >
< span class = "types" > < span class = "type" > float< / span > < / span >
Horizontal distance between the two positions.
< / ol >
2023-12-26 20:47:08 +00:00
< / dd >
< dt >
< a name = "GetDisplayPosition" > < / a >
< strong > GetDisplayPosition(worldPos)< / strong >
< / dt >
< dd >
Get the projected display space position of a 3D world position. Returns nil if the world position is behind the camera view.
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > worldPos< / span >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec3.html#" > Vec3< / a > < / span >
3D world position.
< / li >
< / ul >
< h3 > Returns:< / h3 >
< ol >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec2.html#" > Vec2< / a > < / span >
Projected display space position in percent.
< / ol >
< h3 > Usage:< / h3 >
< ul >
< pre class = "example" > Example: Display a < span class = "global" > string< / span > at the player< span class = "string" > 's position.
local string = DisplayString('< / span > Example', < span class = "number" > 0< / span > , < span class = "number" > 0< / span > , Color(< span class = "number" > 255< / span > , < span class = "number" > 255< / span > , < span class = "number" > 255< / span > ), < span class = "keyword" > false< / span > )
< span class = "keyword" > local< / span > displayPos = GetDisplayPosition(Lara:GetPosition())
< span class = "global" > string< / span > :SetPosition(PercentToScreen(displayPos.x, displayPos.y))< / pre >
< / ul >
2023-11-09 18:28:02 +00:00
< / dd >
< dt >
< a name = "PercentToScreen" > < / a >
< strong > PercentToScreen(x, y)< / strong >
< / dt >
< dd >
Translate a pair display position coordinates to pixel coordinates.
To be used with < a href = "../2 classes/Strings.DisplayString.html#DisplayString:SetPosition" > Strings.DisplayString:SetPosition< / a > and < a href = "../2 classes/Strings.DisplayString.html#" > Strings.DisplayString< / a > .
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > x< / span >
< span class = "types" > < span class = "type" > float< / span > < / span >
X component of the display position.
< / li >
< li > < span class = "parameter" > y< / span >
< span class = "types" > < span class = "type" > float< / span > < / span >
Y component of the display position.
< / li >
< / ul >
< h3 > Returns:< / h3 >
< ol >
< li >
< span class = "types" > < span class = "type" > int< / span > < / span >
x X coordinate in pixels.< / li >
< li >
< span class = "types" > < span class = "type" > int< / span > < / span >
y Y coordinate in pixels.< / li >
< / ol >
< h3 > Usage:< / h3 >
< ul >
< pre class = "example" > < span class = "keyword" > local< / span > halfwayX, halfwayY = PercentToScreen(< span class = "number" > 50< / span > , < span class = "number" > 50< / span > )
< span class = "keyword" > local< / span > baddy
< span class = "keyword" > local< / span > spawnLocationNullmesh = GetMoveableByName(< span class = "string" > "position_behind_left_pillar"< / span > )
< span class = "keyword" > local< / span > str1 = DisplayString(< span class = "string" > "You spawned an enemy!"< / span > , halfwayX, halfwayY, Color(< span class = "number" > 255< / span > , < span class = "number" > 100< / span > , < span class = "number" > 100< / span > ), < span class = "keyword" > false< / span > , { DisplayStringOption.SHADOW, DisplayStringOption.CENTER })
LevelFuncs.triggerOne = < span class = "keyword" > function< / span > (obj)
ShowString(str1, < span class = "number" > 4< / span > )
< span class = "keyword" > end< / span > < / pre >
< / ul >
< / dd >
< dt >
< a name = "ScreenToPercent" > < / a >
< strong > ScreenToPercent(x, y)< / strong >
< / dt >
< dd >
Translate a pair of pixel coordinates to display position coordinates.
To be used with < a href = "../2 classes/Strings.DisplayString.html#DisplayString:GetPosition" > Strings.DisplayString:GetPosition< / a > .
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > x< / span >
< span class = "types" > < span class = "type" > int< / span > < / span >
X pixel coordinate to translate to display position.
< / li >
< li > < span class = "parameter" > y< / span >
< span class = "types" > < span class = "type" > int< / span > < / span >
Y pixel coordinate to translate to display position.
< / li >
< / ul >
< h3 > Returns:< / h3 >
< ol >
< li >
< span class = "types" > < span class = "type" > float< / span > < / span >
x X component of display position.< / li >
< li >
< span class = "types" > < span class = "type" > float< / span > < / span >
y Y component of display position.< / li >
< / ol >
2023-12-26 20:47:08 +00:00
< / dd >
< dt >
< a name = "PickMoveableByDisplayPosition" > < / a >
< strong > PickMoveableByDisplayPosition(Display)< / strong >
< / dt >
< dd >
Pick a moveable by the given display position.
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > Display< / span >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec2.html#" > Vec2< / a > < / span >
space position in percent.
< / li >
< / ul >
< h3 > Returns:< / h3 >
< ol >
< span class = "types" > < a class = "type" href = "../2 classes/Objects.Moveable.html#" > Moveable< / a > < / span >
Picked moveable (nil if no moveable was found under the cursor).
< / ol >
< / dd >
< dt >
< a name = "PickStaticByDisplayPosition" > < / a >
< strong > PickStaticByDisplayPosition(Display)< / strong >
< / dt >
< dd >
Pick a static mesh by the given display position.
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > Display< / span >
< span class = "types" > < a class = "type" href = "../3 primitive classes/Vec2.html#" > Vec2< / a > < / span >
space position in percent.
< / li >
< / ul >
< h3 > Returns:< / h3 >
< ol >
< span class = "types" > < a class = "type" href = "../2 classes/Objects.Static.html#" > Static< / a > < / span >
Picked static mesh (nil if no static mesh was found under the cursor).
< / ol >
2023-11-09 18:28:02 +00:00
< / dd >
< dt >
< a name = "PrintLog" > < / a >
< strong > PrintLog(message, logLevel[, allowSpam])< / strong >
< / dt >
< dd >
Write messages within the Log file
< p > For native Lua handling of errors, see the official Lua website:< / p >
< p > < a href = "https://www.lua.org/pil/8.3.html" > Error management< / a > < / p >
< p > < a href = "https://www.lua.org/manual/5.4/manual.html#pdf-debug.traceback" > debug.traceback< / a > < / p >
< h3 > Parameters:< / h3 >
< ul >
< li > < span class = "parameter" > message< / span >
< span class = "types" > < a class = "type" href = "https://www.lua.org/manual/5.4/manual.html#6.4" > string< / a > < / span >
to be displayed within the Log
< / li >
< li > < span class = "parameter" > logLevel< / span >
2024-12-15 23:34:33 +01:00
< span class = "types" > < a class = "type" href = "../4 enums/Util.LogLevel.html#" > LogLevel< / a > < / span >
2023-11-09 18:28:02 +00:00
log level to be displayed
< / li >
< li > < span class = "parameter" > allowSpam< / span >
< span class = "types" > < span class = "type" > bool< / span > < / span >
true allows spamming of the message
(< em > optional< / em > )
< / li >
< / ul >
< h3 > Usage:< / h3 >
< ul >
< pre class = "example" > PrintLog(< span class = "string" > 'test info log'< / span > , LogLevel.INFO)
PrintLog(< span class = "string" > 'test warning log'< / span > , LogLevel.WARNING)
PrintLog(< span class = "string" > 'test error log'< / span > , LogLevel.ERROR)
< span class = "comment" > -- spammed message
< / span > PrintLog(< span class = "string" > 'test spam log'< / span > , LogLevel.INFO, < span class = "keyword" > true< / span > ) < / pre >
< / ul >
< / dd >
< / dl >
< / div > <!-- id="content" -->
< / div > <!-- id="main" -->
< div id = "about" >
< i > generated by < a href = "https://github.com/hispidence/TEN-LDoc" > TEN-LDoc< / a > (a fork of < a href = "http://github.com/stevedonovan/LDoc" > LDoc 1.4.6< / a > )< / i >
< / div > <!-- id="about" -->
< / div > <!-- id="container" -->
< / body >
< / html >