Merge branch 'develop'

This commit is contained in:
Stranger1992 2025-03-29 16:11:13 +00:00
commit 7fe9f7ab9f
118 changed files with 1898 additions and 583 deletions

View file

@ -3,6 +3,26 @@
The dates are in European standard format where date is presented as **YYYY-MM-DD**. The dates are in European standard format where date is presented as **YYYY-MM-DD**.
TombEngine releases are located in this repository (alongside with Tomb Editor): https://github.com/TombEngine/TombEditorReleases TombEngine releases are located in this repository (alongside with Tomb Editor): https://github.com/TombEngine/TombEditorReleases
## [Version 1.8.1](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.8.1) - 2025-03-29
### Bug fixes
* Fixed pathfinding for friendly NPCs such as monkeys.
* Fixed particles remaining in the level after reloading from the savegame.
* Fixed particles being canceled by fog bulbs.
* Fixed crash in case hair object is the last object in a level.
* Fixed crash with incorrectly applied animated textures on static meshes.
* Fixed console window not hiding in non-debug mode on Windows 11.
* Fixed key binding settings saving for the current play session after hitting Esc to cancel.
* Fixed lensflare blending formula to avoid screen overbright.
### New features
* Added Firefly Emitter object (ID 1099) with corresponding sprite slot (ID 1379).
* Added live console input to perform Lua commands in realtime.
### Lua API changes
* Added missing constructor for `Collision.Probe` without room number.
* Added optional looping argument for `View.GetFlybyPosition` and `View.GetFlybyRotation` functions.
## [Version 1.8](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.8) - 2025-03-16 ## [Version 1.8](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.8) - 2025-03-16
### Bug fixes ### Bug fixes
@ -24,7 +44,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fixed custom shatter sounds with custom sound IDs not playing correctly. * Fixed custom shatter sounds with custom sound IDs not playing correctly.
* Fixed crashes with sound samples larger than 2 megabytes. * Fixed crashes with sound samples larger than 2 megabytes.
### New Features ### New features
* Added multithreading and an option for it to flow system settings. * Added multithreading and an option for it to flow system settings.
* Added ability to use floor trapdoors, keys and puzzle items underwater. * Added ability to use floor trapdoors, keys and puzzle items underwater.
- You must update your Lara object: https://github.com/TombEngine/Resources/raw/main/Wad2%20Objects/Lara/TEN_Lara.wad2 - You must update your Lara object: https://github.com/TombEngine/Resources/raw/main/Wad2%20Objects/Lara/TEN_Lara.wad2
@ -73,7 +93,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fixed gravity being applied underwater when exiting the fly cheat. * Fixed gravity being applied underwater when exiting the fly cheat.
* Fixed gravity being applied when vaulting on the same frame as the player lands. * Fixed gravity being applied when vaulting on the same frame as the player lands.
### New Features ### New features
* Added realtime shader reloading in debug mode by pressing F9 key. * Added realtime shader reloading in debug mode by pressing F9 key.
* Added load, save, stopwatch and compass as a functional pick-up items with ability to add or remove them from inventory. * Added load, save, stopwatch and compass as a functional pick-up items with ability to add or remove them from inventory.
* Increased particle limit from 1024 to 4096. * Increased particle limit from 1024 to 4096.
@ -123,7 +143,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fixed spotlight shadows. * Fixed spotlight shadows.
* Fixed Skeleton and Mummy not reacting to shotgun hits. * Fixed Skeleton and Mummy not reacting to shotgun hits.
### New Features ### New features
* Added classic mirror effect with ability to reflect moveables and static meshes. * Added classic mirror effect with ability to reflect moveables and static meshes.
* Added ability to customize many hardcoded parameters, such as flare, weapon, and hair settings. * Added ability to customize many hardcoded parameters, such as flare, weapon, and hair settings.
* Added dynamic shadow casting on objects and static meshes. * Added dynamic shadow casting on objects and static meshes.
@ -199,7 +219,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fixed display sprites and display strings rendering in the inventory background. * Fixed display sprites and display strings rendering in the inventory background.
* Fixed young Lara hair drawing. https://tombengine.com/docs/level-settings/#young_lara * Fixed young Lara hair drawing. https://tombengine.com/docs/level-settings/#young_lara
### New Features ### New features
* Added high framerate mode (also known as 60 FPS mode). * Added high framerate mode (also known as 60 FPS mode).
* Added a customisable global lensflare effect. https://tombengine.com/docs/level-settings/#lensflare * Added a customisable global lensflare effect. https://tombengine.com/docs/level-settings/#lensflare
* Added a customisable starry sky and meteor effect. https://tombengine.com/docs/level-settings/#stars * Added a customisable starry sky and meteor effect. https://tombengine.com/docs/level-settings/#stars
@ -259,7 +279,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fixed bottom collision for solid static meshes. * Fixed bottom collision for solid static meshes.
* Fixed T-Rex's head rotation. * Fixed T-Rex's head rotation.
### New Features ### New features
* Auto-switch to a crawl state if player start position is in a crawlspace. * Auto-switch to a crawl state if player start position is in a crawlspace.
* Allow directional flame emitter (negative OCBs) to be rotated at any angle. * Allow directional flame emitter (negative OCBs) to be rotated at any angle.
* Revise wall spikes: * Revise wall spikes:
@ -306,7 +326,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fixed incorrect light collection in some cases. * Fixed incorrect light collection in some cases.
* Fixed normal mapping for rooms, items, and statics.' * Fixed normal mapping for rooms, items, and statics.'
### New Features ### New features
* Added ambient occlusion (SSAO). * Added ambient occlusion (SSAO).
* Added new post-process workflow (monochrome, negative, exclusion) with tinting. * Added new post-process workflow (monochrome, negative, exclusion) with tinting.
* Added SMAA antialiasing instead of MSAA. * Added SMAA antialiasing instead of MSAA.
@ -365,7 +385,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fix camera snap when disengaging the look-around mode. * Fix camera snap when disengaging the look-around mode.
* Fix TR4 mapper not being visible. * Fix TR4 mapper not being visible.
### New Features ### New features
* Improve head-on wall collision. * Improve head-on wall collision.
* Overhaul pushables: * Overhaul pushables:
- Separate climbable and non-climbable pushable object slots. - Separate climbable and non-climbable pushable object slots.
@ -448,7 +468,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fix incorrect culling for scaled static meshes. * Fix incorrect culling for scaled static meshes.
* Fix normal mapping. * Fix normal mapping.
### New Features ### New features
* Add ability to save screenshot in the "Screenshots" subfolder by pressing the "Print screen" key. * Add ability to save screenshot in the "Screenshots" subfolder by pressing the "Print screen" key.
* Implement separate audio track channel for playing voiceovers with subtitles in .srt format. * Implement separate audio track channel for playing voiceovers with subtitles in .srt format.
* Don't stop ambience when Lara dies. * Don't stop ambience when Lara dies.
@ -496,7 +516,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fix rendering for static meshes with custom blending modes and alpha transparency. * Fix rendering for static meshes with custom blending modes and alpha transparency.
* Fix inconsistent multiline string spacing on different display modes. * Fix inconsistent multiline string spacing on different display modes.
### New Features ### New features
* Remove search object 4 hardcoded meshswap activated with a flipmap. * Remove search object 4 hardcoded meshswap activated with a flipmap.
* Add TR1 cowboy. * Add TR1 cowboy.
* Add TR3 wall mounted blade. * Add TR3 wall mounted blade.
@ -554,7 +574,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
- Please note you must use the patched version found here: https://github.com/TombEngine/Resources/blob/main/Wad2%20Objects/tr5_Imp.wad2 - Please note you must use the patched version found here: https://github.com/TombEngine/Resources/blob/main/Wad2%20Objects/tr5_Imp.wad2
* Fix and improve wraith tails. * Fix and improve wraith tails.
### New Features/Amedments ### New features/Amedments
* Add dedicated WRAITH_TRAP object with enhanced effects. * Add dedicated WRAITH_TRAP object with enhanced effects.
- OCB 0: Effect disabled. - OCB 0: Effect disabled.
- OCB 1: Effect enabled. - OCB 1: Effect enabled.
@ -603,7 +623,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fix TR3 big gun spawning rocket with 0 life which caused an immediate explosion. * Fix TR3 big gun spawning rocket with 0 life which caused an immediate explosion.
* Fix TR3 Tony and add boss effect for him. * Fix TR3 Tony and add boss effect for him.
### New Features ### New features
* Add TR3 civvy. * Add TR3 civvy.
* Add TR3 electric cleaner. * Add TR3 electric cleaner.
* Add TR3 Sophia Leigh with following OCBs: * Add TR3 Sophia Leigh with following OCBs:
@ -655,7 +675,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fix grenade and rocket launcher lighting. * Fix grenade and rocket launcher lighting.
* Fix ceiling trapdoor and floor trapdoor that Lara couldn't open manually. * Fix ceiling trapdoor and floor trapdoor that Lara couldn't open manually.
### New Features ### New features
* Make enemies drop pickups at first available bounding box corner point, not centerpoint. * Make enemies drop pickups at first available bounding box corner point, not centerpoint.
* Restore original volumetric explosion effects. * Restore original volumetric explosion effects.
* Add TR3 lizard and Puna. * Add TR3 lizard and Puna.
@ -707,7 +727,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Fix bone rotations of some entities. * Fix bone rotations of some entities.
* Fix Lara's animation for cog switch release. * Fix Lara's animation for cog switch release.
### New Features ### New features
* Added new OCB to cog switch object: * Added new OCB to cog switch object:
- Use OCB 0 to have the traditional behaviour. - Use OCB 0 to have the traditional behaviour.
- Use any other OCB to can use the Cog Switch without need of any door linked. - Use any other OCB to can use the Cog Switch without need of any door linked.
@ -721,7 +741,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
## [Version 1.0.4](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6.2) - 2022-12-16 ## [Version 1.0.4](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6.2) - 2022-12-16
### New Features ### New features
* Add generic assignable effects for moveables - fire, sparks, smoke and laser / electric ignite. * Add generic assignable effects for moveables - fire, sparks, smoke and laser / electric ignite.
* Add ability to burn enemies with FLAME_EMITTER_1 and death blocks. * Add ability to burn enemies with FLAME_EMITTER_1 and death blocks.
* Add wireframe mode and other visual debug information (switch by F10/F11 debug page scroll hotkeys). * Add wireframe mode and other visual debug information (switch by F10/F11 debug page scroll hotkeys).
@ -793,7 +813,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
## [Version 1.0.3](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6.1) - 2022-11-18 ## [Version 1.0.3](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6.1) - 2022-11-18
### New Features ### New features
* Add ledge jumps (Lara object must be updated with new animations to make it work). * Add ledge jumps (Lara object must be updated with new animations to make it work).
* Allow any object slot to be used as a meshswap. * Allow any object slot to be used as a meshswap.
* Add OCB 1 for rollingball to make it silent. * Add OCB 1 for rollingball to make it silent.
@ -861,7 +881,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
## [Version 1.0.2](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6) - 2022-09-16 ## [Version 1.0.2](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6) - 2022-09-16
### New Features ### New features
* Fix removing Pistols with TakeItem and SetItemCount. * Fix removing Pistols with TakeItem and SetItemCount.
* Allow saving and loading of Vec3s in LevelVars and GameVars. * Allow saving and loading of Vec3s in LevelVars and GameVars.
* Support volume triggers made with node editor. * Support volume triggers made with node editor.
@ -916,7 +936,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
## [Version 1.0.1](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.5.2) - 2022-08-16 ## [Version 1.0.1](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.5.2) - 2022-08-16
### New Features ### New features
* Added antialiasing support. * Added antialiasing support.
* Added static mesh scaling support. * Added static mesh scaling support.
* Added free rotation for teeth spikes instead of using OCB codes. * Added free rotation for teeth spikes instead of using OCB codes.

View file

@ -12,7 +12,7 @@ new_type("luautil", "5 Lua utility modules", true)
not_luadoc = true not_luadoc = true
local version = "1.8" local version = "1.8.1"
project = " TombEngine" project = " TombEngine"
title = "TombEngine " .. version .. " Lua API" title = "TombEngine " .. version .. " Lua API"
description = "TombEngine " .. version .. " scripting interface" description = "TombEngine " .. version .. " scripting interface"

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -784,12 +784,12 @@ EmitAdvancedParticle(particle)</pre>
(<em>optional</em>) (<em>optional</em>)
</li> </li>
<li><span class="parameter">edgeFeatherMode</span> <li><span class="parameter">edgeFeatherMode</span>
<span class="types"><span class="type">Effects.StreamerFeatherMode</span></span> <span class="types"><a class="type" href="../4 enums/Effects.StreamerFeatherMode.html#">StreamerFeatherMode</a></span>
Edge feather mode. <strong>Default: Effects.FeatherID.NONE</strong> Edge feather mode. <strong>Default: Effects.StreamerFeatherMode.NONE</strong>
(<em>optional</em>) (<em>optional</em>)
</li> </li>
<li><span class="parameter">lengthFeatherMode</span> <li><span class="parameter">lengthFeatherMode</span>
<span class="types"><span class="type">Effects.StreamerFeatherMode</span></span> <span class="types"><a class="type" href="../4 enums/Effects.StreamerFeatherMode.html#">StreamerFeatherMode</a></span>
Length feather mode. <strong>UNIMPLEMENTED, currently will always leave a fading tail</strong> Length feather mode. <strong>UNIMPLEMENTED, currently will always leave a fading tail</strong>
(<em>optional</em>) (<em>optional</em>)
</li> </li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -176,11 +176,11 @@
<td class="summary">Play a flyby sequence.</td> <td class="summary">Play a flyby sequence.</td>
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="#GetFlybyPosition">GetFlybyPosition(seqID, progress)</a></td> <td class="name" ><a href="#GetFlybyPosition">GetFlybyPosition(seqID, progress[, loop])</a></td>
<td class="summary">Get a flyby sequence's position at a specified progress point in percent.</td> <td class="summary">Get a flyby sequence's position at a specified progress point in percent.</td>
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="#GetFlybyRotation">GetFlybyRotation(seqID, progress)</a></td> <td class="name" ><a href="#GetFlybyRotation">GetFlybyRotation(seqID, progress[, loop])</a></td>
<td class="summary">Get a flyby sequence's rotation at a specified progress point in percent.</td> <td class="summary">Get a flyby sequence's rotation at a specified progress point in percent.</td>
</tr> </tr>
<tr> <tr>
@ -499,7 +499,7 @@
</dd> </dd>
<dt> <dt>
<a name = "GetFlybyPosition"></a> <a name = "GetFlybyPosition"></a>
<strong>GetFlybyPosition(seqID, progress)</strong> <strong>GetFlybyPosition(seqID, progress[, loop])</strong>
</dt> </dt>
<dd> <dd>
Get a flyby sequence's position at a specified progress point in percent. Get a flyby sequence's position at a specified progress point in percent.
@ -516,6 +516,11 @@
<span class="types"><span class="type">float</span></span> <span class="types"><span class="type">float</span></span>
Progress point in percent. Clamped to [0, 100]. Progress point in percent. Clamped to [0, 100].
</li> </li>
<li><span class="parameter">loop</span>
<span class="types"><span class="type">bool</span></span>
Smooth the position near start and end points, as if the sequence is looped.
(<em>optional</em>)
</li>
</ul> </ul>
<h3>Returns:</h3> <h3>Returns:</h3>
@ -531,7 +536,7 @@
</dd> </dd>
<dt> <dt>
<a name = "GetFlybyRotation"></a> <a name = "GetFlybyRotation"></a>
<strong>GetFlybyRotation(seqID, progress)</strong> <strong>GetFlybyRotation(seqID, progress[, loop])</strong>
</dt> </dt>
<dd> <dd>
Get a flyby sequence's rotation at a specified progress point in percent. Get a flyby sequence's rotation at a specified progress point in percent.
@ -548,6 +553,11 @@
<span class="types"><span class="type">float</span></span> <span class="types"><span class="type">float</span></span>
Progress point in percent. Clamped to [0, 100]. Progress point in percent. Clamped to [0, 100].
</li> </li>
<li><span class="parameter">loop</span>
<span class="types"><span class="type">bool</span></span>
Smooth the position near start and end points, as if the sequence is looped.
(<em>optional</em>)
</li>
</ul> </ul>
<h3>Returns:</h3> <h3>Returns:</h3>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -122,7 +122,7 @@
<h2><a href="#Functions">Functions</a></h2> <h2><a href="#Functions">Functions</a></h2>
<table class="function_list"> <table class="function_list">
<tr> <tr>
<td class="name" ><a href="#Probe">Probe(pos, roomNumber)</a></td> <td class="name" ><a href="#Probe">Probe(pos[, roomNumber])</a></td>
<td class="summary">Create a Probe at a specified world position in a room.</td> <td class="summary">Create a Probe at a specified world position in a room.</td>
</tr> </tr>
<tr> <tr>
@ -220,7 +220,7 @@
<dl class="function"> <dl class="function">
<dt> <dt>
<a name = "Probe"></a> <a name = "Probe"></a>
<strong>Probe(pos, roomNumber)</strong> <strong>Probe(pos[, roomNumber])</strong>
</dt> </dt>
<dd> <dd>
Create a Probe at a specified world position in a room. Create a Probe at a specified world position in a room.
@ -235,7 +235,8 @@
</li> </li>
<li><span class="parameter">roomNumber</span> <li><span class="parameter">roomNumber</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
[opt] Room number. Must be used if probing a position in an overlapping room. Room number. Must be used if probing a position in an overlapping room.
(<em>optional</em>)
</li> </li>
</ul> </ul>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -473,7 +473,7 @@ Invisible
<p>e.g. <code>myLevel.laraType = LaraType.Divesuit</code></p> <p>e.g. <code>myLevel.laraType = LaraType.Divesuit</code></p>
<p> <strong>(not yet fully implemented)</strong> <p> <strong>Not yet fully implemented.</strong> Only types <code>Normal</code> and <code>Young</code> are guaranteed to work.

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -517,7 +517,7 @@
<ul> <ul>
<li><span class="parameter">objectCollision</span> <li><span class="parameter">objectCollision</span>
<span class="types"><span class="type">bool</span></span> <span class="types"><span class="type">bool</span></span>
when enabled, camera will collide with moveables and statics. Disable or TR4-like camera behaviour. when enabled, camera will collide with moveables and statics. Disable for TR4-like camera behaviour.
</li> </li>
</ul> </ul>
@ -1255,7 +1255,7 @@
<ul> <ul>
<li><span class="parameter">errorMode</span> <li><span class="parameter">errorMode</span>
<span class="types"><a class="type" href="../4 enums/Flow.ErrorMode.html#">ErrorMode</a></span> <span class="types"><a class="type" href="../4 enums/Flow.ErrorMode.html#">ErrorMode</a></span>
error mode to use. */ error mode to use.
</li> </li>
</ul> </ul>
@ -1278,7 +1278,7 @@
<ul> <ul>
<li><span class="parameter">multithreaded</span> <li><span class="parameter">multithreaded</span>
<span class="types"><span class="type">bool</span></span> <span class="types"><span class="type">bool</span></span>
determines whether to use multithreading or not. */ determines whether to use multithreading or not.
</li> </li>
</ul> </ul>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -130,7 +130,7 @@
<td class="summary">Retrieve the object ID</td> <td class="summary">Retrieve the object ID</td>
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="#Moveable:SetObjectID">Moveable:SetObjectID(ID)</a></td> <td class="name" ><a href="#Moveable:SetObjectID">Moveable:SetObjectID(objectID)</a></td>
<td class="summary">Change the object's ID.</td> <td class="summary">Change the object's ID.</td>
</tr> </tr>
<tr> <tr>
@ -221,7 +221,7 @@
<td class="summary">Set the effect for this moveable.</td> <td class="summary">Set the effect for this moveable.</td>
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="#Moveable:SetCustomEffect">Moveable:SetCustomEffect(Color1, Color2[, timeout])</a></td> <td class="name" ><a href="#Moveable:SetCustomEffect">Moveable:SetCustomEffect(color1, color2[, timeout])</a></td>
<td class="summary">Set custom colored burn effect to moveable</td> <td class="summary">Set custom colored burn effect to moveable</td>
</tr> </tr>
<tr> <tr>
@ -418,7 +418,7 @@
<td class="summary">Attach camera to an object.</td> <td class="summary">Attach camera to an object.</td>
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="#Moveable:AnimFromObject">Moveable:AnimFromObject(ObjectID, animNumber, stateID)</a></td> <td class="name" ><a href="#Moveable:AnimFromObject">Moveable:AnimFromObject(objectID, animNumber, stateID)</a></td>
<td class="summary">Borrow animation from an object</td> <td class="summary">Borrow animation from an object</td>
</tr> </tr>
</table> </table>
@ -518,7 +518,7 @@ most can just be ignored (see usage).
<ol> <ol>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span> <span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
a number representing the ID of the object a number representing the ID of the object.
</ol> </ol>
@ -527,7 +527,7 @@ most can just be ignored (see usage).
</dd> </dd>
<dt> <dt>
<a name = "Moveable:SetObjectID"></a> <a name = "Moveable:SetObjectID"></a>
<strong>Moveable:SetObjectID(ID)</strong> <strong>Moveable:SetObjectID(objectID)</strong>
</dt> </dt>
<dd> <dd>
Change the object's ID. This will literally change the object. Change the object's ID. This will literally change the object.
@ -536,7 +536,7 @@ most can just be ignored (see usage).
<h3>Parameters:</h3> <h3>Parameters:</h3>
<ul> <ul>
<li><span class="parameter">ID</span> <li><span class="parameter">objectID</span>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span> <span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
the new ID the new ID
</li> </li>
@ -795,7 +795,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<ol> <ol>
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span> <span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
pos World position. World position.
</ol> </ol>
@ -815,7 +815,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<ul> <ul>
<li><span class="parameter">index</span> <li><span class="parameter">index</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
of a joint to get rotation Index of a joint to get rotation.
</li> </li>
</ul> </ul>
@ -1053,7 +1053,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
</dd> </dd>
<dt> <dt>
<a name = "Moveable:SetCustomEffect"></a> <a name = "Moveable:SetCustomEffect"></a>
<strong>Moveable:SetCustomEffect(Color1, Color2[, timeout])</strong> <strong>Moveable:SetCustomEffect(color1, color2[, timeout])</strong>
</dt> </dt>
<dd> <dd>
Set custom colored burn effect to moveable Set custom colored burn effect to moveable
@ -1062,17 +1062,17 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<h3>Parameters:</h3> <h3>Parameters:</h3>
<ul> <ul>
<li><span class="parameter">Color1</span> <li><span class="parameter">color1</span>
<span class="types"><a class="type" href="../3 primitive classes/Color.html#">Color</a></span> <span class="types"><a class="type" href="../3 primitive classes/Color.html#">Color</a></span>
color the primary color of the effect (also used for lighting). The primary color of the effect (also used for lighting).
</li> </li>
<li><span class="parameter">Color2</span> <li><span class="parameter">color2</span>
<span class="types"><a class="type" href="../3 primitive classes/Color.html#">Color</a></span> <span class="types"><a class="type" href="../3 primitive classes/Color.html#">Color</a></span>
color the secondary color of the effect. The secondary color of the effect.
</li> </li>
<li><span class="parameter">timeout</span> <li><span class="parameter">timeout</span>
<span class="types"><span class="type">float</span></span> <span class="types"><span class="type">float</span></span>
time (in seconds) after which effect turns off. Time (in seconds) after which effect turns off.
(<em>optional</em>) (<em>optional</em>)
</li> </li>
</ul> </ul>
@ -1096,7 +1096,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<ol> <ol>
<span class="types"><a class="type" href="../4 enums/Effects.EffectID.html#">EffectID</a></span> <span class="types"><a class="type" href="../4 enums/Effects.EffectID.html#">EffectID</a></span>
Sffect type currently assigned. Effect type currently assigned.
</ol> </ol>
@ -1116,7 +1116,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<ul> <ul>
<li><span class="parameter">index</span> <li><span class="parameter">index</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
of the ItemFlags, can be between 0 and 7. Index of the ItemFlag, can be between 0 and 7.
</li> </li>
</ul> </ul>
@ -1144,11 +1144,11 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<ul> <ul>
<li><span class="parameter">value</span> <li><span class="parameter">value</span>
<span class="types"><span class="type">short</span></span> <span class="types"><span class="type">short</span></span>
to store in the moveable's ItemFlags[index] Value to store in the moveable's ItemFlags[index].
</li> </li>
<li><span class="parameter">index</span> <li><span class="parameter">index</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
of the ItemFlags where store the value. Index of the ItemFlag where to store the value.
</li> </li>
</ul> </ul>
@ -1191,7 +1191,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<ul> <ul>
<li><span class="parameter">value</span> <li><span class="parameter">value</span>
<span class="types"><span class="type">short</span></span> <span class="types"><span class="type">short</span></span>
to store. Value to store.
</li> </li>
</ul> </ul>
@ -1248,18 +1248,22 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<strong>Moveable:GetAIBits()</strong> <strong>Moveable:GetAIBits()</strong>
</dt> </dt>
<dd> <dd>
Get AIBits of object
<p>Get AIBits of object
This will return a table with six values, each corresponding to This will return a table with six values, each corresponding to
an active behaviour. If the object is in a certain AI mode, the table will an active behaviour. If the object is in a certain AI mode, the table will
have a <em>1</em> in the corresponding cell. Otherwise, the cell will hold have a <em>1</em> in the corresponding cell. Otherwise, the cell will hold
a <em>0</em>.</p> a <em>0</em>.</p>
<p> <br />1 - guard <pre><code>1 - Guard
<br />2 - ambush 2 - Ambush
<br />3 - patrol 1 3 - Patrol 1
<br />4 - modify 4 - Modify
<br />5 - follow 5 - Follow
<br />6 - patrol 2 6 - Patrol 2
</code></pre>
@ -1681,7 +1685,7 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
<strong>Moveable:GetStatus()</strong> <strong>Moveable:GetStatus()</strong>
</dt> </dt>
<dd> <dd>
Get the moveable's status. () Get the moveable's status.
@ -1702,7 +1706,7 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
<strong>Moveable:SetStatus(status)</strong> <strong>Moveable:SetStatus(status)</strong>
</dt> </dt>
<dd> <dd>
Set the moveable's status. () Set the moveable's status.
@ -2103,15 +2107,15 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
<ul> <ul>
<li><span class="parameter">mesh</span> <li><span class="parameter">mesh</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
of a target moveable to use as a camera target Mesh of a target moveable to use as a camera target.
</li> </li>
<li><span class="parameter">target</span> <li><span class="parameter">target</span>
<span class="types"><a class="type" href="../2 classes/Objects.Moveable.html#Moveable">Moveable</a></span> <span class="types"><a class="type" href="../2 classes/Objects.Moveable.html#Moveable">Moveable</a></span>
moveable to attach camera to Target moveable to attach camera to.
</li> </li>
<li><span class="parameter">mesh</span> <li><span class="parameter">mesh</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
of a target moveable to use as a camera target Mesh of a target moveable to use as a camera target.
</li> </li>
</ul> </ul>
@ -2122,7 +2126,7 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
</dd> </dd>
<dt> <dt>
<a name = "Moveable:AnimFromObject"></a> <a name = "Moveable:AnimFromObject"></a>
<strong>Moveable:AnimFromObject(ObjectID, animNumber, stateID)</strong> <strong>Moveable:AnimFromObject(objectID, animNumber, stateID)</strong>
</dt> </dt>
<dd> <dd>
Borrow animation from an object Borrow animation from an object
@ -2131,17 +2135,17 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
<h3>Parameters:</h3> <h3>Parameters:</h3>
<ul> <ul>
<li><span class="parameter">ObjectID</span> <li><span class="parameter">objectID</span>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span> <span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
to take animation and stateID from, Object ID to take animation and stateID from.
</li> </li>
<li><span class="parameter">animNumber</span> <li><span class="parameter">animNumber</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
animation from object Animation from object.
</li> </li>
<li><span class="parameter">stateID</span> <li><span class="parameter">stateID</span>
<span class="types"><span class="type">int</span></span> <span class="types"><span class="type">int</span></span>
state from object state State from object.
</li> </li>
</ul> </ul>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -127,11 +127,11 @@
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="#minDistance">minDistance</a></td> <td class="name" ><a href="#minDistance">minDistance</a></td>
<td class="summary">(int) Minimum distance.</td> <td class="summary">(float) Minimum distance.</td>
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="#maxDistance">maxDistance</a></td> <td class="name" ><a href="#maxDistance">maxDistance</a></td>
<td class="summary">(int) Maximum distance.</td> <td class="summary">(float) Maximum distance.</td>
</tr> </tr>
</table> </table>
<h2><a href="#Functions">Functions</a></h2> <h2><a href="#Functions">Functions</a></h2>
@ -171,8 +171,8 @@
<strong>minDistance</strong> <strong>minDistance</strong>
</dt> </dt>
<dd> <dd>
(int) Minimum distance. (float) Minimum distance.
This is the distance at which the fog starts. This is the distance at which the fog starts (in sectors).
@ -187,8 +187,8 @@
<strong>maxDistance</strong> <strong>maxDistance</strong>
</dt> </dt>
<dd> <dd>
(int) Maximum distance. (float) Maximum distance.
This is the distance at which the fog reaches the maximum strength. This is the distance at which the fog reaches the maximum strength (in sectors).

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <here>Collision.MaterialType</here></li> <li> <here>Collision.MaterialType</here></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <here>Effects.BlendID</here></li> <li> <here>Effects.BlendID</here></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <here>Effects.EffectID</here></li> <li> <here>Effects.EffectID</here></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <here>Effects.ParticleAnimationType</here></li> <li> <here>Effects.ParticleAnimationType</here></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <here>Effects.FeatherMode</here></li> <li> <here>Effects.StreamerFeatherMode</here></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -114,7 +114,7 @@
<div id="content"> <div id="content">
<h1>Enum <code>Effects.FeatherMode</code></h1> <h1>Enum <code>Effects.StreamerFeatherMode</code></h1>
<p>Constants for feather modes.</p> <p>Constants for feather modes.</p>
<p> <p>
@ -124,8 +124,8 @@
<h2><a href="#Tables">Tables</a></h2> <h2><a href="#Tables">Tables</a></h2>
<table class="function_list"> <table class="function_list">
<tr> <tr>
<td class="name" ><a href="#Effects.FeatherMode">Effects.FeatherMode</a></td> <td class="name" ><a href="#Effects.StreamerFeatherMode">Effects.StreamerFeatherMode</a></td>
<td class="summary">Table of Effects.FeatherMode constants.</td> <td class="summary">Table of Effects.StreamerFeatherMode constants.</td>
</tr> </tr>
</table> </table>
@ -137,12 +137,12 @@
<dl class="function"> <dl class="function">
<dt> <dt>
<a name = "Effects.FeatherMode"></a> <a name = "Effects.StreamerFeatherMode"></a>
<strong>Effects.FeatherMode</strong> <strong>Effects.StreamerFeatherMode</strong>
</dt> </dt>
<dd> <dd>
<p>Table of Effects.FeatherMode constants. <p>Table of Effects.StreamerFeatherMode constants.
To be used with <a href="../1 modules/Effects.html#EmitStreamer">Effects.EmitStreamer</a> function.</p> To be used with <a href="../1 modules/Effects.html#EmitStreamer">Effects.EmitStreamer</a> function.</p>
<ul> <ul>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <here>Flow.ErrorMode</here></li> <li> <here>Flow.ErrorMode</here></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <here>Flow.FreezeMode</here></li> <li> <here>Flow.FreezeMode</here></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -952,6 +952,7 @@ DOPPELGANGER_ORIGIN
CORPSE CORPSE
WRAITH_TRAP WRAITH_TRAP
WATERFALL_EMITTER WATERFALL_EMITTER
FIREFLY_EMITTER
MESHSWAP1 MESHSWAP1
MESHSWAP2 MESHSWAP2
MESHSWAP3 MESHSWAP3
@ -1132,6 +1133,7 @@ AIR_BAR_TEXTURE
DASH_BAR_TEXTURE DASH_BAR_TEXTURE
SFX_BAR_TEXTURE SFX_BAR_TEXTURE
WATERFALL_SPRITES WATERFALL_SPRITES
FIREFLY_SPRITES
CROSSHAIR_GRAPHICS CROSSHAIR_GRAPHICS
SPEEDOMETER_GRAPHICS SPEEDOMETER_GRAPHICS
CUSTOM_BAR_GRAPHICS CUSTOM_BAR_GRAPHICS
@ -1410,6 +1412,7 @@ AIR_BAR_TEXTURE
DASH_BAR_TEXTURE DASH_BAR_TEXTURE
SFX_BAR_TEXTURE SFX_BAR_TEXTURE
WATERFALL_SPRITES WATERFALL_SPRITES
FIREFLY_SPRITES
CROSSHAIR_GRAPHICS CROSSHAIR_GRAPHICS
SPEEDOMETER_GRAPHICS SPEEDOMETER_GRAPHICS
CUSTOM_BAR_GRAPHICS CUSTOM_BAR_GRAPHICS

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" /> <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="../4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="../4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="../4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="../4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="../4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -3,7 +3,7 @@
<html> <html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head> <head>
<title>TombEngine 1.8 Lua API</title> <title>TombEngine 1.8.1 Lua API</title>
<link rel="stylesheet" href="ldoc.css" type="text/css" /> <link rel="stylesheet" href="ldoc.css" type="text/css" />
</head> </head>
<body> <body>
@ -80,7 +80,7 @@
<li> <a href="4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li> <li> <a href="4 enums/Collision.MaterialType.html">Collision.MaterialType</a></li>
<li> <a href="4 enums/Effects.BlendID.html">Effects.BlendID</a></li> <li> <a href="4 enums/Effects.BlendID.html">Effects.BlendID</a></li>
<li> <a href="4 enums/Effects.EffectID.html">Effects.EffectID</a></li> <li> <a href="4 enums/Effects.EffectID.html">Effects.EffectID</a></li>
<li> <a href="4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></li> <li> <a href="4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></li>
<li> <a href="4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li> <li> <a href="4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li> <li> <a href="4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <a href="4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li> <li> <a href="4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
@ -115,7 +115,7 @@
<div id="content"> <div id="content">
<h2>TombEngine 1.8 scripting interface</h2> <h2>TombEngine 1.8.1 scripting interface</h2>
<p>Welcome to the TombEngine scripting API.</p> <p>Welcome to the TombEngine scripting API.</p>
<p>Note that this is primarily a reference document, not a tutorial, so expect descriptions to be fairly sparse. <p>Note that this is primarily a reference document, not a tutorial, so expect descriptions to be fairly sparse.
@ -305,7 +305,7 @@ local door = GetMoveableByName("door_type4_14")
<td class="summary">Constants for effect IDs.</td> <td class="summary">Constants for effect IDs.</td>
</tr> </tr>
<tr> <tr>
<td class="name" ><a href="4 enums/Effects.FeatherMode.html">Effects.FeatherMode</a></td> <td class="name" ><a href="4 enums/Effects.StreamerFeatherMode.html">Effects.StreamerFeatherMode</a></td>
<td class="summary">Constants for feather modes.</td> <td class="summary">Constants for feather modes.</td>
</tr> </tr>
<tr> <tr>

View file

@ -1,41 +1,41 @@
# TombEngine # Tomb Engine
![Logo](https://github.com/MontyTRC89/TombEngine/blob/7c50d26ca898c74978336d41e16ce3ce0c8ecacd/TEN%20logo.png) ![Logo](https://github.com/MontyTRC89/TombEngine/blob/7c50d26ca898c74978336d41e16ce3ce0c8ecacd/TEN%20logo.png)
TombEngine (TEN) is an open-source, custom level engine which aims to abolish limits and fix bugs of the classic Tomb Raider games, introduce new features while refining old ones, and provide user-friendly level creation process. Current support includes: *Tomb Engine* (*TEN*) is an open-source custom level engine which aims to abolish limits and fix bugs of the classic Tomb Raider games. It aims to introduce new features, refine old ones, and provide a user-friendly level creation process. Current support includes:
- Lua (as the native scripting language) - *Lua* as the native scripting language.
- Many objects from the original series (1-5) - Many objects from the original series (1-5).
- Support for high framerate, antialiasing, mipmapping and SSAO - Support for high framerate, antialiasing, mipmapping, and SSAO.
- Full diagonal geometry support - Full diagonal geometry support.
- Uncapped map size - Uncapped map size.
- A streamlined player control scheme. - A streamlined player control scheme..
If you would like to participate in TEN discussion with other TEN devs whether it is contributing, bugs or general discussion, then join this discord server: https://discord.gg/h5tUYFmres Contributions are welcome. If you would like to participate in development to any degree, whether that be through suggestions, bug reports, or code, join our [Discord server](https://discord.gg/h5tUYFmres).
Tomb Engine should be used in conjuction with Tomb Editor. Tomb Editor is also open source written in C#, you can find the repository here: https://github.com/MontyTRC89/Tomb-Editor *Tomb Engine* is used in conjunction with *Tomb Editor*. The repository can be found [here](https://github.com/MontyTRC89/Tomb-Editor).
# Compiling TombEngine # Compiling *Tomb Engine*
To compile TEN, ensure you have installed: To compile *TEN*, ensure you have installed:
- Microsoft Visual Studio - *Microsoft Visual Studio*
- Tomb Editor (if you would like to create and test levels) - *Tomb Editor* (for level creation and testing)
Steps: Steps:
1) Clone the repository to your GitHub Desktop 1) Clone the repository to your GitHub Desktop.
2) Open TombEngine.sln 2) Open `TombEngine.sln`.
4) Compile the solution 4) Compile the solution.
5) Once compiled, create a separate folder to serve as your main TEN directory (or create test TEN project using TombIDE) 5) Once compiled, create a separate folder to serve as your main *TEN* directory (or create a test *TEN* project using *TombIDE*)
6) Copy everything inside the Build folder to the main TEN directory 6) Copy everything inside the `Build` folder to the main *TEN* directory.
7) Ensure you have the necessary level data and texture files as well 7) Ensure you have the necessary level data and texture files.
8) In the case Windows warns about missing DLLs, (bass.dll, etc.) copy the missing DLL files found inside the Libs folder to your main TEN directory. 8) In case Windows warns about missing DLLs (bass.dll, etc.), copy the missing DLL files found inside the `Libs` folder to your main `TEN` directory.
Visual Studio may also warn about NuGet packages. To fix: *Visual Studio* may warn about NuGet packages. To fix:
1) Delete the Packages folder 1) Delete the `Packages` folder.
2) Go back to Microsoft Visual Studio 2) Go back to *Microsoft Visual Studio*.
3) Right-click on the TombEngine solution in the Solution Explorer tab and select "Restore NuGet Packages" 3) Right-click on the *TEN* solution in the *Solution Explorer* tab and select "Restore NuGet Packages".
4) If it doesn't help, manually install `directxtk_desktop_2019` and `Microsoft.XAudio2.Redist` packages via NuGet Package Manager 4) If it doesn't help, manually install `directxtk_desktop_2019` and `Microsoft.XAudio2.Redist` packages via NuGet Package Manager.
Once done, you should be able to build a level with TombEditor and run it in TEN. Once done, you should be able to build a level with *Tomb Editor* and run it in *TEN*.
# Disclaimer # Disclaimer
This is a community project which is not affiliated with Core Design, Eidos Interactive, or Embracer Group AB. Tomb Raider is a registered trademark of Embracer Group AB. TombEngine is not be sold. The code is open-source to encourage contributions and to be used for study purposes. We are not responsible for illegal uses of this source code. This source code is released as-is and continues to be maintained by non-paid contributors in their free time. This community project is unaffiliated with Core Design, Eidos Interactive, or Embracer Group AB. *Tomb Raider* is a registered trademark of Embracer Group AB. *Tomb Engine* is not for sale. The code is open-source to encourage contributions and for study purposes. We are not responsible for illegal uses of this source code. This source code is released as-is and continues to be maintained by non-paid contributors in their free time.

View file

@ -19,7 +19,7 @@ local settings = Flow.Settings.new()
settings.Flare.offset = Vec3(0, 0, 41) settings.Flare.offset = Vec3(0, 0, 41)
settings.Flare.range = 9 settings.Flare.range = 9
settings.Flare.timeout = 60 settings.Flare.timeout = 60
settings.Flare.lensflareBrightness = 0.5 settings.Flare.lensflareBrightness = 1.0
settings.Flare.sparks = true settings.Flare.sparks = true
settings.Flare.smoke = true settings.Flare.smoke = true
settings.Flare.flicker = true settings.Flare.flicker = true
@ -35,6 +35,7 @@ local settings = Flow.Settings.new()
settings.System.errorMode = Flow.ErrorMode.WARN settings.System.errorMode = Flow.ErrorMode.WARN
settings.System.fastReload = true settings.System.fastReload = true
settings.System.multithreaded = true
-- Hair[1] is normal player hair. Types [2] and [3] are for left and right young Lara hair. -- Hair[1] is normal player hair. Types [2] and [3] are for left and right young Lara hair.

View file

@ -27,6 +27,7 @@
#include "Objects/TR4/Entity/tr4_beetle_swarm.h" #include "Objects/TR4/Entity/tr4_beetle_swarm.h"
#include "Objects/Utils/object_helper.h" #include "Objects/Utils/object_helper.h"
#include "Specific/level.h" #include "Specific/level.h"
#include "Objects/Effects/Fireflies.h"
using namespace TEN::Effects::Hair; using namespace TEN::Effects::Hair;
using namespace TEN::Entities; using namespace TEN::Entities;
@ -174,6 +175,7 @@ void InitializeGameFlags()
FlipEffect = NO_VALUE; FlipEffect = NO_VALUE;
FlipStatus = false; FlipStatus = false;
NumRPickups = 0;
Camera.underwater = false; Camera.underwater = false;
} }
@ -199,6 +201,7 @@ void InitializeSpecialEffects()
TEN::Entities::TR4::ClearBeetleSwarm(); TEN::Entities::TR4::ClearBeetleSwarm();
TEN::Entities::Creatures::TR3::ClearFishSwarm(); TEN::Entities::Creatures::TR3::ClearFishSwarm();
TEN::Effects::Fireflies::ClearFireflySwarm();
} }
void CustomObjects() void CustomObjects()
@ -208,6 +211,8 @@ void CustomObjects()
void InitializeObjects() void InitializeObjects()
{ {
TENLog("Initializing objects...", LogLevel::Info);
AllocTR4Objects(); AllocTR4Objects();
AllocTR5Objects(); AllocTR5Objects();
@ -250,10 +255,6 @@ void InitializeObjects()
// User defined objects // User defined objects
CustomObjects(); CustomObjects();
HairEffect.Initialize();
InitializeSpecialEffects();
NumRPickups = 0;
CurrentSequence = 0; CurrentSequence = 0;
SequenceResults[0][1][2] = 0; SequenceResults[0][1][2] = 0;
SequenceResults[0][2][1] = 1; SequenceResults[0][2][1] = 1;

View file

@ -711,6 +711,10 @@ Vector3i GetJointPosition(const ItemInfo& item, const CreatureBiteInfo& bite)
Vector3 GetJointOffset(GAME_OBJECT_ID objectID, int jointIndex) Vector3 GetJointOffset(GAME_OBJECT_ID objectID, int jointIndex)
{ {
const auto& object = Objects[objectID]; const auto& object = Objects[objectID];
int boneIndex = object.boneIndex + (jointIndex * 4);
if (g_Level.Bones.size() <= boneIndex)
return Vector3::Zero;
int* bonePtr = &g_Level.Bones[object.boneIndex + (jointIndex * 4)]; int* bonePtr = &g_Level.Bones[object.boneIndex + (jointIndex * 4)];
return Vector3(*(bonePtr + 1), *(bonePtr + 2), *(bonePtr + 3)); return Vector3(*(bonePtr + 1), *(bonePtr + 2), *(bonePtr + 3));

View file

@ -1150,6 +1150,7 @@ bool StalkBox(ItemInfo* item, ItemInfo* enemy, int boxNumber)
{ {
if (enemy == nullptr || boxNumber == NO_VALUE) if (enemy == nullptr || boxNumber == NO_VALUE)
return false; return false;
auto* box = &g_Level.PathfindingBoxes[boxNumber]; auto* box = &g_Level.PathfindingBoxes[boxNumber];
int xRange = STALK_DIST + ((box->bottom - box->top) * BLOCK(1)); int xRange = STALK_DIST + ((box->bottom - box->top) * BLOCK(1));
@ -1635,8 +1636,11 @@ void CreatureMood(ItemInfo* item, AI_INFO* AI, bool isViolent)
auto* LOT = &creature->LOT; auto* LOT = &creature->LOT;
auto* enemy = creature->Enemy; auto* enemy = creature->Enemy;
if (enemy == nullptr)
return; // HACK: Fallback to bored mood from attack mood if enemy was cleared.
// Replaces previous "fix" with early exit, because it was breaking friendly NPC pathfinding. -- Lwmte, 24.03.25
if (enemy == nullptr && creature->Mood == MoodType::Attack)
creature->Mood = MoodType::Bored;
int boxNumber; int boxNumber;
switch (creature->Mood) switch (creature->Mood)
@ -1645,7 +1649,7 @@ void CreatureMood(ItemInfo* item, AI_INFO* AI, bool isViolent)
boxNumber = LOT->Node[GetRandomControl() * LOT->ZoneCount >> 15].boxNumber; boxNumber = LOT->Node[GetRandomControl() * LOT->ZoneCount >> 15].boxNumber;
if (ValidBox(item, AI->zoneNumber, boxNumber)) if (ValidBox(item, AI->zoneNumber, boxNumber))
{ {
if (StalkBox(item, enemy, boxNumber) && enemy->HitPoints > 0 && creature->Enemy) if (StalkBox(item, enemy, boxNumber) && creature->Enemy && enemy->HitPoints > 0)
{ {
TargetBox(LOT, boxNumber); TargetBox(LOT, boxNumber);
creature->Mood = MoodType::Bored; creature->Mood = MoodType::Bored;

View file

@ -59,6 +59,7 @@
#include "Specific/Input/Input.h" #include "Specific/Input/Input.h"
#include "Specific/level.h" #include "Specific/level.h"
#include "Specific/winmain.h" #include "Specific/winmain.h"
#include "Objects/Effects/Fireflies.h"
using namespace std::chrono; using namespace std::chrono;
using namespace TEN::Effects; using namespace TEN::Effects;
@ -89,6 +90,7 @@ using namespace TEN::Math;
using namespace TEN::Renderer; using namespace TEN::Renderer;
using namespace TEN::Entities::Creatures::TR3; using namespace TEN::Entities::Creatures::TR3;
using namespace TEN::Entities::Effects; using namespace TEN::Entities::Effects;
using namespace TEN::Effects::Fireflies;
constexpr auto DEATH_NO_INPUT_TIMEOUT = 10 * FPS; constexpr auto DEATH_NO_INPUT_TIMEOUT = 10 * FPS;
constexpr auto DEATH_INPUT_TIMEOUT = 3 * FPS; constexpr auto DEATH_INPUT_TIMEOUT = 3 * FPS;
@ -211,6 +213,7 @@ GameStatus GamePhase(bool insideMenu)
UpdateLocusts(); UpdateLocusts();
UpdateUnderwaterBloodParticles(); UpdateUnderwaterBloodParticles();
UpdateFishSwarm(); UpdateFishSwarm();
UpdateFireflySwarm();
UpdateGlobalLensFlare(); UpdateGlobalLensFlare();
// Update HUD. // Update HUD.
@ -389,6 +392,7 @@ GameStatus DoLevel(int levelIndex, bool loadGame)
InitializeCamera(); InitializeCamera();
InitializeSpotCamSequences(isTitle); InitializeSpotCamSequences(isTitle);
InitializeItemBoxData(); InitializeItemBoxData();
InitializeSpecialEffects();
// Initialize scripting. // Initialize scripting.
InitializeScripting(levelIndex, loadGame); InitializeScripting(levelIndex, loadGame);

View file

@ -17,6 +17,7 @@
#include "Game/Setup.h" #include "Game/Setup.h"
#include "Sound/sound.h" #include "Sound/sound.h"
#include "Specific/level.h" #include "Specific/level.h"
#include "Objects/Effects/Fireflies.h"
#include "Objects/Generic/puzzles_keys.h" #include "Objects/Generic/puzzles_keys.h"
#include "Objects/TR3/Entity/FishSwarm.h" #include "Objects/TR3/Entity/FishSwarm.h"
#include "Objects/TR4/Entity/tr4_beetle_swarm.h" #include "Objects/TR4/Entity/tr4_beetle_swarm.h"
@ -29,6 +30,7 @@ using namespace TEN::Effects::Environment;
using namespace TEN::Effects::Footprint; using namespace TEN::Effects::Footprint;
using namespace TEN::Effects::Hair; using namespace TEN::Effects::Hair;
using namespace TEN::Entities::Creatures::TR3; using namespace TEN::Entities::Creatures::TR3;
using namespace TEN::Effects::Fireflies;
int FlipEffect; int FlipEffect;
@ -90,6 +92,7 @@ void ClearSwarmEnemies(ItemInfo* item)
ClearBeetleSwarm(); ClearBeetleSwarm();
ClearLocusts(); ClearLocusts();
ClearFishSwarm(); ClearFishSwarm();
ClearFireflySwarm();
} }
void FlashOrange(ItemInfo* item) void FlashOrange(ItemInfo* item)

View file

@ -690,7 +690,7 @@ namespace TEN::Gui
CurrentSettings.IgnoreInput = true; CurrentSettings.IgnoreInput = true;
} }
if (CurrentSettings.NewKeyWaitTimer > 0.0f) if (CurrentSettings.NewKeyWaitTimer > 0)
{ {
ClearAllActions(); ClearAllActions();
@ -699,15 +699,15 @@ namespace TEN::Gui
bool legacy30FpsDoneDraw = false; bool legacy30FpsDoneDraw = false;
bool decreaseCounter = false; bool decreaseCounter = false;
while (CurrentSettings.NewKeyWaitTimer > 0.0f) while (CurrentSettings.NewKeyWaitTimer > 0)
{ {
g_Synchronizer.Sync(); g_Synchronizer.Sync();
while (g_Synchronizer.Synced()) while (g_Synchronizer.Synced())
{ {
CurrentSettings.NewKeyWaitTimer -= 1.0f; CurrentSettings.NewKeyWaitTimer--;
if (CurrentSettings.NewKeyWaitTimer <= 0.0f) if (CurrentSettings.NewKeyWaitTimer <= 0)
CurrentSettings.NewKeyWaitTimer = 0.0f; CurrentSettings.NewKeyWaitTimer = 0;
if (!fromPauseMenu) if (!fromPauseMenu)
{ {
@ -760,7 +760,7 @@ namespace TEN::Gui
g_Bindings.SetKeyBinding(InputDeviceID::Custom, InputActionID(baseIndex + SelectedOption), selectedKeyID); g_Bindings.SetKeyBinding(InputDeviceID::Custom, InputActionID(baseIndex + SelectedOption), selectedKeyID);
DefaultConflict(); DefaultConflict();
CurrentSettings.NewKeyWaitTimer = 0.0f; CurrentSettings.NewKeyWaitTimer = 0;
CurrentSettings.IgnoreInput = true; CurrentSettings.IgnoreInput = true;
return; return;
} }
@ -850,6 +850,7 @@ namespace TEN::Gui
if (SelectedOption == (OptionCount - 2)) if (SelectedOption == (OptionCount - 2))
{ {
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always); SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
ApplyDefaultBindings(); ApplyDefaultBindings();
return; return;
} }
@ -858,9 +859,11 @@ namespace TEN::Gui
if (SelectedOption == (OptionCount - 1)) if (SelectedOption == (OptionCount - 1))
{ {
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always); SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
CurrentSettings.Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom); CurrentSettings.Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
g_Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom); g_Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
SaveConfiguration(); SaveConfiguration();
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options; MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
SelectedOption = 2; SelectedOption = 2;
return; return;
@ -870,7 +873,9 @@ namespace TEN::Gui
if (SelectedOption == OptionCount) if (SelectedOption == OptionCount)
{ {
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always); SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings); g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings);
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options; MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
SelectedOption = 2; SelectedOption = 2;
return; return;
@ -881,6 +886,8 @@ namespace TEN::Gui
{ {
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always); SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings);
MenuToDisplay = Menu::Options; MenuToDisplay = Menu::Options;
SelectedOption = 2; SelectedOption = 2;
} }

View file

@ -111,9 +111,9 @@ namespace TEN::Gui
GameConfiguration Configuration = {}; GameConfiguration Configuration = {};
int SelectedScreenResolution = 0; int SelectedScreenResolution = 0;
bool IgnoreInput = false; // Ignore input until all actions are inactive. bool IgnoreInput = false; // Ignore input until all actions are inactive.
float NewKeyWaitTimer = 0.0f; int NewKeyWaitTimer = 0;
}; };
class GuiController class GuiController

View file

@ -10,6 +10,7 @@
#include "Game/control/flipeffect.h" #include "Game/control/flipeffect.h"
#include "Game/control/lot.h" #include "Game/control/lot.h"
#include "Game/control/volume.h" #include "Game/control/volume.h"
#include "Objects/Effects/Fireflies.h"
#include "Game/effects/item_fx.h" #include "Game/effects/item_fx.h"
#include "Game/effects/effects.h" #include "Game/effects/effects.h"
#include "Game/effects/weather.h" #include "Game/effects/weather.h"
@ -43,8 +44,9 @@
using namespace flatbuffers; using namespace flatbuffers;
using namespace TEN::Collision::Floordata; using namespace TEN::Collision::Floordata;
using namespace TEN::Control::Volumes; using namespace TEN::Control::Volumes;
using namespace TEN::Effects::Items;
using namespace TEN::Effects::Environment; using namespace TEN::Effects::Environment;
using namespace TEN::Effects::Fireflies;
using namespace TEN::Effects::Items;
using namespace TEN::Entities::Creatures::TR3; using namespace TEN::Entities::Creatures::TR3;
using namespace TEN::Entities::Generic; using namespace TEN::Entities::Generic;
using namespace TEN::Entities::Switches; using namespace TEN::Entities::Switches;
@ -924,6 +926,38 @@ const std::vector<byte> SaveGame::Build()
} }
auto fishSwarmOffset = fbb.CreateVector(fishSwarm); auto fishSwarmOffset = fbb.CreateVector(fishSwarm);
std::vector<flatbuffers::Offset<Save::FireflyData>> fireflySwarm;
for (const auto& firefly : FireflySwarm)
{
Save::FireflyDataBuilder fireflySave{ fbb };
fireflySave.add_sprite_index(firefly.SpriteSeqID);
fireflySave.add_sprite_id(firefly.SpriteID);
fireflySave.add_blend_mode((int)firefly.blendMode);
fireflySave.add_scalar(firefly.scalar);
fireflySave.add_position(&FromVector3(firefly.Position));
fireflySave.add_room_number(firefly.RoomNumber);
fireflySave.add_position_target(&FromVector3(firefly.PositionTarget));
fireflySave.add_orientation(&FromEulerAngles(firefly.Orientation));
fireflySave.add_velocity(firefly.Velocity);
fireflySave.add_target_item_number((firefly.TargetItemPtr == nullptr) ? -1 : firefly.TargetItemPtr->Index);
fireflySave.add_z_vel(firefly.zVel);
fireflySave.add_life(firefly.Life);
fireflySave.add_number(firefly.Number);
fireflySave.add_d_r(firefly.rB);
fireflySave.add_d_g(firefly.gB);
fireflySave.add_d_b(firefly.bB);
fireflySave.add_r(firefly.r);
fireflySave.add_g(firefly.g);
fireflySave.add_b(firefly.b);
fireflySave.add_on(firefly.on);
fireflySave.add_size(firefly.size);
fireflySave.add_rot_Ang(firefly.rotAng);
auto fireflySaveOffset = fireflySave.Finish();
fireflySwarm.push_back(fireflySaveOffset);
}
auto fireflySwarmOffset = fbb.CreateVector(fireflySwarm);
// TODO: In future, we should save only active FX, not whole array. // TODO: In future, we should save only active FX, not whole array.
// This may come together with Monty's branch merge -- Lwmte, 10.07.22 // This may come together with Monty's branch merge -- Lwmte, 10.07.22
@ -1545,6 +1579,7 @@ const std::vector<byte> SaveGame::Build()
sgb.add_next_item_active(NextItemActive); sgb.add_next_item_active(NextItemActive);
sgb.add_items(serializedItemsOffset); sgb.add_items(serializedItemsOffset);
sgb.add_fish_swarm(fishSwarmOffset); sgb.add_fish_swarm(fishSwarmOffset);
sgb.add_firefly_swarm(fireflySwarmOffset);
sgb.add_fxinfos(serializedEffectsOffset); sgb.add_fxinfos(serializedEffectsOffset);
sgb.add_next_fx_free(NextFxFree); sgb.add_next_fx_free(NextFxFree);
sgb.add_next_fx_active(NextFxActive); sgb.add_next_fx_active(NextFxActive);
@ -2289,6 +2324,38 @@ static void ParseEffects(const Save::SaveGame* s)
FishSwarm.push_back(fish); FishSwarm.push_back(fish);
} }
// Load firefly swarm.
for (int i = 0; i < s->firefly_swarm()->size(); i++)
{
const auto& fireflySave = s->firefly_swarm()->Get(i);
auto firefly = FireflyData{};
firefly.SpriteSeqID = fireflySave->sprite_index();
firefly.SpriteID = fireflySave->sprite_id();
firefly.blendMode = (BlendMode)fireflySave->blend_mode();
firefly.scalar = fireflySave->scalar();
firefly.Position = ToVector3(fireflySave->position());
firefly.RoomNumber = fireflySave->room_number();
firefly.PositionTarget = ToVector3(fireflySave->position_target());
firefly.Orientation = ToEulerAngles(fireflySave->orientation());
firefly.Velocity = fireflySave->velocity();
firefly.TargetItemPtr = (fireflySave->target_item_number() == -1) ? nullptr : &g_Level.Items[fireflySave->target_item_number()];
firefly.zVel = fireflySave->z_vel();
firefly.Life = fireflySave->life();
firefly.Number = fireflySave->number();
firefly.rB = fireflySave->d_r();
firefly.gB = fireflySave->d_g();
firefly.bB = fireflySave->d_b();
firefly.r = fireflySave->r();
firefly.g = fireflySave->g();
firefly.b = fireflySave->b();
firefly.on = fireflySave->on();
firefly.size = fireflySave->size();
firefly.rotAng = fireflySave->rot_Ang();
FireflySwarm.push_back(firefly);
}
// Load particles. // Load particles.
for (int i = 0; i < s->particles()->size(); i++) for (int i = 0; i < s->particles()->size(); i++)
{ {

View file

@ -839,7 +839,7 @@ int Spline(int x, int* knots, int nk)
return ((__int64)x * (((__int64)x * (((__int64)x * c1 >> 16) + c2) >> 16) + (k[2] >> 1) + ((-k[0] - 1) >> 1)) >> 16) + k[1]; return ((__int64)x * (((__int64)x * (((__int64)x * c1 >> 16) + c2) >> 16) + (k[2] >> 1) + ((-k[0] - 1) >> 1)) >> 16) + k[1];
} }
Pose GetCameraTransform(int sequence, float alpha) Pose GetCameraTransform(int sequence, float alpha, bool loop)
{ {
alpha = std::clamp(alpha, 0.0f, 1.0f); alpha = std::clamp(alpha, 0.0f, 1.0f);
@ -873,15 +873,43 @@ Pose GetCameraTransform(int sequence, float alpha)
} }
// Compute spline interpolation of main flyby camera parameters. // Compute spline interpolation of main flyby camera parameters.
auto origin = Vector3(Spline(splineAlpha, xOrigins.data(), splinePoints), auto getInterpolatedPoint = [&](float t, std::vector<int>& x, std::vector<int>& y, std::vector<int>& z)
Spline(splineAlpha, yOrigins.data(), splinePoints), {
Spline(splineAlpha, zOrigins.data(), splinePoints)); int tAlpha = int(t * (float)USHRT_MAX);
return Vector3(Spline(tAlpha, x.data(), splinePoints),
Spline(tAlpha, y.data(), splinePoints),
Spline(tAlpha, z.data(), splinePoints));
};
auto target = Vector3(Spline(splineAlpha, xTargets.data(), splinePoints), auto getInterpolatedRoll = [&](float t)
Spline(splineAlpha, yTargets.data(), splinePoints), {
Spline(splineAlpha, zTargets.data(), splinePoints)); int tAlpha = int(t * (float)USHRT_MAX);
return Spline(tAlpha, rolls.data(), splinePoints);
};
short orientZ = Spline(splineAlpha, rolls.data(), splinePoints); Vector3 origin = {};
Vector3 target = {};
short orientZ = 0;
constexpr float BLEND_RANGE = 0.1f;
constexpr float BLEND_START = BLEND_RANGE;
constexpr float BLEND_END = 1.0f - BLEND_RANGE;
// If loop is enabled and we are at the start or end of the sequence, blend between the last and first cameras.
if (loop && (alpha < BLEND_START || alpha >= BLEND_END))
{
float blendFactor = (alpha < BLEND_START) ? 0.5f + (alpha / BLEND_RANGE) * 0.5f : (alpha - BLEND_END) / BLEND_START * 0.5f;
origin = Vector3::Lerp(getInterpolatedPoint(BLEND_END, xOrigins, yOrigins, zOrigins), getInterpolatedPoint(BLEND_START, xOrigins, yOrigins, zOrigins), blendFactor);
target = Vector3::Lerp(getInterpolatedPoint(BLEND_END, xTargets, yTargets, zTargets), getInterpolatedPoint(BLEND_START, xTargets, yTargets, zTargets), blendFactor);
orientZ = Lerp(getInterpolatedRoll(BLEND_END), getInterpolatedRoll(BLEND_START), blendFactor);
}
else
{
origin = getInterpolatedPoint(alpha, xOrigins, yOrigins, zOrigins);
target = getInterpolatedPoint(alpha, xTargets, yTargets, zTargets);
orientZ = getInterpolatedRoll(alpha);
}
auto pose = Pose(origin, EulerAngles(target - origin)); auto pose = Pose(origin, EulerAngles(target - origin));
pose.Orientation.z = orientZ; pose.Orientation.z = orientZ;

View file

@ -64,4 +64,4 @@ void InitializeSpotCam(short sequence);
void CalculateSpotCameras(); void CalculateSpotCameras();
int Spline(int x, int* knots, int nk); int Spline(int x, int* knots, int nk);
Pose GetCameraTransform(int sequence, float alpha); Pose GetCameraTransform(int sequence, float alpha, bool loop);

View file

@ -0,0 +1,445 @@
#include "framework.h"
#include "Objects/Effects/Fireflies.h"
#include "Game/collision/collide_item.h"
#include "Game/collision/collide_room.h"
#include "Game/collision/Point.h"
#include "Game/control/box.h"
#include "Game/control/flipeffect.h"
#include "Game/effects/effects.h"
#include "Game/effects/Streamer.h"
#include "Game/effects/tomb4fx.h"
#include "Game/items.h"
#include "Game/Lara/lara.h"
#include "Game/Lara/lara_helpers.h"
#include "Game/misc.h"
#include "Game/Setup.h"
#include "Math/Math.h"
#include "Renderer/Renderer.h"
#include "Specific/clock.h"
#include "Specific/level.h"
using namespace TEN::Collision::Point;
using namespace TEN::Math;
using namespace TEN::Renderer;
using namespace TEN::Effects::Streamer;
namespace TEN::Effects::Fireflies
{
constexpr auto FIREFLY_COHESION_FACTOR = 600.1f;
constexpr auto FIREFLY_SPACING_FACTOR = 600.0f;
constexpr auto FIREFLY_CATCH_UP_FACTOR = 0.2f;
constexpr auto FIREFLY_TARGET_DISTANCE_MAX = SQUARE(BLOCK(1.0f));
constexpr auto FIREFLY_BASE_SEPARATION_DISTANCE = 10.0f;
constexpr auto FIREFLY_FLEE_DISTANCE = BLOCK(0.7);
constexpr auto MAX_FIREFLIES = 92;
constexpr auto DEFAULT_FIREFLY_COUNT = 20;
constexpr auto FIREFLY_RISE_UP_FACTOR = 200;
constexpr auto MAX_AREA_RANGE = 8;
constexpr auto LIGHT_ALPHA_CYCLE_DURATION = 120.0f;
std::vector<FireflyData> FireflySwarm = {};
std::unordered_map<int, int> nextFireflyNumberMap; // Numbering the Fireflies for Streamer effect.
void InitializeFireflySwarm(short itemNumber)
{
auto& item = g_Level.Items[itemNumber];
item.Animation.Velocity.z = Random::GenerateFloat(32.0f, 160.0f);
item.HitPoints = DEFAULT_FIREFLY_COUNT;
item.ItemFlags[FirefliesItemFlags::TargetItemPtr] = item.Index;
item.ItemFlags[FirefliesItemFlags::Light] = 1; // 0 = Turn off light effect, 1 = turn on light (DEFAULT).
item.ItemFlags[FirefliesItemFlags::TriggerFlags] = std::clamp((int)item.TriggerFlags, -MAX_AREA_RANGE, MAX_AREA_RANGE);
item.ItemFlags[FirefliesItemFlags::Spawncounter] = 0;
item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] = 0;
// Firefly numbers that has the light.
item.ItemFlags[FirefliesItemFlags::LightIndex1] = NO_VALUE;
item.ItemFlags[FirefliesItemFlags::LightIndex2] = NO_VALUE;
}
void SpawnFireflySwarm(ItemInfo& item, int triggerFlags)
{
constexpr auto VEL_MAX = 34.0f;
constexpr auto VEL_MIN = 6.0f;
// Create new firefly.
auto& firefly = GetNewEffect(FireflySwarm, MAX_FIREFLIES);
unsigned char r = 255;
unsigned char g = 255;
unsigned char b = 255;
if (triggerFlags >= 0)
{
float brightnessShift = Random::GenerateFloat(-0.1f, 0.1f);
r = std::clamp(item.Model.Color.x / 2.0f + brightnessShift, 0.0f, 1.0f) * UCHAR_MAX;
g = std::clamp(item.Model.Color.y / 2.0f + brightnessShift, 0.0f, 1.0f) * UCHAR_MAX;
b = std::clamp(item.Model.Color.z / 2.0f + brightnessShift, 0.0f, 1.0f) * UCHAR_MAX;
firefly.SpriteSeqID = ID_FIREFLY_SPRITES;
firefly.SpriteID = 0;
firefly.blendMode = BlendMode::Additive;
firefly.scalar = 3.0f;
firefly.size = 1.0f;
}
else
{
firefly.SpriteSeqID = ID_FIREFLY_SPRITES;
firefly.SpriteID = 1;
firefly.blendMode = BlendMode::Subtractive;
firefly.scalar = 1.2f;
firefly.size = 1.2f;
}
firefly.r = firefly.rB = r;
firefly.g = firefly.gB = g;
firefly.b = firefly.bB = b;
firefly.rotAng = ANGLE(0.0f);
if (item.TriggerFlags > 8)
firefly.rotAng = ANGLE(90.0f);
firefly.on = true;
firefly.Position = item.Pose.Position.ToVector3();
firefly.RoomNumber = item.RoomNumber;
firefly.Orientation = item.Pose.Orientation;
firefly.Velocity = Random::GenerateFloat(VEL_MIN, VEL_MAX);
firefly.zVel = 0.3f;
firefly.Life = Random::GenerateInt(1, 400);
firefly.TargetItemPtr = &g_Level.Items[item.ItemFlags[FirefliesItemFlags::TargetItemPtr]];
int& nextFireflyNumber = nextFireflyNumberMap[item.Index];
firefly.Number = nextFireflyNumber++;
}
void ControlFireflySwarm(short itemNumber)
{
auto& item = g_Level.Items[itemNumber];
if (!TriggerActive(&item))
{
// Remove all fireflies associated with this item.
RemoveFireflies(item);
// Reset ItemFlags.
if (item.HitPoints == NOT_TARGETABLE)
item.HitPoints = item.ItemFlags[FirefliesItemFlags::Spawncounter];
item.ItemFlags[FirefliesItemFlags::Spawncounter] = 0;
item.ItemFlags[FirefliesItemFlags::LightIndex1] = NO_VALUE;
item.ItemFlags[FirefliesItemFlags::LightIndex2] = NO_VALUE;
return;
}
constexpr auto ALPHA_PAUSE_DURATION = 2.0f;
static float frameCounter = 0.0f;
// Increment the counter variable in each frame.
frameCounter += 1.0f;
if (item.HitPoints != NOT_TARGETABLE)
{
int fireflyCount = item.HitPoints - item.ItemFlags[FirefliesItemFlags::Spawncounter];
if (fireflyCount < 0)
{
int firefliesToTurnOff = -fireflyCount;
for (auto& firefly : FireflySwarm)
{
if (firefly.TargetItemPtr == &item && firefly.Life > 0.0f)
{
firefly.Life = 0.0f;
firefly.on = false;
firefliesToTurnOff--;
if (firefliesToTurnOff == 0)
break;
}
}
}
else if (fireflyCount > 0)
{
for (int i = 0; i < fireflyCount; i++)
{
SpawnFireflySwarm(item, item.TriggerFlags);
}
}
item.ItemFlags[FirefliesItemFlags::Spawncounter] = item.HitPoints;
item.HitPoints = NOT_TARGETABLE;
}
// Update color values for blinking effect.
float alphaFactor;
for (auto& firefly : FireflySwarm)
{
auto targetItem = firefly.TargetItemPtr;
if (targetItem == &item)
{
// Choose one of the available firefly number that has the light.
if (targetItem->ItemFlags[FirefliesItemFlags::LightIndex1] == NO_VALUE && targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
{
targetItem->ItemFlags[FirefliesItemFlags::LightIndex1] = Random::GenerateInt(0, targetItem->TriggerFlags);
}
// Two lights max for each cluster.
if (targetItem->ItemFlags[FirefliesItemFlags::LightIndex2] == NO_VALUE && targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
{
targetItem->ItemFlags[FirefliesItemFlags::LightIndex2] = Random::GenerateInt(0, targetItem->TriggerFlags);
}
auto posBase = firefly.Position;
auto rotMatrix = firefly.Orientation.ToRotationMatrix();
auto pos = posBase + Vector3::Transform(Vector3(0, 0, 30), rotMatrix);
auto direction0 = Geometry::RotatePoint(posBase, EulerAngles::Identity);
short orient2D = firefly.Orientation.z;
if (targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
{
StreamerEffect.Spawn(targetItem->Index, firefly.Number, pos, direction0, orient2D,
Vector4(firefly.r / (float)UCHAR_MAX, firefly.g / (float)UCHAR_MAX, firefly.b / (float)UCHAR_MAX, 1.0f),
Vector4::Zero,
6.3f - (firefly.zVel / 12), ((firefly.Velocity / 8) + firefly.zVel * 3) / (float)UCHAR_MAX, 0.0f, -0.1f, 90.0f, StreamerFeatherMode::None, BlendMode::Additive);
}
else if (targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] < 0)
{
StreamerEffect.Spawn(targetItem->Index, firefly.Number, pos, direction0, orient2D,
Vector4((firefly.r / 2) / (float)UCHAR_MAX, (firefly.g / 2) / (float)UCHAR_MAX, (firefly.b / 2) / (float)UCHAR_MAX, 0.2f),
Vector4((firefly.r / 3) / (float)UCHAR_MAX, (firefly.g / 3) / (float)UCHAR_MAX, (firefly.b / 3) / (float)UCHAR_MAX, 0.2f),
0.0f, 0.4f, 0.0f, 0.2f, 0.0f, StreamerFeatherMode::None, BlendMode::Subtractive);
}
if ((targetItem->ItemFlags[FirefliesItemFlags::LightIndex1] == firefly.Number || targetItem->ItemFlags[FirefliesItemFlags::LightIndex2] == firefly.Number) &&
targetItem->ItemFlags[FirefliesItemFlags::Light] == 1)
{
float totalCycleDuration = 2 * (LIGHT_ALPHA_CYCLE_DURATION + ALPHA_PAUSE_DURATION);
float alphaTime = fmod(frameCounter, totalCycleDuration);
if (alphaTime < ALPHA_PAUSE_DURATION)
{
alphaFactor = 1.0f; // Pause on Alpha 1.
}
else if (alphaTime < ALPHA_PAUSE_DURATION + LIGHT_ALPHA_CYCLE_DURATION)
{
alphaFactor = 1.0f - ((alphaTime - ALPHA_PAUSE_DURATION) / LIGHT_ALPHA_CYCLE_DURATION);
}
else if (alphaTime < 2 * ALPHA_PAUSE_DURATION + LIGHT_ALPHA_CYCLE_DURATION)
{
alphaFactor = 0.0f; // Pause on Alpha 0.
targetItem->ItemFlags[FirefliesItemFlags::LightIndex1] = NO_VALUE;
targetItem->ItemFlags[FirefliesItemFlags::LightIndex2] = NO_VALUE;
}
else
{
alphaFactor = (alphaTime - 2 * ALPHA_PAUSE_DURATION - LIGHT_ALPHA_CYCLE_DURATION) / LIGHT_ALPHA_CYCLE_DURATION;
}
SpawnDynamicLight(firefly.Position.x, firefly.Position.y, firefly.Position.z, 3,
static_cast<unsigned char>(std::clamp(firefly.r * alphaFactor, 0.0f, (float)firefly.r)),
static_cast<unsigned char>(std::clamp(firefly.g * alphaFactor, 0.0f, (float)firefly.g)),
static_cast<unsigned char>(std::clamp(firefly.b * alphaFactor, 0.0f, (float)firefly.b)));
}
}
}
}
void UpdateFireflySwarm()
{
constexpr auto FLEE_VEL = 1.5f;
constexpr auto ALPHA_PAUSE_DURATION = 100.0f;
static const auto SPHERE = BoundingSphere(Vector3::Zero, BLOCK(1 / 8.0f));
if (FireflySwarm.empty())
return;
const auto& playerItem = *LaraItem;
static float frameCounter = 0.0f;
// Increment the counter variable in each frame.
frameCounter += 1.0f;
for (auto& firefly : FireflySwarm)
{
if (firefly.Life <= 0.0f || !firefly.on)
continue;
auto targetItem = firefly.TargetItemPtr;
if (targetItem->ItemFlags[FirefliesItemFlags::RemoveFliesEffect])
{
firefly.r = 0;
firefly.g = 0;
firefly.b = 0;
continue;
}
firefly.StoreInterpolationData();
firefly.PositionTarget = Random::GeneratePointInSphere(SPHERE);
int multiplierX = CLICK(targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] * 2);
int multiplierY = CLICK(targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] * 4);
int multiplierZ = CLICK(targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] * 2);
auto spheroidAxis = Vector3(multiplierX, multiplierY, multiplierZ);
auto itemPos = Vector3i(targetItem->Pose.Position.x, targetItem->Pose.Position.y - FIREFLY_RISE_UP_FACTOR, targetItem->Pose.Position.z);
// Calculate desired position based on target object and random offsets.
auto desiredPos = itemPos + Random::GeneratePointInSpheroid(firefly.PositionTarget, EulerAngles::Identity, spheroidAxis);
auto dir = desiredPos - firefly.Position;
auto dirs = dir.ToVector3();
dirs.Normalize();
auto dirNorm = dirs;
// Define cohesion factor to keep fireflies close together.
float distToTarget = dirs.Length();
float targetVel = (distToTarget * FIREFLY_COHESION_FACTOR) + Random::GenerateFloat(3.0f, 5.0f);
firefly.Velocity = std::min(targetVel, targetItem->Animation.Velocity.z - 21.0f);
// If firefly is too far from target, increase velocity to catch up.
if (distToTarget > FIREFLY_TARGET_DISTANCE_MAX)
firefly.Velocity += FIREFLY_CATCH_UP_FACTOR;
// Translate.
auto moveDir = firefly.Orientation.ToDirection();
moveDir.Normalize();
firefly.Position += (moveDir * firefly.Velocity) / 26.0f;
firefly.Position += (moveDir * FIREFLY_SPACING_FACTOR) / 26.0f;
auto orientTo = Geometry::GetOrientToPoint(firefly.Position, desiredPos.ToVector3());
firefly.Orientation.Lerp(orientTo, 0.1f);
// Update color values for blinking effect.
float totalCycleDuration = 2 * (LIGHT_ALPHA_CYCLE_DURATION + ALPHA_PAUSE_DURATION);
float alphaTime = fmod(frameCounter + firefly.Life, totalCycleDuration);
float alphaFactor;
if (alphaTime < ALPHA_PAUSE_DURATION)
{
alphaFactor = 1.0f;
}
else if (alphaTime < ALPHA_PAUSE_DURATION + LIGHT_ALPHA_CYCLE_DURATION)
{
alphaFactor = 1.0f - ((alphaTime - ALPHA_PAUSE_DURATION) / LIGHT_ALPHA_CYCLE_DURATION);
}
else if (alphaTime < 2 * ALPHA_PAUSE_DURATION + LIGHT_ALPHA_CYCLE_DURATION)
{
alphaFactor = 0.0f;
}
else
{
alphaFactor = (alphaTime - 2 * ALPHA_PAUSE_DURATION - LIGHT_ALPHA_CYCLE_DURATION) / LIGHT_ALPHA_CYCLE_DURATION;
}
firefly.r = static_cast<unsigned char>(firefly.rB * alphaFactor);
firefly.g = static_cast<unsigned char>(firefly.gB * alphaFactor);
firefly.b = static_cast<unsigned char>(firefly.bB * alphaFactor);
for (const auto& otherFirefly : FireflySwarm)
{
if (&firefly == &otherFirefly)
continue;
float distToOtherFirefly = Vector3i::Distance(firefly.Position, otherFirefly.Position);
float distToPlayer = Vector3i::Distance(firefly.Position, playerItem.Pose.Position);
// If player is too close, flee.
if (distToPlayer < FIREFLY_FLEE_DISTANCE && playerItem.Animation.ActiveState != 2)
{
auto separationDir = firefly.Position - playerItem.Pose.Position.ToVector3();
separationDir.Normalize();
// Reduce the Y component of the escape direction.
separationDir.y *= Random::GenerateFloat(0.0f, 0.4f);
// Normalize the direction again to get the length of the vector.
separationDir.Normalize();
firefly.Position += separationDir * FLEE_VEL;
auto orientTo = Geometry::GetOrientToPoint(firefly.Position, separationDir);
firefly.Orientation.Lerp(orientTo, 0.05f);
firefly.Velocity -= std::min(FLEE_VEL, firefly.TargetItemPtr->Animation.Velocity.z - 1.0f);
if (Random::TestProbability(1.0f / 700.0f) &&
targetItem->ItemFlags[FirefliesItemFlags::Light] == 1 &&
targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
{
if (firefly.zVel == 0.3f)
{
firefly.zVel = 50.0f;
}
}
if (firefly.zVel > 50.0f)
firefly.zVel = 0.3f;
}
if (distToOtherFirefly < FIREFLY_BASE_SEPARATION_DISTANCE)
{
auto separationDir = firefly.Position - otherFirefly.Position;
separationDir.Normalize();
firefly.Position += separationDir * (FIREFLY_BASE_SEPARATION_DISTANCE - distToOtherFirefly);
}
}
auto pointColl = GetPointCollision(firefly.Position, firefly.RoomNumber);
// Update firefly room number.
if (pointColl.GetRoomNumber() != firefly.RoomNumber &&
pointColl.GetRoomNumber() != NO_VALUE)
{
firefly.RoomNumber = pointColl.GetRoomNumber();
}
if (targetItem->ItemFlags[FirefliesItemFlags::Light] == 1 && targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
{
if (Random::TestProbability(1.0f / (700.0f - (float)(targetItem->ItemFlags[FirefliesItemFlags::Spawncounter] * 2))))
firefly.zVel = 100.0f;
if (firefly.zVel > 1.0f)
firefly.zVel -= 2.0f;
if (firefly.zVel <= 1.0f)
firefly.zVel = 0.3f;
}
}
}
void RemoveFireflies(ItemInfo& item)
{
FireflySwarm.erase(std::remove_if(FireflySwarm.begin(), FireflySwarm.end(),
[&item](FireflyData& firefly)
{
if (firefly.TargetItemPtr == &item)
{
firefly.Life = 0.0f;
firefly.on = false;
return true;
}
return false;
}), FireflySwarm.end());
nextFireflyNumberMap.erase(item.Index);
}
void ClearFireflySwarm()
{
FireflySwarm.clear();
nextFireflyNumberMap.clear();
}
}

View file

@ -0,0 +1,76 @@
#pragma once
#include "Game/items.h"
#include "Math/Math.h"
using namespace TEN::Math;
namespace TEN::Effects::Fireflies
{
enum FirefliesItemFlags
{
TargetItemPtr,
Light,
TriggerFlags,
Spawncounter,
RemoveFliesEffect,
LightIndex1,
LightIndex2
};
struct FireflyData
{
int SpriteSeqID = ID_DEFAULT_SPRITES;
int SpriteID = SPR_UNDERWATERDUST;
BlendMode blendMode;
unsigned int scalar;
Vector3 Position = Vector3::Zero;
int RoomNumber = 0;
Vector3 PositionTarget = Vector3::Zero;
EulerAngles Orientation = EulerAngles::Identity;
float Velocity = 0.0f;
ItemInfo* TargetItemPtr = nullptr;
float zVel;
float Life = 0.0f;
int Number = 0;
unsigned char rB;
unsigned char gB;
unsigned char bB;
unsigned char r;
unsigned char g;
unsigned char b;
bool on;
float size;
short rotAng;
int PrevX;
int PrevY;
int PrevZ;
byte PrevR;
byte PrevG;
byte PrevB;
void StoreInterpolationData()
{
PrevX = Position.x;
PrevY = Position.y;
PrevZ = Position.z;
PrevR = r;
PrevG = g;
PrevB = b;
}
};
extern std::vector<FireflyData> FireflySwarm;
void InitializeFireflySwarm(short itemNumber);
void ControlFireflySwarm(short itemNumber);
void UpdateFireflySwarm();
void ClearFireflySwarm();
void SpawnFireflySwarm(ItemInfo& item, int triggerFlags);
void RemoveFireflies(ItemInfo& item);
}

View file

@ -17,6 +17,7 @@
#include "Game/Lara/lara_helpers.h" #include "Game/Lara/lara_helpers.h"
#include "Game/Setup.h" #include "Game/Setup.h"
#include "Math/Math.h" #include "Math/Math.h"
#include "Objects/Effects/Fireflies.h"
#include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h" #include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h"
#include "Sound/sound.h" #include "Sound/sound.h"
#include "Specific/level.h" #include "Specific/level.h"
@ -25,9 +26,13 @@ using namespace TEN::Collision::Point;
using namespace TEN::Effects::Ripple; using namespace TEN::Effects::Ripple;
using namespace TEN::Effects::Splash; using namespace TEN::Effects::Splash;
using namespace TEN::Math; using namespace TEN::Math;
using namespace TEN::Effects::Fireflies;
namespace TEN::Entities::TR3 namespace TEN::Entities::TR3
{ {
constexpr auto FLY_EFFECT_MAX_WIDTH = -1;
constexpr auto FLY_AMOUNT = 16;
enum CorpseState enum CorpseState
{ {
CORPSE_STATE_GROUNDED = 0, CORPSE_STATE_GROUNDED = 0,
@ -51,19 +56,25 @@ namespace TEN::Entities::TR3
if (item.TriggerFlags == 1) if (item.TriggerFlags == 1)
{ {
item.ItemFlags[1] = (int)CorpseFlag::Hang; item.ItemFlags[7] = (int)CorpseFlag::Hang;
item.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_HANG; item.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_HANG;
item.Animation.ActiveState = CORPSE_STATE_HANG; item.Animation.ActiveState = CORPSE_STATE_HANG;
} }
else else
{ {
item.ItemFlags[1] = (int)CorpseFlag::Grounded; item.ItemFlags[7] = (int)CorpseFlag::Grounded;
item.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_GROUNDED; item.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_GROUNDED;
item.Animation.ActiveState = CORPSE_STATE_GROUNDED; item.Animation.ActiveState = CORPSE_STATE_GROUNDED;
} }
item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] = 0;
AddActiveItem(itemNumber); AddActiveItem(itemNumber);
item.Status = ITEM_ACTIVE; item.Status = ITEM_ACTIVE;
item.ItemFlags[FirefliesItemFlags::TargetItemPtr] = item.Index;
item.ItemFlags[FirefliesItemFlags::TriggerFlags] = -1;
item.HitPoints = FLY_AMOUNT;
} }
void ControlCorpse(short itemNumber) void ControlCorpse(short itemNumber)
@ -71,9 +82,11 @@ namespace TEN::Entities::TR3
auto& item = g_Level.Items[itemNumber]; auto& item = g_Level.Items[itemNumber];
const auto& object = Objects[item.ObjectNumber]; const auto& object = Objects[item.ObjectNumber];
if (item.ItemFlags[1] == (int)CorpseFlag::Fall) if (item.ItemFlags[7] == (int)CorpseFlag::Fall)
{ {
bool isWater = TestEnvironment(RoomEnvFlags::ENV_FLAG_WATER, item.RoomNumber); bool isWater = TestEnvironment(RoomEnvFlags::ENV_FLAG_WATER, item.RoomNumber);
bool isSwamp = TestEnvironment(RoomEnvFlags::ENV_FLAG_SWAMP, item.RoomNumber);
float verticalVelCoeff = isWater ? 81.0f : 1.0f; float verticalVelCoeff = isWater ? 81.0f : 1.0f;
auto pointColl = GetPointCollision(item); auto pointColl = GetPointCollision(item);
@ -94,31 +107,37 @@ namespace TEN::Entities::TR3
ItemNewRoom(itemNumber, pointColl.GetRoomNumber()); ItemNewRoom(itemNumber, pointColl.GetRoomNumber());
} }
pointColl = GetPointCollision(item); // Remove fly effect when in water.
if (isWater || isSwamp)
{
item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] = 1;
}
auto bounds = GameBoundingBox(&item);
item.Animation.IsAirborne = true; item.Animation.IsAirborne = true;
if (pointColl.GetFloorHeight() < item.Pose.Position.y) if (pointColl.GetFloorHeight() <= item.Pose.Position.y - bounds.Y2)
{ {
if (!isWater) if (!isWater)
{ {
item.Pose.Position.y = item.Pose.Position.y - item.Animation.Velocity.y; item.Pose.Position.y = pointColl.GetFloorHeight();
SoundEffect(SFX_TR4_CROCGOD_LAND, &item.Pose); SoundEffect(SFX_TR4_CROCGOD_LAND, &item.Pose);
} }
else else
{ {
item.Pose.Position.y = item.Pose.Position.y; item.Pose.Position.y = pointColl.GetFloorHeight();
} }
item.Animation.IsAirborne = false; item.Animation.IsAirborne = false;
item.Animation.Velocity = Vector3::Zero; item.Animation.Velocity = Vector3::Zero;
item.Animation.TargetState = CORPSE_STATE_LAND; item.Animation.TargetState = CORPSE_STATE_LAND;
item.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_LAND; item.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_LAND;
AlignEntityToSurface(&item, Vector2(object.radius));
item.ItemFlags[1] = (int)CorpseFlag::Grounded; item.ItemFlags[7] = (int)CorpseFlag::Grounded;
return; return;
} }
else else if (item.Animation.ActiveState == CORPSE_STATE_FALL)
{ {
if (isWater) if (isWater)
{ {
@ -133,17 +152,56 @@ namespace TEN::Entities::TR3
AnimateItem(&item); AnimateItem(&item);
if (!TriggerActive(&item)) if (!TriggerActive(&item) || item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] == 1)
return;
int meshCount = object.nmeshes;
for (int i = 0; i < meshCount; i++)
{ {
if (Random::TestProbability(1 / 72.0f)) // Remove all fireflies associated with this item.
RemoveFireflies(item);
// Reset ItemFlags.
if (item.HitPoints == NOT_TARGETABLE)
item.HitPoints = FLY_AMOUNT;
item.ItemFlags[FirefliesItemFlags::Spawncounter] = 0;
return;
}
else
{
AddActiveItem(itemNumber);
item.Status = ITEM_ACTIVE;
}
// Spawn fly effect.
if (item.HitPoints != NOT_TARGETABLE)
{
int fireflyCount = item.HitPoints - item.ItemFlags[FirefliesItemFlags::Spawncounter];
if (fireflyCount < 0)
{ {
auto pos = GetJointPosition(&item, i).ToVector3(); int firefliesToTurnOff = -fireflyCount;
SpawnCorpseEffect(pos); for (auto& firefly : FireflySwarm)
{
if (firefly.TargetItemPtr == &item && firefly.Life > 0.0f)
{
firefly.Life = 0.0f;
firefly.on = false;
firefliesToTurnOff--;
if (firefliesToTurnOff == 0)
break;
}
}
} }
else if (fireflyCount > 0)
{
for (int i = 0; i < fireflyCount; i++)
{
SpawnFireflySwarm(item, FLY_EFFECT_MAX_WIDTH);
}
}
item.ItemFlags[FirefliesItemFlags::Spawncounter] = item.HitPoints;
item.HitPoints = NOT_TARGETABLE;
} }
} }
@ -160,9 +218,9 @@ namespace TEN::Entities::TR3
{ {
DoBloodSplat(pos->x, pos->y, pos->z, Random::GenerateInt(4, 8), source.Pose.Orientation.y, pos->RoomNumber); DoBloodSplat(pos->x, pos->y, pos->z, Random::GenerateInt(4, 8), source.Pose.Orientation.y, pos->RoomNumber);
if (target.ItemFlags[1] == (int)CorpseFlag::Hang) if (target.ItemFlags[7] == (int)CorpseFlag::Hang)
{ {
target.ItemFlags[1] = (int)CorpseFlag::Fall; target.ItemFlags[7] = (int)CorpseFlag::Fall;
target.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_FALL; target.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_FALL;
target.Animation.ActiveState = CORPSE_STATE_FALL; target.Animation.ActiveState = CORPSE_STATE_FALL;
} }

View file

@ -0,0 +1,146 @@
#include "framework.h"
#include "Objects/TR5/Trap/MovingLaser.h"
#include "Game/animation.h"
#include "Game/collision/collide_item.h"
#include "Game/collision/collide_room.h"
#include "Game/collision/Point.h"
#include "Game/collision/Sphere.h"
#include "Game/control/control.h"
#include "Game/effects/effects.h"
#include "Game/effects/light.h"
#include "Game/items.h"
#include "Game/Lara/lara.h"
#include "Sound/sound.h"
#include "Specific/level.h"
using namespace TEN::Collision::Sphere;
namespace TEN::Entities::Traps
{
constexpr auto MOVING_LASER_DAMAGE = 100;
constexpr auto MOVING_LASER_VELOCITY_MIN = 1.0f;
constexpr auto MOVING_LASER_ACCEL = 1.0f;
constexpr auto MOVING_LASER_PAUSE_FRAME_COUNT = 30;
enum class MovingLaserFlags
{
Velocity,
PauseTimer,
DirectionSign,
DistanceTraveled,
VelocityCalc
};
void InitializeMovingLaser(short itemNumber)
{
auto& item = g_Level.Items[itemNumber];
item.ItemFlags[(int)MovingLaserFlags::DirectionSign] = 1;
item.ItemFlags[(int)MovingLaserFlags::Velocity] = 10;
// Offset by 1/4 block to make it dangerous at sector edges.
item.Pose.Translate(item.Pose.Orientation, -BLOCK(0.25f));
}
void ControlMovingLaser(short itemNumber)
{
auto& item = g_Level.Items[itemNumber];
if (!TriggerActive(&item))
return;
// Calculate distances.
float moveDist = BLOCK(item.TriggerFlags) + BLOCK(0.5f);
float distPerFrame = (BLOCK(item.ItemFlags[(int)MovingLaserFlags::Velocity]) * 0.25f) / (float)FPS;
item.Animation.ActiveState = 0;
// TODO: Use SpawnDynamicPointLight().
SpawnDynamicLight(
item.Pose.Position.x, item.Pose.Position.y - 64, item.Pose.Position.z, (Random::GenerateInt() % 2) + 8,
(Random::GenerateInt() % 4) + 24, Random::GenerateInt() % 4, Random::GenerateInt() % 2);
/*auto lightPos = item.Pose.Position.ToVector3() + Vector3(0.0f, -64, 0.0f);
auto lightColor = Color(Random::GenerateFloat(0.1f, 0.2f), Random::GenerateFloat(0.0f, 0.01f), Random::GenerateFloat(Random::GenerateFloat(0.0f, 0.01f)));
float lightFalloff = ??
SpawnDynamicPointLight(lightPos, lightPos, lightFalloff);*/
// TODO: Demagic.
// Used for flicker.
item.MeshBits = -1 - (GetRandomControl() & 20);
if (item.TriggerFlags == 0)
{
AnimateItem(&item);
return;
}
if (item.ItemFlags[(int)MovingLaserFlags::PauseTimer] > 0)
{
item.ItemFlags[(int)MovingLaserFlags::PauseTimer]--;
if (item.ItemFlags[(int)MovingLaserFlags::PauseTimer] == 0)
{
item.ItemFlags[(int)MovingLaserFlags::DirectionSign] *= -1;
item.ItemFlags[(int)MovingLaserFlags::DistanceTraveled] = 0;
}
AnimateItem(&item);
return;
}
item.Pose.Translate(item.Pose.Orientation, (item.ItemFlags[(int)MovingLaserFlags::DirectionSign] * item.ItemFlags[(int)MovingLaserFlags::VelocityCalc]));
item.ItemFlags[(int)MovingLaserFlags::DistanceTraveled] += item.ItemFlags[(int)MovingLaserFlags::VelocityCalc];
if (item.ItemFlags[(int)MovingLaserFlags::DistanceTraveled] < (moveDist - BLOCK(0.5f)))
{
item.ItemFlags[(int)MovingLaserFlags::VelocityCalc] = std::min(distPerFrame, item.ItemFlags[(int)MovingLaserFlags::VelocityCalc] + MOVING_LASER_ACCEL);
}
else
{
item.ItemFlags[(int)MovingLaserFlags::VelocityCalc] = std::max(MOVING_LASER_VELOCITY_MIN, item.ItemFlags[(int)MovingLaserFlags::VelocityCalc] - MOVING_LASER_ACCEL);
}
if (item.ItemFlags[(int)MovingLaserFlags::DistanceTraveled] >= moveDist)
{
item.ItemFlags[(int)MovingLaserFlags::PauseTimer] = MOVING_LASER_PAUSE_FRAME_COUNT;
}
if (item.ItemFlags[(int)MovingLaserFlags::PauseTimer] == 0)
{
SoundEffect(SFX_TR5_MOVING_LASER_LOOP, &item.Pose, SoundEnvironment::Always);
}
// Update room if necessary.
int roomNumber = GetPointCollision(item).GetRoomNumber();
if (roomNumber != item.RoomNumber)
ItemNewRoom(itemNumber, roomNumber);
AnimateItem(&item);
}
void CollideMovingLaser(short itemNumber, ItemInfo* playerItem, CollisionInfo* coll)
{
auto& item = g_Level.Items[itemNumber];
// Collide with objects.
if (item.Status == ITEM_ACTIVE)
{
if (!TestBoundsCollide(&item, playerItem, coll->Setup.Radius))
return;
HandleItemSphereCollision(item, *playerItem);
}
else if (item.Status != ITEM_INVISIBLE)
{
ObjectCollision(itemNumber, playerItem, coll);
}
// Damage player.
if (TestBoundsCollide(&item, playerItem, coll->Setup.Radius))
{
DoDamage(playerItem, MOVING_LASER_DAMAGE);
DoLotsOfBlood(playerItem->Pose.Position.x, playerItem->Pose.Position.y + CLICK(3), playerItem->Pose.Position.z, 4, playerItem->Pose.Orientation.y, playerItem->RoomNumber, 3);
playerItem->TouchBits.ClearAll();
}
}
}

View file

@ -1,134 +0,0 @@
#include "framework.h"
#include "Objects/TR5/Trap/tr5_movinglaser.h"
#include "Game/animation.h"
#include "Game/collision/collide_item.h"
#include "Game/collision/collide_room.h"
#include "Game/collision/Point.h"
#include "Game/collision/Sphere.h"
#include "Game/control/control.h"
#include "Game/effects/effects.h"
#include "Game/effects/light.h"
#include "Game/items.h"
#include "Game/Lara/lara.h"
#include "Sound/sound.h"
#include "Math/Utils.h"
#include "Specific/level.h"
using namespace TEN::Collision::Sphere;
namespace TEN::Entities::Traps
{
enum MovingLaserFlags
{
Speed,
PauseCounter,
Direction,
DistanceTravelled,
SpeedCalc
};
constexpr auto MOVING_LASER_DAMAGE = 100;
constexpr int PAUSE_FRAMES = 30;
constexpr float MAX_SPEED_THRESHOLD = 0.9f;
constexpr float MIN_SPEED = 1.0f;
constexpr float ACCELERATION = 1.0f;
void InitializeMovingLaser(short itemNumber)
{
auto& item = g_Level.Items[itemNumber];
item.ItemFlags[MovingLaserFlags::Direction] = 1;
item.ItemFlags[MovingLaserFlags::Speed] = 10;
item.Pose.Translate(item.Pose.Orientation, -CLICK(1)); // Offset by one click to make it dangerous at the edges of the block.
}
void ControlMovingLaser(short itemNumber)
{
auto& item = g_Level.Items[itemNumber];
if (!TriggerActive(&item))
return;
float moveDistance = (BLOCK(1) * item.TriggerFlags) + CLICK(2); // Use OCB to calculate the distance and add 2 clicks.
float distancePerFrame = ((float)(CLICK(1)) * item.ItemFlags[MovingLaserFlags::Speed]) / FPS; // Calculate distance per frame
item.Animation.ActiveState = 0;
SpawnDynamicLight(item.Pose.Position.x, item.Pose.Position.y - 64, item.Pose.Position.z, (Random::GenerateInt() % 2) + 8, (Random::GenerateInt() % 4) + 24, Random::GenerateInt() % 4, Random::GenerateInt() % 2);
item.MeshBits = -1 - (GetRandomControl() & 0x14); // To make lasers flicker
if (item.TriggerFlags == 0)
{
AnimateItem(&item);
return;
}
if (item.ItemFlags[MovingLaserFlags::PauseCounter] > 0)
{
item.ItemFlags[MovingLaserFlags::PauseCounter]--;
if (item.ItemFlags[MovingLaserFlags::PauseCounter] == 0)
{
item.ItemFlags[MovingLaserFlags::Direction] *= -1;
item.ItemFlags[MovingLaserFlags::DistanceTravelled] = 0;
}
AnimateItem(&item);
return;
}
item.Pose.Translate(item.Pose.Orientation, (item.ItemFlags[MovingLaserFlags::Direction] * item.ItemFlags[MovingLaserFlags::SpeedCalc]));
item.ItemFlags[MovingLaserFlags::DistanceTravelled] += item.ItemFlags[MovingLaserFlags::SpeedCalc];
if (item.ItemFlags[DistanceTravelled] < (moveDistance -BLOCK(0.5f)))
item.ItemFlags[SpeedCalc] = std::min(distancePerFrame, item.ItemFlags[MovingLaserFlags::SpeedCalc] + ACCELERATION);
else
item.ItemFlags[SpeedCalc] = std::max(MIN_SPEED, item.ItemFlags[MovingLaserFlags::SpeedCalc] - ACCELERATION);
if (item.ItemFlags[MovingLaserFlags::DistanceTravelled] >= moveDistance)
{
item.ItemFlags[MovingLaserFlags::PauseCounter] = PAUSE_FRAMES;
}
if (item.ItemFlags[MovingLaserFlags::PauseCounter] == 0)
{
SoundEffect(SFX_TR5_MOVING_LASER_LOOP, &item.Pose, SoundEnvironment::Always);
}
// Update room if necessary.
short new_room = item.RoomNumber;
GetPointCollision(item).GetRoomNumber();
if (new_room != item.RoomNumber)
ItemNewRoom(itemNumber, new_room);
AnimateItem(&item);
}
void CollideMovingLaser(short itemNumber, ItemInfo* playerItem, CollisionInfo* coll)
{
auto& item = g_Level.Items[itemNumber];
// Collide with objects.
if (item.Status == ITEM_ACTIVE)
{
if (!TestBoundsCollide(&item, playerItem, coll->Setup.Radius))
return;
HandleItemSphereCollision(item, *playerItem);
}
else if (item.Status != ITEM_INVISIBLE)
{
ObjectCollision(itemNumber, playerItem, coll);
}
// Damage entity.
if (TestBoundsCollide(&item, playerItem, coll->Setup.Radius))
{
DoDamage(playerItem, MOVING_LASER_DAMAGE);
DoLotsOfBlood(playerItem->Pose.Position.x, playerItem->Pose.Position.y + CLICK(3), playerItem->Pose.Position.z, 4, playerItem->Pose.Orientation.y, playerItem->RoomNumber, 3);
playerItem->TouchBits.ClearAll();
}
}
}

View file

@ -42,6 +42,7 @@
#include "Objects/TR5/Emitter/tr5_spider_emitter.h" #include "Objects/TR5/Emitter/tr5_spider_emitter.h"
#include "Objects/TR5/Emitter/tr5_smoke_emitter.h" #include "Objects/TR5/Emitter/tr5_smoke_emitter.h"
#include "Objects/TR5/Emitter/Waterfall.h" #include "Objects/TR5/Emitter/Waterfall.h"
#include "Objects/Effects/Fireflies.h"
// Objects // Objects
#include "Objects/TR5/Light/tr5_light.h" #include "Objects/TR5/Light/tr5_light.h"
@ -57,15 +58,15 @@
// Traps // Traps
#include "Objects/Effects/EmberEmitter.h" #include "Objects/Effects/EmberEmitter.h"
#include "Objects/Effects/tr5_electricity.h"
#include "Objects/TR5/Trap/LaserBarrier.h" #include "Objects/TR5/Trap/LaserBarrier.h"
#include "Objects/TR5/Trap/LaserBeam.h" #include "Objects/TR5/Trap/LaserBeam.h"
#include "Objects/TR5/Trap/MovingLaser.h"
#include "Objects/TR5/Trap/ZipLine.h" #include "Objects/TR5/Trap/ZipLine.h"
#include "Objects/Effects/tr5_electricity.h"
#include "Objects/TR5/Object/tr5_rollingball.h" #include "Objects/TR5/Object/tr5_rollingball.h"
#include "Objects/TR5/Trap/tr5_ventilator.h" #include "Objects/TR5/Trap/tr5_ventilator.h"
#include "Objects/TR5/Trap/tr5_romehammer.h" #include "Objects/TR5/Trap/tr5_romehammer.h"
#include "Objects/TR5/Trap/tr5_fallingceiling.h" #include "Objects/TR5/Trap/tr5_fallingceiling.h"
#include "Objects/TR5/Trap/tr5_movinglaser.h"
#include "Objects/TR5/Trap/tr5_explosion.h" #include "Objects/TR5/Trap/tr5_explosion.h"
#include "Objects/TR5/Trap/tr5_wreckingball.h" #include "Objects/TR5/Trap/tr5_wreckingball.h"
@ -81,6 +82,7 @@ using namespace TEN::Effects::WaterfallEmitter;
using namespace TEN::Entities::Creatures::TR5; using namespace TEN::Entities::Creatures::TR5;
using namespace TEN::Entities::Switches; using namespace TEN::Entities::Switches;
using namespace TEN::Entities::Traps; using namespace TEN::Entities::Traps;
using namespace TEN::Effects::Fireflies;
static void StartEntity(ObjectInfo *obj) static void StartEntity(ObjectInfo *obj)
{ {
@ -796,6 +798,14 @@ static void StartObject(ObjectInfo *obj)
obj->control = ControlEmberEmitter; obj->control = ControlEmberEmitter;
} }
obj = &Objects[ID_FIREFLY_EMITTER];
if (obj->loaded)
{
obj->Initialize = InitializeFireflySwarm;
obj->control = ControlFireflySwarm;
obj->drawRoutine = NULL;
}
obj = &Objects[ID_GEN_SLOT1]; obj = &Objects[ID_GEN_SLOT1];
if (obj->loaded) if (obj->loaded)
{ {

View file

@ -817,6 +817,7 @@ enum GAME_OBJECT_ID : short
ID_CORPSE, ID_CORPSE,
ID_WRAITH_TRAP, ID_WRAITH_TRAP,
ID_WATERFALL_EMITTER, ID_WATERFALL_EMITTER,
ID_FIREFLY_EMITTER,
ID_MESHSWAP1 = 1100, ID_MESHSWAP1 = 1100,
ID_MESHSWAP2, ID_MESHSWAP2,
@ -1006,8 +1007,8 @@ enum GAME_OBJECT_ID : short
ID_DASH_BAR_TEXTURE, ID_DASH_BAR_TEXTURE,
ID_SFX_BAR_TEXTURE, ID_SFX_BAR_TEXTURE,
ID_WATERFALL_SPRITES, ID_WATERFALL_SPRITES,
// 1379 ID_FIREFLY_SPRITES,
ID_CROSSHAIR_GRAPHICS = 1380, ID_CROSSHAIR_GRAPHICS,
ID_SPEEDOMETER_GRAPHICS, ID_SPEEDOMETER_GRAPHICS,
ID_CUSTOM_BAR_GRAPHICS, ID_CUSTOM_BAR_GRAPHICS,
ID_CUSTOM_AMMO_GRAPHICS, ID_CUSTOM_AMMO_GRAPHICS,

View file

@ -37,8 +37,8 @@ namespace TEN::Renderer::ConstantBuffers
//-- //--
Vector4 FogColor; Vector4 FogColor;
//-- //--
int FogMinDistance; float FogMinDistance;
int FogMaxDistance; float FogMaxDistance;
float NearPlane; float NearPlane;
float FarPlane; float FarPlane;
//-- //--

View file

@ -409,6 +409,7 @@ namespace TEN::Renderer
void PrepareFires(RenderView& view); void PrepareFires(RenderView& view);
void PrepareParticles(RenderView& view); void PrepareParticles(RenderView& view);
void PrepareSmokes(RenderView& view); void PrepareSmokes(RenderView& view);
void PrepareFireflies(RenderView& view);
void PrepareElectricity(RenderView& view); void PrepareElectricity(RenderView& view);
void PrepareHelicalLasers(RenderView& view); void PrepareHelicalLasers(RenderView& view);
void PrepareBlood(RenderView& view); void PrepareBlood(RenderView& view);

View file

@ -1759,6 +1759,7 @@ namespace TEN::Renderer
PrepareStreamers(view); PrepareStreamers(view);
PrepareLaserBarriers(view); PrepareLaserBarriers(view);
PrepareSingleLaserBeam(view); PrepareSingleLaserBeam(view);
PrepareFireflies(view);
// Sprites grouped in buckets for instancing. Non-commutative sprites are collected at a later stage. // Sprites grouped in buckets for instancing. Non-commutative sprites are collected at a later stage.
SortAndPrepareSprites(view); SortAndPrepareSprites(view);
@ -1830,7 +1831,7 @@ namespace TEN::Renderer
} }
else else
{ {
cameraConstantBuffer.FogMaxDistance = 0; cameraConstantBuffer.FogMaxDistance = 0.0f;
cameraConstantBuffer.FogColor = Vector4::Zero; cameraConstantBuffer.FogColor = Vector4::Zero;
} }
@ -2571,6 +2572,12 @@ namespace TEN::Renderer
if (!SetupBlendModeAndAlphaTest(bucket.BlendMode, rendererPass, p)) if (!SetupBlendModeAndAlphaTest(bucket.BlendMode, rendererPass, p))
continue; continue;
if (_staticTextures.size() <= bucket.Texture)
{
TENLog("Attempted to set incorrect static mesh texture atlas", LogLevel::Warning);
continue;
}
BindTexture(TextureRegister::ColorMap, BindTexture(TextureRegister::ColorMap,
&std::get<0>(_staticTextures[bucket.Texture]), &std::get<0>(_staticTextures[bucket.Texture]),
SamplerStateRegister::AnisotropicClamp); SamplerStateRegister::AnisotropicClamp);

View file

@ -35,6 +35,7 @@
#include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h" #include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h"
#include "Specific/level.h" #include "Specific/level.h"
#include "Structures/RendererSpriteBucket.h" #include "Structures/RendererSpriteBucket.h"
#include "Objects/Effects/Fireflies.h"
using namespace TEN::Effects::Blood; using namespace TEN::Effects::Blood;
using namespace TEN::Effects::Bubble; using namespace TEN::Effects::Bubble;
@ -48,6 +49,7 @@ using namespace TEN::Effects::Streamer;
using namespace TEN::Entities::Creatures::TR5; using namespace TEN::Entities::Creatures::TR5;
using namespace TEN::Entities::Traps; using namespace TEN::Entities::Traps;
using namespace TEN::Math; using namespace TEN::Math;
using namespace TEN::Effects::Fireflies;
extern BLOOD_STRUCT Blood[MAX_SPARKS_BLOOD]; extern BLOOD_STRUCT Blood[MAX_SPARKS_BLOOD];
extern FIRE_SPARKS FireSparks[MAX_SPARKS_FIRE]; extern FIRE_SPARKS FireSparks[MAX_SPARKS_FIRE];
@ -330,6 +332,49 @@ namespace TEN::Renderer
} }
} }
void Renderer::PrepareFireflies(RenderView& view)
{
if (!Objects[ID_FIREFLY_EMITTER].loaded)
return;
for (auto& firefly : FireflySwarm)
{
if (!firefly.on)
continue;
if (!CheckIfSlotExists(ID_SPARK_SPRITE, "Particle rendering"))
continue;
auto axis = Vector3(0,0,0);
axis.Normalize();
firefly.scalar = 3;
firefly.size = 3;
auto pos = Vector3::Lerp(
Vector3(firefly.PrevX, firefly.PrevY, firefly.PrevZ),
Vector3(firefly.Position.x, firefly.Position.y, firefly.Position.z),
GetInterpolationFactor());
pos = Vector3(firefly.Position.x, firefly.Position.y, firefly.Position.z);
// Disallow sprites out of bounds.
int spriteIndex = Objects[firefly.SpriteSeqID].meshIndex + firefly.SpriteID;
spriteIndex = std::clamp(spriteIndex, 0, (int)_sprites.size());
AddSpriteBillboard(
&_sprites[spriteIndex],
pos,
Color(firefly.r / (float)UCHAR_MAX, firefly.g / (float)UCHAR_MAX, firefly.b / (float)UCHAR_MAX, 1.0f),
TO_RAD(firefly.rotAng << 4), firefly.scalar,
Vector2(firefly.size, firefly.size),
firefly.blendMode, true, view);
}
}
void Renderer::PrepareSmokes(RenderView& view) void Renderer::PrepareSmokes(RenderView& view)
{ {
for (const auto& smoke : SmokeSparks) for (const auto& smoke : SmokeSparks)

View file

@ -1331,7 +1331,7 @@ namespace TEN::Renderer
PrintDebugMessage("RoomNumber: %d", LaraItem->RoomNumber); PrintDebugMessage("RoomNumber: %d", LaraItem->RoomNumber);
PrintDebugMessage("PathfindingBoxID: %d", LaraItem->BoxNumber); PrintDebugMessage("PathfindingBoxID: %d", LaraItem->BoxNumber);
PrintDebugMessage((Lara.Context.WaterSurfaceDist == -NO_HEIGHT ? "WaterSurfaceDist: N/A" : "WaterSurfaceDist: %d"), Lara.Context.WaterSurfaceDist); PrintDebugMessage((Lara.Context.WaterSurfaceDist == -NO_HEIGHT ? "WaterSurfaceDist: N/A" : "WaterSurfaceDist: %d"), Lara.Context.WaterSurfaceDist);
PrintDebugMessage("Room Position: %d, %d, %d, %d", room.Position.z, room.Position.z, room.Position.z + BLOCK(room.XSize), room.Position.z + BLOCK(room.ZSize)); PrintDebugMessage("Room Bounds: (%d, %d), (%d, %d)", room.Position.x, room.Position.z, room.Position.x + BLOCK(room.XSize), room.Position.z + BLOCK(room.ZSize));
PrintDebugMessage("Room.y, minFloor, maxCeiling: %d, %d, %d ", room.Position.y, room.BottomHeight, room.TopHeight); PrintDebugMessage("Room.y, minFloor, maxCeiling: %d, %d, %d ", room.Position.y, room.BottomHeight, room.TopHeight);
PrintDebugMessage("Camera Position: %d, %d, %d", Camera.pos.x, Camera.pos.y, Camera.pos.z); PrintDebugMessage("Camera Position: %d, %d, %d", Camera.pos.x, Camera.pos.y, Camera.pos.z);
PrintDebugMessage("Camera LookAt: %d, %d, %d", Camera.target.x, Camera.target.y, Camera.target.z); PrintDebugMessage("Camera LookAt: %d, %d, %d", Camera.target.x, Camera.target.y, Camera.target.z);

View file

@ -62,6 +62,7 @@ public:
virtual void OnUseItem(GAME_OBJECT_ID objectNumber) = 0; virtual void OnUseItem(GAME_OBJECT_ID objectNumber) = 0;
virtual void OnFreeze() = 0; virtual void OnFreeze() = 0;
virtual void AddConsoleInput(const std::string& input) = 0;
virtual void ShortenTENCalls() = 0; virtual void ShortenTENCalls() = 0;
virtual void FreeLevelScripts() = 0; virtual void FreeLevelScripts() = 0;
virtual void ResetScripts(bool clearGameVars) = 0; virtual void ResetScripts(bool clearGameVars) = 0;

View file

@ -38,8 +38,8 @@ public:
virtual WeatherType GetWeatherType() const = 0; virtual WeatherType GetWeatherType() const = 0;
virtual RGBAColor8Byte GetSkyLayerColor(int index) const = 0; virtual RGBAColor8Byte GetSkyLayerColor(int index) const = 0;
virtual RGBAColor8Byte GetFogColor() const = 0; virtual RGBAColor8Byte GetFogColor() const = 0;
virtual short GetFogMinDistance() const = 0; virtual float GetFogMinDistance() const = 0;
virtual short GetFogMaxDistance() const = 0; virtual float GetFogMaxDistance() const = 0;
virtual short GetFarView() const = 0; virtual short GetFarView() const = 0;
virtual int GetSecrets() const = 0; virtual int GetSecrets() const = 0;
virtual std::string GetAmbientTrack() const = 0; virtual std::string GetAmbientTrack() const = 0;

View file

@ -26,6 +26,7 @@ namespace TEN::Scripting::Collision
void Probe::Register(sol::table& parent) void Probe::Register(sol::table& parent)
{ {
using ctors = sol::constructors< using ctors = sol::constructors<
Probe(const Vec3&),
Probe(const Vec3&, int), Probe(const Vec3&, int),
Probe(const Vec3&, int, const Vec3&, float), Probe(const Vec3&, int, const Vec3&, float),
Probe(const Vec3&, int, const Rotation&, float), Probe(const Vec3&, int, const Rotation&, float),
@ -65,13 +66,17 @@ namespace TEN::Scripting::Collision
/// Create a Probe at a specified world position in a room. /// Create a Probe at a specified world position in a room.
// @function Probe // @function Probe
// @tparam Vec3 pos World position. // @tparam Vec3 pos World position.
// @tparam int roomNumber[opt] Room number. Must be used if probing a position in an overlapping room. // @tparam[opt] int roomNumber Room number. Must be used if probing a position in an overlapping room.
// @treturn Probe A new Probe. // @treturn Probe A new Probe.
Probe::Probe(const Vec3& pos, TypeOrNil<int> roomNumber) Probe::Probe(const Vec3& pos)
{ {
auto convertedPos = pos.ToVector3i(); auto convertedPos = pos.ToVector3i();
int roomNumberValue = ValueOr<int>(roomNumber, FindRoomNumber(convertedPos)); _pointCollision = GetPointCollision(convertedPos, FindRoomNumber(convertedPos));
_pointCollision = GetPointCollision(convertedPos, roomNumberValue); }
Probe::Probe(const Vec3& pos, int roomNumber)
{
_pointCollision = GetPointCollision(pos.ToVector3i(), roomNumber);
} }
/// Create a Probe that casts from an origin world position in a room in a given direction for a specified distance. /// Create a Probe that casts from an origin world position in a room in a given direction for a specified distance.
@ -326,9 +331,9 @@ namespace TEN::Scripting::Collision
// @function Preview // @function Preview
void Probe::Preview() void Probe::Preview()
{ {
constexpr auto TARGET_RADIUS = 100.0f; constexpr auto TARGET_RADIUS = BLOCK(0.08f);
constexpr auto SPHERE_RADIUS = TARGET_RADIUS * 0.6f; constexpr auto SPHERE_RADIUS = TARGET_RADIUS * 0.4f;
constexpr auto COLOR = Color(1.0f, 1.0f, 1.0f, 0.4f); constexpr auto COLOR = Color(1.0f, 1.0f, 0.8f, 0.2f);
constexpr auto DEBUG_PAGE = RendererDebugPage::CollisionStats; constexpr auto DEBUG_PAGE = RendererDebugPage::CollisionStats;
auto pos = _pointCollision.GetPosition().ToVector3(); auto pos = _pointCollision.GetPosition().ToVector3();

View file

@ -31,7 +31,8 @@ namespace TEN::Scripting::Collision
// Constructors // Constructors
Probe() = default; Probe() = default;
Probe(const Vec3& pos, TypeOrNil<int> roomNumber); Probe(const Vec3& pos);
Probe(const Vec3& pos, int roomNumber);
Probe(const Vec3& origin, int roomNumber, const Vec3& dir, float dist); Probe(const Vec3& origin, int roomNumber, const Vec3& dir, float dist);
Probe(const Vec3& origin, int roomNumber, const Rotation& rot, float dist); Probe(const Vec3& origin, int roomNumber, const Rotation& rot, float dist);
Probe(const Vec3& origin, int roomNumber, const Rotation& rot, const Vec3& relOffset); Probe(const Vec3& origin, int roomNumber, const Rotation& rot, const Vec3& relOffset);

View file

@ -551,7 +551,7 @@ namespace TEN::Scripting::Effects
// @tparam[opt] float vel Movement velocity in world units per second. __Default: 0__ // @tparam[opt] float vel Movement velocity in world units per second. __Default: 0__
// @tparam[opt] float expRate Width expansion rate in world units per second. __Default: 0__ // @tparam[opt] float expRate Width expansion rate in world units per second. __Default: 0__
// @tparam[opt] float rotRate Rotation rate in degrees per second. __Default: 0__ // @tparam[opt] float rotRate Rotation rate in degrees per second. __Default: 0__
// @tparam[opt] Effects.StreamerFeatherMode edgeFeatherMode Edge feather mode. __Default: Effects.FeatherID.NONE__ // @tparam[opt] Effects.StreamerFeatherMode edgeFeatherMode Edge feather mode. __Default: Effects.StreamerFeatherMode.NONE__
// @tparam[opt] Effects.StreamerFeatherMode lengthFeatherMode Length feather mode. __UNIMPLEMENTED, currently will always leave a fading tail__ // @tparam[opt] Effects.StreamerFeatherMode lengthFeatherMode Length feather mode. __UNIMPLEMENTED, currently will always leave a fading tail__
// @tparam[opt] Effects.BlendID blendID Renderer blend ID. __Default: Effects.BlendID.ALPHA_BLEND__ // @tparam[opt] Effects.BlendID blendID Renderer blend ID. __Default: Effects.BlendID.ALPHA_BLEND__
static void EmitStreamer(const Moveable& mov, TypeOrNil<int> tag, const Vec3& pos, const Vec3& dir, TypeOrNil<float> rot, TypeOrNil<ScriptColor> startColor, TypeOrNil<ScriptColor> endColor, static void EmitStreamer(const Moveable& mov, TypeOrNil<int> tag, const Vec3& pos, const Vec3& dir, TypeOrNil<float> rot, TypeOrNil<ScriptColor> startColor, TypeOrNil<ScriptColor> endColor,

View file

@ -3,10 +3,10 @@
#include "Game/effects/Streamer.h" #include "Game/effects/Streamer.h"
/// Constants for feather modes. /// Constants for feather modes.
// @enum Effects.FeatherMode // @enum Effects.StreamerFeatherMode
// @pragma nostrip // @pragma nostrip
/// Table of Effects.FeatherMode constants. /// Table of Effects.StreamerFeatherMode constants.
// To be used with @{Effects.EmitStreamer} function. // To be used with @{Effects.EmitStreamer} function.
// //
// - `NONE` // - `NONE`
@ -14,7 +14,7 @@
// - `LEFT` // - `LEFT`
// - `RIGHT` // - `RIGHT`
// //
// @table Effects.FeatherMode // @table Effects.StreamerFeatherMode
using namespace TEN::Effects::Streamer; using namespace TEN::Effects::Streamer;

View file

@ -23,13 +23,13 @@ void Fog::Register(sol::table& parent)
// @mem color // @mem color
"color", sol::property(&Fog::GetColor, &Fog::SetColor), "color", sol::property(&Fog::GetColor, &Fog::SetColor),
/// (int) Minimum distance. /// (float) Minimum distance.
// This is the distance at which the fog starts. // This is the distance at which the fog starts (in sectors).
// @mem minDistance // @mem minDistance
"minDistance", &Fog::MinDistance, "minDistance", &Fog::MinDistance,
/// (int) Maximum distance. /// (float) Maximum distance.
// This is the distance at which the fog reaches the maximum strength. // This is the distance at which the fog reaches the maximum strength (in sectors).
// @mem maxDistance // @mem maxDistance
"maxDistance", &Fog::MaxDistance "maxDistance", &Fog::MaxDistance
); );
@ -42,7 +42,7 @@ void Fog::Register(sol::table& parent)
@treturn Fog A fog object. @treturn Fog A fog object.
@function Fog @function Fog
*/ */
Fog::Fog(ScriptColor const& col, short minDistance, short maxDistance) Fog::Fog(ScriptColor const& col, float minDistance, float maxDistance)
{ {
SetColor(col); SetColor(col);
MinDistance = minDistance; MinDistance = minDistance;

View file

@ -13,11 +13,11 @@ struct Fog
byte R{ 0 }; byte R{ 0 };
byte G{ 0 }; byte G{ 0 };
byte B{ 0 }; byte B{ 0 };
short MinDistance{ 0 }; float MinDistance{ 0 };
short MaxDistance{ 0 }; float MaxDistance{ 0 };
Fog() = default; Fog() = default;
Fog(ScriptColor const& color, short minDistance, short maxDistance); Fog(ScriptColor const& color, float minDistance, float maxDistance);
void SetColor(ScriptColor const& color); void SetColor(ScriptColor const& color);
ScriptColor GetColor() const; ScriptColor GetColor() const;

Some files were not shown because too many files have changed in this diff Show more