From 18dbec13053eb9d76a16074ee2f3df2f185952db Mon Sep 17 00:00:00 2001 From: RusJJ Date: Mon, 27 Apr 2026 10:07:54 +0300 Subject: [PATCH] Fix linked notes std::string_view -> std::string string_view = hashing an ADDRESS string = hashing a TEXT --- src/AssociatedData.cpp | 3 ++- src/Hooks/NoteController.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/AssociatedData.cpp b/src/AssociatedData.cpp index 3647ecd..1a013bd 100644 --- a/src/AssociatedData.cpp +++ b/src/AssociatedData.cpp @@ -118,8 +118,9 @@ ObjectCustomData::ObjectCustomData(rapidjson::Value const& customData, CustomJSO scaleY = scale->at(1); scaleZ = scale->at(2); } + + link = NEJSON::ReadOptionalString(customData, NoodleExtensions::Constants::LINK); } - link = NEJSON::ReadOptionalString(customData, NoodleExtensions::Constants::LINK); // TODO: MIRROR WIDTH AND OBSTACLE START X diff --git a/src/Hooks/NoteController.cpp b/src/Hooks/NoteController.cpp index e465b0a..81958a3 100644 --- a/src/Hooks/NoteController.cpp +++ b/src/Hooks/NoteController.cpp @@ -44,7 +44,7 @@ using namespace TrackParenting; BeatmapObjectAssociatedData* noteUpdateAD = nullptr; TracksAD::TracksVector noteTracks; -std::unordered_map> linkedNotes; +std::unordered_map> linkedNotes; std::unordered_map*> linkedLinkedNotes; CutoutEffect* NECaches::GetCutout(GlobalNamespace::NoteControllerBase* nc, NECaches::NoteCache& noteCache) { @@ -111,6 +111,7 @@ void NECaches::ClearNoteCaches() { MAKE_HOOK_MATCH(NoteController_Init, &NoteController::Init, void, NoteController* self, GlobalNamespace::NoteData* noteData, ByRef noteSpawnData, float_t endRotation, float_t uniformScale, bool rotateTowardsPlayer, bool useRandomRotation) { + NoteController_Init(self, noteData, noteSpawnData, endRotation, uniformScale, rotateTowardsPlayer, useRandomRotation); if (!Hooks::isNoodleHookEnabled()) return; @@ -386,6 +387,7 @@ MAKE_HOOK_MATCH(NoteController_ManualUpdate, &NoteController::ManualUpdate, void MAKE_HOOK_MATCH(NoteController_SendNoteWasCutEvent_LinkedNotes, &NoteController::SendNoteWasCutEvent, void, NoteController* self, ByRef<::GlobalNamespace::NoteCutInfo> noteCutInfo) { + NoteController_SendNoteWasCutEvent_LinkedNotes(self, noteCutInfo); if (!Hooks::isNoodleHookEnabled()) return; @@ -398,7 +400,6 @@ MAKE_HOOK_MATCH(NoteController_SendNoteWasCutEvent_LinkedNotes, &NoteController: BeatmapObjectAssociatedData& ad = getAD(customNoteData->customData); auto link = ad.objectData.link; - if (!link) return; auto& list = linkedNotes[*link]; @@ -433,6 +434,7 @@ MAKE_HOOK_MATCH(BeatmapObjectManager_Despawn_LinkedNotes, static_cast( &GlobalNamespace::BeatmapObjectManager::Despawn), void, BeatmapObjectManager* self, GlobalNamespace::NoteController* noteController) { + BeatmapObjectManager_Despawn_LinkedNotes(self, noteController); if (!Hooks::isNoodleHookEnabled()) return;