From d19d56acee376c255df6fbde419b47c4954c304f Mon Sep 17 00:00:00 2001 From: TrainWrack <120750885+TrainWrack@users.noreply.github.com> Date: Wed, 5 Mar 2025 03:13:48 -0500 Subject: [PATCH] Collision Class (#1579) * First Commit * Make ScriptCollision class * Fix typo * Return correct types * Use NO_HEIGHT * Implement GetSurfaceMaterial * Add enums * Added death, climbable wall, monkeybar * FIx angle * Revise things * Make "Collision" script module; add IsOutOfBounds() method * Rename IsOutOfBounds() * Allow getting floor or ceiling material type * Don't need IsWall() * Update Collision.cpp * Restore IsWall() * Rename class to "Probe"; start docs; make steepness inquirers return an optional * Update Probe.cpp * Update class name in doc * Update Probe.cpp * add GetRoomName * UpdateEnums * Update MaterialType enum; make room name getting more local * Revise constructors; update doc * Update Probe.cpp * Generate html docs * Slightly clearer doc comments * Convert spaces to tabs * Update Probe.cpp * Update Probe.cpp * Rename parameters * Update Probe.cpp * ScriptProbe -> Probe * ExposeGetRoom * Register Collision.MaterialType table; Enable ClimbWall again. * Cleanup * Docs revision * Update CHANGELOG.md * Moved names to script reserved names * Fixed incorrect namespace for probe * Use consistent names; cleanup * Make argument optional; fix doc * Update Probe.cpp * Add missing includes * Add Preview() method; update docs * Add constant --------- Co-authored-by: Sezz Co-authored-by: Lwmte <3331699+Lwmte@users.noreply.github.com> --- CHANGELOG.md | 2 + Documentation/doc/1 modules/Effects.html | 2 + Documentation/doc/1 modules/Flow.html | 2 + Documentation/doc/1 modules/Input.html | 2 + Documentation/doc/1 modules/Inventory.html | 2 + Documentation/doc/1 modules/Logic.html | 2 + Documentation/doc/1 modules/Objects.html | 2 + Documentation/doc/1 modules/Sound.html | 2 + Documentation/doc/1 modules/Strings.html | 2 + Documentation/doc/1 modules/Util.html | 2 + Documentation/doc/1 modules/View.html | 2 + .../doc/2 classes/Collision.Probe.html | 694 ++++++++++++++++++ Documentation/doc/2 classes/Flow.Level.html | 2 + .../doc/2 classes/Flow.Settings.html | 2 + .../doc/2 classes/Flow.Statistics.html | 2 + .../doc/2 classes/Objects.AIObject.html | 2 + .../doc/2 classes/Objects.Camera.html | 2 + .../doc/2 classes/Objects.LaraObject.html | 2 + .../doc/2 classes/Objects.Moveable.html | 2 + Documentation/doc/2 classes/Objects.Room.html | 2 + Documentation/doc/2 classes/Objects.Sink.html | 2 + .../doc/2 classes/Objects.SoundSource.html | 2 + .../doc/2 classes/Objects.Static.html | 2 + .../doc/2 classes/Objects.Volume.html | 2 + .../doc/2 classes/Strings.DisplayString.html | 2 + .../doc/2 classes/View.DisplaySprite.html | 2 + .../doc/3 primitive classes/Color.html | 2 + .../doc/3 primitive classes/Flow.Fog.html | 2 + .../Flow.InventoryItem.html | 2 + .../3 primitive classes/Flow.LensFlare.html | 2 + .../3 primitive classes/Flow.SkyLayer.html | 2 + .../3 primitive classes/Flow.Starfield.html | 2 + .../doc/3 primitive classes/Rotation.html | 2 + .../doc/3 primitive classes/Time.html | 2 + .../doc/3 primitive classes/Vec2.html | 2 + .../doc/3 primitive classes/Vec3.html | 2 + .../doc/4 enums/Collision.MaterialType.html | 189 +++++ .../doc/4 enums/Effects.BlendID.html | 2 + .../doc/4 enums/Effects.EffectID.html | 2 + Documentation/doc/4 enums/Flow.ErrorMode.html | 2 + .../doc/4 enums/Flow.FreezeMode.html | 2 + .../doc/4 enums/Flow.GameStatus.html | 2 + Documentation/doc/4 enums/Input.ActionID.html | 2 + .../doc/4 enums/Objects.AmmoType.html | 2 + .../doc/4 enums/Objects.HandStatus.html | 2 + .../doc/4 enums/Objects.MoveableStatus.html | 2 + Documentation/doc/4 enums/Objects.ObjID.html | 2 + .../doc/4 enums/Objects.RoomFlagID.html | 2 + .../doc/4 enums/Objects.RoomReverb.html | 2 + .../doc/4 enums/Objects.WeaponType.html | 2 + .../doc/4 enums/Sound.SoundTrackType.html | 2 + .../4 enums/Strings.DisplayStringOption.html | 2 + Documentation/doc/4 enums/Util.LogLevel.html | 2 + Documentation/doc/4 enums/View.AlignMode.html | 2 + .../doc/4 enums/View.CameraType.html | 2 + .../doc/4 enums/View.PostProcessMode.html | 2 + Documentation/doc/4 enums/View.ScaleMode.html | 2 + .../doc/5 lua utility modules/Diary.html | 2 + .../5 lua utility modules/EventSequence.html | 2 + .../doc/5 lua utility modules/Timer.html | 2 + .../doc/5 lua utility modules/Type.html | 2 + Documentation/doc/index.html | 10 + TombEngine/Game/collision/floordata.h | 2 +- TombEngine/Game/room.cpp | 1 + .../Scripting/Internal/ReservedScriptNames.h | 31 +- .../Internal/ScriptInterfaceState.cpp | 2 + .../Internal/TEN/Collision/MaterialTypes.h | 64 ++ .../Internal/TEN/Collision/Probe.cpp | 376 ++++++++++ .../Scripting/Internal/TEN/Collision/Probe.h | 70 ++ .../Internal/TEN/Flow/FlowHandler.cpp | 5 +- .../TEN/Objects/Moveable/MoveableStatuses.h | 2 +- TombEngine/TombEngine.vcxproj | 3 + 72 files changed, 1563 insertions(+), 4 deletions(-) create mode 100644 Documentation/doc/2 classes/Collision.Probe.html create mode 100644 Documentation/doc/4 enums/Collision.MaterialType.html create mode 100644 TombEngine/Scripting/Internal/TEN/Collision/MaterialTypes.h create mode 100644 TombEngine/Scripting/Internal/TEN/Collision/Probe.cpp create mode 100644 TombEngine/Scripting/Internal/TEN/Collision/Probe.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 916327aee..afaefc588 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,8 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): - You must use this version: https://github.com/TombEngine/Resources/raw/refs/heads/main/Wad2%20Objects/Interactables/TEN_Waterfall_Emitter.wad2 ### Lua API changes +* Added Lerp() function to the Rotation object to allow linear interpolation between rotations. +* Added Collision.Probe class for basic collision detection. * Added diary module. * 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. diff --git a/Documentation/doc/1 modules/Effects.html b/Documentation/doc/1 modules/Effects.html index 76040fdf2..668142f9b 100644 --- a/Documentation/doc/1 modules/Effects.html +++ b/Documentation/doc/1 modules/Effects.html @@ -45,6 +45,7 @@

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums

2 Classes

4 Enums