protected override void Start() { base.Start(); transform.localScale = new Vector3(1f, 1f, 1f); tfGizmo = Camera.main.GetComponent <TransformGizmo>(); // disable update method until model is ready //enabled = false; }
protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // Dispose managed state (managed objects). TransformGizmo.Dispose(); } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }
void Start() { objRenderer = gameObject.GetComponent <Renderer>(); picker = GameObject.FindGameObjectWithTag(PICKER).GetComponent <ColorPicker>(); gizmo = GameObject.FindGameObjectWithTag(CAMERA).GetComponent <TransformGizmo>(); // Event listener for color value change in color picker picker.onValueChanged.AddListener(color => { // only apply color to selected objects if (gizmo.isSelected(gameObject.transform)) { objRenderer.material.color = color; } }); }
public D3DRenderSetup(int width, int height) { WindowWidth = width; WindowHeight = height; ResetCamera(); InitTargets(); _renderer = OperatorPartContext.DefaultRenderer; var sceneGridDefinition = MetaManager.Instance.GetMetaOperator(Guid.Parse("a5930d73-3db3-4785-b8c0-991b6fbfe3fc")); _sceneGridOperator = sceneGridDefinition.CreateOperator(Guid.Empty); var imageBackgroundDefinition = MetaManager.Instance.GetMetaOperator(Guid.Parse("1e4f6cd4-86fa-4c8f-833c-0b8c128cf221")); _imageBackgroundOperator = imageBackgroundDefinition.CreateOperator(Guid.Empty); TransformGizmo = new TransformGizmo(); }
private void Start() { gizmo = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <TransformGizmo>(); if (picker == null) { picker = GameObject.FindGameObjectWithTag("Picker").GetComponent <ColorPicker>(); } picker.onValueChanged.AddListener(color => { foreach (Transform o in gizmo.targetRootsOrdered) { Renderer renderer = o.gameObject.GetComponent <Renderer>(); if (renderer != null) { renderer.material.color = color; } } }); }
private void LoadFile(string filename) { loaded = false; UseWaitCursor = true; Enabled = false; LevelData.leveltexs = null; cam = new EditorCamera(EditorOptions.RenderDrawDistance); if (LandTable.CheckLevelFile(filename)) { LevelData.geo = LandTable.LoadFromFile(filename); } else { byte[] file = File.ReadAllBytes(filename); if (Path.GetExtension(filename).Equals(".prs", StringComparison.OrdinalIgnoreCase)) { file = FraGag.Compression.Prs.Decompress(file); } using (LevelFileDialog dlg = new LevelFileDialog()) { dlg.ShowDialog(this); LevelData.geo = new LandTable(file, (int)dlg.NumericUpDown1.Value, (uint)dlg.numericUpDown2.Value, (LandTableFormat)dlg.comboBox2.SelectedIndex); } } LevelData.ClearLevelItems(); for (int i = 0; i < LevelData.geo.COL.Count; i++) { LevelData.AddLevelItem((new LevelItem(LevelData.geo.COL[i], i, selectedItems))); } LevelData.TextureBitmaps = new Dictionary <string, BMPInfo[]>(); LevelData.Textures = new Dictionary <string, Texture[]>(); using (OpenFileDialog a = new OpenFileDialog() { DefaultExt = "pvm", Filter = "Texture Files|*.pvm;*.gvm;*.prs" }) { if (!string.IsNullOrEmpty(LevelData.geo.TextureFileName)) { a.FileName = LevelData.geo.TextureFileName + ".pvm"; } else { a.FileName = string.Empty; } if (a.ShowDialog(this) == DialogResult.OK) { BMPInfo[] TexBmps = TextureArchive.GetTextures(a.FileName); Texture[] texs = new Texture[TexBmps.Length]; for (int j = 0; j < TexBmps.Length; j++) { texs[j] = TexBmps[j].Image.ToTexture(d3ddevice); } string texname = Path.GetFileNameWithoutExtension(a.FileName); if (!LevelData.TextureBitmaps.ContainsKey(texname)) { LevelData.TextureBitmaps.Add(texname, TexBmps); } if (!LevelData.Textures.ContainsKey(texname)) { LevelData.Textures.Add(texname, texs); } LevelData.leveltexs = texname; } } loaded = true; transformGizmo = new TransformGizmo(); gizmoSpaceComboBox.Enabled = false; gizmoSpaceComboBox.SelectedIndex = 0; clearLevelToolStripMenuItem.Enabled = LevelData.geo != null; calculateAllBoundsToolStripMenuItem.Enabled = LevelData.geo != null; statsToolStripMenuItem.Enabled = LevelData.geo != null; selectedItems.SelectionChanged += SelectionChanged; UseWaitCursor = false; Enabled = editInfoToolStripMenuItem.Enabled = saveToolStripMenuItem.Enabled = exportToolStripMenuItem.Enabled = importToolStripMenuItem.Enabled = true; DrawLevel(); }
private void Start() { this.gizmo = this.TargetObject.GetComponent <TransformGizmo>(); this.bounds = this.gizmo.Bounds; SetTransformation(bounds); }
protected override void Start() { base.Start(); tfGizmo = Camera.main.GetComponent <TransformGizmo>(); outlineOnClick = GetComponent <OutlineOnClick>(); }
// Initialize class variables private void Start() { mainCamera = GameObject.FindGameObjectWithTag("MainCamera"); gizmo = mainCamera.GetComponent <TransformGizmo>(); }
/// <summary> /// Initializes a new instance of the <see cref="MainEditorGizmoViewport"/> class. /// </summary> /// <param name="editor">Editor instance.</param> public MainEditorGizmoViewport(Editor editor) : base(RenderTask.Create <SceneRenderTask>(), editor.Undo) { _editor = editor; // Prepare rendering task Task.ActorsSource = ActorsSources.ScenesAndCustomActors; Task.Flags = ViewFlags.DefaultEditor; Task.Begin += RenderTaskOnBegin; Task.End += RenderTaskOnEnd; Task.Draw += RenderTaskOnDraw; // Create selection outline postFx SelectionOutline = FlaxEngine.Object.New <SelectionOutline>(); Task.CustomPostFx.Add(SelectionOutline); // Add transformation gizmo TransformGizmo = new TransformGizmo(this); TransformGizmo.OnApplyTransformation += ApplyTransform; TransformGizmo.OnModeChanged += OnGizmoModeChanged; Gizmos.Active = TransformGizmo; // Add grid Grid = new GridGizmo(this); Grid.EnabledChanged += gizmo => _showGridButton.Icon = gizmo.Enabled ? Style.Current.CheckBoxTick : Sprite.Invalid; editor.SceneEditing.OnSelectionChanged += OnSelectionChanged; // Transform space widget var transformSpaceWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var transformSpaceToggle = new ViewportWidgetButton(string.Empty, editor.UI.GetIcon("World16"), null, true) { Checked = TransformGizmo.ActiveTransformSpace == TransformGizmo.TransformSpace.World, TooltipText = "Gizmo transform space (world or local)", Parent = transformSpaceWidget }; transformSpaceToggle.OnToggle += onTransformSpaceToggle; transformSpaceWidget.Parent = this; // Scale snapping widget var scaleSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableScaleSnapping = new ViewportWidgetButton(string.Empty, editor.UI.GetIcon("ScaleStep16"), null, true) { Checked = TransformGizmo.ScaleSnapEnabled, TooltipText = "Enable scale snapping", Parent = scaleSnappingWidget }; enableScaleSnapping.OnToggle += onScaleSnappingToggle; var scaleSnappingCM = new ContextMenu(); var scaleSnappng = new ViewportWidgetButton(TransformGizmo.ScaleSnapValue.ToString(), Sprite.Invalid, scaleSnappingCM); scaleSnappng.TooltipText = "Scale snapping values"; for (int i = 0; i < EditorViewportScaleSnapValues.Length; i++) { var button = scaleSnappingCM.AddButton(i, EditorViewportScaleSnapValues[i].ToString()); button.Tag = scaleSnappng; } scaleSnappingCM.OnButtonClicked += widgetScaleSnapClick; scaleSnappingCM.VisibleChanged += widgetScaleSnapShowHide; scaleSnappng.Parent = scaleSnappingWidget; scaleSnappingWidget.Parent = this; // Rotation snapping widget var rotateSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableRotateSnapping = new ViewportWidgetButton(string.Empty, editor.UI.GetIcon("RotateStep16"), null, true) { Checked = TransformGizmo.RotationSnapEnabled, TooltipText = "Enable rotation snapping", Parent = rotateSnappingWidget }; enableRotateSnapping.OnToggle += onRotateSnappingToggle; var rotateSnappingCM = new ContextMenu(); var rotateSnappng = new ViewportWidgetButton(TransformGizmo.RotationSnapValue.ToString(), Sprite.Invalid, rotateSnappingCM); rotateSnappng.TooltipText = "Rotation snapping values"; for (int i = 0; i < EditorViewportRotateSnapValues.Length; i++) { var button = rotateSnappingCM.AddButton(i, EditorViewportRotateSnapValues[i].ToString()); button.Tag = rotateSnappng; } rotateSnappingCM.OnButtonClicked += widgetRotateSnapClick; rotateSnappingCM.VisibleChanged += widgetRotateSnapShowHide; rotateSnappng.Parent = rotateSnappingWidget; rotateSnappingWidget.Parent = this; // Translation snapping widget var translateSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableTranslateSnapping = new ViewportWidgetButton(string.Empty, editor.UI.GetIcon("Grid16"), null, true) { Checked = TransformGizmo.TranslationSnapEnable, TooltipText = "Enable position snapping", Parent = translateSnappingWidget }; enableTranslateSnapping.OnToggle += onTranslateSnappingToggle; var translateSnappingCM = new ContextMenu(); var translateSnappng = new ViewportWidgetButton(TransformGizmo.TranslationSnapValue.ToString(), Sprite.Invalid, translateSnappingCM); translateSnappng.TooltipText = "Position snapping values"; for (int i = 0; i < EditorViewportTranslateSnapValues.Length; i++) { var button = translateSnappingCM.AddButton(i, EditorViewportTranslateSnapValues[i].ToString()); button.Tag = translateSnappng; } translateSnappingCM.OnButtonClicked += widgetTranslateSnapClick; translateSnappingCM.VisibleChanged += widgetTranslateSnapShowHide; translateSnappng.Parent = translateSnappingWidget; translateSnappingWidget.Parent = this; // Gizmo mode widget var gizmoMode = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); _gizmoModeTranslate = new ViewportWidgetButton(string.Empty, editor.UI.GetIcon("Translate16"), null, true) { Tag = TransformGizmo.Mode.Translate, TooltipText = "Translate gizmo mode", Checked = true, Parent = gizmoMode }; _gizmoModeTranslate.OnToggle += onGizmoModeToggle; _gizmoModeRotate = new ViewportWidgetButton(string.Empty, editor.UI.GetIcon("Rotate16"), null, true) { Tag = TransformGizmo.Mode.Rotate, TooltipText = "Rotate gizmo mode", Parent = gizmoMode }; _gizmoModeRotate.OnToggle += onGizmoModeToggle; _gizmoModeScale = new ViewportWidgetButton(string.Empty, editor.UI.GetIcon("Scale16"), null, true) { Tag = TransformGizmo.Mode.Scale, TooltipText = "Scale gizmo mode", Parent = gizmoMode }; _gizmoModeScale.OnToggle += onGizmoModeToggle; gizmoMode.Parent = this; // Create Camera Here widget _showGridButton = ViewWidgetButtonMenu.AddButton("Show grid", () => Grid.Enabled = !Grid.Enabled); _showGridButton.Icon = Style.Current.CheckBoxTick; _showGridButton.IndexInParent = 1; ViewWidgetButtonMenu.AddSeparator(); ViewWidgetButtonMenu.AddButton("Create camera here", CreateCameraAtView); }
protected override void Start() { base.Start(); transform.localScale = new Vector3(1f, 1f, 1f); tfGizmo = Camera.main.GetComponent <TransformGizmo>(); }
protected override void Start() { base.Start(); tfGizmo = Camera.main.GetComponent <TransformGizmo>(); sphereMaterial = Sphere.GetComponent <Renderer>().material; }
public void Render(OperatorPartContext context, int outputIdx = 0, bool showGizmos = false, bool renderMesh = false) { context.D3DDevice = D3DDevice; context.Effect = _renderer.SceneDefaultEffect; context.InputLayout = _renderer.SceneDefaultInputLayout; context.RenderTargetView = _renderView; context.DepthStencilView = _renderTargetDepthView; context.DepthStencilState = _renderer.DefaultDepthStencilState; context.BlendState = _renderer.DefaultBlendState; context.BlendFactor = _renderer.DefaultBlendFactor; context.RasterizerState = _renderer.DefaultRasterizerState; context.SamplerState = _renderer.DefaultSamplerState; context.Viewport = new Viewport(0, 0, WindowWidth, WindowHeight, 0.0f, 1.0f); context.Texture0 = _texture; Vector3 viewDir, sideDir, upDir; CalcDirections(out viewDir, out sideDir, out upDir); Matrix worldToCamera = Matrix.LookAtLH(CameraPosition, CameraTarget, upDir); // Find a nice balance between small and large objects (probably skyspheres) float zoomLength = (CameraPosition - CameraTarget).Length(); float farClipping = (zoomLength * 2) + 5000; float nearClipping = zoomLength / 100; Setup(context, Operator, _renderer, worldToCamera, (float)nearClipping, (float)farClipping); LastContext = context; if (showGizmos) { var selectedOps = (from selectable in App.Current.MainWindow.CompositionView.CompositionGraphView.SelectionHandler.SelectedElements select selectable as OperatorWidget into opWidget where opWidget != null && opWidget.Operator.Outputs.Any() select opWidget.Operator).ToArray(); TransformGizmo.SetupEvalCallbackForSelectedTransformOperators(selectedOps, context); float?previousValue = null; if (context.Variables.ContainsKey(OperatorPartContext.DEBUG_VARIABLE_NAME)) { previousValue = context.Variables[OperatorPartContext.DEBUG_VARIABLE_NAME]; } context.Variables[OperatorPartContext.DEBUG_VARIABLE_NAME] = 1; context.Variables[GIZMO_PART_VARIBALE_NAME] = IndexOfGizmoPartBelowMouse; EvaluateOperator(context, outputIdx, renderMesh); _sceneGridOperator.Outputs[0].Eval(context); TransformGizmo.RenderTransformGizmo(context); if (previousValue != null) { context.Variables[OperatorPartContext.DEBUG_VARIABLE_NAME] = previousValue.Value; } else { context.Variables.Remove(OperatorPartContext.DEBUG_VARIABLE_NAME); } } else { EvaluateOperator(context, outputIdx, renderMesh); } _gpuSyncer.Sync(D3DDevice.ImmediateContext); }
/// <summary> /// Initializes a new instance of the <see cref="MainEditorGizmoViewport"/> class. /// </summary> /// <param name="editor">Editor instance.</param> public MainEditorGizmoViewport(Editor editor) : base(FlaxEngine.Rendering.RenderTask.Create <SceneRenderTask>(), editor.Undo) { _editor = editor; // Prepare rendering task Task.ActorsSource = ActorsSources.ScenesAndCustomActors; Task.Flags = ViewFlags.DefaultEditor; Task.Begin += RenderTaskOnBegin; Task.Draw += RenderTaskOnDraw; Task.End += RenderTaskOnEnd; // Render task after the main game task so streaming and render state data will use main game task instead of editor preview Task.Order = 1; // Create post effects SelectionOutline = FlaxEngine.Object.New <SelectionOutline>(); SelectionOutline.SelectionGetter = () => _editor.SceneEditing.Selection; Task.CustomPostFx.Add(SelectionOutline); EditorPrimitives = FlaxEngine.Object.New <EditorPrimitives>(); EditorPrimitives.DrawDebugDraw = true; EditorPrimitives.Viewport = this; Task.CustomPostFx.Add(EditorPrimitives); // Add transformation gizmo TransformGizmo = new TransformGizmo(this); TransformGizmo.OnApplyTransformation += ApplyTransform; TransformGizmo.ModeChanged += OnGizmoModeChanged; TransformGizmo.Duplicate += Editor.Instance.SceneEditing.Duplicate; Gizmos.Active = TransformGizmo; // Add grid Grid = new GridGizmo(this); Grid.EnabledChanged += gizmo => _showGridButton.Icon = gizmo.Enabled ? Style.Current.CheckBoxTick : Sprite.Invalid; editor.SceneEditing.SelectionChanged += OnSelectionChanged; // Transform space widget var transformSpaceWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var transformSpaceToggle = new ViewportWidgetButton(string.Empty, editor.Icons.World16, null, true) { Checked = TransformGizmo.ActiveTransformSpace == TransformGizmo.TransformSpace.World, TooltipText = "Gizmo transform space (world or local)", Parent = transformSpaceWidget }; transformSpaceToggle.OnToggle += OnTransformSpaceToggle; transformSpaceWidget.Parent = this; // Scale snapping widget var scaleSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableScaleSnapping = new ViewportWidgetButton(string.Empty, editor.Icons.ScaleStep16, null, true) { Checked = TransformGizmo.ScaleSnapEnabled, TooltipText = "Enable scale snapping", Parent = scaleSnappingWidget }; enableScaleSnapping.OnToggle += OnScaleSnappingToggle; var scaleSnappingCM = new ContextMenu(); _scaleSnapping = new ViewportWidgetButton(TransformGizmo.ScaleSnapValue.ToString(), Sprite.Invalid, scaleSnappingCM); _scaleSnapping.TooltipText = "Scale snapping values"; for (int i = 0; i < EditorViewportScaleSnapValues.Length; i++) { var v = EditorViewportScaleSnapValues[i]; var button = scaleSnappingCM.AddButton(v.ToString()); button.Tag = v; } scaleSnappingCM.ButtonClicked += OnWidgetScaleSnapClick; scaleSnappingCM.VisibleChanged += OnWidgetScaleSnapShowHide; _scaleSnapping.Parent = scaleSnappingWidget; scaleSnappingWidget.Parent = this; // Rotation snapping widget var rotateSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableRotateSnapping = new ViewportWidgetButton(string.Empty, editor.Icons.RotateStep16, null, true) { Checked = TransformGizmo.RotationSnapEnabled, TooltipText = "Enable rotation snapping", Parent = rotateSnappingWidget }; enableRotateSnapping.OnToggle += OnRotateSnappingToggle; var rotateSnappingCM = new ContextMenu(); _rotateSnapping = new ViewportWidgetButton(TransformGizmo.RotationSnapValue.ToString(), Sprite.Invalid, rotateSnappingCM); _rotateSnapping.TooltipText = "Rotation snapping values"; for (int i = 0; i < EditorViewportRotateSnapValues.Length; i++) { var v = EditorViewportRotateSnapValues[i]; var button = rotateSnappingCM.AddButton(v.ToString()); button.Tag = v; } rotateSnappingCM.ButtonClicked += OnWidgetRotateSnapClick; rotateSnappingCM.VisibleChanged += OnWidgetRotateSnapShowHide; _rotateSnapping.Parent = rotateSnappingWidget; rotateSnappingWidget.Parent = this; // Translation snapping widget var translateSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableTranslateSnapping = new ViewportWidgetButton(string.Empty, editor.Icons.Grid16, null, true) { Checked = TransformGizmo.TranslationSnapEnable, TooltipText = "Enable position snapping", Parent = translateSnappingWidget }; enableTranslateSnapping.OnToggle += OnTranslateSnappingToggle; var translateSnappingCM = new ContextMenu(); _translateSnapping = new ViewportWidgetButton(TransformGizmo.TranslationSnapValue.ToString(), Sprite.Invalid, translateSnappingCM); _translateSnapping.TooltipText = "Position snapping values"; for (int i = 0; i < EditorViewportTranslateSnapValues.Length; i++) { var v = EditorViewportTranslateSnapValues[i]; var button = translateSnappingCM.AddButton(v.ToString()); button.Tag = v; } translateSnappingCM.ButtonClicked += OnWidgetTranslateSnapClick; translateSnappingCM.VisibleChanged += OnWidgetTranslateSnapShowHide; _translateSnapping.Parent = translateSnappingWidget; translateSnappingWidget.Parent = this; // Gizmo mode widget var gizmoMode = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); _gizmoModeTranslate = new ViewportWidgetButton(string.Empty, editor.Icons.Translate16, null, true) { Tag = TransformGizmo.Mode.Translate, TooltipText = "Translate gizmo mode", Checked = true, Parent = gizmoMode }; _gizmoModeTranslate.OnToggle += OnGizmoModeToggle; _gizmoModeRotate = new ViewportWidgetButton(string.Empty, editor.Icons.Rotate16, null, true) { Tag = TransformGizmo.Mode.Rotate, TooltipText = "Rotate gizmo mode", Parent = gizmoMode }; _gizmoModeRotate.OnToggle += OnGizmoModeToggle; _gizmoModeScale = new ViewportWidgetButton(string.Empty, editor.Icons.Scale16, null, true) { Tag = TransformGizmo.Mode.Scale, TooltipText = "Scale gizmo mode", Parent = gizmoMode }; _gizmoModeScale.OnToggle += OnGizmoModeToggle; gizmoMode.Parent = this; // Show grid widget _showGridButton = ViewWidgetButtonMenu.AddButton("Show grid", () => Grid.Enabled = !Grid.Enabled); _showGridButton.Icon = Style.Current.CheckBoxTick; _showGridButton.IndexInParent = 1; // Create camera widget ViewWidgetButtonMenu.AddSeparator(); ViewWidgetButtonMenu.AddButton("Create camera here", CreateCameraAtView); DragHandlers.Add(_dragActorType); DragHandlers.Add(_dragAssets); InitModes(); }
public TransformGizmoUpdateModel(TransformGizmo previousGizmo, TransformGizmo newGizmo) { PreviousGizmo = previousGizmo; NewGizmo = newGizmo; }
/// <summary> /// Initializes a new instance of the <see cref="PrefabWindowViewport"/> class. /// </summary> /// <param name="window">Editor window.</param> public PrefabWindowViewport(PrefabWindow window) : base(true) { _window = window; _window.SelectionChanged += OnSelectionChanged; Undo = window.Undo; ViewportCamera = new FPSCamera(); // Prepare rendering task Task.ActorsSource = ActorsSources.CustomActors; Task.ViewFlags = ViewFlags.DefaultEditor & ~ViewFlags.EditorSprites; Task.PostRender += OnPostRender; // Create post effects SelectionOutline = FlaxEngine.Object.New <SelectionOutline>(); SelectionOutline.SelectionGetter = () => TransformGizmo.SelectedParents; Task.CustomPostFx.Add(SelectionOutline); EditorPrimitives = FlaxEngine.Object.New <EditorPrimitives>(); EditorPrimitives.Viewport = this; Task.CustomPostFx.Add(EditorPrimitives); // Add transformation gizmo TransformGizmo = new TransformGizmo(this); TransformGizmo.ApplyTransformation += ApplyTransform; TransformGizmo.ModeChanged += OnGizmoModeChanged; TransformGizmo.Duplicate += _window.Duplicate; Gizmos.Active = TransformGizmo; // Transform space widget var transformSpaceWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var transformSpaceToggle = new ViewportWidgetButton(string.Empty, window.Editor.Icons.World16, null, true) { Checked = TransformGizmo.ActiveTransformSpace == TransformGizmoBase.TransformSpace.World, TooltipText = "Gizmo transform space (world or local)", Parent = transformSpaceWidget }; transformSpaceToggle.Toggled += OnTransformSpaceToggle; transformSpaceWidget.Parent = this; // Scale snapping widget var scaleSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableScaleSnapping = new ViewportWidgetButton(string.Empty, window.Editor.Icons.ScaleStep16, null, true) { Checked = TransformGizmo.ScaleSnapEnabled, TooltipText = "Enable scale snapping", Parent = scaleSnappingWidget }; enableScaleSnapping.Toggled += OnScaleSnappingToggle; var scaleSnappingCM = new ContextMenu(); _scaleSnapping = new ViewportWidgetButton(TransformGizmo.ScaleSnapValue.ToString(), SpriteHandle.Invalid, scaleSnappingCM) { TooltipText = "Scale snapping values" }; for (int i = 0; i < EditorViewportScaleSnapValues.Length; i++) { var v = EditorViewportScaleSnapValues[i]; var button = scaleSnappingCM.AddButton(v.ToString()); button.Tag = v; } scaleSnappingCM.ButtonClicked += OnWidgetScaleSnapClick; scaleSnappingCM.VisibleChanged += OnWidgetScaleSnapShowHide; _scaleSnapping.Parent = scaleSnappingWidget; scaleSnappingWidget.Parent = this; // Rotation snapping widget var rotateSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableRotateSnapping = new ViewportWidgetButton(string.Empty, window.Editor.Icons.RotateStep16, null, true) { Checked = TransformGizmo.RotationSnapEnabled, TooltipText = "Enable rotation snapping", Parent = rotateSnappingWidget }; enableRotateSnapping.Toggled += OnRotateSnappingToggle; var rotateSnappingCM = new ContextMenu(); _rotateSnapping = new ViewportWidgetButton(TransformGizmo.RotationSnapValue.ToString(), SpriteHandle.Invalid, rotateSnappingCM) { TooltipText = "Rotation snapping values" }; for (int i = 0; i < EditorViewportRotateSnapValues.Length; i++) { var v = EditorViewportRotateSnapValues[i]; var button = rotateSnappingCM.AddButton(v.ToString()); button.Tag = v; } rotateSnappingCM.ButtonClicked += OnWidgetRotateSnapClick; rotateSnappingCM.VisibleChanged += OnWidgetRotateSnapShowHide; _rotateSnapping.Parent = rotateSnappingWidget; rotateSnappingWidget.Parent = this; // Translation snapping widget var translateSnappingWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var enableTranslateSnapping = new ViewportWidgetButton(string.Empty, window.Editor.Icons.Grid16, null, true) { Checked = TransformGizmo.TranslationSnapEnable, TooltipText = "Enable position snapping", Parent = translateSnappingWidget }; enableTranslateSnapping.Toggled += OnTranslateSnappingToggle; var translateSnappingCM = new ContextMenu(); _translateSnappng = new ViewportWidgetButton(TransformGizmo.TranslationSnapValue.ToString(), SpriteHandle.Invalid, translateSnappingCM) { TooltipText = "Position snapping values" }; for (int i = 0; i < EditorViewportTranslateSnapValues.Length; i++) { var v = EditorViewportTranslateSnapValues[i]; var button = translateSnappingCM.AddButton(v.ToString()); button.Tag = v; } translateSnappingCM.ButtonClicked += OnWidgetTranslateSnapClick; translateSnappingCM.VisibleChanged += OnWidgetTranslateSnapShowHide; _translateSnappng.Parent = translateSnappingWidget; translateSnappingWidget.Parent = this; // Gizmo mode widget var gizmoMode = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); _gizmoModeTranslate = new ViewportWidgetButton(string.Empty, window.Editor.Icons.Translate16, null, true) { Tag = TransformGizmoBase.Mode.Translate, TooltipText = "Translate gizmo mode", Checked = true, Parent = gizmoMode }; _gizmoModeTranslate.Toggled += OnGizmoModeToggle; _gizmoModeRotate = new ViewportWidgetButton(string.Empty, window.Editor.Icons.Rotate16, null, true) { Tag = TransformGizmoBase.Mode.Rotate, TooltipText = "Rotate gizmo mode", Parent = gizmoMode }; _gizmoModeRotate.Toggled += OnGizmoModeToggle; _gizmoModeScale = new ViewportWidgetButton(string.Empty, window.Editor.Icons.Scale16, null, true) { Tag = TransformGizmoBase.Mode.Scale, TooltipText = "Scale gizmo mode", Parent = gizmoMode }; _gizmoModeScale.Toggled += OnGizmoModeToggle; gizmoMode.Parent = this; _dragHandlers.Add(_dragActorType); _dragHandlers.Add(_dragAssets); // Setup input actions InputActions.Add(options => options.TranslateMode, () => TransformGizmo.ActiveMode = TransformGizmoBase.Mode.Translate); InputActions.Add(options => options.RotateMode, () => TransformGizmo.ActiveMode = TransformGizmoBase.Mode.Rotate); InputActions.Add(options => options.ScaleMode, () => TransformGizmo.ActiveMode = TransformGizmoBase.Mode.Scale); InputActions.Add(options => options.FocusSelection, ShowSelectedActors); SetUpdate(ref _update, OnUpdate); }
protected override void Start() { base.Start(); tfGizmo = Camera.main.GetComponent <TransformGizmo>(); }