Пример #1
0
        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]);
            }
        }
Пример #2
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;
            }
        }
Пример #3
0
        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]);
            }
        }
Пример #4
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();
            }
        }
Пример #5
0
        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;
            }
        }