Horizon Effects (#1583)

* First Commit

* Check

* Check

* Check

* Is it done?

* GetHorizonDone

* Add HorizonSwap

* Fix Interpolation

* Update CHANGELOG.md

* Update EffectsFunctions.cpp

* Update EffectsFunctions.h

* Docs

* Create Horizon Class and implement it.

* Fix Interpolation

* Make HorizonObject part of WeatherController

* Implement horizon fading

* Save horizon parameters

* Update CHANGELOG.md

* Update RendererDraw.cpp

* Update EffectsFunctions.cpp

* Invert current horizon transition value if another transition is queued

* Add missing shader change

* StartPosition

* Cleaup

* Start working on Position

* Code commit

* Fix interpolation checks distance for position.

* Docs

* Update CHANGELOG.md

* SavePosition in savegame

* Major cleanup

* Update weather.cpp

* First commit

* Some fixes

* Reworked horizon workflow

* Update CHANGELOG.md

* Update docs

* Added missing rumble parameter

* String constants; use TypeOrNil; general cleanup

* Fix documentation

* Fix documentation

* Update documentation

---------

Co-authored-by: Lwmte <3331699+Lwmte@users.noreply.github.com>
Co-authored-by: Sezz <sezzary@outlook.com>
This commit is contained in:
TrainWrack 2025-03-08 23:30:07 -05:00 committed by GitHub
parent 2f675b0069
commit f1bb383baa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
90 changed files with 2159 additions and 479 deletions

View file

@ -35,6 +35,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Implemented advanced particles allowing animations and other effects.
* Added Collision.Probe class for basic room collision detection.
* Added diary module.
* Added Flow.Horizon class with and use two layers of horizons in a Flow.Level class.
* Added View.GetFlyByPosition() and View.GetFlyByRotation() functions to get flyby sequence parameters at a specified time point.
* Added Effects.EmitAirBubble() function to spawn air bubbles.
* Added Effects.EmitStreamer() function to emit streamers.
@ -43,6 +44,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor):
* Added various Translate() methods to Vec2 and Vec3 script objects.
* Added alpha transparency functionality for statics and moveables by using SetColor() method.
* Added extra arguments for sprite object slots and starting rotation value for EmitParticle function.
* Added ability to save Flow.Level fields such as fog or horizon to a savegame.
## [Version 1.7.1](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.7.4) - 2025-04-01

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>
@ -129,7 +131,7 @@
<td class="summary">Emit a particle.</td>
</tr>
<tr>
<td class="name" ><a href="#EmitAdvancedParticle">EmitAdvancedParticle(particleData)</a></td>
<td class="name" ><a href="#EmitAdvancedParticle">EmitAdvancedParticle(ParticleData)</a></td>
<td class="summary">Emit a particle with extensive configuration options including animations.</td>
</tr>
<tr>
@ -150,7 +152,7 @@
</tr>
<tr>
<td class="name" ><a href="#EmitAirBubble">EmitAirBubble(pos[, size][, amp])</a></td>
<td class="summary">Emit air bubble in a water room.</td>
<td class="summary">Emit an air bubble in a water room.</td>
</tr>
<tr>
<td class="name" ><a href="#EmitFire">EmitFire(pos, size)</a></td>
@ -172,7 +174,7 @@
<h2><a href="#Tables">Tables</a></h2>
<table class="function_list">
<tr>
<td class="name" ><a href="#particleData">particleData</a></td>
<td class="name" ><a href="#ParticleData">ParticleData</a></td>
<td class="summary">Structure for EmitAdvancedParticle table.</td>
</tr>
</table>
@ -342,7 +344,7 @@
</dd>
<dt>
<a name = "EmitAdvancedParticle"></a>
<strong>EmitAdvancedParticle(particleData)</strong>
<strong>EmitAdvancedParticle(ParticleData)</strong>
</dt>
<dd>
Emit a particle with extensive configuration options including animations.
@ -351,8 +353,8 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">particleData</span>
<span class="types"><a class="type" href="../1 modules/Effects.html#particleData">particleData</a></span>
<li><span class="parameter">ParticleData</span>
<span class="types"><a class="type" href="../1 modules/Effects.html#ParticleData">ParticleData</a></span>
The table holding all the particle data.
</li>
</ul>
@ -365,8 +367,8 @@
<pre class="example"><span class="keyword">local</span> particle = {
position = GetMoveableByName(<span class="string">"camera_target_6"</span>) :GetPosition(),
velocity = Vec3(<span class="number">0</span>, <span class="number">0</span>, <span class="number">10</span>),
objectID = TEN.Objects.ObjID.CUSTOM_BAR_GRAPHIC,
spriteIndex = <span class="number">0</span>,
spriteSeqID = TEN.Objects.ObjID.CUSTOM_BAR_GRAPHIC,
spriteID = <span class="number">0</span>,
lifetime = <span class="number">10</span>,
maxYVelocity = <span class="number">0</span>,
gravity = <span class="number">0</span>,
@ -375,10 +377,10 @@ startRotation = <span class="number">0</span>,
rotationSpeed = <span class="number">0</span>,
startSize = <span class="number">80</span>,
endSize = <span class="number">80</span>,
wind = <span class="keyword">false</span>,
startColor = TEN.Color(<span class="number">128</span>, <span class="number">128</span>, <span class="number">128</span>),
endColor = TEN.Color(<span class="number">128</span>, <span class="number">128</span>, <span class="number">128</span>),
blendMode = TEN.Effects.BlendID.ADDITIVE,
wind = <span class="keyword">false</span>,
damage = <span class="keyword">true</span>,
poison = <span class="keyword">false</span>,
burn = <span class="keyword">false</span>,
@ -564,7 +566,7 @@ EmitAdvancedParticle(particle)</pre>
</li>
<li><span class="parameter">count</span>
<span class="types"><span class="type">int</span></span>
(default 1) "amount" of blood. Higher numbers won't add more blood but will make it more "flickery", with higher numbers turning it into a kind of red orb.
Sprite count. <strong>default: 1</strong>
</li>
</ul>
@ -578,7 +580,7 @@ EmitAdvancedParticle(particle)</pre>
<strong>EmitAirBubble(pos[, size][, amp])</strong>
</dt>
<dd>
Emit air bubble in a water room.
Emit an air bubble in a water room.
@ -714,8 +716,8 @@ EmitAdvancedParticle(particle)</pre>
<dl class="function">
<dt>
<a name = "particleData"></a>
<strong>particleData</strong>
<a name = "ParticleData"></a>
<strong>ParticleData</strong>
</dt>
<dd>
Structure for EmitAdvancedParticle table.
@ -737,7 +739,7 @@ EmitAdvancedParticle(particle)</pre>
ID of the sprite sequence object. <strong>Default: Objects.ObjID.DEFAULT_SPRITES</strong>
(<em>optional</em>)
</li>
<li><span class="parameter">spriteIndex</span>
<li><span class="parameter">spriteID</span>
<span class="types"><span class="type">int</span></span>
ID of the sprite in the sprite sequence object.<strong>Default: 0</strong>
(<em>optional</em>)
@ -762,7 +764,7 @@ EmitAdvancedParticle(particle)</pre>
Specifies the friction with which the particle will slow down over time. <strong>Default: 0</strong>
(<em>optional</em>)
</li>
<li><span class="parameter">startRot</span>
<li><span class="parameter">startRotation</span>
<span class="types"><span class="type">float</span></span>
Rotation at start of life. <strong>Default: random</strong>
(<em>optional</em>)
@ -794,7 +796,7 @@ EmitAdvancedParticle(particle)</pre>
</li>
<li><span class="parameter">blendMode</span>
<span class="types"><a class="type" href="../4 enums/Effects.BlendID.html#">BlendID</a></span>
Render blend mode. <strong>TEN.Effects.BlendID.ALPHABLEND</strong>
Render blend mode. <strong>TEN.Effects.BlendID.ALPHA_BLEND</strong>
(<em>optional</em>)
</li>
<li><span class="parameter">damage</span>
@ -824,7 +826,7 @@ EmitAdvancedParticle(particle)</pre>
</li>
<li><span class="parameter">light</span>
<span class="types"><span class="type">bool</span></span>
Specify if the particle will be emit a light based on its color. Recommended for single particles. <strong>Default: false</strong>
Specify if the particle will be emit a light based on its color. Caution: Recommended only for a single particle. Having too many particles with lights can overflow the light system. <strong>Default: false</strong>
(<em>optional</em>)
</li>
<li><span class="parameter">lightRadius</span>
@ -839,7 +841,7 @@ EmitAdvancedParticle(particle)</pre>
</li>
<li><span class="parameter">sound</span>
<span class="types"><span class="type">int</span></span>
ID to play. Corresponds to the value in the sound XML file or Tomb Editor's "Sound Infos" window. Looping sounds recommended. <strong>Default: None</strong>
ID to play. Corresponds to the value in the sound XML file or Tomb Editor's "Sound Infos" window. Looping sounds recommended. Caution: Recommended only for a single particle. Having too many particles with sounds can overflow the sound system. <strong>Default: None</strong>
(<em>optional</em>)
</li>
<li><span class="parameter">animated</span>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>
@ -214,7 +216,7 @@
<ul>
<li><span class="parameter">speed</span>
<span class="types"><span class="type">float</span></span>
(default 1.0). Speed in "amount" per second. A value of 1 will make the fade take one second.
(default 1.0). Speed in units per second. A value of 1 will make the fade take one second.
</li>
</ul>
@ -236,7 +238,7 @@
<ul>
<li><span class="parameter">speed</span>
<span class="types"><span class="type">float</span></span>
(default 1.0). Speed in "amount" per second. A value of 1 will make the fade take one second.
(default 1.0). Speed in units per second. A value of 1 will make the fade take one second.
</li>
</ul>
@ -590,7 +592,7 @@
</li>
<li><span class="parameter">speed</span>
<span class="types"><span class="type">float</span></span>
(default 1.0). Speed in "amount" per second. Value of 1 will make flash take one second. Clamped to [0.005, 1.0].
(default 1.0). Speed in units per second. Value of 1 will make flash take one second. Clamped to [0.005, 1.0].
</li>
</ul>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -80,6 +81,7 @@
<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.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>
<li> <a href="../4 enums/Flow.GameStatus.html">Flow.GameStatus</a></li>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>
@ -147,6 +149,14 @@
<td class="summary">(<a href="../3 primitive classes/Flow.SkyLayer.html#">Flow.SkyLayer</a>) Secondary sky layer</td>
</tr>
<tr>
<td class="name" ><a href="#horizon1">horizon1</a></td>
<td class="summary">(<a href="../3 primitive classes/Flow.Horizon.html#">Flow.Horizon</a>) First horizon layer.</td>
</tr>
<tr>
<td class="name" ><a href="#horizon1">horizon1</a></td>
<td class="summary">(<a href="../3 primitive classes/Flow.Horizon.html#">Flow.Horizon</a>) Second horizon layer.</td>
</tr>
<tr>
<td class="name" ><a href="#starfield">starfield</a></td>
<td class="summary">(<a href="../3 primitive classes/Flow.Starfield.html#">Flow.Starfield</a>) Starfield.</td>
</tr>
@ -159,10 +169,6 @@
<td class="summary">(<a href="../3 primitive classes/Flow.Fog.html#">Flow.Fog</a>) omni fog RGB color and distance.</td>
</tr>
<tr>
<td class="name" ><a href="#horizon">horizon</a></td>
<td class="summary">(bool) Draw sky layer?</td>
</tr>
<tr>
<td class="name" ><a href="#storm">storm</a></td>
<td class="summary">(bool) Enable flickering lightning in the sky.</td>
</tr>
@ -183,6 +189,10 @@
<td class="summary">(bool) Enable occasional screen shake effect.</td>
</tr>
<tr>
<td class="name" ><a href="#farView">farView</a></td>
<td class="summary">(int) The maximum draw distance for level.</td>
</tr>
<tr>
<td class="name" ><a href="#resetHub">resetHub</a></td>
<td class="summary">(bool) Reset hub data.</td>
</tr>
@ -194,10 +204,6 @@
<td class="name" ><a href="#secrets">secrets</a></td>
<td class="summary">(short) Set Secrets for Level</td>
</tr>
<tr>
<td class="name" ><a href="#farView">farView</a></td>
<td class="summary">(int) The maximum draw distance for level.</td>
</tr>
</table>
<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
@ -323,6 +329,36 @@
</dd>
<dt>
<a name = "horizon1"></a>
<strong>horizon1</strong>
</dt>
<dd>
(<a href="../3 primitive classes/Flow.Horizon.html#">Flow.Horizon</a>) First horizon layer.
</dd>
<dt>
<a name = "horizon1"></a>
<strong>horizon1</strong>
</dt>
<dd>
(<a href="../3 primitive classes/Flow.Horizon.html#">Flow.Horizon</a>) Second horizon layer.
</dd>
<dt>
<a name = "starfield"></a>
@ -370,21 +406,6 @@
</dd>
<dt>
<a name = "horizon"></a>
<strong>horizon</strong>
</dt>
<dd>
(bool) Draw sky layer? (default: false)
</dd>
<dt>
<a name = "storm"></a>
@ -477,6 +498,22 @@ Invisible
</dd>
<dt>
<a name = "farView"></a>
<strong>farView</strong>
</dt>
<dd>
(int) The maximum draw distance for level.
Given in sectors (blocks). Must be at least 4.
</dd>
<dt>
<a name = "resetHub"></a>
@ -523,25 +560,6 @@ Invisible
</dd>
<dt>
<a name = "farView"></a>
<strong>farView</strong>
</dt>
<dd>
(int) The maximum draw distance for level.
Given in sectors (blocks).
Must be at least 4.</p>
<p>This is equivalent to TRNG's LevelFarView variable.
</dd>
</dl>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>
@ -162,7 +164,7 @@
</tr>
<tr>
<td class="name" ><a href="#Moveable:GetPosition">Moveable:GetPosition()</a></td>
<td class="summary">Get the object's position</td>
<td class="summary">Get the moveable's position</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:SetPosition">Moveable:SetPosition(position[, updateRoom])</a></td>
@ -180,11 +182,19 @@
</tr>
<tr>
<td class="name" ><a href="#Moveable:GetRotation">Moveable:GetRotation()</a></td>
<td class="summary">Get the moveable's rotation</td>
<td class="summary">Get the moveable's rotation.</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:GetScale">Moveable:GetScale()</a></td>
<td class="summary">Get the moveable's visual scale.</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:SetRotation">Moveable:SetRotation(rotation)</a></td>
<td class="summary">Set the moveable's rotation</td>
<td class="summary">Set the moveable's rotation.</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:SetScale">Moveable:SetScale(scale)</a></td>
<td class="summary">Set the moveable's visual scale.</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:GetHP">Moveable:GetHP()</a></td>
@ -508,7 +518,7 @@ most can just be ignored (see usage).
<h3>Returns:</h3>
<ol>
<span class="types"><span class="type">int</span></span>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
a number representing the ID of the object
</ol>
@ -714,7 +724,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<strong>Moveable:GetPosition()</strong>
</dt>
<dd>
Get the object's position
Get the moveable's position
@ -826,7 +836,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<strong>Moveable:GetRotation()</strong>
</dt>
<dd>
Get the moveable's rotation
Get the moveable's rotation.
@ -835,7 +845,28 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<ol>
<span class="types"><a class="type" href="../3 primitive classes/Rotation.html#">Rotation</a></span>
a copy of the moveable's rotation
A copy of the moveable's rotation.
</ol>
</dd>
<dt>
<a name = "Moveable:GetScale"></a>
<strong>Moveable:GetScale()</strong>
</dt>
<dd>
Get the moveable's visual scale.
<h3>Returns:</h3>
<ol>
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
A copy of the moveable's visual scale.
</ol>
@ -847,7 +878,7 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
<strong>Moveable:SetRotation(rotation)</strong>
</dt>
<dd>
Set the moveable's rotation
Set the moveable's rotation.
@ -863,6 +894,28 @@ baddy:SetOnCollidedWithRoom(LevelFuncs.roomCollided)</pre>
</dd>
<dt>
<a name = "Moveable:SetScale"></a>
<strong>Moveable:SetScale(scale)</strong>
</dt>
<dd>
Set the moveable's visual scale. Does not affect collision.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">scale</span>
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
New visual scale.
</li>
</ul>
</dd>
<dt>
<a name = "Moveable:GetHP"></a>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <here>Flow.Fog</here></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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,21 +124,21 @@
<table class="function_list">
<tr>
<td class="name" ><a href="#color">color</a></td>
<td class="summary">(<a href="../3 primitive classes/Color.html#">Color</a>) RGB fog color</td>
<td class="summary">(<a href="../3 primitive classes/Color.html#">Color</a>) RGB fog color.</td>
</tr>
<tr>
<td class="name" ><a href="#minDistance">minDistance</a></td>
<td class="summary">(int) min distance.</td>
<td class="summary">(int) Minimum distance.</td>
</tr>
<tr>
<td class="name" ><a href="#maxDistance">maxDistance</a></td>
<td class="summary">(int) max distance.</td>
<td class="summary">(int) Maximum distance.</td>
</tr>
</table>
<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
<tr>
<td class="name" ><a href="#Fog">Fog(color, Min, Max)</a></td>
<td class="name" ><a href="#Fog">Fog(color, min, max)</a></td>
<td class="summary">
</td>
@ -155,7 +157,7 @@
<strong>color</strong>
</dt>
<dd>
(<a href="../3 primitive classes/Color.html#">Color</a>) RGB fog color
(<a href="../3 primitive classes/Color.html#">Color</a>) RGB fog color.
@ -170,8 +172,8 @@
<strong>minDistance</strong>
</dt>
<dd>
(int) min distance.
This is the distance at which the fog starts.*
(int) Minimum distance.
This is the distance at which the fog starts.
@ -186,7 +188,7 @@
<strong>maxDistance</strong>
</dt>
<dd>
(int) max distance.
(int) Maximum distance.
This is the distance at which the fog reaches the maximum strength.
@ -203,7 +205,7 @@
<dl class="function">
<dt>
<a name = "Fog"></a>
<strong>Fog(color, Min, Max)</strong>
<strong>Fog(color, min, max)</strong>
</dt>
<dd>
@ -218,13 +220,13 @@
<span class="types"><a class="type" href="../3 primitive classes/Color.html#">Color</a></span>
RGB color
</li>
<li><span class="parameter">Min</span>
<li><span class="parameter">min</span>
<span class="types"><span class="type">int</span></span>
Distance fog starts (in Sectors)
Distance at which fog starts (in sectors)
</li>
<li><span class="parameter">Max</span>
<li><span class="parameter">max</span>
<span class="types"><span class="type">int</span></span>
Distance fog ends (in Sectors)
Distance at which fog reaches the maximum strength (in sectors)
</li>
</ul>

View file

@ -0,0 +1,441 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>TombEngine 1.7.2 (Developer) Lua API</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div> <!-- id="product" -->
<div id="main">
<!-- Menu -->
<div id="navigation">
<br/>
<h1>&nbsp;TombEngine</h1>
<ul>
<li><a href="../index.html">Index</a></li>
</ul>
<h2>1 Modules</h2>
<ul class="nowrap">
<li> <a href="../1 modules/Effects.html">Effects</a></li>
<li> <a href="../1 modules/Flow.html">Flow</a></li>
<li> <a href="../1 modules/Input.html">Input</a></li>
<li> <a href="../1 modules/Inventory.html">Inventory</a></li>
<li> <a href="../1 modules/Logic.html">Logic</a></li>
<li> <a href="../1 modules/Objects.html">Objects</a></li>
<li> <a href="../1 modules/Sound.html">Sound</a></li>
<li> <a href="../1 modules/Strings.html">Strings</a></li>
<li> <a href="../1 modules/Util.html">Util</a></li>
<li> <a href="../1 modules/View.html">View</a></li>
</ul>
<h2>2 Classes</h2>
<ul class="nowrap">
<li> <a href="../2 classes/Collision.Probe.html">Collision.Probe</a></li>
<li> <a href="../2 classes/Flow.Level.html">Flow.Level</a></li>
<li> <a href="../2 classes/Flow.Settings.html">Flow.Settings</a></li>
<li> <a href="../2 classes/Flow.Statistics.html">Flow.Statistics</a></li>
<li> <a href="../2 classes/Objects.AIObject.html">Objects.AIObject</a></li>
<li> <a href="../2 classes/Objects.Camera.html">Objects.Camera</a></li>
<li> <a href="../2 classes/Objects.LaraObject.html">Objects.LaraObject</a></li>
<li> <a href="../2 classes/Objects.Moveable.html">Objects.Moveable</a></li>
<li> <a href="../2 classes/Objects.Room.html">Objects.Room</a></li>
<li> <a href="../2 classes/Objects.Sink.html">Objects.Sink</a></li>
<li> <a href="../2 classes/Objects.SoundSource.html">Objects.SoundSource</a></li>
<li> <a href="../2 classes/Objects.Static.html">Objects.Static</a></li>
<li> <a href="../2 classes/Objects.Volume.html">Objects.Volume</a></li>
<li> <a href="../2 classes/Strings.DisplayString.html">Strings.DisplayString</a></li>
<li> <a href="../2 classes/View.DisplaySprite.html">View.DisplaySprite</a></li>
</ul>
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <here>Flow.Horizon</here></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
<li> <a href="../3 primitive classes/Flow.Starfield.html">Flow.Starfield</a></li>
<li> <a href="../3 primitive classes/Color.html">Color</a></li>
<li> <a href="../3 primitive classes/Rotation.html">Rotation</a></li>
<li> <a href="../3 primitive classes/Time.html">Time</a></li>
<li> <a href="../3 primitive classes/Vec2.html">Vec2</a></li>
<li> <a href="../3 primitive classes/Vec3.html">Vec3</a></li>
</ul>
<h2>4 Enums</h2>
<ul class="nowrap">
<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.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>
<li> <a href="../4 enums/Flow.GameStatus.html">Flow.GameStatus</a></li>
<li> <a href="../4 enums/Input.ActionID.html">Input.ActionID</a></li>
<li> <a href="../4 enums/Objects.AmmoType.html">Objects.AmmoType</a></li>
<li> <a href="../4 enums/Objects.HandStatus.html">Objects.HandStatus</a></li>
<li> <a href="../4 enums/Objects.WeaponType.html">Objects.WeaponType</a></li>
<li> <a href="../4 enums/Objects.MoveableStatus.html">Objects.MoveableStatus</a></li>
<li> <a href="../4 enums/Objects.ObjID.html">Objects.ObjID</a></li>
<li> <a href="../4 enums/Objects.RoomFlagID.html">Objects.RoomFlagID</a></li>
<li> <a href="../4 enums/Objects.RoomReverb.html">Objects.RoomReverb</a></li>
<li> <a href="../4 enums/Sound.SoundTrackType.html">Sound.SoundTrackType</a></li>
<li> <a href="../4 enums/Strings.DisplayStringOption.html">Strings.DisplayStringOption</a></li>
<li> <a href="../4 enums/Util.LogLevel.html">Util.LogLevel</a></li>
<li> <a href="../4 enums/View.AlignMode.html">View.AlignMode</a></li>
<li> <a href="../4 enums/View.CameraType.html">View.CameraType</a></li>
<li> <a href="../4 enums/View.PostProcessMode.html">View.PostProcessMode</a></li>
<li> <a href="../4 enums/View.ScaleMode.html">View.ScaleMode</a></li>
</ul>
<h2>5 Lua utility modules</h2>
<ul class="nowrap">
<li> <a href="../5 lua utility modules/Diary.html">Diary</a></li>
<li> <a href="../5 lua utility modules/EventSequence.html">EventSequence</a></li>
<li> <a href="../5 lua utility modules/Timer.html">Timer</a></li>
<li> <a href="../5 lua utility modules/Type.html">Type</a></li>
</ul>
</div>
<div id="content">
<h1>Primitive Class <code>Flow.Horizon</code></h1>
<p>Represents a horizon.</p>
<p>
</p>
<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
<tr>
<td class="name" ><a href="#Horizon">Horizon(objectID)</a></td>
<td class="summary">Create a horizon object.</td>
</tr>
<tr>
<td class="name" ><a href="#GetEnabled">GetEnabled()</a></td>
<td class="summary">Get the horizon's enabled state.</td>
</tr>
<tr>
<td class="name" ><a href="#GetObjectID">GetObjectID()</a></td>
<td class="summary">Get the horizon's slot object ID.</td>
</tr>
<tr>
<td class="name" ><a href="#GetPosition">GetPosition()</a></td>
<td class="summary">Get the horizon's world position.</td>
</tr>
<tr>
<td class="name" ><a href="#GetRotation">GetRotation()</a></td>
<td class="summary">Get the horizon's rotation.</td>
</tr>
<tr>
<td class="name" ><a href="#GetTransparency">GetTransparency()</a></td>
<td class="summary">Get the horizon's transparency.</td>
</tr>
<tr>
<td class="name" ><a href="#SetEnabled">SetEnabled(enabled)</a></td>
<td class="summary">Set the horizon's enabled state.</td>
</tr>
<tr>
<td class="name" ><a href="#SetObjectID">SetObjectID(objectID)</a></td>
<td class="summary">Set the horizon's object ID.</td>
</tr>
<tr>
<td class="name" ><a href="#SetPosition">SetPosition(pos[, noInterpolation])</a></td>
<td class="summary">Set the horizon's world position.</td>
</tr>
<tr>
<td class="name" ><a href="#SetRotation">SetRotation(rot[, noInterpolation])</a></td>
<td class="summary">Set the horizon's rotation.</td>
</tr>
<tr>
<td class="name" ><a href="#SetTransparency">SetTransparency(transparency)</a></td>
<td class="summary">Set the horizon's transparency.</td>
</tr>
</table>
<br/>
<br/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<dl class="function">
<dt>
<a name = "Horizon"></a>
<strong>Horizon(objectID)</strong>
</dt>
<dd>
Create a horizon object.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">objectID</span>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
Object ID for the horizon to use.
</li>
</ul>
<h3>Returns:</h3>
<ol>
<span class="types"><a class="type" href="../3 primitive classes/Flow.Horizon.html#Horizon">Horizon</a></span>
A new Horizon object.
</ol>
</dd>
<dt>
<a name = "GetEnabled"></a>
<strong>GetEnabled()</strong>
</dt>
<dd>
Get the horizon's enabled state.
<h3>Returns:</h3>
<ol>
<span class="types"><span class="type">bool</span></span>
Enabled state.
</ol>
</dd>
<dt>
<a name = "GetObjectID"></a>
<strong>GetObjectID()</strong>
</dt>
<dd>
Get the horizon's slot object ID.
<h3>Returns:</h3>
<ol>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
Object ID.
</ol>
</dd>
<dt>
<a name = "GetPosition"></a>
<strong>GetPosition()</strong>
</dt>
<dd>
Get the horizon's world position.
<h3>Returns:</h3>
<ol>
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
Position.
</ol>
</dd>
<dt>
<a name = "GetRotation"></a>
<strong>GetRotation()</strong>
</dt>
<dd>
Get the horizon's rotation.
<h3>Returns:</h3>
<ol>
<span class="types"><a class="type" href="../3 primitive classes/Rotation.html#">Rotation</a></span>
Rotation.
</ol>
</dd>
<dt>
<a name = "GetTransparency"></a>
<strong>GetTransparency()</strong>
</dt>
<dd>
Get the horizon's transparency.
<h3>Returns:</h3>
<ol>
<span class="types"><span class="type">float</span></span>
Transparency.
</ol>
</dd>
<dt>
<a name = "SetEnabled"></a>
<strong>SetEnabled(enabled)</strong>
</dt>
<dd>
Set the horizon's enabled state.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">enabled</span>
<span class="types"><span class="type">bool</span></span>
New enabled state.
</li>
</ul>
</dd>
<dt>
<a name = "SetObjectID"></a>
<strong>SetObjectID(objectID)</strong>
</dt>
<dd>
Set the horizon's object ID.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">objectID</span>
<span class="types"><a class="type" href="../4 enums/Objects.ObjID.html#">ObjID</a></span>
Object ID.
</li>
</ul>
</dd>
<dt>
<a name = "SetPosition"></a>
<strong>SetPosition(pos[, noInterpolation])</strong>
</dt>
<dd>
Set the horizon's world position.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">pos</span>
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
New world position.
</li>
<li><span class="parameter">noInterpolation</span>
<span class="types"><span class="type">bool</span></span>
Disable interpolation with the previous frame's position. <strong>default: false</strong>
(<em>optional</em>)
</li>
</ul>
</dd>
<dt>
<a name = "SetRotation"></a>
<strong>SetRotation(rot[, noInterpolation])</strong>
</dt>
<dd>
Set the horizon's rotation.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">rot</span>
<span class="types"><a class="type" href="../3 primitive classes/Rotation.html#">Rotation</a></span>
New rotation.
</li>
<li><span class="parameter">noInterpolation</span>
<span class="types"><span class="type">bool</span></span>
Disable interpolation with the previous frame's rotation. <strong>default: false</strong>
(<em>optional</em>)
</li>
</ul>
</dd>
<dt>
<a name = "SetTransparency"></a>
<strong>SetTransparency(transparency)</strong>
</dt>
<dd>
Set the horizon's transparency.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">transparency</span>
<span class="types"><span class="type">float</span></span>
New transparency alpha.
</li>
</ul>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="https://github.com/hispidence/TEN-LDoc">TEN-LDoc</a> (a fork of <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a>)</i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <here>Flow.InventoryItem</here></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <here>Flow.LensFlare</here></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>
@ -121,7 +123,7 @@
<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
<tr>
<td class="name" ><a href="#LensFlare">LensFlare(Pitch, Yaw, Color.)</a></td>
<td class="name" ><a href="#LensFlare">LensFlare(pitch, yaw, color)</a></td>
<td class="summary">Create a LensFlare object.</td>
</tr>
<tr>
@ -145,19 +147,19 @@
<td class="summary">Get this lens flare's enabled status.</td>
</tr>
<tr>
<td class="name" ><a href="#LensFlare:SetSunSpriteID">LensFlare:SetSunSpriteID(New)</a></td>
<td class="name" ><a href="#LensFlare:SetSunSpriteID">LensFlare:SetSunSpriteID(spriteID)</a></td>
<td class="summary">Set this lens flare's sun sprite ID.</td>
</tr>
<tr>
<td class="name" ><a href="#LensFlare:SetPitch">LensFlare:SetPitch(New)</a></td>
<td class="name" ><a href="#LensFlare:SetPitch">LensFlare:SetPitch(pitch)</a></td>
<td class="summary">Set this lens flare's pitch angle.</td>
</tr>
<tr>
<td class="name" ><a href="#LensFlare:SetYaw">LensFlare:SetYaw(New)</a></td>
<td class="name" ><a href="#LensFlare:SetYaw">LensFlare:SetYaw(yaw)</a></td>
<td class="summary">Set this lens flare's yaw angle.</td>
</tr>
<tr>
<td class="name" ><a href="#LensFlare:SetColor">LensFlare:SetColor(New)</a></td>
<td class="name" ><a href="#LensFlare:SetColor">LensFlare:SetColor(color)</a></td>
<td class="summary">Set this lens flare's color.</td>
</tr>
</table>
@ -171,7 +173,7 @@
<dl class="function">
<dt>
<a name = "LensFlare"></a>
<strong>LensFlare(Pitch, Yaw, Color.)</strong>
<strong>LensFlare(pitch, yaw, color)</strong>
</dt>
<dd>
Create a LensFlare object.
@ -180,19 +182,17 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">Pitch</span>
<li><span class="parameter">pitch</span>
<span class="types"><span class="type">float</span></span>
angle in degrees.
Pitch angle in degrees.
</li>
<li><span class="parameter">Yaw</span>
<li><span class="parameter">yaw</span>
<span class="types"><span class="type">float</span></span>
angle in degrees.
Yaw angle in degrees.
</li>
<li><span class="parameter">Color.</span>
<li><span class="parameter">color</span>
<span class="types"><a class="type" href="../3 primitive classes/Color.html#">Color</a></span>
Color of the lensflare.
</li>
</ul>
@ -308,7 +308,7 @@
</dd>
<dt>
<a name = "LensFlare:SetSunSpriteID"></a>
<strong>LensFlare:SetSunSpriteID(New)</strong>
<strong>LensFlare:SetSunSpriteID(spriteID)</strong>
</dt>
<dd>
Set this lens flare's sun sprite ID.
@ -317,9 +317,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">spriteID</span>
<span class="types"><span class="type">int</span></span>
sun sprite ID.
New sun sprite ID.
</li>
</ul>
@ -330,7 +330,7 @@
</dd>
<dt>
<a name = "LensFlare:SetPitch"></a>
<strong>LensFlare:SetPitch(New)</strong>
<strong>LensFlare:SetPitch(pitch)</strong>
</dt>
<dd>
Set this lens flare's pitch angle.
@ -339,9 +339,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">pitch</span>
<span class="types"><span class="type">float</span></span>
pitch angle in degrees.
New pitch angle in degrees.
</li>
</ul>
@ -352,7 +352,7 @@
</dd>
<dt>
<a name = "LensFlare:SetYaw"></a>
<strong>LensFlare:SetYaw(New)</strong>
<strong>LensFlare:SetYaw(yaw)</strong>
</dt>
<dd>
Set this lens flare's yaw angle.
@ -361,9 +361,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">yaw</span>
<span class="types"><span class="type">float</span></span>
yaw angle in degrees.
New yaw angle in degrees.
</li>
</ul>
@ -374,7 +374,7 @@
</dd>
<dt>
<a name = "LensFlare:SetColor"></a>
<strong>LensFlare:SetColor(New)</strong>
<strong>LensFlare:SetColor(color)</strong>
</dt>
<dd>
Set this lens flare's color.
@ -383,9 +383,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">color</span>
<span class="types"><a class="type" href="../3 primitive classes/Color.html#">Color</a></span>
color.
New color.
</li>
</ul>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <here>Flow.SkyLayer</here></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>
@ -125,7 +127,7 @@
<td class="summary">Create a starfield object with only stars.</td>
</tr>
<tr>
<td class="name" ><a href="#Starfield">Starfield(starCount, meteorCount)</a></td>
<td class="name" ><a href="#Starfield">Starfield(starCount, meteorCount, meteorSpawnDensity, meteorVel)</a></td>
<td class="summary">Create a starfield object with stars and meteors.</td>
</tr>
<tr>
@ -153,19 +155,19 @@
<td class="summary">Get this starfield's meteors enabled status.</td>
</tr>
<tr>
<td class="name" ><a href="#Starfield:SetStarCount">Starfield:SetStarCount(New)</a></td>
<td class="name" ><a href="#Starfield:SetStarCount">Starfield:SetStarCount(count)</a></td>
<td class="summary">Set this starfield's number of stars.</td>
</tr>
<tr>
<td class="name" ><a href="#Starfield:SetMeteorCount">Starfield:SetMeteorCount(New)</a></td>
<td class="name" ><a href="#Starfield:SetMeteorCount">Starfield:SetMeteorCount(count)</a></td>
<td class="summary">Set this starfield's number of meteors.</td>
</tr>
<tr>
<td class="name" ><a href="#Starfield:SetMeteorSpawnDensity">Starfield:SetMeteorSpawnDensity(New)</a></td>
<td class="name" ><a href="#Starfield:SetMeteorSpawnDensity">Starfield:SetMeteorSpawnDensity(density)</a></td>
<td class="summary">Set this starfield's meteor spawn density.</td>
</tr>
<tr>
<td class="name" ><a href="#Starfield:SetMeteorVelocity">Starfield:SetMeteorVelocity(New)</a></td>
<td class="name" ><a href="#Starfield:SetMeteorVelocity">Starfield:SetMeteorVelocity(velocity)</a></td>
<td class="summary">Set this starfield's meteor velocity.</td>
</tr>
</table>
@ -207,7 +209,7 @@
</dd>
<dt>
<a name = "Starfield"></a>
<strong>Starfield(starCount, meteorCount)</strong>
<strong>Starfield(starCount, meteorCount, meteorSpawnDensity, meteorVel)</strong>
</dt>
<dd>
Create a starfield object with stars and meteors.
@ -224,6 +226,14 @@
<span class="types"><span class="type">int</span></span>
Meteor count. <strong>Max: 100</strong>
</li>
<li><span class="parameter">meteorSpawnDensity</span>
<span class="types"><span class="type">int</span></span>
Meteor spawn density.
</li>
<li><span class="parameter">meteorVel</span>
<span class="types"><span class="type">int</span></span>
Meteor velocity.
</li>
</ul>
<h3>Returns:</h3>
@ -365,7 +375,7 @@
</dd>
<dt>
<a name = "Starfield:SetStarCount"></a>
<strong>Starfield:SetStarCount(New)</strong>
<strong>Starfield:SetStarCount(count)</strong>
</dt>
<dd>
Set this starfield's number of stars.
@ -374,9 +384,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">count</span>
<span class="types"><span class="type">int</span></span>
star count.
New star count.
</li>
</ul>
@ -387,7 +397,7 @@
</dd>
<dt>
<a name = "Starfield:SetMeteorCount"></a>
<strong>Starfield:SetMeteorCount(New)</strong>
<strong>Starfield:SetMeteorCount(count)</strong>
</dt>
<dd>
Set this starfield's number of meteors.
@ -396,9 +406,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">count</span>
<span class="types"><span class="type">int</span></span>
meteor count.
New meteor count.
</li>
</ul>
@ -409,7 +419,7 @@
</dd>
<dt>
<a name = "Starfield:SetMeteorSpawnDensity"></a>
<strong>Starfield:SetMeteorSpawnDensity(New)</strong>
<strong>Starfield:SetMeteorSpawnDensity(density)</strong>
</dt>
<dd>
Set this starfield's meteor spawn density.
@ -418,9 +428,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">density</span>
<span class="types"><span class="type">int</span></span>
meteor spawn density.
New meteor spawn density.
</li>
</ul>
@ -431,7 +441,7 @@
</dd>
<dt>
<a name = "Starfield:SetMeteorVelocity"></a>
<strong>Starfield:SetMeteorVelocity(New)</strong>
<strong>Starfield:SetMeteorVelocity(velocity)</strong>
</dt>
<dd>
Set this starfield's meteor velocity.
@ -440,9 +450,9 @@
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">New</span>
<li><span class="parameter">velocity</span>
<span class="types"><span class="type">float</span></span>
meteor velocity.
New meteor velocity.
</li>
</ul>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -80,6 +81,7 @@
<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.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>
<li> <a href="../4 enums/Flow.GameStatus.html">Flow.GameStatus</a></li>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -80,6 +81,7 @@
<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> <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>
<li> <a href="../4 enums/Flow.GameStatus.html">Flow.GameStatus</a></li>
@ -140,7 +142,7 @@
<dd>
<p>Table of Effects.FeatherMode constants.
To be used with <a href="../1 modules/Effects.html#EmitStreamer">Effects.EmitStreamer</a> function.</p>
To be used with ??? function.</p>
<ul>
<li><code>NONE</code></li>

View file

@ -45,6 +45,7 @@
</ul>
<h2>2 Classes</h2>
<ul class="nowrap">
<li> <a href="../2 classes/Collision.Probe.html">Collision.Probe</a></li>
<li> <a href="../2 classes/Flow.Level.html">Flow.Level</a></li>
<li> <a href="../2 classes/Flow.Settings.html">Flow.Settings</a></li>
<li> <a href="../2 classes/Flow.Statistics.html">Flow.Statistics</a></li>
@ -63,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -75,8 +77,10 @@
</ul>
<h2>4 Enums</h2>
<ul class="nowrap">
<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> <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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <here>Flow.ErrorMode</here></li>
<li> <a href="../4 enums/Flow.FreezeMode.html">Flow.FreezeMode</a></li>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.ParticleAnimationType.html">Effects.ParticleAnimationType</a></li>
<li> <a href="../4 enums/Flow.ErrorMode.html">Flow.ErrorMode</a></li>
<li> <here>Flow.FreezeMode</here></li>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="../3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="../3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="../3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="../3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="../3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>

View file

@ -64,6 +64,7 @@
<h2>3 Primitive Classes</h2>
<ul class="nowrap">
<li> <a href="3 primitive classes/Flow.Fog.html">Flow.Fog</a></li>
<li> <a href="3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></li>
<li> <a href="3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></li>
<li> <a href="3 primitive classes/Flow.LensFlare.html">Flow.LensFlare</a></li>
<li> <a href="3 primitive classes/Flow.SkyLayer.html">Flow.SkyLayer</a></li>
@ -79,6 +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.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>
@ -246,6 +248,10 @@ local door = GetMoveableByName("door_type4_14")
<td class="name" ><a href="3 primitive classes/Flow.Fog.html">Flow.Fog</a></td>
<td class="summary">Distance fog.</td>
</tr>
<tr>
<td class="name" ><a href="3 primitive classes/Flow.Horizon.html">Flow.Horizon</a></td>
<td class="summary">Represents a horizon.</td>
</tr>
<tr>
<td class="name" ><a href="3 primitive classes/Flow.InventoryItem.html">Flow.InventoryItem</a></td>
<td class="summary">Represents the properties of an object as it appears in the inventory.</td>
@ -297,6 +303,10 @@ local door = GetMoveableByName("door_type4_14")
<td class="name" ><a href="4 enums/Effects.EffectID.html">Effects.EffectID</a></td>
<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="summary">Constants for feather modes.</td>
</tr>
<tr>
<td class="name" ><a href="4 enums/Effects.ParticleAnimationType.html">Effects.ParticleAnimationType</a></td>
<td class="summary">Constants for particle animation type constants.</td>

View file

@ -53,6 +53,7 @@
#include "Scripting/Include/Objects/ScriptInterfaceObjectsHandler.h"
#include "Scripting/Include/ScriptInterfaceGame.h"
#include "Scripting/Include/Strings/ScriptInterfaceStringsHandler.h"
#include "Scripting/Internal/TEN/Flow/Level/FlowLevel.h"
#include "Sound/sound.h"
#include "Specific/clock.h"
#include "Specific/Input/Input.h"
@ -217,7 +218,7 @@ GameStatus GamePhase(bool insideMenu)
UpdateFadeScreenAndCinematicBars();
// Rumble screen (like in submarine level of TRC).
if (g_GameFlow->GetLevel(CurrentLevel)->Rumble)
if (g_GameFlow->GetLevel(CurrentLevel)->GetRumbleEnabled())
RumbleScreen();
DoFlipEffect(FlipEffect, LaraItem);
@ -579,9 +580,13 @@ void InitializeScripting(int levelIndex, bool loadGame)
void DeInitializeScripting(int levelIndex, GameStatus reason)
{
// Reload gameflow script to clear level script variables.
g_GameFlow->LoadFlowScript();
g_GameScript->FreeLevelScripts();
g_GameScriptEntities->FreeEntities();
// If level index is 0, it means we are in a title level and game variables should be cleared.
if (levelIndex == 0)
g_GameScript->ResetScripts(true);
}
@ -698,6 +703,13 @@ void SetupInterpolation()
{
for (auto& item : g_Level.Items)
item.DisableInterpolation = false;
// HACK: Remove after ScriptInterfaceFlowHandler is deprecated.
auto* level = (Level*)g_GameFlow->GetLevel(CurrentLevel);
level->Horizon1.SetPosition(level->Horizon1.GetPosition(), true);
level->Horizon2.SetPosition(level->Horizon2.GetPosition(), true);
level->Horizon1.SetRotation(level->Horizon1.GetRotation(), true);
level->Horizon2.SetRotation(level->Horizon2.GetRotation(), true);
}
void HandleControls(bool isTitle)

View file

@ -9,7 +9,7 @@
#include "Game/effects/tomb4fx.h"
#include "Game/savegame.h"
#include "Game/Setup.h"
#include "Math.h"
#include "Math/Math.h"
#include "Objects/game_object_ids.h"
#include "Sound/sound.h"
#include "Scripting/Include/ScriptInterfaceLevel.h"

View file

@ -1,6 +1,7 @@
#pragma once
#include "Math/Math.h"
#include "Objects/Effects/LensFlare.h"
#include "Objects/game_object_ids.h"
#include "Scripting/Include/ScriptInterfaceLevel.h"
using namespace TEN::Entities::Effects;
@ -100,6 +101,48 @@ namespace TEN::Effects::Environment
class EnvironmentController
{
private:
// Weather
std::vector<WeatherParticle> Particles = {};
// Sky
Vector4 SkyCurrentColor[2] = {};
short SkyCurrentPosition[2] = {};
// Wind
int WindX = 0;
int WindZ = 0;
int WindAngle = 0;
int WindDAngle = 0;
int WindCurrent = 0;
// Flash fader
Vector3 FlashColorBase = Vector3::Zero;
float FlashSpeed = 1.0f;
float FlashProgress = 0.0f;
// Lightning
int StormCount = 0;
int StormRand = 0;
int StormTimer = 0;
byte StormSkyColor = 1;
byte StormSkyColor2 = 1;
// Starfield
std::vector<StarParticle> Stars = {};
std::vector<MeteorParticle> Meteors = {};
bool ResetStarField = true;
// Lens flare
LensFlare GlobalLensFlare = {};
public:
EnvironmentController();
@ -117,47 +160,13 @@ namespace TEN::Effects::Environment
const std::vector<MeteorParticle>& GetMeteors() const { return Meteors; }
private:
// Weather
std::vector<WeatherParticle> Particles = {};
// Sky
Vector4 SkyCurrentColor[2] = {};
short SkyCurrentPosition[2] = {};
// Wind
int WindX = 0;
int WindZ = 0;
int WindAngle = 0;
int WindDAngle = 0;
int WindCurrent = 0;
// Flash fader
Vector3 FlashColorBase = Vector3::Zero;
float FlashSpeed = 1.0f;
float FlashProgress = 0.0f;
// Lightning
int StormCount = 0;
int StormRand = 0;
int StormTimer = 0;
byte StormSkyColor = 1;
byte StormSkyColor2 = 1;
// Starfield
std::vector<StarParticle> Stars = {};
std::vector<MeteorParticle> Meteors = {};
bool ResetStarField = true;
// Lens flare
LensFlare GlobalLensFlare = {};
void UpdateStarfield(const ScriptInterfaceLevel& level);
void UpdateWeather(const ScriptInterfaceLevel& level);
void UpdateSky(const ScriptInterfaceLevel& level);
void UpdateStorm(const ScriptInterfaceLevel& level);
void UpdateWind(const ScriptInterfaceLevel& level);
void UpdateFlash(const ScriptInterfaceLevel& level);
void UpdateWeather(const ScriptInterfaceLevel& level);
void UpdateLightning();
void UpdateStarfield(const ScriptInterfaceLevel& level);
void UpdateStorm(const ScriptInterfaceLevel& level);
void SpawnDustParticles(const ScriptInterfaceLevel& level);
void SpawnWeatherParticles(const ScriptInterfaceLevel& level);

View file

@ -12,6 +12,7 @@
#include "Game/control/volume.h"
#include "Game/effects/item_fx.h"
#include "Game/effects/effects.h"
#include "Game/effects/weather.h"
#include "Game/items.h"
#include "Game/itemdata/creature_info.h"
#include "Game/Lara/lara.h"
@ -30,6 +31,7 @@
#include "Objects/TR5/Emitter/tr5_bats_emitter.h"
#include "Objects/TR5/Emitter/tr5_spider_emitter.h"
#include "Renderer/Renderer.h"
#include "Scripting/Internal/TEN/Flow//Level/FlowLevel.h"
#include "Scripting/Include/ScriptInterfaceGame.h"
#include "Scripting/Include/ScriptInterfaceLevel.h"
#include "Scripting/Include/Objects/ScriptInterfaceObjectsHandler.h"
@ -42,6 +44,7 @@ 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::Entities::Creatures::TR3;
using namespace TEN::Entities::Generic;
using namespace TEN::Entities::Switches;
@ -1086,6 +1089,54 @@ const std::vector<byte> SaveGame::Build()
auto staticMeshesOffset = fbb.CreateVector(staticMeshes);
auto volumesOffset = fbb.CreateVector(volumes);
// Level state
auto* level = (Level*)g_GameFlow->GetLevel(CurrentLevel);
Save::LevelDataBuilder levelData { fbb };
levelData.add_level_far_view(level->LevelFarView);
levelData.add_fog_enabled(level->Fog.Enabled);
levelData.add_fog_color(level->Fog.GetColor());
levelData.add_fog_min_distance(level->Fog.MinDistance);
levelData.add_fog_max_distance(level->Fog.MaxDistance);
levelData.add_sky_layer_1_enabled(level->GetSkyLayerEnabled(0));
levelData.add_sky_layer_1_color(level->GetSkyLayerColor(0));
levelData.add_sky_layer_1_speed(level->GetSkyLayerSpeed(0));
levelData.add_sky_layer_2_enabled(level->GetSkyLayerEnabled(1));
levelData.add_sky_layer_2_color(level->GetSkyLayerColor(1));
levelData.add_sky_layer_2_speed(level->GetSkyLayerSpeed(1));
levelData.add_lensflare_color(level->LensFlare.GetColor());
levelData.add_lensflare_pitch(level->LensFlare.GetPitch());
levelData.add_lensflare_yaw(level->LensFlare.GetYaw());
levelData.add_lensflare_sprite_id(level->LensFlare.GetSunSpriteID());
levelData.add_starfield_meteor_count(level->Starfield.GetMeteorCount());
levelData.add_starfield_meteor_spawn_density(level->Starfield.GetMeteorSpawnDensity());
levelData.add_starfield_meteor_velocity(level->Starfield.GetMeteorVelocity());
levelData.add_starfield_star_count(level->Starfield.GetStarCount());
levelData.add_horizon1_enabled(level->Horizon1.GetEnabled());
levelData.add_horizon1_object_id(level->Horizon1.GetObjectID());
levelData.add_horizon1_position(&FromVector3(level->GetHorizonPosition(0)));
levelData.add_horizon1_orientation(&FromEulerAngles(level->GetHorizonOrientation(0)));
levelData.add_horizon1_transparency(level->Horizon1.GetTransparency());
levelData.add_horizon2_enabled(level->Horizon2.GetEnabled());
levelData.add_horizon2_object_id(level->Horizon2.GetObjectID());
levelData.add_horizon2_position(&FromVector3(level->GetHorizonPosition(1)));
levelData.add_horizon2_orientation(&FromEulerAngles(level->GetHorizonOrientation(1)));
levelData.add_horizon2_transparency(level->Horizon2.GetTransparency());
levelData.add_storm_enabled(level->Storm);
levelData.add_rumble_enabled(level->Rumble);
levelData.add_weather_type((int)level->Weather);
levelData.add_weather_strength(level->WeatherStrength);
auto levelDataOffset = levelData.Finish();
// Global event sets
std::vector<flatbuffers::Offset<Save::EventSet>> globalEventSets{};
for (int j = 0; j < g_Level.GlobalEventSets.size(); j++)
@ -1484,6 +1535,7 @@ const std::vector<byte> SaveGame::Build()
sgb.add_header(headerOffset);
sgb.add_level(levelStatisticsOffset);
sgb.add_game(gameStatisticsOffset);
sgb.add_level_data(levelDataOffset);
sgb.add_secret_bits(SaveGame::Statistics.SecretBits);
sgb.add_camera(cameraOffset);
sgb.add_lara(laraOffset);
@ -1499,6 +1551,7 @@ const std::vector<byte> SaveGame::Build()
sgb.add_postprocess_strength(g_Renderer.GetPostProcessStrength());
sgb.add_postprocess_tint(&FromVector3(g_Renderer.GetPostProcessTint()));
sgb.add_soundtracks(soundtrackOffset);
sgb.add_cd_flags(soundtrackMapOffset);
sgb.add_action_queue(actionQueueOffset);
sgb.add_flip_maps(flipMapsOffset);
@ -1737,6 +1790,50 @@ static void ParseStatistics(const Save::SaveGame* s, bool isHub)
static void ParseLua(const Save::SaveGame* s, bool hubMode)
{
// Global level data
auto* level = (Level*)g_GameFlow->GetLevel(CurrentLevel);
level->Fog.Enabled = s->level_data()->fog_enabled();
level->Fog.MaxDistance = s->level_data()->fog_max_distance();
level->Fog.MinDistance = s->level_data()->fog_min_distance();
level->Fog.SetColor(s->level_data()->fog_color());
level->Layer1.Enabled = s->level_data()->sky_layer_1_enabled();
level->Layer1.CloudSpeed = s->level_data()->sky_layer_1_speed();
level->Layer1.SetColor(s->level_data()->sky_layer_1_color());
level->Layer2.Enabled = s->level_data()->sky_layer_2_enabled();
level->Layer2.CloudSpeed = s->level_data()->sky_layer_2_speed();
level->Layer2.SetColor(s->level_data()->sky_layer_2_color());
level->LensFlare.SetSunSpriteID(s->level_data()->lensflare_sprite_id());
level->LensFlare.SetPitch(s->level_data()->lensflare_pitch());
level->LensFlare.SetYaw(s->level_data()->lensflare_yaw());
level->LensFlare.SetColor(s->level_data()->lensflare_color());
level->Starfield.SetStarCount(s->level_data()->starfield_star_count());
level->Starfield.SetMeteorCount(s->level_data()->starfield_meteor_count());
level->Starfield.SetMeteorSpawnDensity(s->level_data()->starfield_meteor_spawn_density());
level->Starfield.SetMeteorVelocity(s->level_data()->starfield_meteor_velocity());
level->Horizon1.SetEnabled(s->level_data()->horizon1_enabled());
level->Horizon1.SetObjectID((GAME_OBJECT_ID)s->level_data()->horizon1_object_id());
level->Horizon1.SetPosition(ToVector3(s->level_data()->horizon1_position()), true);
level->Horizon1.SetRotation(ToEulerAngles(s->level_data()->horizon1_orientation()), true);
level->Horizon1.SetTransparency(s->level_data()->horizon1_transparency());
level->Horizon2.SetEnabled(s->level_data()->horizon2_enabled());
level->Horizon2.SetObjectID((GAME_OBJECT_ID)s->level_data()->horizon2_object_id());
level->Horizon2.SetPosition(ToVector3(s->level_data()->horizon2_position()), true);
level->Horizon2.SetRotation(ToEulerAngles(s->level_data()->horizon2_orientation()), true);
level->Horizon2.SetTransparency(s->level_data()->horizon2_transparency());
level->Storm = s->level_data()->storm_enabled();
level->Rumble = s->level_data()->rumble_enabled();
level->Weather = (WeatherType)s->level_data()->weather_type();
level->WeatherStrength = s->level_data()->weather_strength();
// Event sets
if (g_Level.VolumeEventSets.size() == s->volume_event_sets()->size())
@ -1765,6 +1862,8 @@ static void ParseLua(const Save::SaveGame* s, bool hubMode)
}
}
// Variables
auto loadedVars = std::vector<SavedVar>{};
auto unionVec = s->script_vars();
@ -1850,6 +1949,8 @@ static void ParseLua(const Save::SaveGame* s, bool hubMode)
g_GameScript->SetVariables(loadedVars, hubMode);
// Callbacks
auto populateCallbackVecs = [&s](auto callbackFunc)
{
auto callbacksVec = std::vector<std::string>{};

View file

@ -16,6 +16,7 @@ namespace TEN::Renderer
{
using namespace TEN::Renderer::Structures;
using namespace Utils;
Renderer g_Renderer;
Renderer::Renderer() :

View file

@ -33,14 +33,13 @@
#include "Specific/level.h"
#include "Specific/winmain.h"
using namespace std::chrono;
using namespace TEN::Effects::Hair;
using namespace TEN::Entities::Creatures::TR3;
using namespace TEN::Entities::Generic;
using namespace TEN::Hud;
using namespace TEN::Renderer::Structures;
using namespace TEN::Effects::Environment;
using namespace TEN::Effects::DisplaySprite;
using namespace TEN::Entities::Creatures::TR3;
using namespace TEN::Entities::Generic;
using namespace TEN::Renderer::Structures;
extern GUNSHELL_STRUCT Gunshells[MAX_GUNSHELL];
@ -1932,6 +1931,8 @@ namespace TEN::Renderer
void Renderer::RenderSimpleSceneToParaboloid(RenderTarget2D* renderTarget, Vector3 position, int emisphere)
{
// TODO: Update the horizon draw code here once paraboloids are required. TrainWreck Feb 2, 2025.
// Reset GPU state
SetBlendMode(BlendMode::Opaque);
SetCullMode(CullMode::CounterClockwise);
@ -1981,10 +1982,10 @@ namespace TEN::Renderer
view.FillConstantBuffer(cameraConstantBuffer);
_cbCameraMatrices.UpdateData(cameraConstantBuffer, _context.Get());
// Draw horizon and the sky
// Draw horizon and sky.
auto* levelPtr = g_GameFlow->GetLevel(CurrentLevel);
if (levelPtr->Horizon)
if (levelPtr->GetHorizonEnabled(0) || levelPtr->GetHorizonEnabled(1))
{
_shaders.Bind(Shader::RoomAmbientSky);
@ -2026,31 +2027,26 @@ namespace TEN::Renderer
_context->ClearDepthStencilView(renderTarget->DepthStencilView.Get(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1, 0);
// Draw horizon.
if (_moveableObjects[ID_HORIZON].has_value())
if (_moveableObjects[ID_HORIZON].has_value()) // FIXME: Replace with same function as in the main pipeline!
{
_context->IASetVertexBuffers(0, 1, _moveablesVertexBuffer.Buffer.GetAddressOf(), &stride, &offset);
_context->IASetIndexBuffer(_moveablesIndexBuffer.Buffer.Get(), DXGI_FORMAT_R32_UINT, 0);
auto& moveableObj = *_moveableObjects[ID_HORIZON];
const auto& moveableObj = *_moveableObjects[ID_HORIZON]; // FIXME: Replace with same function as in the main pipeline!
_stStatic.World = Matrix::CreateTranslation(LaraItem->Pose.Position.ToVector3());
_stStatic.Color = Vector4::One;
_stStatic.ApplyFogBulbs = 1;
_cbStatic.UpdateData(_stStatic, _context.Get());
for (int k = 0; k < moveableObj.ObjectMeshes.size(); k++)
for (const auto* mesh : moveableObj.ObjectMeshes)
{
auto* meshPtr = moveableObj.ObjectMeshes[k];
for (auto& bucket : meshPtr->Buckets)
for (const auto& bucket : mesh->Buckets)
{
if (bucket.NumVertices == 0)
{
continue;
}
BindTexture(TextureRegister::ColorMap, &std::get<0>(_moveablesTextures[bucket.Texture]),
SamplerStateRegister::AnisotropicClamp);
BindTexture(TextureRegister::ColorMap, &std::get<0>(_moveablesTextures[bucket.Texture]), SamplerStateRegister::AnisotropicClamp);
// Always render horizon as alpha-blended surface.
SetBlendMode(bucket.BlendMode == BlendMode::AlphaTest ? BlendMode::AlphaBlend : bucket.BlendMode);
@ -2071,8 +2067,8 @@ namespace TEN::Renderer
_shaders.Bind(Shader::RoomAmbient);
// Draw rooms
UINT stride = sizeof(Vertex);
UINT offset = 0;
unsigned int stride = sizeof(Vertex);
unsigned int offset = 0;
// Bind vertex and index buffer.
_context->IASetVertexBuffers(0, 1, _roomsVertexBuffer.Buffer.GetAddressOf(), &stride, &offset);
@ -2081,8 +2077,8 @@ namespace TEN::Renderer
for (int i = 0; i < _rooms.size(); i++)
{
int index = i;
RendererRoom* room = &_rooms[index];
ROOM_INFO* nativeRoom = &g_Level.Rooms[room->RoomNumber];
auto* room = &_rooms[index];
auto* nativeRoom = &g_Level.Rooms[room->RoomNumber];
// Avoid drawing of too far rooms... Environment map is tiny, blurred, so very far rooms would not contribute to the
// final pixel colors
@ -2103,9 +2099,7 @@ namespace TEN::Renderer
for (auto& bucket : room->Buckets)
{
if (bucket.NumVertices == 0)
{
continue;
}
SetBlendMode(bucket.BlendMode);
SetAlphaTest(AlphaTestMode::GreatherThan, ALPHA_TEST_THRESHOLD);
@ -2850,7 +2844,7 @@ namespace TEN::Renderer
}
}
if (!levelPtr->Horizon || !anyOutsideRooms)
if ((!levelPtr->GetHorizonEnabled(0) && !levelPtr->GetHorizonEnabled(1)) || !anyOutsideRooms)
return;
if (Lara.Control.Look.OpticRange != 0)
@ -2870,21 +2864,21 @@ namespace TEN::Renderer
SetBlendMode(BlendMode::Additive);
for (int s = 0; s < 2; s++)
for (int layer = 0; layer < 2; layer++)
{
for (int i = 0; i < 2; i++)
{
auto weather = TEN::Effects::Environment::Weather;
auto translation = Matrix::CreateTranslation(
renderView.Camera.WorldPosition.x + weather.SkyPosition(s) - i * SKY_SIZE,
renderView.Camera.WorldPosition.x + weather.SkyPosition(layer) - i * SKY_SIZE,
renderView.Camera.WorldPosition.y - 1536.0f,
renderView.Camera.WorldPosition.z);
auto world = rotation * translation;
_stStatic.World = (rotation * translation);
_stStatic.Color = weather.SkyColor(s);
_stStatic.ApplyFogBulbs = s == 0 ? 1 : 0;
_stStatic.Color = weather.SkyColor(layer);
_stStatic.ApplyFogBulbs = layer == 0 ? 1 : 0;
_cbStatic.UpdateData(_stStatic, _context.Get());
DrawIndexedTriangles(SKY_INDICES_COUNT, 0, 0);
@ -3033,8 +3027,11 @@ namespace TEN::Renderer
}
// Draw horizon.
if (_moveableObjects[ID_HORIZON].has_value())
for (int layer = 0; layer < 2; layer++)
{
if (!levelPtr->GetHorizonEnabled(layer))
continue;
SetDepthState(DepthState::None);
SetBlendMode(BlendMode::Opaque);
SetCullMode(CullMode::CounterClockwise);
@ -3044,29 +3041,31 @@ namespace TEN::Renderer
_shaders.Bind(Shader::Sky);
auto& moveableObj = *_moveableObjects[ID_HORIZON];
auto pos = Vector3::Lerp(levelPtr->GetHorizonPrevPosition(layer), levelPtr->GetHorizonPosition(layer), GetInterpolationFactor());
auto orient = EulerAngles::Lerp(levelPtr->GetHorizonPrevOrientation(layer), levelPtr->GetHorizonOrientation(layer), GetInterpolationFactor());
auto rotMatrix = orient.ToRotationMatrix();
auto translationMatrix = Matrix::CreateTranslation(pos);
auto cameraMatrix = Matrix::CreateTranslation(renderView.Camera.WorldPosition);
_stStatic.World = Matrix::CreateTranslation(renderView.Camera.WorldPosition);
_stStatic.Color = Vector4::One;
float alpha = levelPtr->GetHorizonTransparency(layer);
_stStatic.World = rotMatrix * translationMatrix * cameraMatrix;
_stStatic.Color = Color(1.0f, 1.0f, 1.0f, alpha);
_stStatic.ApplyFogBulbs = 1;
_cbStatic.UpdateData(_stStatic, _context.Get());
for (int k = 0; k < moveableObj.ObjectMeshes.size(); k++)
const auto& moveableObj = *_moveableObjects[levelPtr->GetHorizonObjectID(layer)];
for (const auto* mesh : moveableObj.ObjectMeshes)
{
auto* meshPtr = moveableObj.ObjectMeshes[k];
for (auto& bucket : meshPtr->Buckets)
for (const auto& bucket : mesh->Buckets)
{
if (bucket.NumVertices == 0)
{
continue;
}
BindTexture(TextureRegister::ColorMap, &std::get<0>(_moveablesTextures[bucket.Texture]),
SamplerStateRegister::AnisotropicClamp);
BindTexture(TextureRegister::ColorMap, &std::get<0>(_moveablesTextures[bucket.Texture]), SamplerStateRegister::AnisotropicClamp);
// Always render horizon as alpha-blended surface.
SetBlendMode(bucket.BlendMode == BlendMode::AlphaTest ? BlendMode::AlphaBlend : bucket.BlendMode);
SetBlendMode(GetBlendModeFromAlpha((bucket.BlendMode == BlendMode::AlphaTest) ? BlendMode::AlphaBlend : bucket.BlendMode, alpha));
SetAlphaTest(AlphaTestMode::None, ALPHA_TEST_THRESHOLD);
// Draw vertices.

View file

@ -5,6 +5,7 @@
#include "Game/camera.h"
#include "Game/collision/Sphere.h"
#include "Game/effects/effects.h"
#include "Game/effects/weather.h"
#include "Game/items.h"
#include "Game/Lara/lara.h"
#include "Game/Setup.h"
@ -16,8 +17,9 @@
#include "Specific/level.h"
#include "Specific/trutils.h"
using namespace TEN::Entities::Effects;
using namespace TEN::Collision::Sphere;
using namespace TEN::Effects::Environment;
using namespace TEN::Entities::Effects;
using namespace TEN::Math;
using namespace TEN::Utils;

View file

@ -22,9 +22,6 @@ enum class LaraType
class ScriptInterfaceLevel
{
public:
bool Horizon = false;
bool Rumble = false;
std::string NameStringKey = {};
std::string FileName = {};
std::string ScriptFileName = {};
@ -36,6 +33,7 @@ public:
virtual short GetSkyLayerSpeed(int index) const = 0;
virtual LaraType GetLaraType() const = 0;
virtual bool GetStormEnabled() const = 0;
virtual bool GetRumbleEnabled() const = 0;
virtual float GetWeatherStrength() const = 0;
virtual WeatherType GetWeatherType() const = 0;
virtual RGBAColor8Byte GetSkyLayerColor(int index) const = 0;
@ -48,6 +46,15 @@ public:
virtual std::string GetAmbientTrack() const = 0;
virtual bool GetResetHubEnabled() const = 0;
// Horizon getters
virtual bool GetHorizonEnabled(int index) const = 0;
virtual GAME_OBJECT_ID GetHorizonObjectID(int index) const = 0;
virtual float GetHorizonTransparency(int index) const = 0;
virtual Vector3 GetHorizonPosition(int index) const = 0;
virtual EulerAngles GetHorizonOrientation(int index) const = 0;
virtual Vector3 GetHorizonPrevPosition(int index) const = 0;
virtual EulerAngles GetHorizonPrevOrientation(int index) const = 0;
// Lens flare getters
virtual bool GetLensFlareEnabled() const = 0;
virtual int GetLensFlareSunSpriteID() const = 0;

View file

@ -322,7 +322,8 @@ static constexpr char ScriptReserved_EmitAirBubble[] = "EmitAirBubble";
static constexpr char ScriptReserved_EmitFire[] = "EmitFire";
static constexpr char ScriptReserved_MakeExplosion[] = "MakeExplosion";
static constexpr char ScriptReserved_MakeEarthquake[] = "MakeEarthquake";
static constexpr char ScriptReserved_GetWind[] = "GetWind";
static constexpr char ScriptReserved_GetWind[] = "GetWind";
static constexpr char ScriptReserved_Vibrate[] = "Vibrate";
static constexpr char ScriptReserved_FlashScreen[] = "FlashScreen";
static constexpr char ScriptReserved_FadeIn[] = "FadeIn";
@ -400,6 +401,54 @@ static constexpr char ScriptReserved_LogLevelError[] = "ERROR";
// Internal
static constexpr char ScriptReserved_LaraObject[] = "LaraObject";
// =========
// COLLISION
// =========
constexpr char ScriptReserved_Collision[] = "Collision";
constexpr char ScriptReserved_Probe[] = "Probe";
constexpr char ScriptReserved_ProbeGetCeilingHeight[] = "GetCeilingHeight";
constexpr char ScriptReserved_ProbeGetCeilingMaterialType[] = "GetCeilingMaterialType";
constexpr char ScriptReserved_ProbeGetCeilingNormal[] = "GetCeilingNormal";
constexpr char ScriptReserved_ProbeGetFloorHeight[] = "GetFloorHeight";
constexpr char ScriptReserved_ProbeGetFloorMaterialType[] = "GetFloorMaterialType";
constexpr char ScriptReserved_ProbeGetFloorNormal[] = "GetFloorNormal";
constexpr char ScriptReserved_ProbeGetPosition[] = "GetPosition";
constexpr char ScriptReserved_ProbeGetRoom[] = "GetRoom";
constexpr char ScriptReserved_ProbeGetRoomName[] = "GetRoomName";
constexpr char ScriptReserved_ProbeGetRoomNumber[] = "GetRoomNumber";
constexpr char ScriptReserved_ProbeGetWaterSurfaceHeight[] = "GetWaterSurfaceHeight";
constexpr char ScriptReserved_ProbeIsClimbableWall[] = "IsClimbableWall";
constexpr char ScriptReserved_ProbeIsDeathTile[] = "IsDeathTile";
constexpr char ScriptReserved_ProbeIsInsideSolidGeometry[] = "IsInsideSolidGeometry";
constexpr char ScriptReserved_ProbeIsMonkeySwing[] = "IsMonkeySwing";
constexpr char ScriptReserved_ProbeIsSteepCeiling[] = "IsSteepCeiling";
constexpr char ScriptReserved_ProbeIsSteepFloor[] = "IsSteepFloor";
constexpr char ScriptReserved_ProbeIsWall[] = "IsWall";
constexpr char ScriptReserved_ProbePreview[] = "Preview";
constexpr char ScriptReserved_MaterialType[] = "MaterialType";
// ====
// FLOW
// ====
// Horizon
constexpr char ScriptReserved_Horizon[] = "Horizon";
constexpr char ScriptReserved_HorizonGetEnabled[] = "GetEnabled";
constexpr char ScriptReserved_HorizonGetObjectID[] = "GetObjectID";
constexpr char ScriptReserved_HorizonGetPosition[] = "GetPosition";
constexpr char ScriptReserved_HorizonGetRotation[] = "GetRotation";
constexpr char ScriptReserved_HorizonGetTransparency[] = "GetTransparency";
constexpr char ScriptReserved_HorizonSetEnabled[] = "SetEnabled";
constexpr char ScriptReserved_HorizonSetObjectID[] = "SetObjectID";
constexpr char ScriptReserved_HorizonSetPosition[] = "SetPosition";
constexpr char ScriptReserved_HorizonSetRotation[] = "SetRotation";
constexpr char ScriptReserved_HorizonSetTransparency[] = "SetTransparency";
// =======
// OBJECTS
// =======
@ -452,35 +501,6 @@ constexpr char ScriptReserved_StaticSetSlot[] = "SetSlot";
constexpr char ScriptReserved_StaticSetSolid[] = "SetSolid";
constexpr char ScriptReserved_StaticShatter[] = "Shatter";
// =========
// COLLISION
// =========
constexpr char ScriptReserved_Collision[] = "Collision";
constexpr char ScriptReserved_Probe[] = "Probe";
constexpr char ScriptReserved_ProbeGetCeilingHeight[] = "GetCeilingHeight";
constexpr char ScriptReserved_ProbeGetCeilingMaterialType[] = "GetCeilingMaterialType";
constexpr char ScriptReserved_ProbeGetCeilingNormal[] = "GetCeilingNormal";
constexpr char ScriptReserved_ProbeGetFloorHeight[] = "GetFloorHeight";
constexpr char ScriptReserved_ProbeGetFloorMaterialType[] = "GetFloorMaterialType";
constexpr char ScriptReserved_ProbeGetFloorNormal[] = "GetFloorNormal";
constexpr char ScriptReserved_ProbeGetPosition[] = "GetPosition";
constexpr char ScriptReserved_ProbeGetRoom[] = "GetRoom";
constexpr char ScriptReserved_ProbeGetRoomName[] = "GetRoomName";
constexpr char ScriptReserved_ProbeGetRoomNumber[] = "GetRoomNumber";
constexpr char ScriptReserved_ProbeGetWaterSurfaceHeight[] = "GetWaterSurfaceHeight";
constexpr char ScriptReserved_ProbeIsClimbableWall[] = "IsClimbableWall";
constexpr char ScriptReserved_ProbeIsDeathTile[] = "IsDeathTile";
constexpr char ScriptReserved_ProbeIsInsideSolidGeometry[] = "IsInsideSolidGeometry";
constexpr char ScriptReserved_ProbeIsMonkeySwing[] = "IsMonkeySwing";
constexpr char ScriptReserved_ProbeIsSteepCeiling[] = "IsSteepCeiling";
constexpr char ScriptReserved_ProbeIsSteepFloor[] = "IsSteepFloor";
constexpr char ScriptReserved_ProbeIsWall[] = "IsWall";
constexpr char ScriptReserved_ProbePreview[] = "Preview";
constexpr char ScriptReserved_MaterialType[] = "MaterialType";
// =====
// TYPES
// =====

View file

@ -22,6 +22,7 @@
#include "Scripting/Internal/TEN/Effects/EffectIDs.h"
#include "Scripting/Internal/TEN/Effects/ParticleAnimTypes.h"
#include "Scripting/Internal/TEN/Types/Color/Color.h"
#include "Scripting/Internal/TEN/Types/Rotation/Rotation.h"
#include "Scripting/Internal/TEN/Types/Vec3/Vec3.h"
#include "Scripting/Internal/TEN/Types/Vec2/Vec2.h"
#include "Sound/sound.h"
@ -43,17 +44,19 @@ using namespace TEN::Scripting::Types;
namespace TEN::Scripting::Effects
{
///Emit a lightning arc.
//@function EmitLightningArc
//@tparam Vec3 src
//@tparam Vec3 dest
//@tparam Color color (default Color(255, 255, 255))
//@tparam float lifetime Lifetime in seconds. Clamped to [0, 4.233] for now because of strange internal maths. (default 1.0)
//@tparam int amplitude "strength" of the lightning - the higher the value, the "taller" the arcs. Clamped to [1, 255]. (default 20)
//@tparam int beamWidth Clamped to [1, 127]. (default 2)
//@tparam int detail Higher numbers equal more segments, but it's not a 1:1 correlation. Clamped to [1, 127]. (default 10)
//@tparam bool smooth If true, the arc will have large, smooth curves; if false, it will have small, jagged spikes. (default false)
//@tparam bool endDrift If true, the end of the arc will be able to gradually drift away from its destination in a random direction (default false)
/// Emit a lightning arc.
// @function EmitLightningArc
// @tparam Vec3 src
// @tparam Vec3 dest
// @tparam Color color (default Color(255, 255, 255))
// @tparam float lifetime Lifetime in seconds. Clamped to [0, 4.233] for now because of strange internal maths. (default 1.0)
// @tparam int amplitude "strength" of the lightning - the higher the value, the "taller" the arcs. Clamped to [1, 255]. (default 20)
// @tparam int beamWidth Clamped to [1, 127]. (default 2)
// @tparam int detail Higher numbers equal more segments, but it's not a 1:1 correlation. Clamped to [1, 127]. (default 10)
// @tparam bool smooth If true, the arc will have large, smooth curves; if false, it will have small, jagged spikes. (default false)
// @tparam bool endDrift If true, the end of the arc will be able to gradually drift away from its destination in a random direction (default false)
static void EmitLightningArc(Vec3 src, Vec3 dest, TypeOrNil<ScriptColor> color, TypeOrNil<float> lifetime, TypeOrNil<int> amplitude, TypeOrNil<int> beamWidth, TypeOrNil<int> segments, TypeOrNil<bool> smooth, TypeOrNil<bool> endDrift)
{
auto p1 = Vector3(src.x, src.y, src.z);
@ -136,6 +139,7 @@ namespace TEN::Scripting::Effects
// Objects.ObjID.DEFAULT_SPRITES, -- spriteSeqID
// 180 -- startRot
// )
static void EmitParticle(const Vec3& pos, const Vec3& vel, int spriteID, TypeOrNil<float> gravity, TypeOrNil<float> rotVel,
TypeOrNil<ScriptColor> startColor, TypeOrNil<ScriptColor> endColor, TypeOrNil<BlendMode> blendMode,
TypeOrNil<float> startSize, TypeOrNil<float> endSize, TypeOrNil<float> life,
@ -246,6 +250,37 @@ namespace TEN::Scripting::Effects
// animationType = TEN.Effects.ParticleAnimationType.LOOP,
// }
// EmitAdvancedParticle(particle)
/// Structure for EmitAdvancedParticle table.
// @table ParticleData
// @tfield Vec3 position World position.
// @tfield Vec3 velocity Velocity.
// @tfield[opt] Objects.ObjID spriteSeqID ID of the sprite sequence object. __Default: Objects.ObjID.DEFAULT_SPRITES__
// @tfield[opt] int spriteID ID of the sprite in the sprite sequence object.__Default: 0__
// @tfield[opt] float lifetime Lifespan in seconds. __Default: 2__
// @tfield[opt] float maxYVelocity Specifies ithe maximum Y velocity for the particle. __Default: 0__
// @tfield[opt] float gravity Specifies if the particle will fall over time. Positive values ascend, negative values descend. Recommended range: [-1000 and 1000]. __Default: 0__
// @tfield[opt] float friction Specifies the friction with which the particle will slow down over time. __Default: 0__
// @tfield[opt] float startRotation Rotation at start of life. __Default: random__
// @tfield[opt] float rotationSpeed Rotational velocity in degrees. __Default: 0__
// @tfield[opt] float startSize Size at start of life. __Default: 10__
// @tfield[opt] float endSize Size at end of life. The particle will linearly shrink or grow toward this size over its lifespan. __Default: 0__
// @tfield[opt] Color startColor Color at start of life. __Default: Color(255, 255, 255)__
// @tfield[opt] Color endColor Color to fade toward. This will finish long before the end of the particle's life due to internal math. __Default: Color(255, 255, 255)__
// @tfield[opt] Effects.BlendID blendMode Render blend mode. __TEN.Effects.BlendID.ALPHA_BLEND__
// @tfield[opt] bool damage Specify if the particle will harm the player on collision. __Default: false__
// @tfield[opt] bool poison Specify if the particle will poison the player on collision. __Default: false__
// @tfield[opt] bool burn Specify if the particle will burn the player on collision. __Default: false__
// @tfield[opt] bool wind Specify if the particle will be affected by wind in outside rooms. __Default: false__
// @tfield[opt] int damageHit Specify the damage particle will harm the player on collision. __Default: 2__
// @tfield[opt] bool light Specify if the particle will be emit a light based on its color. Caution: Recommended only for a single particle. Having too many particles with lights can overflow the light system. __Default: false__
// @tfield[opt] int lightRadius measured in "clicks" or 256 world units. __Default: 0__
// @tfield[opt] int lightFlicker The interval at which light should flicker. __Default: 0__
// @tfield[opt] int sound ID to play. Corresponds to the value in the sound XML file or Tomb Editor's "Sound Infos" window. Looping sounds recommended. Caution: Recommended only for a single particle. Having too many particles with sounds can overflow the sound system. __Default: None__
// @tfield[opt] bool animated Specify if the particle will be animated. __Default: false__
// @tfield[opt] Effects.ParticleAnimationType animationType Specify the the type of animation the particle will use. __Default: TEN.Effects.ParticleAnimationType.LOOP__
// @tfield[opt] float frameRate The framerate with which the particle will be animated. __Default: 1__
static void EmitAdvancedParticle(sol::table ParticleData)
{
constexpr auto DEFAULT_START_SIZE = 10.0f;
@ -362,17 +397,17 @@ namespace TEN::Scripting::Effects
}
/***Emit a shockwave, similar to that seen when a harpy projectile hits something.
@function EmitShockwave
@tparam Vec3 pos Origin position
@tparam int innerRadius (default 0) Initial inner radius of the shockwave circle - 128 will be approx a click, 512 approx a block
@tparam int outerRadius (default 128) Initial outer radius of the shockwave circle
@tparam Color color (default Color(255, 255, 255))
@tparam float lifetime (default 1.0) Lifetime in seconds (max 8.5 because of inner maths weirdness)
@tparam int speed (default 50) Initial speed of the shockwave's expansion (the shockwave will always slow as it goes)
@tparam int angle (default 0) Angle about the X axis - a value of 90 will cause the shockwave to be entirely vertical
@tparam bool hurtsLara (default false) If true, the shockwave will hurt Lara, with the damage being relative to the shockwave's current speed
*/
/// Emit a shockwave, similar to that seen when a harpy projectile hits something.
// @function EmitShockwave
// @tparam Vec3 pos Origin position
// @tparam int innerRadius (default 0) Initial inner radius of the shockwave circle - 128 will be approx a click, 512 approx a block
// @tparam int outerRadius (default 128) Initial outer radius of the shockwave circle
// @tparam Color color (default Color(255, 255, 255))
// @tparam float lifetime (default 1.0) Lifetime in seconds (max 8.5 because of inner maths weirdness)
// @tparam int speed (default 50) Initial speed of the shockwave's expansion (the shockwave will always slow as it goes)
// @tparam int angle (default 0) Angle about the X axis - a value of 90 will cause the shockwave to be entirely vertical
// @tparam bool hurtsLara (default false) If true, the shockwave will hurt Lara, with the damage being relative to the shockwave's current speed
static void EmitShockwave(Vec3 pos, TypeOrNil<int> innerRadius, TypeOrNil<int> outerRadius, TypeOrNil<ScriptColor> col,
TypeOrNil<float> lifetime, TypeOrNil<int> speed, TypeOrNil<int> angle, TypeOrNil<bool> hurtPlayer)
{
@ -403,15 +438,15 @@ namespace TEN::Scripting::Effects
(short)doDamage, true, false, false, (int)ShockwaveStyle::Normal);
}
/***Emit dynamic light that lasts for a single frame.
* If you want a light that sticks around, you must call this each frame.
@function EmitLight
@tparam Vec3 pos position of the light
@tparam[opt] Color color light color (default Color(255, 255, 255))
@tparam[opt] int radius measured in "clicks" or 256 world units (default 20)
@tparam[opt] bool shadows determines whether light should generate dynamic shadows for applicable moveables (default is false)
@tparam[opt] string name if provided, engine will interpolate this light for high framerate mode (be careful not to use same name for different lights)
*/
/// Emit dynamic light that lasts for a single frame.
// If you want a light that sticks around, you must call this each frame.
// @function EmitLight
// @tparam Vec3 pos position of the light
// @tparam[opt] Color color light color (default Color(255, 255, 255))
// @tparam[opt] int radius measured in "clicks" or 256 world units (default 20)
// @tparam[opt] bool shadows determines whether light should generate dynamic shadows for applicable moveables (default is false)
// @tparam[opt] string name if provided, engine will interpolate this light for high framerate mode (be careful not to use same name for different lights)
static void EmitLight(Vec3 pos, TypeOrNil<ScriptColor> col, TypeOrNil<int> radius, TypeOrNil<bool> castShadows, TypeOrNil<std::string> name)
{
auto color = ValueOr<ScriptColor>(col, ScriptColor(255, 255, 255));
@ -419,18 +454,18 @@ namespace TEN::Scripting::Effects
SpawnDynamicPointLight(pos.ToVector3(), color, rad, ValueOr<bool>(castShadows, false), GetHash(ValueOr<std::string>(name, std::string())));
}
/***Emit dynamic directional spotlight that lasts for a single frame.
* If you want a light that sticks around, you must call this each frame.
@function EmitSpotLight
@tparam Vec3 pos position of the light
@tparam Vec3 dir normal which indicates light direction
@tparam[opt] Color color (default Color(255, 255, 255))
@tparam[opt] int radius overall radius at the endpoint of a light cone, measured in "clicks" or 256 world units (default 10)
@tparam[opt] int falloff radius, at which light starts to fade out, measured in "clicks" (default 5)
@tparam[opt] int distance distance, at which light cone fades out, measured in "clicks" (default 20)
@tparam[opt] bool shadows determines whether light should generate dynamic shadows for applicable moveables (default is false)
@tparam[opt] string name if provided, engine will interpolate this light for high framerate mode (be careful not to use same name for different lights)
*/
/// Emit dynamic directional spotlight that lasts for a single frame.
// If you want a light that sticks around, you must call this each frame.
// @function EmitSpotLight
// @tparam Vec3 pos position of the light
// @tparam Vec3 dir normal which indicates light direction
// @tparam[opt] Color color (default Color(255, 255, 255))
// @tparam[opt] int radius overall radius at the endpoint of a light cone, measured in "clicks" or 256 world units (default 10)
// @tparam[opt] int falloff radius, at which light starts to fade out, measured in "clicks" (default 5)
// @tparam[opt] int distance distance, at which light cone fades out, measured in "clicks" (default 20)
// @tparam[opt] bool shadows determines whether light should generate dynamic shadows for applicable moveables (default is false)
// @tparam[opt] string name if provided, engine will interpolate this light for high framerate mode (be careful not to use same name for different lights)
static void EmitSpotLight(Vec3 pos, Vec3 dir, TypeOrNil<ScriptColor> col, TypeOrNil<int> radius, TypeOrNil<int> falloff, TypeOrNil<int> distance, TypeOrNil<bool> castShadows, TypeOrNil<std::string> name)
{
auto color = ValueOr<ScriptColor>(col, ScriptColor(255, 255, 255));
@ -440,21 +475,22 @@ namespace TEN::Scripting::Effects
SpawnDynamicSpotLight(pos.ToVector3(), dir.ToVector3(), color, rad, fallOff, dist, ValueOr<bool>(castShadows, false), GetHash(ValueOr<std::string>(name, std::string())));
}
/***Emit blood.
@function EmitBlood
@tparam Vec3 pos
@tparam int count (default 1) "amount" of blood. Higher numbers won't add more blood but will make it more "flickery", with higher numbers turning it into a kind of red orb.
*/
/// Emit blood.
// @function EmitBlood
// @tparam Vec3 pos
// @tparam int count Sprite count. __default: 1__
static void EmitBlood(const Vec3& pos, TypeOrNil<int> count)
{
TriggerBlood(pos.x, pos.y, pos.z, -1, ValueOr<int>(count, 1));
}
/// Emit air bubble in a water room.
// @function EmitAirBubble
// @tparam Vec3 pos World position where the effect will be spawned. Must be in a water room.
// @tparam[opt] float size Sprite size. __Default: 32__
// @tparam[opt] float amp Oscillation amplitude. __Default: 32__
/// Emit an air bubble in a water room.
// @function EmitAirBubble
// @tparam Vec3 pos World position where the effect will be spawned. Must be in a water room.
// @tparam[opt] float size Sprite size. __Default: 32__
// @tparam[opt] float amp Oscillation amplitude. __Default: 32__
static void EmitAirBubble(const Vec3& pos, TypeOrNil<float> size, TypeOrNil<float> amp)
{
constexpr auto DEFAULT_SIZE = 128.0f;
@ -466,31 +502,31 @@ namespace TEN::Scripting::Effects
SpawnBubble(pos.ToVector3(), roomNumber, convertedSize, convertedAmp);
}
/***Emit fire for one frame. Will not hurt player. Call this each frame if you want a continuous fire.
@function EmitFire
@tparam Vec3 pos
@tparam float size (default 1.0)
*/
/// Emit fire for one frame. Will not hurt player. Call this each frame if you want a continuous fire.
// @function EmitFire
// @tparam Vec3 pos
// @tparam float size (default 1.0)
static void EmitFire(const Vec3& pos, TypeOrNil<float> size)
{
AddFire(pos.x, pos.y, pos.z, FindRoomNumber(Vector3i(pos.x, pos.y, pos.z)), ValueOr<float>(size, 1));
}
/***Make an explosion. Does not hurt Lara
@function MakeExplosion
@tparam Vec3 pos
@tparam float size (default 512.0) this will not be the size of the sprites, but rather the distance between the origin and any additional sprites
@tparam bool shockwave (default false) if true, create a very faint white shockwave which will not hurt Lara
*/
/// Make an explosion. Does not hurt Lara
// @function MakeExplosion
// @tparam Vec3 pos
// @tparam float size (default 512.0) this will not be the size of the sprites, but rather the distance between the origin and any additional sprites
// @tparam bool shockwave (default false) if true, create a very faint white shockwave which will not hurt Lara
static void MakeExplosion(Vec3 pos, TypeOrNil<float> size, TypeOrNil<bool> shockwave)
{
TriggerExplosion(Vector3(pos.x, pos.y, pos.z), ValueOr<float>(size, 512.0f), true, false, ValueOr<bool>(shockwave, false), FindRoomNumber(Vector3i(pos.x, pos.y, pos.z)));
}
/***Make an earthquake
@function MakeEarthquake
@tparam int strength (default 100) How strong should the earthquake be? Increasing this value also increases the lifespan of the earthquake.
*/
/// Make an earthquake
// @function MakeEarthquake
// @tparam int strength (default 100) How strong should the earthquake be? Increasing this value also increases the lifespan of the earthquake.
static void Earthquake(TypeOrNil<int> strength)
{
int str = ValueOr<int>(strength, 100);
@ -501,6 +537,7 @@ namespace TEN::Scripting::Effects
// This represents the 3D displacement applied by the engine on things like particles affected by wind.
// @function GetWind()
// @treturn Vec3 Wind vector.
static Vec3 GetWind()
{
return Vec3(Weather.Wind());
@ -511,6 +548,7 @@ namespace TEN::Scripting::Effects
auto tableEffects = sol::table(state->lua_state(), sol::create);
parent.set(ScriptReserved_Effects, tableEffects);
// Emitters
tableEffects.set_function(ScriptReserved_EmitLightningArc, &EmitLightningArc);
tableEffects.set_function(ScriptReserved_EmitParticle, &EmitParticle);
tableEffects.set_function(ScriptReserved_EmitAdvancedParticle, &EmitAdvancedParticle);
@ -519,46 +557,17 @@ namespace TEN::Scripting::Effects
tableEffects.set_function(ScriptReserved_EmitSpotLight, &EmitSpotLight);
tableEffects.set_function(ScriptReserved_EmitBlood, &EmitBlood);
tableEffects.set_function(ScriptReserved_EmitAirBubble, &EmitAirBubble);
tableEffects.set_function(ScriptReserved_MakeExplosion, &MakeExplosion);
tableEffects.set_function(ScriptReserved_EmitFire, &EmitFire);
tableEffects.set_function(ScriptReserved_MakeExplosion, &MakeExplosion);
tableEffects.set_function(ScriptReserved_MakeEarthquake, &Earthquake);
tableEffects.set_function(ScriptReserved_GetWind, &GetWind);
auto handler = LuaHandler{ state };
auto handler = LuaHandler(state);
handler.MakeReadOnlyTable(tableEffects, ScriptReserved_BlendID, BLEND_IDS);
handler.MakeReadOnlyTable(tableEffects, ScriptReserved_EffectID, EFFECT_IDS);
handler.MakeReadOnlyTable(tableEffects, ScriptReserved_ParticleAnimationType, PARTICLE_ANIM_TYPES);
}
}
/// Structure for EmitAdvancedParticle table.
// @table ParticleData
// @tfield Vec3 position World position.
// @tfield Vec3 velocity Velocity.
// @tfield[opt] Objects.ObjID spriteSeqID ID of the sprite sequence object. __Default: Objects.ObjID.DEFAULT_SPRITES__
// @tfield[opt] int spriteID ID of the sprite in the sprite sequence object.__Default: 0__
// @tfield[opt] float lifetime Lifespan in seconds. __Default: 2__
// @tfield[opt] float maxYVelocity Specifies ithe maximum Y velocity for the particle. __Default: 0__
// @tfield[opt] float gravity Specifies if the particle will fall over time. Positive values ascend, negative values descend. Recommended range: [-1000 and 1000]. __Default: 0__
// @tfield[opt] float friction Specifies the friction with which the particle will slow down over time. __Default: 0__
// @tfield[opt] float startRotation Rotation at start of life. __Default: random__
// @tfield[opt] float rotationSpeed Rotational velocity in degrees. __Default: 0__
// @tfield[opt] float startSize Size at start of life. __Default: 10__
// @tfield[opt] float endSize Size at end of life. The particle will linearly shrink or grow toward this size over its lifespan. __Default: 0__
// @tfield[opt] Color startColor Color at start of life. __Default: Color(255, 255, 255)__
// @tfield[opt] Color endColor Color to fade toward. This will finish long before the end of the particle's life due to internal math. __Default: Color(255, 255, 255)__
// @tfield[opt] Effects.BlendID blendMode Render blend mode. __TEN.Effects.BlendID.ALPHA_BLEND__
// @tfield[opt] bool damage Specify if the particle will harm the player on collision. __Default: false__
// @tfield[opt] bool poison Specify if the particle will poison the player on collision. __Default: false__
// @tfield[opt] bool burn Specify if the particle will burn the player on collision. __Default: false__
// @tfield[opt] bool wind Specify if the particle will be affected by wind in outside rooms. __Default: false__
// @tfield[opt] int damageHit Specify the damage particle will harm the player on collision. __Default: 2__
// @tfield[opt] bool light Specify if the particle will be emit a light based on its color. Caution: Recommended only for a single particle. Having too many particles with lights can overflow the light system. __Default: false__
// @tfield[opt] int lightRadius measured in "clicks" or 256 world units. __Default: 0__
// @tfield[opt] int lightFlicker The interval at which light should flicker. __Default: 0__
// @tfield[opt] int sound ID to play. Corresponds to the value in the sound XML file or Tomb Editor's "Sound Infos" window. Looping sounds recommended. Caution: Recommended only for a single particle. Having too many particles with sounds can overflow the sound system. __Default: None__
// @tfield[opt] bool animated Specify if the particle will be animated. __Default: false__
// @tfield[opt] Effects.ParticleAnimationType animationType Specify the the type of animation the particle will use. __Default: TEN.Effects.ParticleAnimationType.LOOP__
// @tfield[opt] float frameRate The framerate with which the particle will be animated. __Default: 1__

View file

@ -317,6 +317,7 @@ Specify which translations in the strings table correspond to which languages.
InventoryItem::Register(tableFlow);
Settings::Register(tableFlow);
Fog::Register(tableFlow);
Horizon::Register(tableFlow);
LensFlare::Register(tableFlow);
Starfield::Register(tableFlow);
@ -414,6 +415,8 @@ void FlowHandler::LoadFlowScript()
{
TENLog("Loading gameflow script, strings, and settings...", LogLevel::Info);
Levels.clear();
_handler.ExecuteScript(_gameDir + "Scripts/Gameflow.lua");
_handler.ExecuteScript(_gameDir + "Scripts/SystemStrings.lua", true);
_handler.ExecuteScript(_gameDir + "Scripts/Strings.lua", true);

View file

@ -27,9 +27,6 @@ private:
void PrepareInventoryObjects();
public:
int FogInDistance = 0;
int FogOutDistance = 0;
bool LevelSelect = true;
bool HomeLevel = false;
bool LoadSave = true;

View file

@ -19,16 +19,16 @@ void Fog::Register(sol::table& parent)
ctors(),
sol::call_constructor, ctors(),
/// (@{Color}) RGB fog color
/// (@{Color}) RGB fog color.
// @mem color
"color", sol::property(&Fog::GetColor, &Fog::SetColor),
/// (int) min distance.
/// (int) Minimum distance.
// This is the distance at which the fog starts.
// @mem minDistance*
// @mem minDistance
"minDistance", &Fog::MinDistance,
/// (int) max distance.
/// (int) Maximum distance.
// This is the distance at which the fog reaches the maximum strength.
// @mem maxDistance
"maxDistance", &Fog::MaxDistance
@ -37,8 +37,8 @@ void Fog::Register(sol::table& parent)
/***
@tparam Color color RGB color
@tparam int Min Distance fog starts (in Sectors)
@tparam int Max Distance fog ends (in Sectors)
@tparam int min Distance at which fog starts (in sectors)
@tparam int max Distance at which fog reaches the maximum strength (in sectors)
@treturn Fog A fog object.
@function Fog
*/

View file

@ -0,0 +1,156 @@
#include "framework.h"
#include "Scripting/Internal/TEN/Flow/Horizon/Horizon.h"
#include "Objects/game_object_ids.h"
#include "Scripting/Internal/ReservedScriptNames.h"
#include "Scripting/Internal/ScriptUtil.h"
#include "Scripting/Internal/TEN/Types/Color/Color.h"
#include "Scripting/Internal/TEN/Types/Rotation/Rotation.h"
namespace TEN::Scripting
{
/// Represents a horizon.
//
// @tenprimitive Flow.Horizon
// @pragma nostrip
void Horizon::Register(sol::table& parent)
{
using ctors = sol::constructors<
Horizon(GAME_OBJECT_ID),
Horizon(bool)>;
// Register type.
parent.new_usertype<Horizon>(
ScriptReserved_Horizon,
ctors(), sol::call_constructor, ctors(),
// Getters
ScriptReserved_HorizonGetEnabled, &Horizon::GetEnabled,
ScriptReserved_HorizonGetObjectID, &Horizon::GetObjectID,
ScriptReserved_HorizonGetPosition, &Horizon::GetPosition,
ScriptReserved_HorizonGetRotation, &Horizon::GetRotation,
ScriptReserved_HorizonGetTransparency, &Horizon::GetTransparency,
// Setters
ScriptReserved_HorizonSetEnabled, &Horizon::SetEnabled,
ScriptReserved_HorizonSetObjectID, &Horizon::SetObjectID,
ScriptReserved_HorizonSetPosition, &Horizon::SetPosition,
ScriptReserved_HorizonSetRotation, &Horizon::SetRotation,
ScriptReserved_HorizonSetTransparency, &Horizon::SetTransparency);
}
/// Create a horizon object.
// @function Horizon
// @tparam Objects.ObjID objectID Object ID for the horizon to use.
// @treturn Horizon A new Horizon object.
Horizon::Horizon(GAME_OBJECT_ID objectID)
{
_enabled = true;
_objectID = objectID;
}
// Legacy constructor to maintain backwards compatibility.
Horizon::Horizon(bool enabled)
{
_enabled = enabled;
}
/// Get the horizon's enabled state.
// @function GetEnabled
// @treturn bool Enabled state.
bool Horizon::GetEnabled() const
{
return _enabled;
}
/// Get the horizon's slot object ID.
// @function GetObjectID
// @treturn Objects.ObjID Object ID.
GAME_OBJECT_ID Horizon::GetObjectID() const
{
return _objectID;
}
/// Get the horizon's world position.
// @function GetPosition
// @treturn Vec3 Position.
const Vec3 Horizon::GetPosition() const
{
return _position;
}
/// Get the horizon's rotation.
// @function GetRotation
// @treturn Rotation Rotation.
const Rotation Horizon::GetRotation() const
{
return _rotation;
}
/// Get the horizon's transparency.
// @function GetTransparency
// @treturn float Transparency.
const float Horizon::GetTransparency() const
{
return _transparency;
}
/// Set the horizon's enabled state.
// @function SetEnabled
// @tparam bool enabled New enabled state.
void Horizon::SetEnabled(bool value)
{
_enabled = value;
}
/// Set the horizon's object ID.
// @function SetObjectID
// @tparam Objects.ObjID objectID Object ID.
void Horizon::SetObjectID(GAME_OBJECT_ID objectID)
{
_objectID = objectID;
}
/// Set the horizon's world position.
// @function SetPosition
// @tparam Vec3 pos New world position.
// @tparam[opt] bool noInterpolation Disable interpolation with the previous frame's position. __default: false__
void Horizon::SetPosition(const Vec3& pos, TypeOrNil<bool> noInterpolation)
{
bool convertedDisableInterp = ValueOr<bool>(noInterpolation, false);
_prevPosition = convertedDisableInterp ? pos : _position;
_position = pos;
}
/// Set the horizon's rotation.
// @function SetRotation
// @tparam Rotation rot New rotation.
// @tparam[opt] bool noInterpolation Disable interpolation with the previous frame's rotation. __default: false__
void Horizon::SetRotation(const Rotation& rot, TypeOrNil<bool> noInterpolation)
{
bool convertedDisableInterp = ValueOr<bool>(noInterpolation, false);
_prevRotation = convertedDisableInterp ? rot : _rotation;
_rotation = rot;
}
/// Set the horizon's transparency.
// @function SetTransparency
// @tparam float transparency New transparency alpha.
void Horizon::SetTransparency(float value)
{
_transparency = value;
}
const Vec3 Horizon::GetPrevPosition() const
{
return _prevPosition;
}
const Rotation Horizon::GetPrevRotation() const
{
return _prevRotation;
}
}

View file

@ -0,0 +1,55 @@
#pragma once
#include "Objects/game_object_ids.h"
#include "Scripting/Internal/ScriptUtil.h"
#include "Scripting/Internal/TEN/Types/Rotation/Rotation.h"
#include "Scripting/Internal/TEN/Types/Vec3/Vec3.h"
namespace TEN::Scripting
{
class Horizon
{
public:
static void Register(sol::table& parent);
private:
// Fields
bool _enabled = false;
GAME_OBJECT_ID _objectID = GAME_OBJECT_ID::ID_HORIZON;
Vec3 _position = {};
Rotation _rotation = {};
float _scale = 1.0f;
float _transparency = 1.0f;
Vec3 _prevPosition = {};
Rotation _prevRotation = {};
float _prevScale = 1.0f;
public:
// Constructors
Horizon() = default;
Horizon(bool enabled);
Horizon(GAME_OBJECT_ID objectID);
// Getters
bool GetEnabled() const;
GAME_OBJECT_ID GetObjectID() const;
const Vec3 GetPosition() const;
const Rotation GetRotation() const;
const float GetTransparency() const;
const Vec3 GetPrevPosition() const;
const Rotation GetPrevRotation() const;
// Setters
void SetEnabled(bool value);
void SetObjectID(GAME_OBJECT_ID objectID);
void SetPosition(const Vec3& pos, TypeOrNil<bool> disableInterpolation);
void SetRotation(const Rotation& orient, TypeOrNil<bool> disableInterpolation);
void SetTransparency(float value);
};
}

View file

@ -39,9 +39,9 @@ namespace TEN::Scripting
/// Create a LensFlare object.
// @function LensFlare
// @tparam float Pitch angle in degrees.
// @tparam float Yaw angle in degrees.
// @tparam Color Color.
// @tparam float pitch Pitch angle in degrees.
// @tparam float yaw Yaw angle in degrees.
// @tparam Color color Color of the lensflare.
// @treturn LensFlare A new LensFlare object.
LensFlare::LensFlare(float pitch, float yaw, const ScriptColor& color)
{
@ -91,7 +91,7 @@ namespace TEN::Scripting
/// Set this lens flare's sun sprite ID.
// @function LensFlare:SetSunSpriteID
// @tparam int New sun sprite ID.
// @tparam int spriteID New sun sprite ID.
void LensFlare::SetSunSpriteID(int spriteID)
{
// Sprite ID out of range; return early.
@ -106,7 +106,7 @@ namespace TEN::Scripting
/// Set this lens flare's pitch angle.
// @function LensFlare:SetPitch
// @tparam float New pitch angle in degrees.
// @tparam float pitch New pitch angle in degrees.
void LensFlare::SetPitch(float pitch)
{
_rotation.x = pitch;
@ -114,7 +114,7 @@ namespace TEN::Scripting
/// Set this lens flare's yaw angle.
// @function LensFlare:SetYaw
// @tparam float New yaw angle in degrees.
// @tparam float yaw New yaw angle in degrees.
void LensFlare::SetYaw(float yaw)
{
_rotation.y = yaw;
@ -122,7 +122,7 @@ namespace TEN::Scripting
/// Set this lens flare's color.
// @function LensFlare:SetColor
// @tparam Color New color.
// @tparam Color color New color.
void LensFlare::SetColor(const ScriptColor& color)
{
_color = color;

View file

@ -13,10 +13,9 @@ These are things things which aren't present in the compiled level file itself.
@pragma nostrip
*/
/*** Make a new Level object.
@function Level
@treturn Level a Level object
*/
/// Make a new Level object.
//@function Level
//@treturn Level a Level object
void Level::Register(sol::table& parent)
{
// Register type.
@ -58,6 +57,15 @@ void Level::Register(sol::table& parent)
//@mem layer2
"layer2", &Level::Layer2,
/// (@{Flow.Horizon}) First horizon layer.
//@mem horizon1
"horizon1", &Level::Horizon1,
"horizon", sol::property(&Level::GetHorizon1Enabled, &Level::SetHorizon1Enabled), // Compatibility.
/// (@{Flow.Horizon}) Second horizon layer.
//@mem horizon1
"horizon2", &Level::Horizon2,
/// (@{Flow.Starfield}) Starfield.
// @mem starfield
"starfield", &Level::Starfield,
@ -72,25 +80,18 @@ void Level::Register(sol::table& parent)
//@mem fog
"fog", &Level::Fog,
/// (bool) Draw sky layer? (default: false)
//@mem horizon
"horizon", &Level::Horizon,
/// (bool) Enable flickering lightning in the sky.
// Equivalent to classic TRLE's LIGHTNING setting. As in the TRC Ireland levels.
//
//@mem storm
"storm", &Level::Storm,
/// (WeatherType) Choose weather effect.
// Must be one of the values `WeatherType.None`, `WeatherType.Rain`, or `WeatherType.Snow`.
//
//@mem weather
"weather", &Level::Weather,
/// (float) Choose weather strength.
// Must be value between `0.1` and `1.0`.
//
//@mem weatherStrength
"weatherStrength", sol::property(&Level::SetWeatherStrength),
@ -115,6 +116,9 @@ e.g. `myLevel.laraType = LaraType.Divesuit`
//@mem rumble
"rumble", &Level::Rumble,
/// (int) The maximum draw distance for level.
// Given in sectors (blocks). Must be at least 4.
//@mem farView
"farView", sol::property(&Level::SetLevelFarView),
/// (bool) Reset hub data.
@ -129,7 +133,7 @@ e.g. `myLevel.laraType = LaraType.Divesuit`
/// (short) Set Secrets for Level
//@mem secrets
"secrets", sol::property(&Level::SetSecrets)
);
);
}
void Level::SetWeatherStrength(float val)
@ -147,14 +151,6 @@ void Level::SetWeatherStrength(float val)
}
}
/*** (int) The maximum draw distance for level.
Given in sectors (blocks).
Must be at least 4.
This is equivalent to TRNG's LevelFarView variable.
@mem farView
*/
void Level::SetLevelFarView(short val)
{
static_assert(MIN_FAR_VIEW == 3200.0f, "Please update the comment, docs, and warning message if this number changes.");
@ -173,46 +169,25 @@ void Level::SetLevelFarView(short val)
}
}
RGBAColor8Byte Level::GetSkyLayerColor(int index) const
const SkyLayer& Level::GetSkyLayer(int index) const
{
TENAssert(index == 0 || index == 1, "Sky layer index must be 0 or 1.");
return (index == 0 ? Layer1 : Layer2);
}
if (index == 0)
{
return Layer1.GetColor();
}
else
{
return Layer2.GetColor();
}
RGBAColor8Byte Level::GetSkyLayerColor(int index) const
{
return GetSkyLayer(index).GetColor();
}
bool Level::GetSkyLayerEnabled(int index) const
{
TENAssert(index == 0 || index == 1, "Sky layer index must be 0 or 1.");
if (index == 0)
{
return Layer1.Enabled;
}
else
{
return Layer2.Enabled;
}
return GetSkyLayer(index).Enabled;
}
short Level::GetSkyLayerSpeed(int index) const
{
TENAssert(index == 0 || index == 1, "Sky layer index must be 0 or 1.");
if (index == 0)
{
return Layer1.CloudSpeed;
}
else
{
return Layer2.CloudSpeed;
}
return GetSkyLayer(index).CloudSpeed;
}
LaraType Level::GetLaraType() const
@ -230,6 +205,11 @@ bool Level::GetStormEnabled() const
return Storm;
}
bool Level::GetRumbleEnabled() const
{
return Rumble;
}
float Level::GetWeatherStrength() const
{
return WeatherStrength;
@ -280,6 +260,57 @@ std::string Level::GetAmbientTrack() const
return AmbientTrack;
}
const TEN::Scripting::Horizon& Level::GetHorizon(int index) const
{
TENAssert(index == 0 || index == 1, "Horizon index must be 0 or 1.");
return (index == 0 ? Horizon1 : Horizon2);
}
bool Level::GetHorizon1Enabled() const
{
return Horizon1.GetEnabled();
}
void Level::SetHorizon1Enabled(bool enabled)
{
Horizon1.SetEnabled(enabled);
}
bool Level::GetHorizonEnabled(int index) const
{
return GetHorizon(index).GetEnabled();
}
GAME_OBJECT_ID Level::GetHorizonObjectID(int index) const
{
return GetHorizon(index).GetObjectID();
}
float Level::GetHorizonTransparency(int index) const
{
return GetHorizon(index).GetTransparency();
}
Vector3 Level::GetHorizonPosition(int index) const
{
return GetHorizon(index).GetPosition().ToVector3();
}
EulerAngles Level::GetHorizonOrientation(int index) const
{
return GetHorizon(index).GetRotation().ToEulerAngles();
}
Vector3 Level::GetHorizonPrevPosition(int index) const
{
return GetHorizon(index).GetPrevPosition().ToVector3();
}
EulerAngles Level::GetHorizonPrevOrientation(int index) const
{
return GetHorizon(index).GetPrevRotation().ToEulerAngles();
}
bool Level::GetLensFlareEnabled() const
{
return LensFlare.GetEnabledStatus();

View file

@ -1,6 +1,7 @@
#pragma once
#include "Scripting/Internal/TEN/Flow/SkyLayer/SkyLayer.h"
#include "Scripting/Internal/TEN/Flow/Horizon/Horizon.h"
#include "Scripting/Internal/TEN/Flow/LensFlare/LensFlare.h"
#include "Scripting/Internal/TEN/Flow/SkyLayer/SkyLayer.h"
#include "Scripting/Internal/TEN/Flow/Starfield/Starfield.h"
#include "Scripting/Internal/TEN/Flow/Fog/Fog.h"
#include "Scripting/Include/ScriptInterfaceLevel.h"
@ -27,18 +28,21 @@ static const std::unordered_map<std::string, LaraType> PLAYER_TYPES
struct Level : public ScriptInterfaceLevel
{
SkyLayer Layer1 = {};
SkyLayer Layer2 = {};
Fog Fog = {};
int LevelFarView = 0;
std::string AmbientTrack = {};
LensFlare LensFlare = {};
Starfield Starfield = {};
SkyLayer Layer1 = {};
SkyLayer Layer2 = {};
TEN::Scripting::Horizon Horizon1 = {};
TEN::Scripting::Horizon Horizon2 = {};
TEN::Scripting::LensFlare LensFlare = {};
TEN::Scripting::Starfield Starfield = {};
WeatherType Weather = WeatherType::None;
float WeatherStrength = 1.0f;
bool Storm = false;
bool Rumble = false;
LaraType Type = LaraType::Normal;
int LevelSecrets = 0;
@ -53,6 +57,7 @@ struct Level : public ScriptInterfaceLevel
float GetWeatherStrength() const override;
bool GetSkyLayerEnabled(int index) const override;
bool GetStormEnabled() const override;
bool GetRumbleEnabled() const override;
short GetSkyLayerSpeed(int index) const override;
RGBAColor8Byte GetSkyLayerColor(int index) const override;
LaraType GetLaraType() const override;
@ -68,6 +73,19 @@ struct Level : public ScriptInterfaceLevel
std::string GetAmbientTrack() const override;
bool GetResetHubEnabled() const override;
// Horizon getters
bool GetHorizonEnabled(int index) const override;
GAME_OBJECT_ID GetHorizonObjectID(int index) const override;
float GetHorizonTransparency(int index) const override;
Vector3 GetHorizonPosition(int index) const override;
EulerAngles GetHorizonOrientation(int index) const override;
Vector3 GetHorizonPrevPosition(int index) const override;
EulerAngles GetHorizonPrevOrientation(int index) const override;
// Compatibility
bool GetHorizon1Enabled() const;
void SetHorizon1Enabled(bool enabled);
// Lens flare getters
bool GetLensFlareEnabled() const override;
int GetLensFlareSunSpriteID() const override;
@ -82,4 +100,8 @@ struct Level : public ScriptInterfaceLevel
int GetStarfieldMeteorCount() const override;
int GetStarfieldMeteorSpawnDensity() const override;
float GetStarfieldMeteorVelocity() const override;
// Utility
const SkyLayer& GetSkyLayer(int index) const;
const TEN::Scripting::Horizon& GetHorizon(int index) const;
};

View file

@ -50,6 +50,8 @@ namespace TEN::Scripting
// @function Starfield
// @tparam int starCount Star count. __Max: 6000__
// @tparam int meteorCount Meteor count. __Max: 100__
// @tparam int meteorSpawnDensity Meteor spawn density.
// @tparam int meteorVel Meteor velocity.
// @treturn Starfield A new Starfield object.
Starfield::Starfield(int starCount, int meteorCount, int meteorSpawnDensity, float meteorVel)
{
@ -115,7 +117,7 @@ namespace TEN::Scripting
/// Set this starfield's number of stars.
// @function Starfield:SetStarCount
// @tparam int New star count.
// @tparam int count New star count.
void Starfield::SetStarCount(int count)
{
if (count < 0 || count > STAR_COUNT_MAX)
@ -126,7 +128,7 @@ namespace TEN::Scripting
/// Set this starfield's number of meteors.
// @function Starfield:SetMeteorCount
// @tparam int New meteor count.
// @tparam int count New meteor count.
void Starfield::SetMeteorCount(int count)
{
if (count < 0 || count > METEOR_COUNT_MAX)
@ -137,7 +139,7 @@ namespace TEN::Scripting
/// Set this starfield's meteor spawn density.
// @function Starfield:SetMeteorSpawnDensity
// @tparam int New meteor spawn density.
// @tparam int density New meteor spawn density.
void Starfield::SetMeteorSpawnDensity(int spawnDensity)
{
_meteorSpawnDensity = spawnDensity;
@ -145,7 +147,7 @@ namespace TEN::Scripting
/// Set this starfield's meteor velocity.
// @function Starfield:SetMeteorVelocity
// @tparam float New meteor velocity.
// @tparam float velocity New meteor velocity.
void Starfield::SetMeteorVelocity(float vel)
{
_meteorVelocity = vel;

View file

@ -244,7 +244,7 @@ void Moveable::Initialize()
/// Retrieve the object ID
// @function Moveable:GetObjectID
// @treturn int a number representing the ID of the object
// @treturn Objects.ObjID a number representing the ID of the object
GAME_OBJECT_ID Moveable::GetObjectID() const
{
return _moveable->ObjectNumber;

View file

@ -166,12 +166,12 @@ namespace TEN::Scripting::View
///Do a full-screen fade-in from black.
//@function FadeIn
//@tparam float speed (default 1.0). Speed in "amount" per second. A value of 1 will make the fade take one second.
//@tparam float speed (default 1.0). Speed in units per second. A value of 1 will make the fade take one second.
tableView.set_function(ScriptReserved_FadeIn, &FadeIn);
///Do a full-screen fade-to-black. The screen will remain black until a call to FadeIn.
//@function FadeOut
//@tparam float speed (default 1.0). Speed in "amount" per second. A value of 1 will make the fade take one second.
//@tparam float speed (default 1.0). Speed in units per second. A value of 1 will make the fade take one second.
tableView.set_function(ScriptReserved_FadeOut, &FadeOut);
///Check if fade out is complete and screen is completely black.
@ -261,7 +261,7 @@ namespace TEN::Scripting::View
/// Flash screen.
//@function FlashScreen
//@tparam Color color (default Color(255, 255, 255))
//@tparam float speed (default 1.0). Speed in "amount" per second. Value of 1 will make flash take one second. Clamped to [0.005, 1.0].
//@tparam float speed (default 1.0). Speed in units per second. Value of 1 will make flash take one second. Clamped to [0.005, 1.0].
tableView.set_function(ScriptReserved_FlashScreen, &FlashScreen);
/// Get the display resolution's aspect ratio.

View file

@ -41,6 +41,7 @@ float4 PS(PixelShaderInput input) : SV_TARGET
float3 light = saturate(Color.xyz - float3(input.FogBulbs.w, input.FogBulbs.w, input.FogBulbs.w) * 1.4f);
output.xyz *= light;
output.xyz += saturate(input.FogBulbs.xyz);
output.w *= Color.w;
return output;
}

View file

@ -13,6 +13,10 @@ namespace Save {
struct RoomVector;
struct LevelData;
struct LevelDataBuilder;
struct LevelDataT;
struct Room;
struct RoomBuilder;
struct RoomT;
@ -537,6 +541,416 @@ struct KeyValPair::Traits {
using type = KeyValPair;
};
struct LevelDataT : public flatbuffers::NativeTable {
typedef LevelData TableType;
int32_t level_far_view = 0;
bool storm_enabled = false;
bool rumble_enabled = false;
int32_t weather_type = 0;
float weather_strength = 0.0f;
bool fog_enabled = false;
int32_t fog_color = 0;
int32_t fog_min_distance = 0;
int32_t fog_max_distance = 0;
bool sky_layer_1_enabled = false;
int32_t sky_layer_1_color = 0;
int32_t sky_layer_1_speed = 0;
bool sky_layer_2_enabled = false;
int32_t sky_layer_2_color = 0;
int32_t sky_layer_2_speed = 0;
bool horizon1_enabled = false;
int32_t horizon1_object_id = 0;
std::unique_ptr<TEN::Save::Vector3> horizon1_position{};
std::unique_ptr<TEN::Save::EulerAngles> horizon1_orientation{};
float horizon1_transparency = 0.0f;
bool horizon2_enabled = false;
int32_t horizon2_object_id = 0;
std::unique_ptr<TEN::Save::Vector3> horizon2_position{};
std::unique_ptr<TEN::Save::EulerAngles> horizon2_orientation{};
float horizon2_transparency = 0.0f;
int32_t lensflare_sprite_id = 0;
float lensflare_pitch = 0.0f;
float lensflare_yaw = 0.0f;
int32_t lensflare_color = 0;
int32_t starfield_star_count = 0;
int32_t starfield_meteor_count = 0;
int32_t starfield_meteor_spawn_density = 0;
int32_t starfield_meteor_velocity = 0;
};
struct LevelData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef LevelDataT NativeTableType;
typedef LevelDataBuilder Builder;
struct Traits;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_LEVEL_FAR_VIEW = 4,
VT_STORM_ENABLED = 6,
VT_RUMBLE_ENABLED = 8,
VT_WEATHER_TYPE = 10,
VT_WEATHER_STRENGTH = 12,
VT_FOG_ENABLED = 14,
VT_FOG_COLOR = 16,
VT_FOG_MIN_DISTANCE = 18,
VT_FOG_MAX_DISTANCE = 20,
VT_SKY_LAYER_1_ENABLED = 22,
VT_SKY_LAYER_1_COLOR = 24,
VT_SKY_LAYER_1_SPEED = 26,
VT_SKY_LAYER_2_ENABLED = 28,
VT_SKY_LAYER_2_COLOR = 30,
VT_SKY_LAYER_2_SPEED = 32,
VT_HORIZON1_ENABLED = 34,
VT_HORIZON1_OBJECT_ID = 36,
VT_HORIZON1_POSITION = 38,
VT_HORIZON1_ORIENTATION = 40,
VT_HORIZON1_TRANSPARENCY = 42,
VT_HORIZON2_ENABLED = 44,
VT_HORIZON2_OBJECT_ID = 46,
VT_HORIZON2_POSITION = 48,
VT_HORIZON2_ORIENTATION = 50,
VT_HORIZON2_TRANSPARENCY = 52,
VT_LENSFLARE_SPRITE_ID = 54,
VT_LENSFLARE_PITCH = 56,
VT_LENSFLARE_YAW = 58,
VT_LENSFLARE_COLOR = 60,
VT_STARFIELD_STAR_COUNT = 62,
VT_STARFIELD_METEOR_COUNT = 64,
VT_STARFIELD_METEOR_SPAWN_DENSITY = 66,
VT_STARFIELD_METEOR_VELOCITY = 68
};
int32_t level_far_view() const {
return GetField<int32_t>(VT_LEVEL_FAR_VIEW, 0);
}
bool storm_enabled() const {
return GetField<uint8_t>(VT_STORM_ENABLED, 0) != 0;
}
bool rumble_enabled() const {
return GetField<uint8_t>(VT_RUMBLE_ENABLED, 0) != 0;
}
int32_t weather_type() const {
return GetField<int32_t>(VT_WEATHER_TYPE, 0);
}
float weather_strength() const {
return GetField<float>(VT_WEATHER_STRENGTH, 0.0f);
}
bool fog_enabled() const {
return GetField<uint8_t>(VT_FOG_ENABLED, 0) != 0;
}
int32_t fog_color() const {
return GetField<int32_t>(VT_FOG_COLOR, 0);
}
int32_t fog_min_distance() const {
return GetField<int32_t>(VT_FOG_MIN_DISTANCE, 0);
}
int32_t fog_max_distance() const {
return GetField<int32_t>(VT_FOG_MAX_DISTANCE, 0);
}
bool sky_layer_1_enabled() const {
return GetField<uint8_t>(VT_SKY_LAYER_1_ENABLED, 0) != 0;
}
int32_t sky_layer_1_color() const {
return GetField<int32_t>(VT_SKY_LAYER_1_COLOR, 0);
}
int32_t sky_layer_1_speed() const {
return GetField<int32_t>(VT_SKY_LAYER_1_SPEED, 0);
}
bool sky_layer_2_enabled() const {
return GetField<uint8_t>(VT_SKY_LAYER_2_ENABLED, 0) != 0;
}
int32_t sky_layer_2_color() const {
return GetField<int32_t>(VT_SKY_LAYER_2_COLOR, 0);
}
int32_t sky_layer_2_speed() const {
return GetField<int32_t>(VT_SKY_LAYER_2_SPEED, 0);
}
bool horizon1_enabled() const {
return GetField<uint8_t>(VT_HORIZON1_ENABLED, 0) != 0;
}
int32_t horizon1_object_id() const {
return GetField<int32_t>(VT_HORIZON1_OBJECT_ID, 0);
}
const TEN::Save::Vector3 *horizon1_position() const {
return GetStruct<const TEN::Save::Vector3 *>(VT_HORIZON1_POSITION);
}
const TEN::Save::EulerAngles *horizon1_orientation() const {
return GetStruct<const TEN::Save::EulerAngles *>(VT_HORIZON1_ORIENTATION);
}
float horizon1_transparency() const {
return GetField<float>(VT_HORIZON1_TRANSPARENCY, 0.0f);
}
bool horizon2_enabled() const {
return GetField<uint8_t>(VT_HORIZON2_ENABLED, 0) != 0;
}
int32_t horizon2_object_id() const {
return GetField<int32_t>(VT_HORIZON2_OBJECT_ID, 0);
}
const TEN::Save::Vector3 *horizon2_position() const {
return GetStruct<const TEN::Save::Vector3 *>(VT_HORIZON2_POSITION);
}
const TEN::Save::EulerAngles *horizon2_orientation() const {
return GetStruct<const TEN::Save::EulerAngles *>(VT_HORIZON2_ORIENTATION);
}
float horizon2_transparency() const {
return GetField<float>(VT_HORIZON2_TRANSPARENCY, 0.0f);
}
int32_t lensflare_sprite_id() const {
return GetField<int32_t>(VT_LENSFLARE_SPRITE_ID, 0);
}
float lensflare_pitch() const {
return GetField<float>(VT_LENSFLARE_PITCH, 0.0f);
}
float lensflare_yaw() const {
return GetField<float>(VT_LENSFLARE_YAW, 0.0f);
}
int32_t lensflare_color() const {
return GetField<int32_t>(VT_LENSFLARE_COLOR, 0);
}
int32_t starfield_star_count() const {
return GetField<int32_t>(VT_STARFIELD_STAR_COUNT, 0);
}
int32_t starfield_meteor_count() const {
return GetField<int32_t>(VT_STARFIELD_METEOR_COUNT, 0);
}
int32_t starfield_meteor_spawn_density() const {
return GetField<int32_t>(VT_STARFIELD_METEOR_SPAWN_DENSITY, 0);
}
int32_t starfield_meteor_velocity() const {
return GetField<int32_t>(VT_STARFIELD_METEOR_VELOCITY, 0);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<int32_t>(verifier, VT_LEVEL_FAR_VIEW) &&
VerifyField<uint8_t>(verifier, VT_STORM_ENABLED) &&
VerifyField<uint8_t>(verifier, VT_RUMBLE_ENABLED) &&
VerifyField<int32_t>(verifier, VT_WEATHER_TYPE) &&
VerifyField<float>(verifier, VT_WEATHER_STRENGTH) &&
VerifyField<uint8_t>(verifier, VT_FOG_ENABLED) &&
VerifyField<int32_t>(verifier, VT_FOG_COLOR) &&
VerifyField<int32_t>(verifier, VT_FOG_MIN_DISTANCE) &&
VerifyField<int32_t>(verifier, VT_FOG_MAX_DISTANCE) &&
VerifyField<uint8_t>(verifier, VT_SKY_LAYER_1_ENABLED) &&
VerifyField<int32_t>(verifier, VT_SKY_LAYER_1_COLOR) &&
VerifyField<int32_t>(verifier, VT_SKY_LAYER_1_SPEED) &&
VerifyField<uint8_t>(verifier, VT_SKY_LAYER_2_ENABLED) &&
VerifyField<int32_t>(verifier, VT_SKY_LAYER_2_COLOR) &&
VerifyField<int32_t>(verifier, VT_SKY_LAYER_2_SPEED) &&
VerifyField<uint8_t>(verifier, VT_HORIZON1_ENABLED) &&
VerifyField<int32_t>(verifier, VT_HORIZON1_OBJECT_ID) &&
VerifyField<TEN::Save::Vector3>(verifier, VT_HORIZON1_POSITION) &&
VerifyField<TEN::Save::EulerAngles>(verifier, VT_HORIZON1_ORIENTATION) &&
VerifyField<float>(verifier, VT_HORIZON1_TRANSPARENCY) &&
VerifyField<uint8_t>(verifier, VT_HORIZON2_ENABLED) &&
VerifyField<int32_t>(verifier, VT_HORIZON2_OBJECT_ID) &&
VerifyField<TEN::Save::Vector3>(verifier, VT_HORIZON2_POSITION) &&
VerifyField<TEN::Save::EulerAngles>(verifier, VT_HORIZON2_ORIENTATION) &&
VerifyField<float>(verifier, VT_HORIZON2_TRANSPARENCY) &&
VerifyField<int32_t>(verifier, VT_LENSFLARE_SPRITE_ID) &&
VerifyField<float>(verifier, VT_LENSFLARE_PITCH) &&
VerifyField<float>(verifier, VT_LENSFLARE_YAW) &&
VerifyField<int32_t>(verifier, VT_LENSFLARE_COLOR) &&
VerifyField<int32_t>(verifier, VT_STARFIELD_STAR_COUNT) &&
VerifyField<int32_t>(verifier, VT_STARFIELD_METEOR_COUNT) &&
VerifyField<int32_t>(verifier, VT_STARFIELD_METEOR_SPAWN_DENSITY) &&
VerifyField<int32_t>(verifier, VT_STARFIELD_METEOR_VELOCITY) &&
verifier.EndTable();
}
LevelDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
void UnPackTo(LevelDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
static flatbuffers::Offset<LevelData> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LevelDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
};
struct LevelDataBuilder {
typedef LevelData Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_level_far_view(int32_t level_far_view) {
fbb_.AddElement<int32_t>(LevelData::VT_LEVEL_FAR_VIEW, level_far_view, 0);
}
void add_storm_enabled(bool storm_enabled) {
fbb_.AddElement<uint8_t>(LevelData::VT_STORM_ENABLED, static_cast<uint8_t>(storm_enabled), 0);
}
void add_rumble_enabled(bool rumble_enabled) {
fbb_.AddElement<uint8_t>(LevelData::VT_RUMBLE_ENABLED, static_cast<uint8_t>(rumble_enabled), 0);
}
void add_weather_type(int32_t weather_type) {
fbb_.AddElement<int32_t>(LevelData::VT_WEATHER_TYPE, weather_type, 0);
}
void add_weather_strength(float weather_strength) {
fbb_.AddElement<float>(LevelData::VT_WEATHER_STRENGTH, weather_strength, 0.0f);
}
void add_fog_enabled(bool fog_enabled) {
fbb_.AddElement<uint8_t>(LevelData::VT_FOG_ENABLED, static_cast<uint8_t>(fog_enabled), 0);
}
void add_fog_color(int32_t fog_color) {
fbb_.AddElement<int32_t>(LevelData::VT_FOG_COLOR, fog_color, 0);
}
void add_fog_min_distance(int32_t fog_min_distance) {
fbb_.AddElement<int32_t>(LevelData::VT_FOG_MIN_DISTANCE, fog_min_distance, 0);
}
void add_fog_max_distance(int32_t fog_max_distance) {
fbb_.AddElement<int32_t>(LevelData::VT_FOG_MAX_DISTANCE, fog_max_distance, 0);
}
void add_sky_layer_1_enabled(bool sky_layer_1_enabled) {
fbb_.AddElement<uint8_t>(LevelData::VT_SKY_LAYER_1_ENABLED, static_cast<uint8_t>(sky_layer_1_enabled), 0);
}
void add_sky_layer_1_color(int32_t sky_layer_1_color) {
fbb_.AddElement<int32_t>(LevelData::VT_SKY_LAYER_1_COLOR, sky_layer_1_color, 0);
}
void add_sky_layer_1_speed(int32_t sky_layer_1_speed) {
fbb_.AddElement<int32_t>(LevelData::VT_SKY_LAYER_1_SPEED, sky_layer_1_speed, 0);
}
void add_sky_layer_2_enabled(bool sky_layer_2_enabled) {
fbb_.AddElement<uint8_t>(LevelData::VT_SKY_LAYER_2_ENABLED, static_cast<uint8_t>(sky_layer_2_enabled), 0);
}
void add_sky_layer_2_color(int32_t sky_layer_2_color) {
fbb_.AddElement<int32_t>(LevelData::VT_SKY_LAYER_2_COLOR, sky_layer_2_color, 0);
}
void add_sky_layer_2_speed(int32_t sky_layer_2_speed) {
fbb_.AddElement<int32_t>(LevelData::VT_SKY_LAYER_2_SPEED, sky_layer_2_speed, 0);
}
void add_horizon1_enabled(bool horizon1_enabled) {
fbb_.AddElement<uint8_t>(LevelData::VT_HORIZON1_ENABLED, static_cast<uint8_t>(horizon1_enabled), 0);
}
void add_horizon1_object_id(int32_t horizon1_object_id) {
fbb_.AddElement<int32_t>(LevelData::VT_HORIZON1_OBJECT_ID, horizon1_object_id, 0);
}
void add_horizon1_position(const TEN::Save::Vector3 *horizon1_position) {
fbb_.AddStruct(LevelData::VT_HORIZON1_POSITION, horizon1_position);
}
void add_horizon1_orientation(const TEN::Save::EulerAngles *horizon1_orientation) {
fbb_.AddStruct(LevelData::VT_HORIZON1_ORIENTATION, horizon1_orientation);
}
void add_horizon1_transparency(float horizon1_transparency) {
fbb_.AddElement<float>(LevelData::VT_HORIZON1_TRANSPARENCY, horizon1_transparency, 0.0f);
}
void add_horizon2_enabled(bool horizon2_enabled) {
fbb_.AddElement<uint8_t>(LevelData::VT_HORIZON2_ENABLED, static_cast<uint8_t>(horizon2_enabled), 0);
}
void add_horizon2_object_id(int32_t horizon2_object_id) {
fbb_.AddElement<int32_t>(LevelData::VT_HORIZON2_OBJECT_ID, horizon2_object_id, 0);
}
void add_horizon2_position(const TEN::Save::Vector3 *horizon2_position) {
fbb_.AddStruct(LevelData::VT_HORIZON2_POSITION, horizon2_position);
}
void add_horizon2_orientation(const TEN::Save::EulerAngles *horizon2_orientation) {
fbb_.AddStruct(LevelData::VT_HORIZON2_ORIENTATION, horizon2_orientation);
}
void add_horizon2_transparency(float horizon2_transparency) {
fbb_.AddElement<float>(LevelData::VT_HORIZON2_TRANSPARENCY, horizon2_transparency, 0.0f);
}
void add_lensflare_sprite_id(int32_t lensflare_sprite_id) {
fbb_.AddElement<int32_t>(LevelData::VT_LENSFLARE_SPRITE_ID, lensflare_sprite_id, 0);
}
void add_lensflare_pitch(float lensflare_pitch) {
fbb_.AddElement<float>(LevelData::VT_LENSFLARE_PITCH, lensflare_pitch, 0.0f);
}
void add_lensflare_yaw(float lensflare_yaw) {
fbb_.AddElement<float>(LevelData::VT_LENSFLARE_YAW, lensflare_yaw, 0.0f);
}
void add_lensflare_color(int32_t lensflare_color) {
fbb_.AddElement<int32_t>(LevelData::VT_LENSFLARE_COLOR, lensflare_color, 0);
}
void add_starfield_star_count(int32_t starfield_star_count) {
fbb_.AddElement<int32_t>(LevelData::VT_STARFIELD_STAR_COUNT, starfield_star_count, 0);
}
void add_starfield_meteor_count(int32_t starfield_meteor_count) {
fbb_.AddElement<int32_t>(LevelData::VT_STARFIELD_METEOR_COUNT, starfield_meteor_count, 0);
}
void add_starfield_meteor_spawn_density(int32_t starfield_meteor_spawn_density) {
fbb_.AddElement<int32_t>(LevelData::VT_STARFIELD_METEOR_SPAWN_DENSITY, starfield_meteor_spawn_density, 0);
}
void add_starfield_meteor_velocity(int32_t starfield_meteor_velocity) {
fbb_.AddElement<int32_t>(LevelData::VT_STARFIELD_METEOR_VELOCITY, starfield_meteor_velocity, 0);
}
explicit LevelDataBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
flatbuffers::Offset<LevelData> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<LevelData>(end);
return o;
}
};
inline flatbuffers::Offset<LevelData> CreateLevelData(
flatbuffers::FlatBufferBuilder &_fbb,
int32_t level_far_view = 0,
bool storm_enabled = false,
bool rumble_enabled = false,
int32_t weather_type = 0,
float weather_strength = 0.0f,
bool fog_enabled = false,
int32_t fog_color = 0,
int32_t fog_min_distance = 0,
int32_t fog_max_distance = 0,
bool sky_layer_1_enabled = false,
int32_t sky_layer_1_color = 0,
int32_t sky_layer_1_speed = 0,
bool sky_layer_2_enabled = false,
int32_t sky_layer_2_color = 0,
int32_t sky_layer_2_speed = 0,
bool horizon1_enabled = false,
int32_t horizon1_object_id = 0,
const TEN::Save::Vector3 *horizon1_position = 0,
const TEN::Save::EulerAngles *horizon1_orientation = 0,
float horizon1_transparency = 0.0f,
bool horizon2_enabled = false,
int32_t horizon2_object_id = 0,
const TEN::Save::Vector3 *horizon2_position = 0,
const TEN::Save::EulerAngles *horizon2_orientation = 0,
float horizon2_transparency = 0.0f,
int32_t lensflare_sprite_id = 0,
float lensflare_pitch = 0.0f,
float lensflare_yaw = 0.0f,
int32_t lensflare_color = 0,
int32_t starfield_star_count = 0,
int32_t starfield_meteor_count = 0,
int32_t starfield_meteor_spawn_density = 0,
int32_t starfield_meteor_velocity = 0) {
LevelDataBuilder builder_(_fbb);
builder_.add_starfield_meteor_velocity(starfield_meteor_velocity);
builder_.add_starfield_meteor_spawn_density(starfield_meteor_spawn_density);
builder_.add_starfield_meteor_count(starfield_meteor_count);
builder_.add_starfield_star_count(starfield_star_count);
builder_.add_lensflare_color(lensflare_color);
builder_.add_lensflare_yaw(lensflare_yaw);
builder_.add_lensflare_pitch(lensflare_pitch);
builder_.add_lensflare_sprite_id(lensflare_sprite_id);
builder_.add_horizon2_transparency(horizon2_transparency);
builder_.add_horizon2_orientation(horizon2_orientation);
builder_.add_horizon2_position(horizon2_position);
builder_.add_horizon2_object_id(horizon2_object_id);
builder_.add_horizon1_transparency(horizon1_transparency);
builder_.add_horizon1_orientation(horizon1_orientation);
builder_.add_horizon1_position(horizon1_position);
builder_.add_horizon1_object_id(horizon1_object_id);
builder_.add_sky_layer_2_speed(sky_layer_2_speed);
builder_.add_sky_layer_2_color(sky_layer_2_color);
builder_.add_sky_layer_1_speed(sky_layer_1_speed);
builder_.add_sky_layer_1_color(sky_layer_1_color);
builder_.add_fog_max_distance(fog_max_distance);
builder_.add_fog_min_distance(fog_min_distance);
builder_.add_fog_color(fog_color);
builder_.add_weather_strength(weather_strength);
builder_.add_weather_type(weather_type);
builder_.add_level_far_view(level_far_view);
builder_.add_horizon2_enabled(horizon2_enabled);
builder_.add_horizon1_enabled(horizon1_enabled);
builder_.add_sky_layer_2_enabled(sky_layer_2_enabled);
builder_.add_sky_layer_1_enabled(sky_layer_1_enabled);
builder_.add_fog_enabled(fog_enabled);
builder_.add_rumble_enabled(rumble_enabled);
builder_.add_storm_enabled(storm_enabled);
return builder_.Finish();
}
struct LevelData::Traits {
using type = LevelData;
static auto constexpr Create = CreateLevelData;
};
flatbuffers::Offset<LevelData> CreateLevelData(flatbuffers::FlatBufferBuilder &_fbb, const LevelDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
struct RoomT : public flatbuffers::NativeTable {
typedef Room TableType;
int32_t index = 0;
@ -7576,6 +7990,7 @@ struct SaveGameT : public flatbuffers::NativeTable {
std::unique_ptr<TEN::Save::SaveGameHeaderT> header{};
std::unique_ptr<TEN::Save::SaveGameStatisticsT> game{};
std::unique_ptr<TEN::Save::SaveGameStatisticsT> level{};
std::unique_ptr<TEN::Save::LevelDataT> level_data{};
int32_t secret_bits = 0;
std::unique_ptr<TEN::Save::CameraT> camera{};
std::unique_ptr<TEN::Save::LaraT> lara{};
@ -7641,61 +8056,62 @@ struct SaveGame FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
VT_HEADER = 4,
VT_GAME = 6,
VT_LEVEL = 8,
VT_SECRET_BITS = 10,
VT_CAMERA = 12,
VT_LARA = 14,
VT_ROOMS = 16,
VT_ITEMS = 18,
VT_NEXT_ITEM_FREE = 20,
VT_NEXT_ITEM_ACTIVE = 22,
VT_ROOM_ITEMS = 24,
VT_FISH_SWARM = 26,
VT_FXINFOS = 28,
VT_NEXT_FX_FREE = 30,
VT_NEXT_FX_ACTIVE = 32,
VT_FIXED_CAMERAS = 34,
VT_SINKS = 36,
VT_STATIC_MESHES = 38,
VT_FLYBY_CAMERAS = 40,
VT_PARTICLES = 42,
VT_RATS = 44,
VT_SPIDERS = 46,
VT_SCARABS = 48,
VT_BATS = 50,
VT_FLIP_MAPS = 52,
VT_FLIP_STATS = 54,
VT_FLIP_EFFECT = 56,
VT_FLIP_TIMER = 58,
VT_FLIP_STATUS = 60,
VT_CURRENT_FOV = 62,
VT_LAST_INV_ITEM = 64,
VT_ACTION_QUEUE = 66,
VT_SOUNDTRACKS = 68,
VT_CD_FLAGS = 70,
VT_POSTPROCESS_MODE = 72,
VT_POSTPROCESS_STRENGTH = 74,
VT_POSTPROCESS_TINT = 76,
VT_ROPE = 78,
VT_PENDULUM = 80,
VT_ALTERNATE_PENDULUM = 82,
VT_VOLUMES = 84,
VT_GLOBAL_EVENT_SETS = 86,
VT_VOLUME_EVENT_SETS = 88,
VT_SCRIPT_VARS = 90,
VT_CALLBACKS_PRE_START = 92,
VT_CALLBACKS_POST_START = 94,
VT_CALLBACKS_PRE_END = 96,
VT_CALLBACKS_POST_END = 98,
VT_CALLBACKS_PRE_SAVE = 100,
VT_CALLBACKS_POST_SAVE = 102,
VT_CALLBACKS_PRE_LOAD = 104,
VT_CALLBACKS_POST_LOAD = 106,
VT_CALLBACKS_PRE_LOOP = 108,
VT_CALLBACKS_POST_LOOP = 110,
VT_CALLBACKS_PRE_USEITEM = 112,
VT_CALLBACKS_POST_USEITEM = 114,
VT_CALLBACKS_PRE_FREEZE = 116,
VT_CALLBACKS_POST_FREEZE = 118
VT_LEVEL_DATA = 10,
VT_SECRET_BITS = 12,
VT_CAMERA = 14,
VT_LARA = 16,
VT_ROOMS = 18,
VT_ITEMS = 20,
VT_NEXT_ITEM_FREE = 22,
VT_NEXT_ITEM_ACTIVE = 24,
VT_ROOM_ITEMS = 26,
VT_FISH_SWARM = 28,
VT_FXINFOS = 30,
VT_NEXT_FX_FREE = 32,
VT_NEXT_FX_ACTIVE = 34,
VT_FIXED_CAMERAS = 36,
VT_SINKS = 38,
VT_STATIC_MESHES = 40,
VT_FLYBY_CAMERAS = 42,
VT_PARTICLES = 44,
VT_RATS = 46,
VT_SPIDERS = 48,
VT_SCARABS = 50,
VT_BATS = 52,
VT_FLIP_MAPS = 54,
VT_FLIP_STATS = 56,
VT_FLIP_EFFECT = 58,
VT_FLIP_TIMER = 60,
VT_FLIP_STATUS = 62,
VT_CURRENT_FOV = 64,
VT_LAST_INV_ITEM = 66,
VT_ACTION_QUEUE = 68,
VT_SOUNDTRACKS = 70,
VT_CD_FLAGS = 72,
VT_POSTPROCESS_MODE = 74,
VT_POSTPROCESS_STRENGTH = 76,
VT_POSTPROCESS_TINT = 78,
VT_ROPE = 80,
VT_PENDULUM = 82,
VT_ALTERNATE_PENDULUM = 84,
VT_VOLUMES = 86,
VT_GLOBAL_EVENT_SETS = 88,
VT_VOLUME_EVENT_SETS = 90,
VT_SCRIPT_VARS = 92,
VT_CALLBACKS_PRE_START = 94,
VT_CALLBACKS_POST_START = 96,
VT_CALLBACKS_PRE_END = 98,
VT_CALLBACKS_POST_END = 100,
VT_CALLBACKS_PRE_SAVE = 102,
VT_CALLBACKS_POST_SAVE = 104,
VT_CALLBACKS_PRE_LOAD = 106,
VT_CALLBACKS_POST_LOAD = 108,
VT_CALLBACKS_PRE_LOOP = 110,
VT_CALLBACKS_POST_LOOP = 112,
VT_CALLBACKS_PRE_USEITEM = 114,
VT_CALLBACKS_POST_USEITEM = 116,
VT_CALLBACKS_PRE_FREEZE = 118,
VT_CALLBACKS_POST_FREEZE = 120
};
const TEN::Save::SaveGameHeader *header() const {
return GetPointer<const TEN::Save::SaveGameHeader *>(VT_HEADER);
@ -7706,6 +8122,9 @@ struct SaveGame FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
const TEN::Save::SaveGameStatistics *level() const {
return GetPointer<const TEN::Save::SaveGameStatistics *>(VT_LEVEL);
}
const TEN::Save::LevelData *level_data() const {
return GetPointer<const TEN::Save::LevelData *>(VT_LEVEL_DATA);
}
int32_t secret_bits() const {
return GetField<int32_t>(VT_SECRET_BITS, 0);
}
@ -7879,6 +8298,8 @@ struct SaveGame FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
verifier.VerifyTable(game()) &&
VerifyOffset(verifier, VT_LEVEL) &&
verifier.VerifyTable(level()) &&
VerifyOffset(verifier, VT_LEVEL_DATA) &&
verifier.VerifyTable(level_data()) &&
VerifyField<int32_t>(verifier, VT_SECRET_BITS) &&
VerifyOffset(verifier, VT_CAMERA) &&
verifier.VerifyTable(camera()) &&
@ -8027,6 +8448,9 @@ struct SaveGameBuilder {
void add_level(flatbuffers::Offset<TEN::Save::SaveGameStatistics> level) {
fbb_.AddOffset(SaveGame::VT_LEVEL, level);
}
void add_level_data(flatbuffers::Offset<TEN::Save::LevelData> level_data) {
fbb_.AddOffset(SaveGame::VT_LEVEL_DATA, level_data);
}
void add_secret_bits(int32_t secret_bits) {
fbb_.AddElement<int32_t>(SaveGame::VT_SECRET_BITS, secret_bits, 0);
}
@ -8208,6 +8632,7 @@ inline flatbuffers::Offset<SaveGame> CreateSaveGame(
flatbuffers::Offset<TEN::Save::SaveGameHeader> header = 0,
flatbuffers::Offset<TEN::Save::SaveGameStatistics> game = 0,
flatbuffers::Offset<TEN::Save::SaveGameStatistics> level = 0,
flatbuffers::Offset<TEN::Save::LevelData> level_data = 0,
int32_t secret_bits = 0,
flatbuffers::Offset<TEN::Save::Camera> camera = 0,
flatbuffers::Offset<TEN::Save::Lara> lara = 0,
@ -8318,6 +8743,7 @@ inline flatbuffers::Offset<SaveGame> CreateSaveGame(
builder_.add_lara(lara);
builder_.add_camera(camera);
builder_.add_secret_bits(secret_bits);
builder_.add_level_data(level_data);
builder_.add_level(level);
builder_.add_game(game);
builder_.add_header(header);
@ -8335,6 +8761,7 @@ inline flatbuffers::Offset<SaveGame> CreateSaveGameDirect(
flatbuffers::Offset<TEN::Save::SaveGameHeader> header = 0,
flatbuffers::Offset<TEN::Save::SaveGameStatistics> game = 0,
flatbuffers::Offset<TEN::Save::SaveGameStatistics> level = 0,
flatbuffers::Offset<TEN::Save::LevelData> level_data = 0,
int32_t secret_bits = 0,
flatbuffers::Offset<TEN::Save::Camera> camera = 0,
flatbuffers::Offset<TEN::Save::Lara> lara = 0,
@ -8431,6 +8858,7 @@ inline flatbuffers::Offset<SaveGame> CreateSaveGameDirect(
header,
game,
level,
level_data,
secret_bits,
camera,
lara,
@ -8490,6 +8918,128 @@ inline flatbuffers::Offset<SaveGame> CreateSaveGameDirect(
flatbuffers::Offset<SaveGame> CreateSaveGame(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
inline LevelDataT *LevelData::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
auto _o = std::make_unique<LevelDataT>();
UnPackTo(_o.get(), _resolver);
return _o.release();
}
inline void LevelData::UnPackTo(LevelDataT *_o, const flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = level_far_view(); _o->level_far_view = _e; }
{ auto _e = storm_enabled(); _o->storm_enabled = _e; }
{ auto _e = rumble_enabled(); _o->rumble_enabled = _e; }
{ auto _e = weather_type(); _o->weather_type = _e; }
{ auto _e = weather_strength(); _o->weather_strength = _e; }
{ auto _e = fog_enabled(); _o->fog_enabled = _e; }
{ auto _e = fog_color(); _o->fog_color = _e; }
{ auto _e = fog_min_distance(); _o->fog_min_distance = _e; }
{ auto _e = fog_max_distance(); _o->fog_max_distance = _e; }
{ auto _e = sky_layer_1_enabled(); _o->sky_layer_1_enabled = _e; }
{ auto _e = sky_layer_1_color(); _o->sky_layer_1_color = _e; }
{ auto _e = sky_layer_1_speed(); _o->sky_layer_1_speed = _e; }
{ auto _e = sky_layer_2_enabled(); _o->sky_layer_2_enabled = _e; }
{ auto _e = sky_layer_2_color(); _o->sky_layer_2_color = _e; }
{ auto _e = sky_layer_2_speed(); _o->sky_layer_2_speed = _e; }
{ auto _e = horizon1_enabled(); _o->horizon1_enabled = _e; }
{ auto _e = horizon1_object_id(); _o->horizon1_object_id = _e; }
{ auto _e = horizon1_position(); if (_e) _o->horizon1_position = std::unique_ptr<TEN::Save::Vector3>(new TEN::Save::Vector3(*_e)); }
{ auto _e = horizon1_orientation(); if (_e) _o->horizon1_orientation = std::unique_ptr<TEN::Save::EulerAngles>(new TEN::Save::EulerAngles(*_e)); }
{ auto _e = horizon1_transparency(); _o->horizon1_transparency = _e; }
{ auto _e = horizon2_enabled(); _o->horizon2_enabled = _e; }
{ auto _e = horizon2_object_id(); _o->horizon2_object_id = _e; }
{ auto _e = horizon2_position(); if (_e) _o->horizon2_position = std::unique_ptr<TEN::Save::Vector3>(new TEN::Save::Vector3(*_e)); }
{ auto _e = horizon2_orientation(); if (_e) _o->horizon2_orientation = std::unique_ptr<TEN::Save::EulerAngles>(new TEN::Save::EulerAngles(*_e)); }
{ auto _e = horizon2_transparency(); _o->horizon2_transparency = _e; }
{ auto _e = lensflare_sprite_id(); _o->lensflare_sprite_id = _e; }
{ auto _e = lensflare_pitch(); _o->lensflare_pitch = _e; }
{ auto _e = lensflare_yaw(); _o->lensflare_yaw = _e; }
{ auto _e = lensflare_color(); _o->lensflare_color = _e; }
{ auto _e = starfield_star_count(); _o->starfield_star_count = _e; }
{ auto _e = starfield_meteor_count(); _o->starfield_meteor_count = _e; }
{ auto _e = starfield_meteor_spawn_density(); _o->starfield_meteor_spawn_density = _e; }
{ auto _e = starfield_meteor_velocity(); _o->starfield_meteor_velocity = _e; }
}
inline flatbuffers::Offset<LevelData> LevelData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LevelDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
return CreateLevelData(_fbb, _o, _rehasher);
}
inline flatbuffers::Offset<LevelData> CreateLevelData(flatbuffers::FlatBufferBuilder &_fbb, const LevelDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
(void)_rehasher;
(void)_o;
struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LevelDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _level_far_view = _o->level_far_view;
auto _storm_enabled = _o->storm_enabled;
auto _rumble_enabled = _o->rumble_enabled;
auto _weather_type = _o->weather_type;
auto _weather_strength = _o->weather_strength;
auto _fog_enabled = _o->fog_enabled;
auto _fog_color = _o->fog_color;
auto _fog_min_distance = _o->fog_min_distance;
auto _fog_max_distance = _o->fog_max_distance;
auto _sky_layer_1_enabled = _o->sky_layer_1_enabled;
auto _sky_layer_1_color = _o->sky_layer_1_color;
auto _sky_layer_1_speed = _o->sky_layer_1_speed;
auto _sky_layer_2_enabled = _o->sky_layer_2_enabled;
auto _sky_layer_2_color = _o->sky_layer_2_color;
auto _sky_layer_2_speed = _o->sky_layer_2_speed;
auto _horizon1_enabled = _o->horizon1_enabled;
auto _horizon1_object_id = _o->horizon1_object_id;
auto _horizon1_position = _o->horizon1_position ? _o->horizon1_position.get() : 0;
auto _horizon1_orientation = _o->horizon1_orientation ? _o->horizon1_orientation.get() : 0;
auto _horizon1_transparency = _o->horizon1_transparency;
auto _horizon2_enabled = _o->horizon2_enabled;
auto _horizon2_object_id = _o->horizon2_object_id;
auto _horizon2_position = _o->horizon2_position ? _o->horizon2_position.get() : 0;
auto _horizon2_orientation = _o->horizon2_orientation ? _o->horizon2_orientation.get() : 0;
auto _horizon2_transparency = _o->horizon2_transparency;
auto _lensflare_sprite_id = _o->lensflare_sprite_id;
auto _lensflare_pitch = _o->lensflare_pitch;
auto _lensflare_yaw = _o->lensflare_yaw;
auto _lensflare_color = _o->lensflare_color;
auto _starfield_star_count = _o->starfield_star_count;
auto _starfield_meteor_count = _o->starfield_meteor_count;
auto _starfield_meteor_spawn_density = _o->starfield_meteor_spawn_density;
auto _starfield_meteor_velocity = _o->starfield_meteor_velocity;
return TEN::Save::CreateLevelData(
_fbb,
_level_far_view,
_storm_enabled,
_rumble_enabled,
_weather_type,
_weather_strength,
_fog_enabled,
_fog_color,
_fog_min_distance,
_fog_max_distance,
_sky_layer_1_enabled,
_sky_layer_1_color,
_sky_layer_1_speed,
_sky_layer_2_enabled,
_sky_layer_2_color,
_sky_layer_2_speed,
_horizon1_enabled,
_horizon1_object_id,
_horizon1_position,
_horizon1_orientation,
_horizon1_transparency,
_horizon2_enabled,
_horizon2_object_id,
_horizon2_position,
_horizon2_orientation,
_horizon2_transparency,
_lensflare_sprite_id,
_lensflare_pitch,
_lensflare_yaw,
_lensflare_color,
_starfield_star_count,
_starfield_meteor_count,
_starfield_meteor_spawn_density,
_starfield_meteor_velocity);
}
inline RoomT *Room::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
auto _o = std::make_unique<RoomT>();
UnPackTo(_o.get(), _resolver);
@ -10763,6 +11313,7 @@ inline void SaveGame::UnPackTo(SaveGameT *_o, const flatbuffers::resolver_functi
{ auto _e = header(); if (_e) _o->header = std::unique_ptr<TEN::Save::SaveGameHeaderT>(_e->UnPack(_resolver)); }
{ auto _e = game(); if (_e) _o->game = std::unique_ptr<TEN::Save::SaveGameStatisticsT>(_e->UnPack(_resolver)); }
{ auto _e = level(); if (_e) _o->level = std::unique_ptr<TEN::Save::SaveGameStatisticsT>(_e->UnPack(_resolver)); }
{ auto _e = level_data(); if (_e) _o->level_data = std::unique_ptr<TEN::Save::LevelDataT>(_e->UnPack(_resolver)); }
{ auto _e = secret_bits(); _o->secret_bits = _e; }
{ auto _e = camera(); if (_e) _o->camera = std::unique_ptr<TEN::Save::CameraT>(_e->UnPack(_resolver)); }
{ auto _e = lara(); if (_e) _o->lara = std::unique_ptr<TEN::Save::LaraT>(_e->UnPack(_resolver)); }
@ -10831,6 +11382,7 @@ inline flatbuffers::Offset<SaveGame> CreateSaveGame(flatbuffers::FlatBufferBuild
auto _header = _o->header ? CreateSaveGameHeader(_fbb, _o->header.get(), _rehasher) : 0;
auto _game = _o->game ? CreateSaveGameStatistics(_fbb, _o->game.get(), _rehasher) : 0;
auto _level = _o->level ? CreateSaveGameStatistics(_fbb, _o->level.get(), _rehasher) : 0;
auto _level_data = _o->level_data ? CreateLevelData(_fbb, _o->level_data.get(), _rehasher) : 0;
auto _secret_bits = _o->secret_bits;
auto _camera = _o->camera ? CreateCamera(_fbb, _o->camera.get(), _rehasher) : 0;
auto _lara = _o->lara ? CreateLara(_fbb, _o->lara.get(), _rehasher) : 0;
@ -10891,6 +11443,7 @@ inline flatbuffers::Offset<SaveGame> CreateSaveGame(flatbuffers::FlatBufferBuild
_header,
_game,
_level,
_level_data,
_secret_bits,
_camera,
_lara,

View file

@ -6,6 +6,50 @@ struct RoomVector {
y_location: uint32;
}
table LevelData {
level_far_view: int32;
storm_enabled: bool;
rumble_enabled: bool;
weather_type: int32;
weather_strength: float;
fog_enabled: bool;
fog_color: int32;
fog_min_distance: int32;
fog_max_distance: int32;
sky_layer_1_enabled: bool;
sky_layer_1_color: int32;
sky_layer_1_speed: int32;
sky_layer_2_enabled: bool;
sky_layer_2_color: int32;
sky_layer_2_speed: int32;
horizon1_enabled: bool;
horizon1_object_id: int32;
horizon1_position: Vector3;
horizon1_orientation: EulerAngles;
horizon1_transparency: float;
horizon2_enabled: bool;
horizon2_object_id: int32;
horizon2_position: Vector3;
horizon2_orientation: EulerAngles;
horizon2_transparency: float;
lensflare_sprite_id: int32;
lensflare_pitch: float;
lensflare_yaw: float;
lensflare_color: int32;
starfield_star_count: int32;
starfield_meteor_count: int32;
starfield_meteor_spawn_density: int32;
starfield_meteor_velocity: int32;
}
table Room {
index: int32;
name: string;
@ -548,6 +592,7 @@ table SaveGame {
header: SaveGameHeader;
game: SaveGameStatistics;
level: SaveGameStatistics;
level_data: LevelData;
secret_bits: int32;
camera: Camera;
lara: Lara;
@ -579,6 +624,7 @@ table SaveGame {
action_queue: [int32];
soundtracks: [Soundtrack];
cd_flags: [int32];
postprocess_mode: int32;
postprocess_strength: float;
postprocess_tint: Vector3;

View file

@ -888,6 +888,7 @@ if not exist "%ScriptsDir%\Strings.lua" xcopy /Y "$(SolutionDir)Scripts\Strings.
<ClInclude Include="Scripting\Internal\TEN\Effects\ParticleAnimTypes.h" />
<ClInclude Include="Scripting\Internal\TEN\Collision\MaterialTypes.h" />
<ClInclude Include="Scripting\Internal\TEN\Collision\Probe.h" />
<ClInclude Include="Scripting\Internal\TEN\Flow\Horizon\Horizon.h" />
<ClInclude Include="Scripting\Internal\TEN\Objects\Lara\HandStatuses.h" />
<ClInclude Include="Scripting\Internal\TEN\Objects\Lara\WeaponTypes.h" />
<ClInclude Include="Scripting\Internal\TEN\Flow\Enums\ErrorModes.h" />
@ -1341,6 +1342,7 @@ if not exist "%ScriptsDir%\Strings.lua" xcopy /Y "$(SolutionDir)Scripts\Strings.
<ClCompile Include="Scripting\Internal\ScriptInterfaceState.cpp" />
<ClCompile Include="Scripting\Internal\ScriptUtil.cpp" />
<ClCompile Include="Scripting\Internal\TEN\Collision\Probe.cpp" />
<ClCompile Include="Scripting\Internal\TEN\Flow\Horizon\Horizon.cpp" />
<ClCompile Include="Scripting\Internal\TEN\Flow\Statistics\Statistics.cpp" />
<ClCompile Include="Scripting\Internal\TEN\Types\Color\Color.cpp" />
<ClCompile Include="Scripting\Internal\TEN\Types\Time\Time.cpp" />