private void MainForm_Load(object sender, EventArgs e) { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true); Direct3D d3d = new Direct3D(); d3ddevice = new Device(d3d, 0, DeviceType.Hardware, panel1.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters { Windowed = true, SwapEffect = SwapEffect.Discard, EnableAutoDepthStencil = true, AutoDepthStencilFormat = Format.D24X8 }); EditorOptions.Initialize(d3ddevice); EditorOptions.OverrideLighting = true; EditorOptions.RenderDrawDistance = 10000; optionsEditor = new EditorOptionsEditor(cam); optionsEditor.FormUpdated += optionsEditor_FormUpdated; optionsEditor.CustomizeKeybindsCommand += CustomizeControls; optionsEditor.ResetDefaultKeybindsCommand += () => { actionList.ActionKeyMappings.Clear(); foreach (ActionKeyMapping keymapping in DefaultActionList.DefaultActionMapping) { actionList.ActionKeyMappings.Add(keymapping); } actionInputCollector.SetActions(actionList.ActionKeyMappings.ToArray()); }; actionList = ActionMappingList.Load(Path.Combine(Application.StartupPath, "keybinds.ini"), DefaultActionList.DefaultActionMapping); actionInputCollector = new ActionInputCollector(); actionInputCollector.SetActions(actionList.ActionKeyMappings.ToArray()); actionInputCollector.OnActionStart += ActionInputCollector_OnActionStart; actionInputCollector.OnActionRelease += ActionInputCollector_OnActionRelease; cammodel = new ModelFile(Properties.Resources.camera).Model; cammodel.Attach.ProcessVertexData(); cammesh = cammodel.Attach.CreateD3DMesh(); if (Program.Arguments.Length > 0) { LoadFile(Program.Arguments[0]); } }
private void ActionInputCollector_OnActionStart(ActionInputCollector sender, string actionName) { switch (actionName) { case ("Camera Move"): cameraKeyDown = true; break; case ("Camera Zoom"): zoomKeyDown = true; break; case ("Camera Look"): lookKeyDown = true; break; default: break; } }
private void MainForm_Load(object sender, EventArgs e) { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true); Direct3D d3d = new Direct3D(); d3ddevice = new Device(d3d, 0, DeviceType.Hardware, panel1.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters { Windowed = true, SwapEffect = SwapEffect.Discard, EnableAutoDepthStencil = true, AutoDepthStencilFormat = Format.D24X8 }); settingsfile = SettingsFile.Load(); EditorOptions.Initialize(d3ddevice); EditorOptions.OverrideLighting = true; EditorOptions.RenderDrawDistance = cam.DrawDistance = settingsfile.SA2EventViewer.DrawDistance_General; cam.ModifierKey = settingsfile.SA2EventViewer.CameraModifier; actionList = ActionMappingList.Load(Path.Combine(Application.StartupPath, "keybinds", "SA2EventViewer.ini"), DefaultActionList.DefaultActionMapping); actionInputCollector = new ActionInputCollector(); actionInputCollector.SetActions(actionList.ActionKeyMappings.ToArray()); actionInputCollector.OnActionStart += ActionInputCollector_OnActionStart; actionInputCollector.OnActionRelease += ActionInputCollector_OnActionRelease; optionsEditor = new EditorOptionsEditor(cam, actionList.ActionKeyMappings.ToArray(), DefaultActionList.DefaultActionMapping, false, false); optionsEditor.FormUpdated += optionsEditor_FormUpdated; optionsEditor.FormUpdatedKeys += optionsEditor_FormUpdatedKeys; cammodel = new ModelFile(Properties.Resources.camera).Model; cammodel.Attach.ProcessVertexData(); cammesh = cammodel.Attach.CreateD3DMesh(); if (Program.Arguments.Length > 0) { LoadFile(Program.Arguments[0]); } }
private void ActionInputCollector_OnActionRelease(ActionInputCollector sender, string actionName) { if (!loaded) { return; } bool draw = false; // should the scene redraw after this action switch (actionName) { case ("Camera Mode"): eventcamera = !eventcamera; draw = true; break; case ("Zoom to target"): if (selectedObject != null) { BoundingSphere bounds = (selectedObject.Model?.Attach != null) ? selectedObject.Model.Attach.Bounds : new BoundingSphere(selectedObject.Position.X, selectedObject.Position.Y, selectedObject.Position.Z, 10); bounds.Center += selectedObject.Position; cam.MoveToShowBounds(bounds); } draw = true; break; case ("Change Render Mode"): if (EditorOptions.RenderFillMode == FillMode.Solid) { EditorOptions.RenderFillMode = FillMode.Point; } else { EditorOptions.RenderFillMode += 1; } draw = true; break; case ("Increase camera move speed"): cam.MoveSpeed += 0.0625f; //UpdateTitlebar(); break; case ("Decrease camera move speed"): cam.MoveSpeed -= 0.0625f; //UpdateTitlebar(); break; case ("Reset camera move speed"): cam.MoveSpeed = EditorCamera.DefaultMoveSpeed; //UpdateTitlebar(); break; case ("Reset Camera Position"): if (!eventcamera) { cam.Position = new Vector3(); draw = true; } break; case ("Reset Camera Rotation"): if (!eventcamera) { cam.Pitch = 0; cam.Yaw = 0; draw = true; } break; case ("Camera Move"): cameraKeyDown = false; break; case ("Camera Zoom"): zoomKeyDown = false; break; case ("Camera Look"): lookKeyDown = false; break; case ("Next Scene"): scenenum++; animframe = (timer1.Enabled ? 0 : -1); decframe = animframe; if (scenenum == @event.Scenes.Count) { if (timer1.Enabled) { scenenum = 1; } else { scenenum = 0; } } draw = true; break; case ("Previous Scene"): scenenum--; animframe = (timer1.Enabled ? 0 : -1); decframe = animframe; if (scenenum == -1 || (timer1.Enabled && scenenum == 0)) { scenenum = @event.Scenes.Count - 1; } draw = true; break; case ("Previous Frame"): if (scenenum > 0 && !timer1.Enabled) { animframe--; if (animframe < -1) { scenenum--; if (scenenum == 0) { scenenum = @event.Scenes.Count - 1; } animframe = @event.Scenes[scenenum].FrameCount - 1; } decframe = animframe; draw = true; } break; case ("Next Frame"): if (scenenum > 0 && !timer1.Enabled) { animframe++; if (animframe == @event.Scenes[scenenum].FrameCount) { scenenum++; if (scenenum == @event.Scenes.Count) { scenenum = 1; } animframe = -1; } decframe = animframe; draw = true; } break; case ("Play/Pause Animation"): if (!timer1.Enabled) { if (scenenum == 0) { scenenum = 1; } if (animframe == -1) { decframe = animframe = 0; } } timer1.Enabled = !timer1.Enabled; draw = true; break; default: break; } if (draw) { UpdateWeightedModels(); DrawEntireModel(); } }
private void ActionInputCollector_OnActionRelease(ActionInputCollector sender, string actionName) { if (!isStageLoaded) { return; } bool draw = false; // should the scene redraw after this action switch (actionName) { case ("Camera Mode"): cam.mode = (cam.mode + 1) % 2; string cammode = "Normal"; if (cam.mode == 1) { cammode = "Orbit"; if (selectedItems.GetSelection().Count > 0) { cam.FocalPoint = Item.CenterFromSelection(selectedItems.GetSelection()).ToVector3(); } else { cam.FocalPoint = cam.Position += cam.Look * cam.Distance; } } osd.UpdateOSDItem("Camera mode: " + cammode, RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; break; case ("Zoom to target"): if (selectedItems.ItemCount > 1) { BoundingSphere combinedBounds = selectedItems.GetSelection()[0].Bounds; for (int i = 0; i < selectedItems.ItemCount; i++) { combinedBounds = Direct3D.Extensions.Merge(combinedBounds, selectedItems.GetSelection()[i].Bounds); } cam.MoveToShowBounds(combinedBounds); } else if (selectedItems.ItemCount == 1) { cam.MoveToShowBounds(selectedItems.GetSelection()[0].Bounds); } osd.UpdateOSDItem("Camera zoomed to target", RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; break; case ("Change Render Mode"): string rendermode = "Solid"; if (EditorOptions.RenderFillMode == FillMode.Solid) { EditorOptions.RenderFillMode = FillMode.Point; rendermode = "Point"; } else { EditorOptions.RenderFillMode += 1; if (EditorOptions.RenderFillMode == FillMode.Solid) { rendermode = "Solid"; } else { rendermode = "Wireframe"; } } osd.UpdateOSDItem("Render mode: " + rendermode, RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; break; case ("Delete"): foreach (Item item in selectedItems.GetSelection()) { item.Delete(selectedItems); } selectedItems.Clear(); draw = true; unsaved = true; break; case ("Increase camera move speed"): cam.MoveSpeed += 0.0625f; UpdateTitlebar(); osd.UpdateOSDItem("Camera speed: " + cam.MoveSpeed.ToString(), RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; break; case ("Decrease camera move speed"): cam.MoveSpeed = Math.Max(0.0625f, cam.MoveSpeed -= 0.0625f); UpdateTitlebar(); osd.UpdateOSDItem("Camera speed: " + cam.MoveSpeed.ToString(), RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; break; case ("Reset camera move speed"): cam.MoveSpeed = EditorCamera.DefaultMoveSpeed; UpdateTitlebar(); osd.UpdateOSDItem("Camera speed: " + cam.MoveSpeed.ToString(), RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; break; case ("Reset Camera Position"): if (cam.mode == 0) { cam.Position = new Vector3(); osd.UpdateOSDItem("Reset camera position", RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; } break; case ("Reset Camera Rotation"): if (cam.mode == 0) { cam.Pitch = 0; cam.Yaw = 0; draw = true; osd.UpdateOSDItem("Reset camera rotation", RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); draw = true; } break; case ("Next Character"): if (isStageLoaded) { LevelData.Character = (LevelData.Character + 1) % 6; if (LevelData.Character < 0) { LevelData.Character = 5; } characterToolStripMenuItem.DropDownItems[LevelData.Character].PerformClick(); } osd.UpdateOSDItem("Current character: " + LevelData.Character.ToString(), RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); break; case ("Previous Character"): if (isStageLoaded) { int chr = LevelData.Character - 1; if (chr < 0) { chr = 5; } LevelData.Character = chr; characterToolStripMenuItem.DropDownItems[LevelData.Character].PerformClick(); osd.UpdateOSDItem("Current character: " + LevelData.Character.ToString(), RenderPanel.Width, 8, Color.AliceBlue.ToRawColorBGRA(), "gizmo", 120); } break; case ("Camera Move"): cameraKeyDown = false; UpdateCameraOSD(); break; case ("Camera Zoom"): zoomKeyDown = false; UpdateCameraOSD(); break; case ("Camera Look"): lookKeyDown = false; UpdateCameraOSD(); break; case ("Next Animation Frame"): NextAnimationFrame(); break; case ("Previous Animation Frame"): PreviousAnimationFrame(); break; case ("Reset Animation Frame"): ResetAnimationFrame(); break; case ("Play/Pause Animation"): PlayPause(); break; default: break; } if (draw) { NeedRedraw = true; } }