public void Update(float deltaTime) { //pump message PumpMessage(); SenderEvent(new UpdateEvent(DateTime.Now, deltaTime)); SenderEvent(new RenderEvent(DateTime.Now, deltaTime)); //process the event while (EventCount != 0) { switch (GetEvent(true)) { case UpdateEvent update: OnUpdateEvent?.Invoke(this, update); break; case KeyBoardEvent keyBoard: OnKeyBoardEvent?.Invoke(this, keyBoard); break; case MouseClickEvent mouseClick: OnMouseClickEvent?.Invoke(this, mouseClick); break; case MouseWheelEvent mouseWheel: OnMouseWhellEvent?.Invoke(this, mouseWheel); break; case MouseMoveEvent mouseMove: OnMouseMoveEvent?.Invoke(this, mouseMove); break; case SizeChangeEvent sizeChange: OnSizeChangeEvent?.Invoke(this, sizeChange); break; } } }
static void Main(string[] args) { QuadEngine.QuadEngine.CreateQuadDevice(out quadDevice); quadDevice.CreateWindow(out quadWindow); quadWindow.SetCaption("QuadEngine - Demo03 - Primitives"); quadWindow.SetSize(800, 600); mouseMoveEvent = (OnMouseMoveEvent)OnMouseMove; quadWindow.SetOnMouseMove(Marshal.GetFunctionPointerForDelegate(mouseMoveEvent)); quadDevice.CreateRender(out quadRender); quadRender.Initialize((IntPtr)(int)(uint)quadWindow.GetHandle(), 800, 600, false); quadDevice.CreateTimer(out quadTimer); timer = (TimerProcedure)OnTimer; quadTimer.SetCallBack(Marshal.GetFunctionPointerForDelegate(timer)); quadTimer.SetInterval(16); quadTimer.SetState(true); quadWindow.Start(); }