mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 20:05:02 -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
|
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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user