mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 03:44:54 -04:00
basic animation playing
This commit is contained in:
parent
2519a2cc10
commit
24ee47d9cd
@ -13,15 +13,22 @@
|
||||
|
||||
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.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) {
|
||||
private val playing: MutableList<AbstractAnimation> = mutableListOf()
|
||||
private val lock = SimpleLock()
|
||||
private var lastDraw = -1L
|
||||
|
||||
|
||||
fun play(animation: AbstractAnimation) {
|
||||
// TODO: don't play animations twice, reset them?
|
||||
lock.lock()
|
||||
playing += animation
|
||||
lock.unlock()
|
||||
}
|
||||
|
||||
fun play(name: String) {
|
||||
@ -46,11 +53,22 @@ class AnimationManager(val instance: SkeletalInstance) {
|
||||
}
|
||||
|
||||
fun reset() {
|
||||
// TODO: clear all animations
|
||||
lock.lock()
|
||||
playing.clear()
|
||||
instance.transform.reset()
|
||||
lock.unlock()
|
||||
}
|
||||
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user