From e2fd3891d1ff7b52358573e650d1a8aeb5a8d707 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 27 Jan 2025 20:19:35 +0100 Subject: [PATCH] Fix regression in curve keyframes editing #3179 --- Source/Engine/Level/Actors/Spline.cpp | 4 ++-- Source/Engine/Level/Actors/Spline.h | 2 +- Source/Engine/Level/Spline.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Engine/Level/Actors/Spline.cpp b/Source/Engine/Level/Actors/Spline.cpp index bc46c3da1..37842a89d 100644 --- a/Source/Engine/Level/Actors/Spline.cpp +++ b/Source/Engine/Level/Actors/Spline.cpp @@ -476,9 +476,9 @@ void Spline::GetKeyframes(MArray* data) Platform::MemoryCopy(MCore::Array::GetAddress(data), Curve.GetKeyframes().Get(), sizeof(Keyframe) * Curve.GetKeyframes().Count()); } -void Spline::SetKeyframes(MArray* data) +void Spline::SetKeyframes(MArray* data, int32 keySize) { - Curve = Span((const byte*)MCore::Array::GetAddress(data), MCore::Array::GetLength(data)); + Curve = Span(MCore::Array::GetAddress(data), keySize * MCore::Array::GetLength(data)); UpdateSpline(); } diff --git a/Source/Engine/Level/Actors/Spline.h b/Source/Engine/Level/Actors/Spline.h index 94df394c4..61a788b1d 100644 --- a/Source/Engine/Level/Actors/Spline.h +++ b/Source/Engine/Level/Actors/Spline.h @@ -372,7 +372,7 @@ private: // Internal bindings #if !COMPILE_WITHOUT_CSHARP API_FUNCTION(NoProxy) void GetKeyframes(MArray* data); - API_FUNCTION(NoProxy) void SetKeyframes(MArray* data); + API_FUNCTION(NoProxy) void SetKeyframes(MArray* data, int32 keySize); #endif public: diff --git a/Source/Engine/Level/Spline.cs b/Source/Engine/Level/Spline.cs index b75e5071c..d41cfb30e 100644 --- a/Source/Engine/Level/Spline.cs +++ b/Source/Engine/Level/Spline.cs @@ -34,7 +34,7 @@ namespace FlaxEngine if (value == null) value = Utils.GetEmptyArray.Keyframe>(); _keyframes = null; - Internal_SetKeyframes(__unmanagedPtr, value); + Internal_SetKeyframes(__unmanagedPtr, value, System.Runtime.CompilerServices.Unsafe.SizeOf.Keyframe>()); } }