Exemplo n.º 1
0
 private void OnSceneGUI()
 {
     if (m_GizmoDisplayed && m_GizmoedParameter != null && m_GizmoableParameters.Count > 0 && ((VisualEffect)target).visualEffectAsset != null)
     {
         ContextAndGizmo context = GetGizmo();
         VFXGizmoUtility.Draw(context.context, (VisualEffect)target, context.gizmo);
     }
 }
Exemplo n.º 2
0
        new void OnSceneGUI()
        {
            base.OnSceneGUI();

            if (m_GizmoDisplayed && m_GizmoedParameter != null)
            {
                ContextAndGizmo context = GetGizmo();

                VFXGizmoUtility.Draw(context.context, (VisualEffect)target, context.gizmo);
            }
        }
        protected override void OnSceneViewGUI(SceneView sv)
        {
            base.OnSceneViewGUI(sv);

            if (m_GizmoDisplayed && m_GizmoedParameter != null)
            {
                ContextAndGizmo context = GetGizmo();

                VFXGizmoUtility.Draw(context.context, (VisualEffect)target, context.gizmo);
            }
        }
Exemplo n.º 4
0
        internal override Bounds GetWorldBoundsOfTarget(UnityObject targetObject)
        {
            if (m_GizmoDisplayed && m_GizmoedParameter != null)
            {
                ContextAndGizmo context = GetGizmo();

                Bounds result = VFXGizmoUtility.GetGizmoBounds(context.context, (VisualEffect)target, context.gizmo);

                return(result);
            }

            return(base.GetWorldBoundsOfTarget(targetObject));
        }
Exemplo n.º 5
0
        protected override void SceneViewGUICallback()
        {
            base.SceneViewGUICallback();

            if (m_GizmoDisplayed && m_GizmoedParameter != null && m_GizmoableParameters.Count > 0 && ((VisualEffect)target).visualEffectAsset != null)
            {
                ContextAndGizmo context = GetGizmo();
                VFXGizmoUtility.Draw(context.context, (VisualEffect)target, context.gizmo);
            }

            if (m_GizmoableParameters.Count > 0)
            {
                int current = m_GizmoDisplayed ? m_GizmoableParameters.IndexOf(m_GizmoedParameter) : -1;
                EditorGUI.BeginChangeCheck();
                GUILayout.BeginHorizontal();
                GUILayout.Label("Gizmos", GUILayout.Width(45));
                int result = EditorGUILayout.Popup(current, m_GizmoableParameters.Select(t => t.exposedName).ToArray(), GUILayout.Width(140));
                if (EditorGUI.EndChangeCheck() && result != current)
                {
                    m_GizmoedParameter = m_GizmoableParameters[result];
                    if (!m_GizmoDisplayed)
                    {
                        m_GizmoDisplayed = true;
                        EditMode.ChangeEditMode(EditMode.SceneViewEditMode.Collider, this);
                    }
                    Repaint();
                }

                bool saveEnabled = GUI.enabled;
                GUI.enabled = saveEnabled && m_GizmoedParameter != null;
                if (GUILayout.Button(VFXSlotContainerEditor.Contents.gizmoFrame, VFXSlotContainerEditor.Styles.frameButtonStyle, GUILayout.Width(19), GUILayout.Height(18)))
                {
                    if (m_GizmoDisplayed && m_GizmoedParameter != null)
                    {
                        ContextAndGizmo context = GetGizmo();

                        context.gizmo.currentSpace        = context.context.space;
                        context.gizmo.spaceLocalByDefault = context.context.spaceLocalByDefault;
                        context.gizmo.component           = (VisualEffect)target;
                        Bounds bounds    = context.gizmo.CallGetGizmoBounds(context.context.value);
                        var    sceneView = SceneView.lastActiveSceneView;
                        if (sceneView)
                        {
                            sceneView.Frame(bounds, false);
                        }
                    }
                }
                GUI.enabled = saveEnabled;
                GUILayout.EndHorizontal();
            }
        }
Exemplo n.º 6
0
        protected override void EmptyLineControl(string name, string tooltip, int depth)
        {
            if (depth != 1)
            {
                base.EmptyLineControl(name, tooltip, depth);
                return;
            }

            VFXParameter parameter = GetParameter(name);

            if (!VFXGizmoUtility.HasGizmo(parameter.type))
            {
                base.EmptyLineControl(name, tooltip, depth);
                return;
            }

            if (m_EditJustStarted && m_GizmoedParameter == null)
            {
                m_EditJustStarted  = false;
                m_GizmoedParameter = parameter;
            }
            m_GizmoableParameters.Add(parameter);
            if (!m_GizmoDisplayed)
            {
                base.EmptyLineControl(name, tooltip, depth);
                return;
            }

            GUILayout.BeginHorizontal();


            GUILayout.Space(overrideWidth);
            // Make the label half the width to make the tooltip
            EditorGUILayout.LabelField(GetGUIContent(name, tooltip), EditorStyles.boldLabel, GUILayout.Width(EditorGUIUtility.labelWidth));

            GUILayout.FlexibleSpace();

            // Toggle Button
            EditorGUI.BeginChangeCheck();
            bool result = GUILayout.Toggle(m_GizmoedParameter == parameter, new GUIContent("Edit Gizmo"), EditorStyles.miniButton);

            if (EditorGUI.EndChangeCheck() && result)
            {
                m_GizmoedParameter = parameter;
            }

            //GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }
Exemplo n.º 7
0
        protected override void EmptyLineControl(string name, string tooltip, int depth)
        {
            if (depth != 1)
            {
                base.EmptyLineControl(name, tooltip, depth);
                return;
            }

            VFXParameter parameter = GetParameter(name);

            if (!VFXGizmoUtility.HasGizmo(parameter.type))
            {
                base.EmptyLineControl(name, tooltip, depth);
                return;
            }

            if (m_EditJustStarted && m_GizmoedParameter == null)
            {
                m_EditJustStarted  = false;
                m_GizmoedParameter = parameter;
            }
            m_GizmoableParameters.Add(parameter);
            if (!m_GizmoDisplayed)
            {
                base.EmptyLineControl(name, tooltip, depth);
                return;
            }

            GUILayout.BeginHorizontal();

            EditorGUI.BeginChangeCheck();
            bool result = GUILayout.Toggle(m_GizmoedParameter == parameter, new GUIContent(Resources.Load <Texture2D>(EditorGUIUtility.pixelsPerPoint > 1 ? "VFX/gizmos@2x" : "VFX/gizmos")), GetCurrentSkin().button, GUILayout.Width(overrideWidth));

            if (EditorGUI.EndChangeCheck() && result)
            {
                m_GizmoedParameter = parameter;
            }

            // Make the label half the width to make the tooltip
            EditorGUILayout.LabelField(GetGUIContent(name, tooltip));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }
Exemplo n.º 8
0
        protected override void SceneViewGUICallback()
        {
            base.SceneViewGUICallback();

            if (m_GizmoableParameters.Count > 0)
            {
                int current = m_GizmoDisplayed ? m_GizmoableParameters.IndexOf(m_GizmoedParameter) : -1;
                EditorGUI.BeginChangeCheck();
                GUILayout.BeginHorizontal();
                GUILayout.Label("Gizmos", GUILayout.Width(45));
                int result = EditorGUILayout.Popup(current, m_GizmoableParameters.Select(t => t.exposedName).ToArray(), GUILayout.Width(140));
                if (EditorGUI.EndChangeCheck() && result != current)
                {
                    m_GizmoedParameter = m_GizmoableParameters[result];
                    if (!m_GizmoDisplayed)
                    {
                        m_GizmoDisplayed = true;
                        EditMode.ChangeEditMode(EditMode.SceneViewEditMode.Collider, this);
                    }
                    Repaint();
                }

                bool saveEnabled = GUI.enabled;
                GUI.enabled = saveEnabled && m_GizmoedParameter != null;
                if (GUILayout.Button(VFXSlotContainerEditor.Contents.gizmoFrame, VFXSlotContainerEditor.Styles.frameButtonStyle, GUILayout.Width(19), GUILayout.Height(18)))
                {
                    if (m_GizmoDisplayed && m_GizmoedParameter != null)
                    {
                        ContextAndGizmo context = GetGizmo();
                        Bounds          bounds  = VFXGizmoUtility.GetGizmoBounds(context.context, (VisualEffect)target, context.gizmo);
                        context.context.Unprepare(); //Restore initial state : if gizmo isn't actually rendered, it could be out of sync
                        var sceneView = SceneView.lastActiveSceneView;
                        if (sceneView)
                        {
                            sceneView.Frame(bounds, false);
                        }
                    }
                }
                GUI.enabled = saveEnabled;
                GUILayout.EndHorizontal();
            }
        }
Exemplo n.º 9
0
        ContextAndGizmo GetGizmo()
        {
            ContextAndGizmo context;

            if (!m_ContextsPerComponent.TryGetValue((VisualEffect)target, out context))
            {
                context.context = new GizmoContext(new SerializedObject(target), m_GizmoedParameter);
                context.gizmo   = VFXGizmoUtility.CreateGizmoInstance(context.context);
                m_ContextsPerComponent.Add((VisualEffect)target, context);
            }
            else
            {
                var prevType = context.context.portType;
                context.context.SetParameter(m_GizmoedParameter);
                if (context.context.portType != prevType)
                {
                    context.gizmo = VFXGizmoUtility.CreateGizmoInstance(context.context);
                    m_ContextsPerComponent[(VisualEffect)target] = context;
                }
            }

            return(context);
        }