forked from LeenkxTeam/LNXSDK
Consolidate and update
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user