TombEngine/Scripts/Gameflow.lua
Lwmte 222177f45b
Mirrors (#1519)
* WIP TR4 style mirrors

* Fixed broken previous commit

* Added debris and effects drawing in mirrored rooms;
Some optimizations for early skip non mirrored items;

* Implemented mirrors in file format

* Use default argument value for ReadCount

* Use emplace_back and camera room number

* Fixed items culling in mirror rooms;
Changed file format for having also virtual room;

* Cached reflection matrix of mirrors at load time;
Fixed lighting in mirrored items;
Added bad cull mode after mirrore debrises drawing;
Added mirroring of dynamic lights;

* Fixed ambient occlusion in mirrored rooms

* Fixed random statics positions while shooting

* Added logic for hiding selectively reflecting moveables and statics;
Added enabled flag for disabling mirrros in the future with LUA;

* Simplify renderer code, remove excessive if statements

* Update level.cpp

* Decopypaste more mirror-related code

* More decopypasting, rename inline function, remove unneeded arg

* Remove unnecessary inline, dont reflect room lights

* Fixed billboards, reintroduce ReflectVectorOptionally

* Fixed dynamic lights

* Update RendererDraw.cpp

* Fixed 3D sprites mirroring

* Draw reflections also when Lara is in any of mirrored rooms, not only camera

* Remove unrelated changes

* Remove lambdas

* Rename fields for consistency

* Reorganize renderer code a little

* Rename

* Spawn mirrored dynamic lights in Lara rooms too

* Update RendererDraw.cpp

* Add option to reflect sprites

* Update CHANGELOG.md

* Fixed mirrors on savegame reloading

* Fix Lara not mirroring when using binoculars

* Continuation of previous fix

* Fixed 3D non-sorted sprites mirroring

* Fixed various binocular / lasersight issues

* Fix meshswap, if object is not present

* Don't perform binocular animations if binocular meshswap is not present

* Rename CamOldPos and use more consistent type for it

* Update title.bin

* Fixed #1521

* Fixed #1522

* Interpolate Lara flare light, hide target highlighters in binos

* Fix #1525

* Fixed postprocessing order and precompile shaders to speed-up loading

* Fixed #1524

* Fixed silent crash if several Lara objects are present in level near dynamic light with shadow

* Implement proper soft shadows

* Disable self-shadowing for now, as it's causing visual glitches

* Update RendererInit.cpp

* Update CHANGELOG.md

* Update CHANGELOG.md

* Formatting pass

* Revert "Formatting pass"

This reverts commit 88a8ba24de.

* Reapply "Formatting pass"

This reverts commit becd24da93.

* Update RendererFrame.cpp

* Final formatting pass

---------

Co-authored-by: MontyTRC89 <montyhammet@hotmail.it>
Co-authored-by: Jakub <80340234+Jakub768@users.noreply.github.com>
Co-authored-by: Sezz <sezzary@outlook.com>
2024-12-25 10:21:07 +02:00

129 lines
2.5 KiB
Lua

-- Place in this Lua script all the levels of your game
-- Title is mandatory and must be the first level.
-- Intro image is a splash screen which appears before actual loading screen.
-- If you don't want it to appear, just remove this line.
Flow.SetIntroImagePath("Screens\\main.jpg")
-- Set overall amount of secrets in game.
-- If set to 0, secrets won't be displayed in statistics.
Flow.SetTotalSecretCount(5)
-- Enable/Disable Point Filter (square, unsmoothed pixels).
Flow.EnablePointFilter(false)
-- Enable/Disable saving and loading of savegames.
Flow.EnableLoadSave(true)
-- Disable/enable flycheat globally
Flow.EnableFlyCheat(true)
-- Disable/enable Lara drawing in title level
Flow.EnableLaraInTitle(false)
-- Disable/enable level selection in title level
Flow.EnableLevelSelect(true)
-- Disable/enable mass pickup (collect all pickups at once)
Flow.EnableMassPickup(true)
--------------------------------------------------
-- Title level
title = Level.new()
title.ambientTrack = "108"
title.levelFile = "Data\\title.ten"
title.scriptFile = "Scripts\\Levels\\title.lua"
title.loadScreenFile = "Screens\\Main.png"
Flow.AddLevel(title)
--------------------------------------------------
-- First test level
test = Level.new()
test.nameKey = "level_test"
test.scriptFile = "Scripts\\Levels\\New_Level.lua"
test.ambientTrack = "108"
test.levelFile = "Data\\Tut1_water.ten"
test.loadScreenFile = "Screens\\rome.jpg"
-- 0 is no weather, 1 is rain, 2 is snow.
-- Strength varies from 0 to 1 (floating-point value, e.g. 0.5 means half-strength).
test.weather = 0
test.weatherStrength = 1
test.horizon = true
test.farView = 20
test.layer1 = Flow.SkyLayer.new(Color.new(255, 0, 0), 15)
test.fog = Flow.Fog.new(Color.new(0, 0, 0), 12, 20)
-- Presets for inventory item placement.
test.objects = {
InventoryItem.new(
"tut1_ba_cartouche1",
ObjID.PUZZLE_ITEM3_COMBO1,
0,
0.5,
Rotation.new(0, 0, 0),
RotationAxis.Y,
-1,
ItemAction.USE
),
InventoryItem.new(
"tut1_ba_cartouche2",
ObjID.PUZZLE_ITEM3_COMBO2,
0,
0.5,
Rotation.new(0, 0, 0),
RotationAxis.Y,
-1,
ItemAction.USE
),
InventoryItem.new(
"tut1_ba_cartouche",
ObjID.PUZZLE_ITEM3,
0,
0.5,
Rotation.new(0, 0, 0),
RotationAxis.Y,
-1,
ItemAction.USE
),
InventoryItem.new(
"tut1_hand_orion",
ObjID.PUZZLE_ITEM6,
0,
0.5,
Rotation.new(270, 180, 0),
RotationAxis.Y,
-1,
ItemAction.USE
),
InventoryItem.new(
"tut1_hand_sirius",
ObjID.PUZZLE_ITEM8,
0,
0.5,
Rotation.new(270, 180, 0),
RotationAxis.X,
-1,
ItemAction.USE
)
}
Flow.AddLevel(test)