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'
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'
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