コード例 #1
0
        public override void OnToolGUI(EditorWindow window)
        {
            var sceneView = window as SceneView;

            if (sceneView == null)
            {
                return;
            }

            var evt = Event.current;

            if (target is GameObject go &&
                go.GetComponent <MeshGenerator>() is MeshGenerator meshGenerator &&
                meshGenerator.Field is IScalarField field)
            {
                if (evt.type == EventType.Repaint)
                {
                    FieldRenderer.Render(field, meshGenerator.size, meshGenerator.transform.localToWorldMatrix);
                }

                using (var changeCheckScope = new EditorGUI.ChangeCheckScope()) {
                    if (FieldTools.TryGetValue(field.GetType(), out var fieldEditor))
                    {
                        fieldEditor.OnToolGUI(field);
                    }

                    if (changeCheckScope.changed)
                    {
                        EditorUtility.SetDirty(target);
                        meshGenerator.Generate();
                    }
                }
            }
        }
コード例 #2
0
        void OnTargetTypeSet(Type type)
        {
            FieldInfo[] allFileds;
            if (m_TargetIC.Target is TypeOC)
            {
                allFileds = FieldTools.GetStaticField(type);
            }
            else
            {
                allFileds = FieldTools.GetAllField(type);
            }

            //Fill field dict
            FieldDict.Clear();
            foreach (FieldInfo field in allFileds)
            {
                FieldDict.Add(field.Name, field);
            }

            m_FieldCombo.ItemList = FieldDict.Keys;

            foreach (var pair in FieldDict)
            {
                m_FieldInfo           = pair.Value;
                m_ObjectOC.ObjectType = pair.Value.FieldType;
                break;
            }
        }
コード例 #3
0
        void OnTargetTypeSet(Type type)
        {
            if (type == null)
            {
                return;
            }
            //Logger.Info(type.IsClass.ToString());
            FieldInfo[] allFileds = FieldTools.GetAllField(type);
            FieldDict.Clear();
            foreach (FieldInfo field in allFileds)
            {
                FieldDict.Add(field.Name, field);
            }

            m_FieldCombo.ItemList = FieldDict.Keys;

            foreach (var pair in FieldDict)
            {
                m_FieldInfo           = pair.Value;
                m_ObjectOC.ObjectType = pair.Value.FieldType;
                m_ObjectIC.SetObjectType(pair.Value.FieldType);
                break;
            }
            //Console.WriteLine(type.Name + "ds");
        }