mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 07:47:57 +03:00
Merge branch 'develop'
This commit is contained in:
commit
7fe9f7ab9f
118 changed files with 1898 additions and 583 deletions
54
CHANGELOG.md
54
CHANGELOG.md
|
@ -3,6 +3,26 @@
|
|||
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
|
||||
|
||||
## [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
|
||||
|
||||
### 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 crashes with sound samples larger than 2 megabytes.
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Added multithreading and an option for it to flow system settings.
|
||||
* 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
|
||||
|
@ -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 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 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.
|
||||
|
@ -123,7 +143,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
|
|||
* Fixed spotlight shadows.
|
||||
* 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 ability to customize many hardcoded parameters, such as flare, weapon, and hair settings.
|
||||
* 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 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 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
|
||||
|
@ -259,7 +279,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
|
|||
* Fixed bottom collision for solid static meshes.
|
||||
* Fixed T-Rex's head rotation.
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* 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.
|
||||
* 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 normal mapping for rooms, items, and statics.'
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Added ambient occlusion (SSAO).
|
||||
* Added new post-process workflow (monochrome, negative, exclusion) with tinting.
|
||||
* 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 TR4 mapper not being visible.
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Improve head-on wall collision.
|
||||
* Overhaul pushables:
|
||||
- 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 normal mapping.
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* 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.
|
||||
* 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 inconsistent multiline string spacing on different display modes.
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Remove search object 4 hardcoded meshswap activated with a flipmap.
|
||||
* Add TR1 cowboy.
|
||||
* 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
|
||||
* Fix and improve wraith tails.
|
||||
|
||||
### New Features/Amedments
|
||||
### New features/Amedments
|
||||
* Add dedicated WRAITH_TRAP object with enhanced effects.
|
||||
- OCB 0: Effect disabled.
|
||||
- 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 Tony and add boss effect for him.
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Add TR3 civvy.
|
||||
* Add TR3 electric cleaner.
|
||||
* 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 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.
|
||||
* Restore original volumetric explosion effects.
|
||||
* 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 Lara's animation for cog switch release.
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Added new OCB to cog switch object:
|
||||
- Use OCB 0 to have the traditional behaviour.
|
||||
- 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
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* 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 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
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* 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.
|
||||
* 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
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Fix removing Pistols with TakeItem and SetItemCount.
|
||||
* Allow saving and loading of Vec3s in LevelVars and GameVars.
|
||||
* 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
|
||||
|
||||
### New Features
|
||||
### New features
|
||||
* Added antialiasing support.
|
||||
* Added static mesh scaling support.
|
||||
* Added free rotation for teeth spikes instead of using OCB codes.
|
||||
|
|
|
@ -12,7 +12,7 @@ new_type("luautil", "5 Lua utility modules", true)
|
|||
|
||||
not_luadoc = true
|
||||
|
||||
local version = "1.8"
|
||||
local version = "1.8.1"
|
||||
project = " TombEngine"
|
||||
title = "TombEngine " .. version .. " Lua API"
|
||||
description = "TombEngine " .. version .. " scripting interface"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
@ -784,12 +784,12 @@ EmitAdvancedParticle(particle)</pre>
|
|||
(<em>optional</em>)
|
||||
</li>
|
||||
<li><span class="parameter">edgeFeatherMode</span>
|
||||
<span class="types"><span class="type">Effects.StreamerFeatherMode</span></span>
|
||||
Edge feather mode. <strong>Default: Effects.FeatherID.NONE</strong>
|
||||
<span class="types"><a class="type" href="../4 enums/Effects.StreamerFeatherMode.html#">StreamerFeatherMode</a></span>
|
||||
Edge feather mode. <strong>Default: Effects.StreamerFeatherMode.NONE</strong>
|
||||
(<em>optional</em>)
|
||||
</li>
|
||||
<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>
|
||||
(<em>optional</em>)
|
||||
</li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</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>
|
||||
</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>
|
||||
</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>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -499,7 +499,7 @@
|
|||
</dd>
|
||||
<dt>
|
||||
<a name = "GetFlybyPosition"></a>
|
||||
<strong>GetFlybyPosition(seqID, progress)</strong>
|
||||
<strong>GetFlybyPosition(seqID, progress[, loop])</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
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>
|
||||
Progress point in percent. Clamped to [0, 100].
|
||||
</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>
|
||||
|
||||
<h3>Returns:</h3>
|
||||
|
@ -531,7 +536,7 @@
|
|||
</dd>
|
||||
<dt>
|
||||
<a name = "GetFlybyRotation"></a>
|
||||
<strong>GetFlybyRotation(seqID, progress)</strong>
|
||||
<strong>GetFlybyRotation(seqID, progress[, loop])</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
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>
|
||||
Progress point in percent. Clamped to [0, 100].
|
||||
</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>
|
||||
|
||||
<h3>Returns:</h3>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</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>
|
||||
<table class="function_list">
|
||||
<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>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -220,7 +220,7 @@
|
|||
<dl class="function">
|
||||
<dt>
|
||||
<a name = "Probe"></a>
|
||||
<strong>Probe(pos, roomNumber)</strong>
|
||||
<strong>Probe(pos[, roomNumber])</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Create a Probe at a specified world position in a room.
|
||||
|
@ -235,7 +235,8 @@
|
|||
</li>
|
||||
<li><span class="parameter">roomNumber</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>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</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> <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.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
@ -517,7 +517,7 @@
|
|||
<ul>
|
||||
<li><span class="parameter">objectCollision</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>
|
||||
</ul>
|
||||
|
||||
|
@ -1255,7 +1255,7 @@
|
|||
<ul>
|
||||
<li><span class="parameter">errorMode</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>
|
||||
</ul>
|
||||
|
||||
|
@ -1278,7 +1278,7 @@
|
|||
<ul>
|
||||
<li><span class="parameter">multithreaded</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>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</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>
|
||||
</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>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -221,7 +221,7 @@
|
|||
<td class="summary">Set the effect for this moveable.</td>
|
||||
</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>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -418,7 +418,7 @@
|
|||
<td class="summary">Attach camera to an object.</td>
|
||||
</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>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -518,7 +518,7 @@ most can just be ignored (see usage).
|
|||
<ol>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
@ -527,7 +527,7 @@ most can just be ignored (see usage).
|
|||
</dd>
|
||||
<dt>
|
||||
<a name = "Moveable:SetObjectID"></a>
|
||||
<strong>Moveable:SetObjectID(ID)</strong>
|
||||
<strong>Moveable:SetObjectID(objectID)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
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>
|
||||
<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>
|
||||
the new ID
|
||||
</li>
|
||||
|
@ -795,7 +795,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
<ol>
|
||||
|
||||
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
|
||||
pos World position.
|
||||
World position.
|
||||
</ol>
|
||||
|
||||
|
||||
|
@ -815,7 +815,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
<ul>
|
||||
<li><span class="parameter">index</span>
|
||||
<span class="types"><span class="type">int</span></span>
|
||||
of a joint to get rotation
|
||||
Index of a joint to get rotation.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
@ -1053,7 +1053,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
</dd>
|
||||
<dt>
|
||||
<a name = "Moveable:SetCustomEffect"></a>
|
||||
<strong>Moveable:SetCustomEffect(Color1, Color2[, timeout])</strong>
|
||||
<strong>Moveable:SetCustomEffect(color1, color2[, timeout])</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Set custom colored burn effect to moveable
|
||||
|
@ -1062,17 +1062,17 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
|
||||
<h3>Parameters:</h3>
|
||||
<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>
|
||||
color the primary color of the effect (also used for lighting).
|
||||
The primary color of the effect (also used for lighting).
|
||||
</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>
|
||||
color the secondary color of the effect.
|
||||
The secondary color of the effect.
|
||||
</li>
|
||||
<li><span class="parameter">timeout</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>)
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -1096,7 +1096,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
<ol>
|
||||
|
||||
<span class="types"><a class="type" href="../4 enums/Effects.EffectID.html#">EffectID</a></span>
|
||||
Sffect type currently assigned.
|
||||
Effect type currently assigned.
|
||||
</ol>
|
||||
|
||||
|
||||
|
@ -1116,7 +1116,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
<ul>
|
||||
<li><span class="parameter">index</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>
|
||||
</ul>
|
||||
|
||||
|
@ -1144,11 +1144,11 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
<ul>
|
||||
<li><span class="parameter">value</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><span class="parameter">index</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>
|
||||
</ul>
|
||||
|
||||
|
@ -1191,7 +1191,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
<ul>
|
||||
<li><span class="parameter">value</span>
|
||||
<span class="types"><span class="type">short</span></span>
|
||||
to store.
|
||||
Value to store.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
@ -1248,18 +1248,22 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
|
|||
<strong>Moveable:GetAIBits()</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Get AIBits of object
|
||||
|
||||
<p>Get AIBits of object
|
||||
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
|
||||
have a <em>1</em> in the corresponding cell. Otherwise, the cell will hold
|
||||
a <em>0</em>.</p>
|
||||
|
||||
<p> <br />1 - guard
|
||||
<br />2 - ambush
|
||||
<br />3 - patrol 1
|
||||
<br />4 - modify
|
||||
<br />5 - follow
|
||||
<br />6 - patrol 2
|
||||
<pre><code>1 - Guard
|
||||
2 - Ambush
|
||||
3 - Patrol 1
|
||||
4 - Modify
|
||||
5 - Follow
|
||||
6 - Patrol 2
|
||||
</code></pre>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1681,7 +1685,7 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
|
|||
<strong>Moveable:GetStatus()</strong>
|
||||
</dt>
|
||||
<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>
|
||||
</dt>
|
||||
<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>
|
||||
<li><span class="parameter">mesh</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><span class="parameter">target</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><span class="parameter">mesh</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>
|
||||
</ul>
|
||||
|
||||
|
@ -2122,7 +2126,7 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
|
|||
</dd>
|
||||
<dt>
|
||||
<a name = "Moveable:AnimFromObject"></a>
|
||||
<strong>Moveable:AnimFromObject(ObjectID, animNumber, stateID)</strong>
|
||||
<strong>Moveable:AnimFromObject(objectID, animNumber, stateID)</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Borrow animation from an object
|
||||
|
@ -2131,17 +2135,17 @@ sas:SetPosition(newPos, <span class="keyword">false</span>)</pre>
|
|||
|
||||
<h3>Parameters:</h3>
|
||||
<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>
|
||||
to take animation and stateID from,
|
||||
Object ID to take animation and stateID from.
|
||||
</li>
|
||||
<li><span class="parameter">animNumber</span>
|
||||
<span class="types"><span class="type">int</span></span>
|
||||
animation from object
|
||||
Animation from object.
|
||||
</li>
|
||||
<li><span class="parameter">stateID</span>
|
||||
<span class="types"><span class="type">int</span></span>
|
||||
state from object
|
||||
state State from object.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
@ -127,11 +127,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
<td class="name" ><a href="#maxDistance">maxDistance</a></td>
|
||||
<td class="summary">(int) Maximum distance.</td>
|
||||
<td class="summary">(float) Maximum distance.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2><a href="#Functions">Functions</a></h2>
|
||||
|
@ -171,8 +171,8 @@
|
|||
<strong>minDistance</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
(int) Minimum distance.
|
||||
This is the distance at which the fog starts.
|
||||
(float) Minimum distance.
|
||||
This is the distance at which the fog starts (in sectors).
|
||||
|
||||
|
||||
|
||||
|
@ -187,8 +187,8 @@
|
|||
<strong>maxDistance</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
(int) Maximum distance.
|
||||
This is the distance at which the fog reaches the maximum strength.
|
||||
(float) Maximum distance.
|
||||
This is the distance at which the fog reaches the maximum strength (in sectors).
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<li> <here>Collision.MaterialType</here></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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<li> <a href="../4 enums/Collision.MaterialType.html">Collision.MaterialType</a></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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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> <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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
@ -114,7 +114,7 @@
|
|||
|
||||
<div id="content">
|
||||
|
||||
<h1>Enum <code>Effects.FeatherMode</code></h1>
|
||||
<h1>Enum <code>Effects.StreamerFeatherMode</code></h1>
|
||||
<p>Constants for feather modes.</p>
|
||||
<p>
|
||||
|
||||
|
@ -124,8 +124,8 @@
|
|||
<h2><a href="#Tables">Tables</a></h2>
|
||||
<table class="function_list">
|
||||
<tr>
|
||||
<td class="name" ><a href="#Effects.FeatherMode">Effects.FeatherMode</a></td>
|
||||
<td class="summary">Table of Effects.FeatherMode constants.</td>
|
||||
<td class="name" ><a href="#Effects.StreamerFeatherMode">Effects.StreamerFeatherMode</a></td>
|
||||
<td class="summary">Table of Effects.StreamerFeatherMode constants.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -137,12 +137,12 @@
|
|||
|
||||
<dl class="function">
|
||||
<dt>
|
||||
<a name = "Effects.FeatherMode"></a>
|
||||
<strong>Effects.FeatherMode</strong>
|
||||
<a name = "Effects.StreamerFeatherMode"></a>
|
||||
<strong>Effects.StreamerFeatherMode</strong>
|
||||
</dt>
|
||||
<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>
|
||||
|
||||
<ul>
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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> <here>Flow.ErrorMode</here></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <here>Flow.FreezeMode</here></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
@ -952,6 +952,7 @@ DOPPELGANGER_ORIGIN
|
|||
CORPSE
|
||||
WRAITH_TRAP
|
||||
WATERFALL_EMITTER
|
||||
FIREFLY_EMITTER
|
||||
MESHSWAP1
|
||||
MESHSWAP2
|
||||
MESHSWAP3
|
||||
|
@ -1132,6 +1133,7 @@ AIR_BAR_TEXTURE
|
|||
DASH_BAR_TEXTURE
|
||||
SFX_BAR_TEXTURE
|
||||
WATERFALL_SPRITES
|
||||
FIREFLY_SPRITES
|
||||
CROSSHAIR_GRAPHICS
|
||||
SPEEDOMETER_GRAPHICS
|
||||
CUSTOM_BAR_GRAPHICS
|
||||
|
@ -1410,6 +1412,7 @@ AIR_BAR_TEXTURE
|
|||
DASH_BAR_TEXTURE
|
||||
SFX_BAR_TEXTURE
|
||||
WATERFALL_SPRITES
|
||||
FIREFLY_SPRITES
|
||||
CROSSHAIR_GRAPHICS
|
||||
SPEEDOMETER_GRAPHICS
|
||||
CUSTOM_BAR_GRAPHICS
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<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" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<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.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/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
|
||||
<li> <a href="4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>
|
||||
|
@ -115,7 +115,7 @@
|
|||
<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>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>
|
||||
</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>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
56
README.md
56
README.md
|
@ -1,41 +1,41 @@
|
|||
# TombEngine
|
||||
# Tomb Engine
|
||||
|
||||

|
||||
|
||||
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:
|
||||
- Lua (as the native scripting language)
|
||||
- Many objects from the original series (1-5)
|
||||
- Support for high framerate, antialiasing, mipmapping and SSAO
|
||||
- Full diagonal geometry support
|
||||
- Uncapped map size
|
||||
- A streamlined player control scheme.
|
||||
*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.
|
||||
- Many objects from the original series (1-5).
|
||||
- Support for high framerate, antialiasing, mipmapping, and SSAO.
|
||||
- Full diagonal geometry support.
|
||||
- Uncapped map size.
|
||||
- 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
|
||||
To compile TEN, ensure you have installed:
|
||||
- Microsoft Visual Studio
|
||||
- Tomb Editor (if you would like to create and test levels)
|
||||
# Compiling *Tomb Engine*
|
||||
To compile *TEN*, ensure you have installed:
|
||||
- *Microsoft Visual Studio*
|
||||
- *Tomb Editor* (for level creation and testing)
|
||||
|
||||
Steps:
|
||||
1) Clone the repository to your GitHub Desktop
|
||||
2) Open TombEngine.sln
|
||||
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)
|
||||
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
|
||||
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.
|
||||
1) Clone the repository to your GitHub Desktop.
|
||||
2) Open `TombEngine.sln`.
|
||||
4) Compile the solution.
|
||||
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.
|
||||
7) Ensure you have the necessary level data and texture files.
|
||||
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:
|
||||
1) Delete the Packages folder
|
||||
2) Go back to Microsoft Visual Studio
|
||||
3) Right-click on the TombEngine 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
|
||||
*Visual Studio* may warn about NuGet packages. To fix:
|
||||
1) Delete the `Packages` folder.
|
||||
2) Go back to *Microsoft Visual Studio*.
|
||||
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.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ local settings = Flow.Settings.new()
|
|||
settings.Flare.offset = Vec3(0, 0, 41)
|
||||
settings.Flare.range = 9
|
||||
settings.Flare.timeout = 60
|
||||
settings.Flare.lensflareBrightness = 0.5
|
||||
settings.Flare.lensflareBrightness = 1.0
|
||||
settings.Flare.sparks = true
|
||||
settings.Flare.smoke = true
|
||||
settings.Flare.flicker = true
|
||||
|
@ -35,6 +35,7 @@ local settings = Flow.Settings.new()
|
|||
|
||||
settings.System.errorMode = Flow.ErrorMode.WARN
|
||||
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.
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "Objects/TR4/Entity/tr4_beetle_swarm.h"
|
||||
#include "Objects/Utils/object_helper.h"
|
||||
#include "Specific/level.h"
|
||||
#include "Objects/Effects/Fireflies.h"
|
||||
|
||||
using namespace TEN::Effects::Hair;
|
||||
using namespace TEN::Entities;
|
||||
|
@ -174,6 +175,7 @@ void InitializeGameFlags()
|
|||
|
||||
FlipEffect = NO_VALUE;
|
||||
FlipStatus = false;
|
||||
NumRPickups = 0;
|
||||
Camera.underwater = false;
|
||||
}
|
||||
|
||||
|
@ -199,6 +201,7 @@ void InitializeSpecialEffects()
|
|||
|
||||
TEN::Entities::TR4::ClearBeetleSwarm();
|
||||
TEN::Entities::Creatures::TR3::ClearFishSwarm();
|
||||
TEN::Effects::Fireflies::ClearFireflySwarm();
|
||||
}
|
||||
|
||||
void CustomObjects()
|
||||
|
@ -208,6 +211,8 @@ void CustomObjects()
|
|||
|
||||
void InitializeObjects()
|
||||
{
|
||||
TENLog("Initializing objects...", LogLevel::Info);
|
||||
|
||||
AllocTR4Objects();
|
||||
AllocTR5Objects();
|
||||
|
||||
|
@ -250,10 +255,6 @@ void InitializeObjects()
|
|||
// User defined objects
|
||||
CustomObjects();
|
||||
|
||||
HairEffect.Initialize();
|
||||
InitializeSpecialEffects();
|
||||
|
||||
NumRPickups = 0;
|
||||
CurrentSequence = 0;
|
||||
SequenceResults[0][1][2] = 0;
|
||||
SequenceResults[0][2][1] = 1;
|
||||
|
|
|
@ -711,6 +711,10 @@ Vector3i GetJointPosition(const ItemInfo& item, const CreatureBiteInfo& bite)
|
|||
Vector3 GetJointOffset(GAME_OBJECT_ID objectID, int jointIndex)
|
||||
{
|
||||
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)];
|
||||
return Vector3(*(bonePtr + 1), *(bonePtr + 2), *(bonePtr + 3));
|
||||
|
|
|
@ -1150,6 +1150,7 @@ bool StalkBox(ItemInfo* item, ItemInfo* enemy, int boxNumber)
|
|||
{
|
||||
if (enemy == nullptr || boxNumber == NO_VALUE)
|
||||
return false;
|
||||
|
||||
auto* box = &g_Level.PathfindingBoxes[boxNumber];
|
||||
|
||||
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* 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;
|
||||
switch (creature->Mood)
|
||||
|
@ -1645,7 +1649,7 @@ void CreatureMood(ItemInfo* item, AI_INFO* AI, bool isViolent)
|
|||
boxNumber = LOT->Node[GetRandomControl() * LOT->ZoneCount >> 15].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);
|
||||
creature->Mood = MoodType::Bored;
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
#include "Specific/Input/Input.h"
|
||||
#include "Specific/level.h"
|
||||
#include "Specific/winmain.h"
|
||||
#include "Objects/Effects/Fireflies.h"
|
||||
|
||||
using namespace std::chrono;
|
||||
using namespace TEN::Effects;
|
||||
|
@ -89,6 +90,7 @@ using namespace TEN::Math;
|
|||
using namespace TEN::Renderer;
|
||||
using namespace TEN::Entities::Creatures::TR3;
|
||||
using namespace TEN::Entities::Effects;
|
||||
using namespace TEN::Effects::Fireflies;
|
||||
|
||||
constexpr auto DEATH_NO_INPUT_TIMEOUT = 10 * FPS;
|
||||
constexpr auto DEATH_INPUT_TIMEOUT = 3 * FPS;
|
||||
|
@ -211,6 +213,7 @@ GameStatus GamePhase(bool insideMenu)
|
|||
UpdateLocusts();
|
||||
UpdateUnderwaterBloodParticles();
|
||||
UpdateFishSwarm();
|
||||
UpdateFireflySwarm();
|
||||
UpdateGlobalLensFlare();
|
||||
|
||||
// Update HUD.
|
||||
|
@ -389,6 +392,7 @@ GameStatus DoLevel(int levelIndex, bool loadGame)
|
|||
InitializeCamera();
|
||||
InitializeSpotCamSequences(isTitle);
|
||||
InitializeItemBoxData();
|
||||
InitializeSpecialEffects();
|
||||
|
||||
// Initialize scripting.
|
||||
InitializeScripting(levelIndex, loadGame);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "Game/Setup.h"
|
||||
#include "Sound/sound.h"
|
||||
#include "Specific/level.h"
|
||||
#include "Objects/Effects/Fireflies.h"
|
||||
#include "Objects/Generic/puzzles_keys.h"
|
||||
#include "Objects/TR3/Entity/FishSwarm.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::Hair;
|
||||
using namespace TEN::Entities::Creatures::TR3;
|
||||
using namespace TEN::Effects::Fireflies;
|
||||
|
||||
int FlipEffect;
|
||||
|
||||
|
@ -90,6 +92,7 @@ void ClearSwarmEnemies(ItemInfo* item)
|
|||
ClearBeetleSwarm();
|
||||
ClearLocusts();
|
||||
ClearFishSwarm();
|
||||
ClearFireflySwarm();
|
||||
}
|
||||
|
||||
void FlashOrange(ItemInfo* item)
|
||||
|
|
|
@ -690,7 +690,7 @@ namespace TEN::Gui
|
|||
CurrentSettings.IgnoreInput = true;
|
||||
}
|
||||
|
||||
if (CurrentSettings.NewKeyWaitTimer > 0.0f)
|
||||
if (CurrentSettings.NewKeyWaitTimer > 0)
|
||||
{
|
||||
ClearAllActions();
|
||||
|
||||
|
@ -699,15 +699,15 @@ namespace TEN::Gui
|
|||
bool legacy30FpsDoneDraw = false;
|
||||
bool decreaseCounter = false;
|
||||
|
||||
while (CurrentSettings.NewKeyWaitTimer > 0.0f)
|
||||
while (CurrentSettings.NewKeyWaitTimer > 0)
|
||||
{
|
||||
g_Synchronizer.Sync();
|
||||
|
||||
while (g_Synchronizer.Synced())
|
||||
{
|
||||
CurrentSettings.NewKeyWaitTimer -= 1.0f;
|
||||
if (CurrentSettings.NewKeyWaitTimer <= 0.0f)
|
||||
CurrentSettings.NewKeyWaitTimer = 0.0f;
|
||||
CurrentSettings.NewKeyWaitTimer--;
|
||||
if (CurrentSettings.NewKeyWaitTimer <= 0)
|
||||
CurrentSettings.NewKeyWaitTimer = 0;
|
||||
|
||||
if (!fromPauseMenu)
|
||||
{
|
||||
|
@ -760,7 +760,7 @@ namespace TEN::Gui
|
|||
g_Bindings.SetKeyBinding(InputDeviceID::Custom, InputActionID(baseIndex + SelectedOption), selectedKeyID);
|
||||
DefaultConflict();
|
||||
|
||||
CurrentSettings.NewKeyWaitTimer = 0.0f;
|
||||
CurrentSettings.NewKeyWaitTimer = 0;
|
||||
CurrentSettings.IgnoreInput = true;
|
||||
return;
|
||||
}
|
||||
|
@ -850,6 +850,7 @@ namespace TEN::Gui
|
|||
if (SelectedOption == (OptionCount - 2))
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
|
||||
ApplyDefaultBindings();
|
||||
return;
|
||||
}
|
||||
|
@ -858,9 +859,11 @@ namespace TEN::Gui
|
|||
if (SelectedOption == (OptionCount - 1))
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
|
||||
CurrentSettings.Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
|
||||
g_Configuration.Bindings = g_Bindings.GetBindingProfile(InputDeviceID::Custom);
|
||||
SaveConfiguration();
|
||||
|
||||
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
||||
SelectedOption = 2;
|
||||
return;
|
||||
|
@ -870,7 +873,9 @@ namespace TEN::Gui
|
|||
if (SelectedOption == OptionCount)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
|
||||
g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings);
|
||||
|
||||
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
||||
SelectedOption = 2;
|
||||
return;
|
||||
|
@ -881,6 +886,8 @@ namespace TEN::Gui
|
|||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
|
||||
g_Bindings.SetBindingProfile(InputDeviceID::Custom, CurrentSettings.Configuration.Bindings);
|
||||
|
||||
MenuToDisplay = Menu::Options;
|
||||
SelectedOption = 2;
|
||||
}
|
||||
|
|
|
@ -113,7 +113,7 @@ namespace TEN::Gui
|
|||
|
||||
int SelectedScreenResolution = 0;
|
||||
bool IgnoreInput = false; // Ignore input until all actions are inactive.
|
||||
float NewKeyWaitTimer = 0.0f;
|
||||
int NewKeyWaitTimer = 0;
|
||||
};
|
||||
|
||||
class GuiController
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "Game/control/flipeffect.h"
|
||||
#include "Game/control/lot.h"
|
||||
#include "Game/control/volume.h"
|
||||
#include "Objects/Effects/Fireflies.h"
|
||||
#include "Game/effects/item_fx.h"
|
||||
#include "Game/effects/effects.h"
|
||||
#include "Game/effects/weather.h"
|
||||
|
@ -43,8 +44,9 @@
|
|||
using namespace flatbuffers;
|
||||
using namespace TEN::Collision::Floordata;
|
||||
using namespace TEN::Control::Volumes;
|
||||
using namespace TEN::Effects::Items;
|
||||
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::Generic;
|
||||
using namespace TEN::Entities::Switches;
|
||||
|
@ -924,6 +926,38 @@ const std::vector<byte> SaveGame::Build()
|
|||
}
|
||||
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.
|
||||
// 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_items(serializedItemsOffset);
|
||||
sgb.add_fish_swarm(fishSwarmOffset);
|
||||
sgb.add_firefly_swarm(fireflySwarmOffset);
|
||||
sgb.add_fxinfos(serializedEffectsOffset);
|
||||
sgb.add_next_fx_free(NextFxFree);
|
||||
sgb.add_next_fx_active(NextFxActive);
|
||||
|
@ -2289,6 +2324,38 @@ static void ParseEffects(const Save::SaveGame* s)
|
|||
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.
|
||||
for (int i = 0; i < s->particles()->size(); i++)
|
||||
{
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
||||
Pose GetCameraTransform(int sequence, float alpha)
|
||||
Pose GetCameraTransform(int sequence, float alpha, bool loop)
|
||||
{
|
||||
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.
|
||||
auto origin = Vector3(Spline(splineAlpha, xOrigins.data(), splinePoints),
|
||||
Spline(splineAlpha, yOrigins.data(), splinePoints),
|
||||
Spline(splineAlpha, zOrigins.data(), splinePoints));
|
||||
auto getInterpolatedPoint = [&](float t, std::vector<int>& x, std::vector<int>& y, std::vector<int>& z)
|
||||
{
|
||||
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),
|
||||
Spline(splineAlpha, yTargets.data(), splinePoints),
|
||||
Spline(splineAlpha, zTargets.data(), splinePoints));
|
||||
auto getInterpolatedRoll = [&](float t)
|
||||
{
|
||||
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));
|
||||
pose.Orientation.z = orientZ;
|
||||
|
|
|
@ -64,4 +64,4 @@ void InitializeSpotCam(short sequence);
|
|||
void CalculateSpotCameras();
|
||||
int Spline(int x, int* knots, int nk);
|
||||
|
||||
Pose GetCameraTransform(int sequence, float alpha);
|
||||
Pose GetCameraTransform(int sequence, float alpha, bool loop);
|
||||
|
|
445
TombEngine/Objects/Effects/Fireflies.cpp
Normal file
445
TombEngine/Objects/Effects/Fireflies.cpp
Normal 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();
|
||||
}
|
||||
}
|
||||
|
||||
|
76
TombEngine/Objects/Effects/Fireflies.h
Normal file
76
TombEngine/Objects/Effects/Fireflies.h
Normal 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);
|
||||
}
|
|
@ -17,6 +17,7 @@
|
|||
#include "Game/Lara/lara_helpers.h"
|
||||
#include "Game/Setup.h"
|
||||
#include "Math/Math.h"
|
||||
#include "Objects/Effects/Fireflies.h"
|
||||
#include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h"
|
||||
#include "Sound/sound.h"
|
||||
#include "Specific/level.h"
|
||||
|
@ -25,9 +26,13 @@ using namespace TEN::Collision::Point;
|
|||
using namespace TEN::Effects::Ripple;
|
||||
using namespace TEN::Effects::Splash;
|
||||
using namespace TEN::Math;
|
||||
using namespace TEN::Effects::Fireflies;
|
||||
|
||||
namespace TEN::Entities::TR3
|
||||
{
|
||||
constexpr auto FLY_EFFECT_MAX_WIDTH = -1;
|
||||
constexpr auto FLY_AMOUNT = 16;
|
||||
|
||||
enum CorpseState
|
||||
{
|
||||
CORPSE_STATE_GROUNDED = 0,
|
||||
|
@ -51,19 +56,25 @@ namespace TEN::Entities::TR3
|
|||
|
||||
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.ActiveState = CORPSE_STATE_HANG;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.ItemFlags[1] = (int)CorpseFlag::Grounded;
|
||||
item.ItemFlags[7] = (int)CorpseFlag::Grounded;
|
||||
item.Animation.AnimNumber = object.animIndex + CORPSE_ANIM_GROUNDED;
|
||||
item.Animation.ActiveState = CORPSE_STATE_GROUNDED;
|
||||
}
|
||||
|
||||
item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] = 0;
|
||||
|
||||
AddActiveItem(itemNumber);
|
||||
item.Status = ITEM_ACTIVE;
|
||||
|
||||
item.ItemFlags[FirefliesItemFlags::TargetItemPtr] = item.Index;
|
||||
item.ItemFlags[FirefliesItemFlags::TriggerFlags] = -1;
|
||||
item.HitPoints = FLY_AMOUNT;
|
||||
}
|
||||
|
||||
void ControlCorpse(short itemNumber)
|
||||
|
@ -71,9 +82,11 @@ namespace TEN::Entities::TR3
|
|||
auto& item = g_Level.Items[itemNumber];
|
||||
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 isSwamp = TestEnvironment(RoomEnvFlags::ENV_FLAG_SWAMP, item.RoomNumber);
|
||||
|
||||
float verticalVelCoeff = isWater ? 81.0f : 1.0f;
|
||||
|
||||
auto pointColl = GetPointCollision(item);
|
||||
|
@ -94,31 +107,37 @@ namespace TEN::Entities::TR3
|
|||
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;
|
||||
|
||||
if (pointColl.GetFloorHeight() < item.Pose.Position.y)
|
||||
if (pointColl.GetFloorHeight() <= item.Pose.Position.y - bounds.Y2)
|
||||
{
|
||||
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);
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Pose.Position.y = item.Pose.Position.y;
|
||||
item.Pose.Position.y = pointColl.GetFloorHeight();
|
||||
}
|
||||
|
||||
item.Animation.IsAirborne = false;
|
||||
item.Animation.Velocity = Vector3::Zero;
|
||||
item.Animation.TargetState = CORPSE_STATE_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;
|
||||
}
|
||||
else
|
||||
else if (item.Animation.ActiveState == CORPSE_STATE_FALL)
|
||||
{
|
||||
if (isWater)
|
||||
{
|
||||
|
@ -133,17 +152,56 @@ namespace TEN::Entities::TR3
|
|||
|
||||
AnimateItem(&item);
|
||||
|
||||
if (!TriggerActive(&item))
|
||||
return;
|
||||
if (!TriggerActive(&item) || item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] == 1)
|
||||
{
|
||||
// Remove all fireflies associated with this item.
|
||||
RemoveFireflies(item);
|
||||
|
||||
int meshCount = object.nmeshes;
|
||||
for (int i = 0; i < meshCount; i++)
|
||||
{
|
||||
if (Random::TestProbability(1 / 72.0f))
|
||||
{
|
||||
auto pos = GetJointPosition(&item, i).ToVector3();
|
||||
SpawnCorpseEffect(pos);
|
||||
// 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)
|
||||
{
|
||||
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, 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);
|
||||
|
||||
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.ActiveState = CORPSE_STATE_FALL;
|
||||
}
|
||||
|
|
146
TombEngine/Objects/TR5/Trap/MovingLaser.cpp
Normal file
146
TombEngine/Objects/TR5/Trap/MovingLaser.cpp
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -42,6 +42,7 @@
|
|||
#include "Objects/TR5/Emitter/tr5_spider_emitter.h"
|
||||
#include "Objects/TR5/Emitter/tr5_smoke_emitter.h"
|
||||
#include "Objects/TR5/Emitter/Waterfall.h"
|
||||
#include "Objects/Effects/Fireflies.h"
|
||||
|
||||
// Objects
|
||||
#include "Objects/TR5/Light/tr5_light.h"
|
||||
|
@ -57,15 +58,15 @@
|
|||
|
||||
// Traps
|
||||
#include "Objects/Effects/EmberEmitter.h"
|
||||
#include "Objects/Effects/tr5_electricity.h"
|
||||
#include "Objects/TR5/Trap/LaserBarrier.h"
|
||||
#include "Objects/TR5/Trap/LaserBeam.h"
|
||||
#include "Objects/TR5/Trap/MovingLaser.h"
|
||||
#include "Objects/TR5/Trap/ZipLine.h"
|
||||
#include "Objects/Effects/tr5_electricity.h"
|
||||
#include "Objects/TR5/Object/tr5_rollingball.h"
|
||||
#include "Objects/TR5/Trap/tr5_ventilator.h"
|
||||
#include "Objects/TR5/Trap/tr5_romehammer.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_wreckingball.h"
|
||||
|
||||
|
@ -81,6 +82,7 @@ using namespace TEN::Effects::WaterfallEmitter;
|
|||
using namespace TEN::Entities::Creatures::TR5;
|
||||
using namespace TEN::Entities::Switches;
|
||||
using namespace TEN::Entities::Traps;
|
||||
using namespace TEN::Effects::Fireflies;
|
||||
|
||||
static void StartEntity(ObjectInfo *obj)
|
||||
{
|
||||
|
@ -796,6 +798,14 @@ static void StartObject(ObjectInfo *obj)
|
|||
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];
|
||||
if (obj->loaded)
|
||||
{
|
||||
|
|
|
@ -817,6 +817,7 @@ enum GAME_OBJECT_ID : short
|
|||
ID_CORPSE,
|
||||
ID_WRAITH_TRAP,
|
||||
ID_WATERFALL_EMITTER,
|
||||
ID_FIREFLY_EMITTER,
|
||||
|
||||
ID_MESHSWAP1 = 1100,
|
||||
ID_MESHSWAP2,
|
||||
|
@ -1006,8 +1007,8 @@ enum GAME_OBJECT_ID : short
|
|||
ID_DASH_BAR_TEXTURE,
|
||||
ID_SFX_BAR_TEXTURE,
|
||||
ID_WATERFALL_SPRITES,
|
||||
// 1379
|
||||
ID_CROSSHAIR_GRAPHICS = 1380,
|
||||
ID_FIREFLY_SPRITES,
|
||||
ID_CROSSHAIR_GRAPHICS,
|
||||
ID_SPEEDOMETER_GRAPHICS,
|
||||
ID_CUSTOM_BAR_GRAPHICS,
|
||||
ID_CUSTOM_AMMO_GRAPHICS,
|
||||
|
|
|
@ -37,8 +37,8 @@ namespace TEN::Renderer::ConstantBuffers
|
|||
//--
|
||||
Vector4 FogColor;
|
||||
//--
|
||||
int FogMinDistance;
|
||||
int FogMaxDistance;
|
||||
float FogMinDistance;
|
||||
float FogMaxDistance;
|
||||
float NearPlane;
|
||||
float FarPlane;
|
||||
//--
|
||||
|
|
|
@ -409,6 +409,7 @@ namespace TEN::Renderer
|
|||
void PrepareFires(RenderView& view);
|
||||
void PrepareParticles(RenderView& view);
|
||||
void PrepareSmokes(RenderView& view);
|
||||
void PrepareFireflies(RenderView& view);
|
||||
void PrepareElectricity(RenderView& view);
|
||||
void PrepareHelicalLasers(RenderView& view);
|
||||
void PrepareBlood(RenderView& view);
|
||||
|
|
|
@ -1759,6 +1759,7 @@ namespace TEN::Renderer
|
|||
PrepareStreamers(view);
|
||||
PrepareLaserBarriers(view);
|
||||
PrepareSingleLaserBeam(view);
|
||||
PrepareFireflies(view);
|
||||
|
||||
// Sprites grouped in buckets for instancing. Non-commutative sprites are collected at a later stage.
|
||||
SortAndPrepareSprites(view);
|
||||
|
@ -1830,7 +1831,7 @@ namespace TEN::Renderer
|
|||
}
|
||||
else
|
||||
{
|
||||
cameraConstantBuffer.FogMaxDistance = 0;
|
||||
cameraConstantBuffer.FogMaxDistance = 0.0f;
|
||||
cameraConstantBuffer.FogColor = Vector4::Zero;
|
||||
}
|
||||
|
||||
|
@ -2571,6 +2572,12 @@ namespace TEN::Renderer
|
|||
if (!SetupBlendModeAndAlphaTest(bucket.BlendMode, rendererPass, p))
|
||||
continue;
|
||||
|
||||
if (_staticTextures.size() <= bucket.Texture)
|
||||
{
|
||||
TENLog("Attempted to set incorrect static mesh texture atlas", LogLevel::Warning);
|
||||
continue;
|
||||
}
|
||||
|
||||
BindTexture(TextureRegister::ColorMap,
|
||||
&std::get<0>(_staticTextures[bucket.Texture]),
|
||||
SamplerStateRegister::AnisotropicClamp);
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "Scripting/Include/Flow/ScriptInterfaceFlowHandler.h"
|
||||
#include "Specific/level.h"
|
||||
#include "Structures/RendererSpriteBucket.h"
|
||||
#include "Objects/Effects/Fireflies.h"
|
||||
|
||||
using namespace TEN::Effects::Blood;
|
||||
using namespace TEN::Effects::Bubble;
|
||||
|
@ -48,6 +49,7 @@ using namespace TEN::Effects::Streamer;
|
|||
using namespace TEN::Entities::Creatures::TR5;
|
||||
using namespace TEN::Entities::Traps;
|
||||
using namespace TEN::Math;
|
||||
using namespace TEN::Effects::Fireflies;
|
||||
|
||||
extern BLOOD_STRUCT Blood[MAX_SPARKS_BLOOD];
|
||||
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)
|
||||
{
|
||||
for (const auto& smoke : SmokeSparks)
|
||||
|
|
|
@ -1331,7 +1331,7 @@ namespace TEN::Renderer
|
|||
PrintDebugMessage("RoomNumber: %d", LaraItem->RoomNumber);
|
||||
PrintDebugMessage("PathfindingBoxID: %d", LaraItem->BoxNumber);
|
||||
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("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);
|
||||
|
|
|
@ -62,6 +62,7 @@ public:
|
|||
virtual void OnUseItem(GAME_OBJECT_ID objectNumber) = 0;
|
||||
virtual void OnFreeze() = 0;
|
||||
|
||||
virtual void AddConsoleInput(const std::string& input) = 0;
|
||||
virtual void ShortenTENCalls() = 0;
|
||||
virtual void FreeLevelScripts() = 0;
|
||||
virtual void ResetScripts(bool clearGameVars) = 0;
|
||||
|
|
|
@ -38,8 +38,8 @@ public:
|
|||
virtual WeatherType GetWeatherType() const = 0;
|
||||
virtual RGBAColor8Byte GetSkyLayerColor(int index) const = 0;
|
||||
virtual RGBAColor8Byte GetFogColor() const = 0;
|
||||
virtual short GetFogMinDistance() const = 0;
|
||||
virtual short GetFogMaxDistance() const = 0;
|
||||
virtual float GetFogMinDistance() const = 0;
|
||||
virtual float GetFogMaxDistance() const = 0;
|
||||
virtual short GetFarView() const = 0;
|
||||
virtual int GetSecrets() const = 0;
|
||||
virtual std::string GetAmbientTrack() const = 0;
|
||||
|
|
|
@ -26,6 +26,7 @@ namespace TEN::Scripting::Collision
|
|||
void Probe::Register(sol::table& parent)
|
||||
{
|
||||
using ctors = sol::constructors<
|
||||
Probe(const Vec3&),
|
||||
Probe(const Vec3&, int),
|
||||
Probe(const Vec3&, int, const Vec3&, 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.
|
||||
// @function Probe
|
||||
// @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.
|
||||
Probe::Probe(const Vec3& pos, TypeOrNil<int> roomNumber)
|
||||
Probe::Probe(const Vec3& pos)
|
||||
{
|
||||
auto convertedPos = pos.ToVector3i();
|
||||
int roomNumberValue = ValueOr<int>(roomNumber, FindRoomNumber(convertedPos));
|
||||
_pointCollision = GetPointCollision(convertedPos, roomNumberValue);
|
||||
_pointCollision = GetPointCollision(convertedPos, FindRoomNumber(convertedPos));
|
||||
}
|
||||
|
||||
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.
|
||||
|
@ -326,9 +331,9 @@ namespace TEN::Scripting::Collision
|
|||
// @function Preview
|
||||
void Probe::Preview()
|
||||
{
|
||||
constexpr auto TARGET_RADIUS = 100.0f;
|
||||
constexpr auto SPHERE_RADIUS = TARGET_RADIUS * 0.6f;
|
||||
constexpr auto COLOR = Color(1.0f, 1.0f, 1.0f, 0.4f);
|
||||
constexpr auto TARGET_RADIUS = BLOCK(0.08f);
|
||||
constexpr auto SPHERE_RADIUS = TARGET_RADIUS * 0.4f;
|
||||
constexpr auto COLOR = Color(1.0f, 1.0f, 0.8f, 0.2f);
|
||||
constexpr auto DEBUG_PAGE = RendererDebugPage::CollisionStats;
|
||||
|
||||
auto pos = _pointCollision.GetPosition().ToVector3();
|
||||
|
|
|
@ -31,7 +31,8 @@ namespace TEN::Scripting::Collision
|
|||
// Constructors
|
||||
|
||||
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 Rotation& rot, float dist);
|
||||
Probe(const Vec3& origin, int roomNumber, const Rotation& rot, const Vec3& relOffset);
|
||||
|
|
|
@ -551,7 +551,7 @@ namespace TEN::Scripting::Effects
|
|||
// @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 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.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,
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
#include "Game/effects/Streamer.h"
|
||||
|
||||
/// Constants for feather modes.
|
||||
// @enum Effects.FeatherMode
|
||||
// @enum Effects.StreamerFeatherMode
|
||||
// @pragma nostrip
|
||||
|
||||
/// Table of Effects.FeatherMode constants.
|
||||
/// Table of Effects.StreamerFeatherMode constants.
|
||||
// To be used with @{Effects.EmitStreamer} function.
|
||||
//
|
||||
// - `NONE`
|
||||
|
@ -14,7 +14,7 @@
|
|||
// - `LEFT`
|
||||
// - `RIGHT`
|
||||
//
|
||||
// @table Effects.FeatherMode
|
||||
// @table Effects.StreamerFeatherMode
|
||||
|
||||
using namespace TEN::Effects::Streamer;
|
||||
|
||||
|
|
|
@ -23,13 +23,13 @@ void Fog::Register(sol::table& parent)
|
|||
// @mem color
|
||||
"color", sol::property(&Fog::GetColor, &Fog::SetColor),
|
||||
|
||||
/// (int) Minimum distance.
|
||||
// This is the distance at which the fog starts.
|
||||
/// (float) Minimum distance.
|
||||
// This is the distance at which the fog starts (in sectors).
|
||||
// @mem minDistance
|
||||
"minDistance", &Fog::MinDistance,
|
||||
|
||||
/// (int) Maximum distance.
|
||||
// This is the distance at which the fog reaches the maximum strength.
|
||||
/// (float) Maximum distance.
|
||||
// This is the distance at which the fog reaches the maximum strength (in sectors).
|
||||
// @mem maxDistance
|
||||
"maxDistance", &Fog::MaxDistance
|
||||
);
|
||||
|
@ -42,7 +42,7 @@ void Fog::Register(sol::table& parent)
|
|||
@treturn Fog A fog object.
|
||||
@function Fog
|
||||
*/
|
||||
Fog::Fog(ScriptColor const& col, short minDistance, short maxDistance)
|
||||
Fog::Fog(ScriptColor const& col, float minDistance, float maxDistance)
|
||||
{
|
||||
SetColor(col);
|
||||
MinDistance = minDistance;
|
||||
|
|
|
@ -13,11 +13,11 @@ struct Fog
|
|||
byte R{ 0 };
|
||||
byte G{ 0 };
|
||||
byte B{ 0 };
|
||||
short MinDistance{ 0 };
|
||||
short MaxDistance{ 0 };
|
||||
float MinDistance{ 0 };
|
||||
float MaxDistance{ 0 };
|
||||
|
||||
Fog() = default;
|
||||
Fog(ScriptColor const& color, short minDistance, short maxDistance);
|
||||
Fog(ScriptColor const& color, float minDistance, float maxDistance);
|
||||
void SetColor(ScriptColor const& color);
|
||||
ScriptColor GetColor() const;
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue