Consolidate and update

This commit is contained in:
2026-10-27 15:58:22 -07:00
parent eb211da457
commit 6c13722fc6
42 changed files with 498 additions and 169 deletions

View File

@ -40,11 +40,6 @@ class Animation {
public var paused = false;
var frameTime: FastFloat = 1 / 60;
var blendTime: FastFloat = 0.0;
var blendCurrent: FastFloat = 0.0;
var blendFactor: FastFloat = 0.0;
var lastFrameIndex = -1;
var markerEvents: Map<ActionSampler, Map<String, Array<Void->Void>>> = null;
public var activeActions: Map<String, ActionSampler> = null;
@ -63,8 +58,6 @@ class Animation {
public function play(action = "", onComplete: Void->Void = null, blendTime = 0.0, speed = 1.0, loop = true) {
if (blendTime > 0) {
this.blendTime = blendTime;
this.blendCurrent = 0.0;
frameIndex = 0;
time = 0.0;
}
@ -93,6 +86,7 @@ class Animation {
}
public function update(delta: FastFloat) {
if (paused) return;
if(activeActions == null) return;
for(sampler in activeActions){
@ -160,24 +154,25 @@ class Animation {
while (checkFrameIndex(track.frames, time, frameIndex, speed)) frameIndex += sign;
// Marker events
if (markerEvents != null && anim.marker_names != null && frameIndex != lastFrameIndex) {
if(markerEvents.get(sampler) != null){
if (markerEvents != null && anim.marker_names != null && frameIndex != sampler.offsetOld) {
var markerListeners = markerEvents.get(sampler);
if (markerListeners != null) {
var fromFrame = sampler.offsetOld < 0 ?
(speed > 0 ? -1 : track.frames[track.frames.length - 1] + 1) :
track.frames[sampler.offsetOld];
var toFrame = track.frames[frameIndex];
for (i in 0...anim.marker_frames.length) {
if (frameIndex == anim.marker_frames[i]) {
var markerAct = markerEvents.get(sampler);
var ar = markerAct.get(anim.marker_names[i]);
if (ar != null) for (f in ar) f();
} else {
for (j in 0...(frameIndex - lastFrameIndex)) {
if (lastFrameIndex + j + 1 == anim.marker_frames[i]) {
var markerAct = markerEvents.get(sampler);
var ar = markerAct.get(anim.marker_names[i]);
if (ar != null) for (f in ar) f();
}
}
var markerFrame = anim.marker_frames[i];
var crossed =
(speed > 0 && toFrame >= fromFrame && markerFrame > fromFrame && markerFrame <= toFrame) ||
(speed < 0 && toFrame <= fromFrame && markerFrame <= fromFrame && markerFrame > toFrame) ||
(speed > 0 && toFrame < fromFrame && (markerFrame > fromFrame || markerFrame <= toFrame)) ||
(speed < 0 && toFrame > fromFrame && (markerFrame >= toFrame || markerFrame < fromFrame));
if (crossed) {
var listeners = markerListeners.get(anim.marker_names[i]);
if (listeners != null) for (listener in listeners) listener();
}
}
lastFrameIndex = frameIndex;
}
}
@ -191,8 +186,8 @@ class Animation {
else {
frameIndex -= sign;
sampler.paused = true;
if (sampler.onComplete != null) for(func in sampler.onComplete){ func();};
}
if (sampler.onComplete != null) for(func in sampler.onComplete){ func();};
sampler.trackEnd = true;
}