public void InvokeOnBurst(object a_sender, Vector3EventArgs a_1vector3EventArgs, NumberEventArgs a_2numberEventArgs) { if (OnBurst != null) { OnBurst.Invoke(a_sender, a_1vector3EventArgs, a_2numberEventArgs); } }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); GraphicsDevice gd = new GraphicsDevice("Pathfinding Test Program", FeatureLevel.Level_11_0, 0.1f, 3000f); PathingForm pathForm = new PathingForm(); //set title of progress window SharedForms.ShaderCompileHelper.mTitle = "Compiling Shaders..."; //save renderform position gd.RendForm.DataBindings.Add(new Binding("Location", Properties.Settings.Default, "MainWindowPos", true, DataSourceUpdateMode.OnPropertyChanged)); pathForm.DataBindings.Add(new Binding("Location", Properties.Settings.Default, "PathWindowPos", true, DataSourceUpdateMode.OnPropertyChanged)); gd.RendForm.Location = Properties.Settings.Default.MainWindowPos; pathForm.Location = Properties.Settings.Default.PathWindowPos; int borderWidth = gd.RendForm.Size.Width - gd.RendForm.ClientSize.Width; int borderHeight = gd.RendForm.Size.Height - gd.RendForm.ClientSize.Height; gd.RendForm.Location = Properties.Settings.Default.MainWindowPos; gd.RendForm.Size = new System.Drawing.Size( 1280 + borderWidth, 720 + borderHeight); gd.CheckResize(); PlayerSteering pSteering = SetUpSteering(); Input inp = SetUpInput(); Random rand = new Random(); bool bMouseLookOn = false; EventHandler actHandler = new EventHandler( delegate(object s, EventArgs ea) { inp.ClearInputs(); }); EventHandler <EventArgs> deActHandler = new EventHandler <EventArgs>( delegate(object s, EventArgs ea) { gd.SetCapture(false); bMouseLookOn = false; }); gd.RendForm.Activated += actHandler; gd.RendForm.AppDeactivated += deActHandler; MapStuff mapStuff = new MapStuff(gd, "."); EventHandler pickedAHandler = new EventHandler( delegate(object s, EventArgs ea) { Vector3EventArgs v3ea = ea as Vector3EventArgs; pathForm.SetCoordA(v3ea.mVector); pathForm.SetNodeA((int)s); }); EventHandler pickedBHandler = new EventHandler( delegate(object s, EventArgs ea) { Vector3EventArgs v3ea = ea as Vector3EventArgs; pathForm.SetCoordB(v3ea.mVector); pathForm.SetNodeB((int)s); }); EventHandler pickReadyHandler = new EventHandler( delegate(object s, EventArgs ea) { pathForm.SetPickReady((bool)s); }); mapStuff.ePickedA += pickedAHandler; mapStuff.ePickedB += pickedBHandler; mapStuff.ePickReady += pickReadyHandler; EventHandler genHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.GeneratePathing(pathForm.GetGridSize(), (float)s); }); EventHandler loadHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.LoadPathing(s as string); }); EventHandler saveHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.SavePathing(s as string); }); EventHandler pickAHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.PickA(); gd.RendForm.Focus(); }); EventHandler pickBHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.PickB(); gd.RendForm.Focus(); }); EventHandler pickBlockedHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.PickBlocked(); gd.RendForm.Focus(); }); EventHandler pickUnBlockedHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.PickUnBlocked(); gd.RendForm.Focus(); }); EventHandler drawChangedHandler = new EventHandler( delegate(object s, EventArgs ea) { mapStuff.DrawSettings((int)s); }); EventHandler mobChangedHandler = new EventHandler( delegate(object s, EventArgs ea) { UInt32 box = (UInt32)s; mapStuff.AlterPathMobile((int)box & 0xFF, (int)box >> 16); }); EventHandler findPathHandler = new EventHandler( delegate(object s, EventArgs ea) { Vector3PairEventArgs v3pea = ea as Vector3PairEventArgs; mapStuff.FindPath(v3pea.mVecA, v3pea.mVecB); }); pathForm.eGenerate += genHandler; pathForm.eLoadData += loadHandler; pathForm.eSaveData += saveHandler; pathForm.ePickA += pickAHandler; pathForm.ePickB += pickBHandler; pathForm.ePickBlock += pickBlockedHandler; pathForm.ePickUnBlock += pickUnBlockedHandler; pathForm.eDrawChanged += drawChangedHandler; pathForm.eMobChanged += mobChangedHandler; pathForm.eFindPath += findPathHandler; pathForm.SetPickReady(false); pathForm.Show(); UpdateTimer time = new UpdateTimer(true, false); time.SetFixedTimeStepSeconds(1f / 60f); //60fps update rate time.SetMaxDeltaSeconds(MaxTimeDelta); List <Input.InputAction> acts = new List <Input.InputAction>(); RenderLoop.Run(gd.RendForm, () => { if (!gd.RendForm.Focused) { Thread.Sleep(33); } else if (mapStuff.Busy()) { Thread.Sleep(5); return; } gd.CheckResize(); if (bMouseLookOn && gd.RendForm.Focused) { gd.ResetCursorPos(); } //Clear views gd.ClearViews(); time.Stamp(); while (time.GetUpdateDeltaSeconds() > 0f) { acts = UpdateInput(inp, gd, time.GetUpdateDeltaSeconds(), ref bMouseLookOn); if (!gd.RendForm.Focused) { acts.Clear(); bMouseLookOn = false; gd.SetCapture(false); inp.UnMapAxisAction(Input.MoveAxis.MouseYAxis); inp.UnMapAxisAction(Input.MoveAxis.MouseXAxis); } mapStuff.Update(time, acts, pSteering); time.UpdateDone(); } mapStuff.RenderUpdate(time.GetRenderUpdateDeltaMilliSeconds()); mapStuff.Render(); gd.Present(); acts.Clear(); }, true); //true here is slow but needed for winforms events Properties.Settings.Default.Save(); gd.RendForm.Activated -= actHandler; gd.RendForm.AppDeactivated -= deActHandler; mapStuff.ePickedA -= pickedAHandler; mapStuff.ePickedB -= pickedBHandler; mapStuff.ePickReady -= pickReadyHandler; pathForm.eGenerate -= genHandler; pathForm.eLoadData -= loadHandler; pathForm.eSaveData -= saveHandler; pathForm.ePickA -= pickAHandler; pathForm.ePickB -= pickBHandler; pathForm.ePickBlock -= pickBlockedHandler; pathForm.ePickUnBlock -= pickUnBlockedHandler; pathForm.eDrawChanged -= drawChangedHandler; pathForm.eMobChanged -= mobChangedHandler; pathForm.eFindPath -= findPathHandler; mapStuff.FreeAll(); inp.FreeAll(); //Release all resources gd.ReleaseAll(); }