package NET.worlds.scape; import NET.worlds.core.Std; public class FrameEvent extends Event { private static int lastFrameTime; private static int deltaFrameTime; public int dt; public FrameEvent(WObject target) { super(lastFrameTime, null, target); this.dt = deltaFrameTime; } public FrameEvent(WObject source, WObject target) { super(lastFrameTime, source, target); this.dt = deltaFrameTime; } public void newFrameTime() { this.time = Std.getRealTime(); if (lastFrameTime == 0) { deltaFrameTime = 0; } else { deltaFrameTime = this.time - lastFrameTime; assert this.time >= lastFrameTime && deltaFrameTime >= 0; } lastFrameTime = this.time; this.dt = deltaFrameTime; } @Override public boolean deliver(Object o) { return o instanceof FrameHandler && ((FrameHandler)o).handle(this) ? true : true; } public void retargetAndDeliver(FrameHandler h, WObject o) { this.target = o; this.receiver = o; h.handle(this); } }