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