From 0b67b70cad54029d4c186e897148a242189e06ee Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Thu, 19 Oct 2023 11:58:03 +0200 Subject: [PATCH] skeletal: require at least 2 keyframes --- .../animations/animators/keyframes/types/RotateKeyframe.kt | 4 ++++ .../animations/animators/keyframes/types/ScaleKeyframe.kt | 4 ++++ .../animations/animators/keyframes/types/TranslateKeyframe.kt | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/RotateKeyframe.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/RotateKeyframe.kt index 9fc471182..2dc98f822 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/RotateKeyframe.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/RotateKeyframe.kt @@ -29,6 +29,10 @@ data class RotateKeyframe( ) : SkeletalKeyframe { override val type get() = TYPE + init { + if (data.size < 2) throw IllegalArgumentException("Must have at least 2 keyframes!") + } + override fun instance() = object : Vec3KeyframeInstance(data, loop, interpolation) { override fun apply(value: Vec3, transform: TransformInstance) { transform.value diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/ScaleKeyframe.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/ScaleKeyframe.kt index fa852a71c..e6922f484 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/ScaleKeyframe.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/ScaleKeyframe.kt @@ -28,6 +28,10 @@ data class ScaleKeyframe( ) : SkeletalKeyframe { override val type get() = TYPE + init { + if (data.size < 2) throw IllegalArgumentException("Must have at least 2 keyframes!") + } + override fun instance() = object : Vec3KeyframeInstance(data, loop, interpolation) { override fun apply(value: Vec3, transform: TransformInstance) { transform.value diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/TranslateKeyframe.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/TranslateKeyframe.kt index c7298434a..44b69ff7c 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/TranslateKeyframe.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/animators/keyframes/types/TranslateKeyframe.kt @@ -28,6 +28,10 @@ data class TranslateKeyframe( ) : SkeletalKeyframe { override val type get() = TYPE + init { + if (data.size < 2) throw IllegalArgumentException("Must have at least 2 keyframes!") + } + override fun instance() = object : Vec3KeyframeInstance(data, loop, interpolation) { override fun apply(value: Vec3, transform: TransformInstance) { transform.value