Table Util
Utility functions for various calculations.
Functions
HasLineOfSight(roomID, posA, posB) | Determine if there is a clear line of sight between two positions. |
CalculateDistance(posA, posB) | Calculate the distance between two positions. |
CalculateHorizontalDistance(posA, posB) | Calculate the horizontal distance between two positions. |
GetDisplayPosition(worldPos) | Get the projected display space position of a 3D world position. |
PercentToScreen(x, y) | Translate a pair display position coordinates to pixel coordinates. |
ScreenToPercent(x, y) | Translate a pair of pixel coordinates to display position coordinates. |
PickMoveableByDisplayPosition(Display) | Pick a moveable by the given display position. |
PickStaticByDisplayPosition(Display) | Pick a static mesh by the given display position. |
PrintLog(message, logLevel[, allowSpam]) | Write messages within the Log file |
Functions
- HasLineOfSight(roomID, posA, posB)
-
Determine if there is a clear line of sight between two positions.
NOTE: Limited to room geometry. Objects are ignored.()
Parameters:
- roomID float Room ID of the first position's room.
- posA Vec3 First position.
- posB Vec3 Second position.
Returns:
-
bool
true if there is a line of sight, false if not.
Usage:
local flamePlinthPos = flamePlinth:GetPosition() + Vec3(0, flamePlinthHeight, 0); print(Misc.HasLineOfSight(enemyHead:GetRoomNumber(), enemyHead:GetPosition(), flamePlinthPos))
- CalculateDistance(posA, posB)
-
Calculate the distance between two positions.
Parameters:
Returns:
-
float
Distance between two positions.
- CalculateHorizontalDistance(posA, posB)
-
Calculate the horizontal distance between two positions.
Parameters:
Returns:
-
float
Horizontal distance between the two positions.
- GetDisplayPosition(worldPos)
-
Get the projected display space position of a 3D world position. Returns nil if the world position is behind the camera view.
Parameters:
- worldPos Vec3 3D world position.
Returns:
-
Vec2
Projected display space position in percent.
Usage:
Example: Display a string at the player's position. local string = DisplayString('Example', 0, 0, Color(255, 255, 255), false) local displayPos = GetDisplayPosition(Lara:GetPosition()) string:SetPosition(PercentToScreen(displayPos.x, displayPos.y))
- PercentToScreen(x, y)
-
Translate a pair display position coordinates to pixel coordinates.
To be used with Strings.DisplayString:SetPosition and Strings.DisplayString.
Parameters:
- x float X component of the display position.
- y float Y component of the display position.
Returns:
- int x X coordinate in pixels.
- int y Y coordinate in pixels.
Usage:
local halfwayX, halfwayY = PercentToScreen(50, 50) local baddy local spawnLocationNullmesh = GetMoveableByName("position_behind_left_pillar") local str1 = DisplayString("You spawned an enemy!", halfwayX, halfwayY, Color(255, 100, 100), false, { DisplayStringOption.SHADOW, DisplayStringOption.CENTER }) LevelFuncs.triggerOne = function(obj) ShowString(str1, 4) end
- ScreenToPercent(x, y)
-
Translate a pair of pixel coordinates to display position coordinates.
To be used with Strings.DisplayString:GetPosition.
Parameters:
- x int X pixel coordinate to translate to display position.
- y int Y pixel coordinate to translate to display position.
Returns:
- float x X component of display position.
- float y Y component of display position.
- PickMoveableByDisplayPosition(Display)
-
Pick a moveable by the given display position.
Parameters:
- Display Vec2 space position in percent.
Returns:
-
Moveable
Picked moveable (nil if no moveable was found under the cursor).
- PickStaticByDisplayPosition(Display)
-
Pick a static mesh by the given display position.
Parameters:
- Display Vec2 space position in percent.
Returns:
-
Static
Picked static mesh (nil if no static mesh was found under the cursor).
- PrintLog(message, logLevel[, allowSpam])
-
Write messages within the Log file
For native Lua handling of errors, see the official Lua website:
Parameters:
- message string to be displayed within the Log
- logLevel Misc.LogLevel log level to be displayed
- allowSpam bool true allows spamming of the message (optional)
Usage:
PrintLog('test info log', LogLevel.INFO) PrintLog('test warning log', LogLevel.WARNING) PrintLog('test error log', LogLevel.ERROR) -- spammed message PrintLog('test spam log', LogLevel.INFO, true)