Commit Graph

179 Commits

Author SHA1 Message Date
foxtacles
37b328a595
3rd person camera (#3)
* Add feasibility plan for reusing multiplayer animation system for third-person camera

Evaluates reusing the multiplayer extension's RemotePlayer animation system
(BuildROIMap, AssignROIIndices, ApplyAnimationTransformation) for the local
player to enable a third-person camera mode. Conclusion: feasible with only
3 single-line extension hooks added to core game code.

https://claude.ai/code/session_01NC3zdQZ4nqEcYjyvStqcdD

* WIP: Third-person camera with animation reuse and movement fix

* Fix third-person camera bugs: vehicles, remote facing, emote distortion (#2)

- Fix spawn pose and building re-entry by applying idle frame 0 and
  reinitializing on world enable
- Handle vehicle transitions: ride animations for small vehicles,
  first-person fallback for large vehicles and helicopter
- Keep vehicle dashboards visible for exit controls
- Disable third-person camera for large vehicles, fix ROI cleanup
- Move HandleActorExit hook to end of Exit() for immediate reinit
- Fix remote player facing 180 degrees wrong by negating direction
  in BroadcastLocalState when third-person camera is active
- Fix Hat Tip emote distortion from compounding transform scale by
  saving clean parent transform at emote start and restoring after
  each frame's animation application

* DRY cleanup for third-person camera branch

- Extract shared DetectVehicleType() to protocol.h/cpp (was duplicated
  in ThirdPersonCamera and NetworkManager)
- Remove no-op HandlePostApplyTransform hook chain (called every frame
  for every LegoPathActor but did nothing)
- Add ThirdPersonCamera::ClearAnimCaches() helper (pattern repeated 5x)
- Add AnimUtils::EnsureROIMapVisibility() inline helper (loop repeated
  5x across ThirdPersonCamera and RemotePlayer)
- Remove redundant static_cast in multiplayer.cpp (UserActor() already
  returns LegoPathActor*)
- Delete THIRD_PERSON_CAMERA_ANIMATION_REUSE_PLAN.md development artifact
2026-03-07 01:38:45 +01:00
Christian Semmler
a3122cd209
Merge remote-tracking branch 'isle/master'
Some checks are pending
CI / clang-format (push) Waiting to run
CI / ${{ matrix.name }} (false, --toolchain /usr/local/vitasdk/share/vita.toolchain.cmake, false, false, Ninja, Vita, ubuntu-latest, true, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0, false, false, Visual Studio 17 2022, true, Xbox One, windows-latest, amd64, false, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake, false, devkitpro/devkitarm:latest, false, Ninja, true, Nintendo 3DS, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake, false, devkitpro/devkita64:latest, false, Ninja, Nintendo Switch, true, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, emcmake, false, false, true, Ninja, Emscripten, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, false, false, Ninja, true, MSVC (arm64), windows-latest, amd64_arm64, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, false, true, Ninja, true, MSVC (x86), windows-latest, amd64_x86, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, true, false, Ninja, true, MSVC (x64), windows-latest, amd64, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, true, true, false, Ninja, true, MSVC (x64 Debug), windows-latest, amd64, false) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, -DCMAKE_SYSTEM_NAME=iOS, false, false, Xcode, true, iOS, macos-15, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, false, Ninja, true, mingw-w64-i686, mingw32, msys2 mingw32, windows-latest, msys2 {0}, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, false, false, Ninja, Android, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, true, false, Ninja, macOS, macos-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, false, Ninja, true, mingw-w64-x86_64, mingw64, msys2 mingw64, windows-latest, msys2 {0}, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux (Debug), ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux, ubuntu-latest, true) (push) Waiting to run
CI / Flatpak (${{ matrix.arch }}) (aarch64, ubuntu-22.04-arm) (push) Waiting to run
CI / Flatpak (${{ matrix.arch }}) (x86_64, ubuntu-latest) (push) Waiting to run
CI / C++ (push) Waiting to run
CI / Release (push) Blocked by required conditions
Docker / Publish web port (push) Waiting to run
2026-01-30 17:06:10 -08:00
Fabian Neundorf
971fe939a6
Clear unknowns in LegoPathActor (#1731)
Co-authored-by: Christian Semmler <mail@csemmler.com>
2026-01-31 01:47:11 +01:00
Fabian Neundorf
5e7a787af0
Clear unknowns in LegoPathBoundary (#1730) 2026-01-25 20:48:36 +01:00
Fabian Neundorf
e05cb05983
Clear unknowns in LegoPathController (#1724) 2026-01-18 12:31:56 -08:00
Fabian Neundorf
01c92d1966
Clear unknowns in LegoPathEdgeContainer and LegoBEWithFloat (#1723)
Renames `LegoBEWithFloat` also to `LegoBEWithMidpoint` to be more specific.
2026-01-18 06:50:17 -08:00
Fabian Neundorf
600079215f
Anim presenters (#1719)
* Clear unknowns in `LegoAnimPresenter`, `LegoLocomotionAnimPresenter` and `LegoHideAnimPresenter`

* Clear visibility unknowns in animation presenters

---------

Co-authored-by: Florian Kaiser <mail@floriankaiser.org>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2026-01-13 21:54:44 +01:00
Fabian Neundorf
dace101b85
Clear unknowns in LegoExtraActor (#1718) 2026-01-13 00:39:16 +01:00
Fabian Neundorf
4bcc2b964b
Clear unknowns in LegoUnknown and rename to LegoSpline (#1711) 2026-01-10 20:00:26 +01:00
Christian Semmler
d121ae1ecd
Merge remote-tracking branch 'isle/master'
Some checks failed
CI / clang-format (push) Has been cancelled
CI / ${{ matrix.name }} (false, --toolchain /usr/local/vitasdk/share/vita.toolchain.cmake, false, false, Ninja, Vita, ubuntu-latest, true, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0, false, false, Visual Studio 17 2022, true, Xbox One, windows-latest, amd64, false, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake, false, devkitpro/devkitarm:latest, false, Ninja, true, Nintendo 3DS, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake, false, devkitpro/devkita64:latest, false, Ninja, Nintendo Switch, true, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, emcmake, false, false, true, Ninja, Emscripten, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, false, false, Ninja, true, MSVC (arm64), windows-latest, amd64_arm64, false) (push) Has been cancelled
CI / ${{ matrix.name }} (false, false, true, Ninja, true, MSVC (x86), windows-latest, amd64_x86, false) (push) Has been cancelled
CI / ${{ matrix.name }} (false, true, false, Ninja, true, MSVC (x64), windows-latest, amd64, false) (push) Has been cancelled
CI / ${{ matrix.name }} (false, true, true, false, Ninja, true, MSVC (x64 Debug), windows-latest, amd64, false) (push) Has been cancelled
CI / ${{ matrix.name }} (true, false, -DCMAKE_SYSTEM_NAME=iOS, false, false, Xcode, true, iOS, macos-15, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, false, false, Ninja, true, mingw-w64-i686, mingw32, msys2 mingw32, windows-latest, msys2 {0}, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, false, false, false, Ninja, Android, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, false, true, false, Ninja, macOS, macos-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, true, false, Ninja, true, mingw-w64-x86_64, mingw64, msys2 mingw64, windows-latest, msys2 {0}, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux (Debug), ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux, ubuntu-latest, true) (push) Has been cancelled
CI / Flatpak (${{ matrix.arch }}) (aarch64, ubuntu-22.04-arm) (push) Has been cancelled
CI / Flatpak (${{ matrix.arch }}) (x86_64, ubuntu-latest) (push) Has been cancelled
CI / C++ (push) Has been cancelled
Docker / Publish web port (push) Has been cancelled
CI / Release (push) Has been cancelled
2026-01-07 16:39:54 -07:00
Sebastian Mischke
e9eb2493bb
Clear unknowns in LegoROI (#1703)
* Rename FUN_100a9410 to Intersect

* Rename FUN_100a81b0 to ReportError

* Rename FUN_100a9330 to SetColor

* Rename FUN_100a93b0 to SetColorByName

* Rename local10 to radius

* Rename boundingBox variables

* Rename bb point variables

* Rename local4c to rayOrigin

* Rename local17c to intersectionPoint

* Rename local18 to discriminant

* Rename ray-sphere intersection variables

* Rename quadratic equation variables

* Rename local70 to untransformedPoint

* Rename local150 to boxFacePlanes

* Rename local50 to intersectionDistance

* Rename Intersect method arguments

* Clang-format of legoracespecial

* Clang-format of legoroi

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2026-01-05 23:38:40 +01:00
Fabian Neundorf
29dda2c369
Clear unknowns in LegoActor (#1708) 2026-01-05 20:29:30 +01:00
Christian Semmler
f2871ce36c
Merge remote-tracking branch 'isle/master' 2025-11-23 09:17:40 -07:00
jonschz
dfffb873ed
BETA10: Fix reccmp regressions, match RealtimeView (#1696)
---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2025-11-02 17:35:21 +01:00
Christian Semmler
ec3c770c61
Merge remote-tracking branch 'isle/master' 2025-09-12 12:35:22 -07:00
jonschz
a7c43cbe17
Small BETA10 corrections (#1681)
* Small BETA10 corrections

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2025-09-06 17:39:28 +02:00
Christian Semmler
0f1b8e8430
Merge remote-tracking branch 'isle/master' 2025-08-10 13:16:30 -07:00
Fabian Neundorf
61eaea8bb4
Clear unknowns in LegoAnimActorStruct and LegoAnimActor (#1673) 2025-08-09 17:40:12 +02:00
Fabian Neundorf
1a317a3ef8
Clear unknowns in LegoEntity (#1672) 2025-08-09 17:38:59 +02:00
Christian Semmler
c774a8edde
Merge remote-tracking branch 'isle/master' 2025-07-23 13:21:39 -07:00
Fabian Neundorf
fd299137ff
Clear unknowns LegoCameraController (#1647) 2025-07-21 22:18:59 +02:00
Christian Semmler
6a45dbec34
Merge remote-tracking branch 'isle/master' 2025-07-20 09:25:06 -07:00
jonschz
2980f88bb0
Fix filenames based on BETA10 MxAutoLock (#1640)
* Inline LegoAnimPresenters
---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2025-07-20 18:20:40 +02:00
Christian Semmler
10195dcbcb
Add more rumble events (#627)
* Add more rumble events

* Add check for haptic
2025-07-18 22:52:42 +00:00
Christian Semmler
10d4142c39
Merge remote-tracking branch 'isle/master' 2025-07-18 14:44:18 -07:00
Fabian Neundorf
6d6971734b
Clear unknowns in LegoROI (#1630) 2025-07-17 01:19:17 +02:00
Christian Semmler
21ce906a32
Add haptic feedback (rumble) (#596)
* Add rumble event for hit actor

* Add ini option
2025-07-13 20:26:47 -07:00
Christian Semmler
c0e41a8ef6
Merge remote-tracking branch 'isle/master' 2025-06-27 16:10:31 -07:00
Korbo
16a94c725c
Names for race related or adjacent functions and variables (#1592)
* Names for race related or adjacent functions and variables

* fix formatting

* fix formatting
2025-06-28 01:08:45 +02:00
Christian Semmler
6d99683f1d
Merge remote-tracking branch 'isle/master' 2025-06-12 14:35:18 -07:00
jonschz
596ebde9d3
Add BETA10 assertions in LegoPathController (#1555)
* Add BETA10 assertions in LegoPathController

* formatting

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2025-06-12 08:52:56 +02:00
Christian Semmler
fae0416716
Merge remote-tracking branch 'isle/master' 2025-06-09 13:04:34 -07:00
Florian Kaiser
36c1093c88
Clear unknowns in LegoPathBoundary, LegoWEEdge, LegoWEGEdge and LegoPathController (#1546) 2025-06-08 11:04:58 -07:00
Christian Semmler
8acfdd8ccb
Merge remote-tracking branch 'isle/master' 2025-06-06 14:23:19 -07:00
Christian Semmler
d714bf62f1
Improve LegoPathActor::VTable0x84 BETA match (#1543) 2025-06-06 23:22:46 +02:00
Anonymous Maarten
364844d6d0
Use SDL_rand/SDL_randf (#203) 2025-05-30 19:01:01 +00:00
Christian Semmler
a1ec97ac6e
Merge remote-tracking branch 'isle/master' 2025-05-29 08:50:07 -07:00
jonschz
b7090bd838
Match LegoActor and LegoPathActor in BETA10 (#1524)
* Match `LegoActor` in BETA10

* Cleanup

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2025-05-27 22:04:01 +02:00
Christian Semmler
70633de3f6 Merge remote-tracking branch 'isle/master' into mergeii 2025-05-26 09:49:34 -07:00
Florian Kaiser
804632b13f
Refactor LegoUnknown100db7f4 to LegoOrientedEdge (#1515)
* Refactor `LegoUnknown100db7f4` to `LegoOrientedEdge`

* Update LEGO1/lego/sources/geom/legoorientededge.h

* Update legopathcontroller.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2025-05-24 23:09:24 -07:00
Christian Semmler
a75e3a4377
Merge remote-tracking branch 'isle/master' 2025-05-23 09:34:57 -07:00
Erik Schulze
eb1177b409
rename functions and parameters in OrientableROI (#1512) 2025-05-21 20:13:28 -07:00
Christian Semmler
67f3ce37fa
Hotfix: fix wrong return value 2025-05-20 16:36:29 -07:00
Christian Semmler
9e3e039c3f
Remove dynamic_cast (#139) 2025-05-21 01:29:51 +02:00
Anonymous Maarten
0b778de731
Let LegoStorage know of memory size (#129) 2025-05-20 02:18:11 +02:00
Anders Jenbo
70536c50bd
Fix remaning UBSAN issues (#115) 2025-05-19 19:02:24 +02:00
Christian Semmler
3023b8a663 Merge remote-tracking branch 'isle/master' into mergei 2025-05-18 14:04:10 -07:00
Anonymous Maarten
2915aa014f
Use sizeof(type) instead of sizeof(variableName) when (de)serializing data (#1505)
* Use sizeof(type) instead of sizeof(variableName) when (de)serializing data

* Less usage of sizeof(variableName) while (de)serializing
2025-05-18 22:56:28 +02:00
Christian Semmler
622f00f628 Merge remote-tracking branch 'isle/master' into mergeisle3 2025-03-14 13:59:52 -07:00
Christian Semmler
ea5a722311
Fix Matrix4::operator[] annotation (#1390) 2025-02-22 06:48:11 -07:00