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); }
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); }
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); }