class StaticEventHandler : Object native { virtual native void MapLoaded(); virtual native void MapUnloading(); virtual native void RenderFrame(); virtual native void RenderCamera(); virtual native void RenderBeforeThing(); virtual native void RenderAfterThing(); } class StaticRenderEventHandler : StaticEventHandler native { // for frame and camera native readonly Vector3 ViewPos; native readonly double ViewAngle; native readonly double ViewPitch; native readonly double ViewRoll; native readonly double FracTic; // for camera native readonly Actor Camera; // for thing native readonly Actor CurrentThing; } class EventHandler : StaticEventHandler native { static native StaticEventHandler Create(class type); static native StaticEventHandler CreateOnce(class type); static native StaticEventHandler Find(class type); static native bool Register(StaticEventHandler handler); static native bool Unregister(StaticEventHandler handler); } class RenderEventHandler : StaticRenderEventHandler native { }