basic animation playing

This commit is contained in:
Moritz Zwerger 2023-10-20 07:37:34 +02:00
parent 2519a2cc10
commit 24ee47d9cd
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -13,15 +13,22 @@
package de.bixilon.minosoft.gui.rendering.skeletal.instance package de.bixilon.minosoft.gui.rendering.skeletal.instance
import de.bixilon.kutil.concurrent.lock.simple.SimpleLock
import de.bixilon.kutil.time.TimeUtil.nanos import de.bixilon.kutil.time.TimeUtil.nanos
import de.bixilon.minosoft.gui.rendering.skeletal.baked.animation.AbstractAnimation import de.bixilon.minosoft.gui.rendering.skeletal.baked.animation.AbstractAnimation
import de.bixilon.minosoft.gui.rendering.skeletal.baked.animation.keyframe.instance.KeyframeInstance.Companion.OVER
class AnimationManager(val instance: SkeletalInstance) { class AnimationManager(val instance: SkeletalInstance) {
private val playing: MutableList<AbstractAnimation> = mutableListOf()
private val lock = SimpleLock()
private var lastDraw = -1L private var lastDraw = -1L
fun play(animation: AbstractAnimation) { fun play(animation: AbstractAnimation) {
// TODO: don't play animations twice, reset them? // TODO: don't play animations twice, reset them?
lock.lock()
playing += animation
lock.unlock()
} }
fun play(name: String) { fun play(name: String) {
@ -46,11 +53,22 @@ class AnimationManager(val instance: SkeletalInstance) {
} }
fun reset() { fun reset() {
// TODO: clear all animations lock.lock()
playing.clear()
instance.transform.reset() instance.transform.reset()
lock.unlock()
} }
fun draw(delta: Float) { fun draw(delta: Float) {
// TODO lock.lock()
val iterator = playing.iterator()
for (animation in iterator) {
val over = animation.draw(delta)
if (over == OVER) {
iterator.remove()
}
}
lock.unlock()
} }
} }