CLASS(AnimHost) EXTENDS(Object)
METHOD(AnimHost, addAnim, void(entity, entity))
METHOD(AnimHost, removeAnim, void(entity, entity))
+ METHOD(AnimHost, removeAllAnim, void(entity))
+ METHOD(AnimHost, removeObjAnim, void(entity, entity))
METHOD(AnimHost, stopAllAnim, void(entity))
+ METHOD(AnimHost, stopObjAnim, void(entity, entity))
+ METHOD(AnimHost, resumeAllAnim, void(entity))
+ METHOD(AnimHost, resumeObjAnim, void(entity, entity))
METHOD(AnimHost, finishAllAnim, void(entity))
+ METHOD(AnimHost, finishObjAnim, void(entity, entity))
METHOD(AnimHost, tickAll, void(entity))
ATTRIB(AnimHost, firstChild, entity, NULL)
ATTRIB(AnimHost, lastChild, entity, NULL)
#endif
#ifdef IMPLEMENTATION
-void addAnimAnimHost(entity me, entity other)
+void AnimHost_addAnim(entity me, entity other)
{
if(other.parent)
error("Can't add already added anim!");
other.parent = me;
- entity f, l;
- f = me.firstChild;
+ entity l;
l = me.lastChild;
if(l)
me.lastChild = other;
}
-void removeAnimAnimHost(entity me, entity other)
+void AnimHost_removeAnim(entity me, entity other)
{
if(other.parent != me)
error("Can't remove from wrong AnimHost!");
other.parent = NULL;
- entity n, p, f, l;
- f = me.firstChild;
- l = me.lastChild;
+ entity n, p;
n = other.nextSibling;
p = other.prevSibling;
n.prevSibling = p;
else
me.lastChild = p;
+ remove(other);
+}
+
+void AnimHost_removeAllAnim(entity me)
+{
+ entity e, tmp;
+ for(e = me.firstChild; e; e = e.nextSibling)
+ {
+ tmp = e;
+ e = tmp.prevSibling;
+ me.removeAnim(me, tmp);
+ }
+}
+
+void AnimHost_removeObjAnim(entity me, entity obj)
+{
+ entity e, tmp;
+ for(e = me.firstChild; e; e = e.nextSibling)
+ {
+ if (e.object == obj)
+ {
+ tmp = e;
+ e = tmp.prevSibling;
+ me.removeAnim(me, tmp);
+ }
+ }
}
-void stopAllAnimAnimHost(entity me)
+void AnimHost_stopAllAnim(entity me)
{
entity e;
for(e = me.firstChild; e; e = e.nextSibling)
}
}
-void finishAllAnimAnimHost(entity me)
+void AnimHost_stopObjAnim(entity me, entity obj)
+{
+ entity e;
+ for(e = me.firstChild; e; e = e.nextSibling)
+ {
+ if (e.object == obj)
+ {
+ e.stopAnim(e);
+ }
+ }
+}
+
+void AnimHost_resumeAllAnim(entity me)
+{
+ entity e;
+ for(e = me.firstChild; e; e = e.nextSibling)
+ {
+ e.resumeAnim(e);
+ }
+}
+
+void AnimHost_resumeObjAnim(entity me, entity obj)
+{
+ entity e;
+ for(e = me.firstChild; e; e = e.nextSibling)
+ {
+ if (e.object == obj)
+ {
+ e.resumeAnim(e);
+ }
+ }
+}
+
+void AnimHost_finishAllAnim(entity me)
{
entity e, tmp;
for(e = me.firstChild; e; e = e.nextSibling)
{
tmp = e;
e = tmp.prevSibling;
- me.removeAnim(me, tmp);
- e.finishAnim(tmp);
+ tmp.finishAnim(tmp);
}
}
-void tickAllAnimHost(entity me)
+void AnimHost_finishObjAnim(entity me, entity obj)
{
entity e, tmp;
for(e = me.firstChild; e; e = e.nextSibling)
{
- e.tick(e, time);
+ if (e.object == obj)
+ {
+ tmp = e;
+ e = tmp.prevSibling;
+ tmp.finishAnim(tmp);
+ }
}
+}
+
+void AnimHost_tickAll(entity me)
+{
+ entity e, tmp;
for(e = me.firstChild; e; e = e.nextSibling)
{
+ e.tick(e, time);
if (e.isFinished(e))
{
tmp = e;
e = tmp.prevSibling;
me.removeAnim(me, tmp);
- remove(tmp);
}
}
}