Exemplo n.º 1
0
        public HUDRadialMenu GenerateDefaultRadialMenu(float fDiameter, AnyRayHit rayHit)
        {
            HUDRadialMenu popup = new HUDRadialMenu();

            popup.Radius    = fDiameter * 0.5f;
            popup.TextScale = fDiameter * TextScale;

            popup.SubItemRadialWidth   = popup.Radius * 0.75f;
            popup.SubItemRadialPadding = popup.Radius * 0.05f;
            popup.SubItemTextScale     = popup.TextScale * 0.75f;

            float Pullback = 2.0f;

            HUDRadialMenu.MenuItem teleport = popup.AppendMenuItem("Teleport", (s, o) => {
                Teleporter.TeleportTowards(cockpit.ActiveCamera, cockpit.Scene, rayHit.hitPos, Pullback);
            });
            popup.AppendSubMenuItem(teleport, "Teleport\nLevel", (s, o) => {
                Teleporter.TeleportTowards_Level(cockpit.ActiveCamera, cockpit.Scene, rayHit.hitPos, Pullback);
            });
            popup.AppendSubMenuItem(teleport, "Teleport\nNormal", (s, o) => {
                Teleporter.Teleport_Normal_Auto(cockpit.ActiveCamera, cockpit.Scene, rayHit.hitPos, rayHit.hitNormal, Pullback);
            });
            popup.AppendMenuItem("Center", (s, o) => {
                cockpit.ActiveCamera.Animator().AnimatePanFocus(rayHit.hitPos, CoordSpace.WorldCoords, 0.3f);
            });

            return(popup);
        }
Exemplo n.º 2
0
        public HUDRadialMenu GeneratePivotRadialMenu(float fDiameter, PivotSO pivot)
        {
            HUDRadialMenu popup = new HUDRadialMenu();

            popup.Radius    = fDiameter * 0.5f;
            popup.TextScale = fDiameter * TextScale;
            float Pullback = 2.0f;

            if (cockpit.Context.TransformManager.HaveActiveGizmo &&
                cockpit.Context.TransformManager.ActiveGizmo.SupportsReferenceObject)
            {
                popup.AppendMenuItem("Use\nFrame", (s, o) => {
                    cockpit.Context.TransformManager.SetActiveReferenceObject(pivot);
                });
            }
            popup.AppendMenuItem("Teleport\nHere", (s, o) => {
                Teleporter.TeleportTowards_Level(cockpit.ActiveCamera, cockpit.Scene,
                                                 pivot.GetLocalFrame(CoordSpace.WorldCoords).Origin, Pullback);
            });
            popup.AppendMenuItem("Center", (s, o) => {
                cockpit.ActiveCamera.Animator().AnimatePanFocus(
                    pivot.GetLocalFrame(CoordSpace.WorldCoords).Origin, CoordSpace.WorldCoords, 0.3f);
            });
            popup.AppendMenuItem("Delete", (s, o) => {
                cockpit.Scene.History.PushChange(
                    new DeleteSOChange()
                {
                    scene = cockpit.Scene, so = pivot
                });
                cockpit.Scene.History.PushInteractionCheckpoint();
            });

            return(popup);
        }
Exemplo n.º 3
0
        public HUDRadialMenu GenerateSceneObjectRadialMenu(float fDiameter, AnyRayHit rayHit)
        {
            HUDRadialMenu popup = new HUDRadialMenu();

            popup.Radius    = fDiameter * 0.5f;
            popup.TextScale = fDiameter * TextScale;

            popup.SubItemRadialWidth   = popup.Radius * 0.75f;
            popup.SubItemRadialPadding = popup.Radius * 0.05f;
            popup.SubItemTextScale     = popup.TextScale * 0.75f;

            float Pullback = 2.0f;

            HUDRadialMenu.MenuItem teleport = popup.AppendMenuItem("Teleport", (s, o) => {
                Teleporter.TeleportTowards(cockpit.ActiveCamera, cockpit.Scene, rayHit.hitPos, Pullback);
            });
            popup.AppendSubMenuItem(teleport, "Teleport\nLevel", (s, o) => {
                Teleporter.TeleportTowards_Level(cockpit.ActiveCamera, cockpit.Scene, rayHit.hitPos, Pullback);
            });
            popup.AppendSubMenuItem(teleport, "Teleport\nNormal", (s, o) => {
                Teleporter.Teleport_Normal_Auto(cockpit.ActiveCamera, cockpit.Scene, rayHit.hitPos, rayHit.hitNormal, Pullback);
            });

            popup.AppendMenuItem("Center", (s, o) => {
                cockpit.ActiveCamera.Animator().AnimatePanFocus(rayHit.hitPos, CoordSpace.WorldCoords, 0.3f);
            });
            if (rayHit.hitSO != null)
            {
                popup.AppendMenuItem("Delete", (s, o) => {
                    cockpit.Scene.History.PushChange(
                        new DeleteSOChange()
                    {
                        scene = cockpit.Scene, so = rayHit.hitSO
                    });
                    cockpit.Scene.History.PushInteractionCheckpoint();
                });
            }

            // Ungroup menu item
            if (cockpit.Scene.Selected.Count == 0 && rayHit.hitSO is GroupSO)
            {
                popup.AppendMenuItem("Ungroup", (s, o) => {
                    cockpit.Scene.History.PushChange(
                        new UnGroupChange()
                    {
                        Group = rayHit.hitSO as GroupSO, Scene = cockpit.Scene
                    }, false);
                    cockpit.Scene.History.PushInteractionCheckpoint();
                });
            }

            // Group menu item
            int nGroupable = cockpit.Scene.Selected.Count;

            if (nGroupable > 1)
            {
                popup.AppendMenuItem("Group", (s, o) => {
                    List <SceneObject> Selected = new List <SceneObject>();
                    foreach (var so in cockpit.Scene.Selected)
                    {
                        Selected.Add(so);
                    }
                    // clear selection and then do this command next frame, so that any active gizmos can clean themselves up!
                    cockpit.Scene.ClearSelection();
                    cockpit.Context.RegisterNextFrameAction(() => {
                        cockpit.Scene.History.PushChange(
                            new CreateGroupChange()
                        {
                            Objects = Selected, Scene = cockpit.Scene
                        }, false);
                        cockpit.Scene.History.PushInteractionCheckpoint();
                    });
                });
            }

            return(popup);
        }