// ----- ----- ----- ----- ----- // ObjectIf --> SprBehaviour public static Type GetBehaviour <Type>(this ObjectIf springheadObject) where Type : SprBehaviour { return(SprBehaviour.GetBehaviour <Type>(springheadObject)); }
public override void OnInspectorGUI() { PHSceneBehaviour phSceneBehaviour = (PHSceneBehaviour)target; DrawDefaultInspector(); EditorGUI.BeginChangeCheck(); showCollision = EditorGUILayout.Foldout(showCollision, "Collision Setting"); if (showCollision) { int i = 0; List <PHSceneBehaviour.CollisionSetting> removeList = new List <PHSceneBehaviour.CollisionSetting>(); foreach (var collisionItem in phSceneBehaviour.collisionList) { i++; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Rule " + i + ":"); if (GUILayout.Button(" - ")) { removeList.Add(collisionItem); } if (GUILayout.Button(" ↑ ")) { // -- TBD -- } if (GUILayout.Button(" ↓ ")) { // -- TBD -- } EditorGUILayout.EndHorizontal(); // ----- EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); var targetSetMode1 = (PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode)(EditorGUILayout.EnumPopup("Target Solid 1", collisionItem.targetSetMode1)); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed"); collisionItem.targetSetMode1 = targetSetMode1; } if (collisionItem.targetSetMode1 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.One) { EditorGUI.BeginChangeCheck(); var solid1 = EditorGUILayout.ObjectField(collisionItem.solid1, typeof(PHSolidBehaviour), true) as PHSolidBehaviour; if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed"); collisionItem.solid1 = solid1; } } else if (collisionItem.targetSetMode1 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.NameMatching) { EditorGUI.BeginChangeCheck(); var solid1Pattern = EditorGUILayout.TextField(collisionItem.solid1Pattern); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed"); collisionItem.solid1Pattern = solid1Pattern; } } EditorGUILayout.EndHorizontal(); // -- EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); var targetSetMode2 = (PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode)(EditorGUILayout.EnumPopup("Target Solid 2", collisionItem.targetSetMode2)); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed"); collisionItem.targetSetMode2 = targetSetMode2; } if (collisionItem.targetSetMode2 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.One) { EditorGUI.BeginChangeCheck(); var solid2 = EditorGUILayout.ObjectField(collisionItem.solid2, typeof(PHSolidBehaviour), true) as PHSolidBehaviour; if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed"); collisionItem.solid2 = solid2; } } else if (collisionItem.targetSetMode2 == PHSceneBehaviour.CollisionSetting.CollisionTargetSettingMode.NameMatching) { var solid2Pattern = EditorGUILayout.TextField(collisionItem.solid2Pattern); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed"); collisionItem.solid2Pattern = solid2Pattern; } } EditorGUILayout.EndHorizontal(); // ----- EditorGUI.BeginChangeCheck(); var mode = (PHSceneDesc.ContactMode)(EditorGUILayout.EnumPopup("Contact Mode", collisionItem.mode)); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(phSceneBehaviour, "Collision Setting is changed"); collisionItem.mode = mode; } } foreach (var removeItem in removeList) { phSceneBehaviour.collisionList.Remove(removeItem); } if (GUILayout.Button("Add Collision Rule")) { phSceneBehaviour.collisionList.Add(new PHSceneBehaviour.CollisionSetting()); } } EditorGUILayout.Space(); if (GUILayout.Button("Late Awake/Start")) { SprBehaviour.ExecLateAwakeStart(); } }