public static void Init () { // Get existing open window or if none, make a new one: window = (FPSWeaponEditorWindow)EditorWindow.GetWindow(typeof (FPSWeaponEditorWindow)); //~ window.minSize=new Vector2(375, 449); //~ window.maxSize=new Vector2(375, 800); EditorDBManager.Init(); UpdateObjectHierarchyList(); }
public static void Init(int prefabID = -1) { // Get existing open window or if none, make a new one: window = (FPSWeaponEditorWindow)EditorWindow.GetWindow(typeof(FPSWeaponEditorWindow), false, "FPS Weapon Editor"); window.minSize = new Vector2(400, 300); LoadDB(); //if(prefabID>=0) window.selectID=TDSEditor.GetWeaponIndex(prefabID)-1; window.SetupCallback(); }
public static void OpenAbilityEditor() { FPSWeaponEditorWindow.Init(); }
public override void OnInspectorGUI() { GUI.changed = false; EditorGUILayout.Space(); cont = new GUIContent("Use Tower Weapon:", "Check to have use the assigned weapon of the selected tower. When this is enabled, player cannot switch weapon."); instance.useTowerWeapon = EditorGUILayout.Toggle(cont, instance.useTowerWeapon); cont = new GUIContent("Aim Sensitivity:", "Mouse sensitivity when aiming in fps mode"); instance.aimSensitivity = EditorGUILayout.FloatField(cont, instance.aimSensitivity); cont = new GUIContent("Recoil Mode:", "The way shoot recoil works"); contL = new GUIContent[recoilModeLabel.Length]; for (int i = 0; i < contL.Length; i++) { contL[i] = new GUIContent(recoilModeLabel[i], recoilModeTooltip[i]); } instance.recoilMode = EditorGUILayout.Popup(cont, instance.recoilMode, contL); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(10)); showPivotTransform = EditorGUILayout.Foldout(showPivotTransform, "Show Pivot Transforms & Camera"); EditorGUILayout.EndHorizontal(); if (showPivotTransform) { cont = new GUIContent("Weapon Pivot:", "The pivot transform of the weapon object."); instance.weaponPivot = (Transform)EditorGUILayout.ObjectField(cont, instance.weaponPivot, typeof(Transform), true); cont = new GUIContent("Camera Pivot:", "The pivot transform of the camera"); instance.cameraPivot = (Transform)EditorGUILayout.ObjectField(cont, instance.cameraPivot, typeof(Transform), true); cont = new GUIContent("Camera Transform:", "The transform which contains the fps camera component"); instance.camT = (Transform)EditorGUILayout.ObjectField(cont, instance.camT, typeof(Transform), true); } EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(10)); showWeaponList = EditorGUILayout.Foldout(showWeaponList, "Show Weapon List"); EditorGUILayout.EndHorizontal(); if (showWeaponList) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("EnableAll") && !Application.isPlaying) { instance.unavailableIDList = new List <int>(); } if (GUILayout.Button("DisableAll") && !Application.isPlaying) { instance.unavailableIDList = new List <int>(); for (int i = 0; i < weaponList.Count; i++) { instance.unavailableIDList.Add(weaponList[i].prefabID); } } EditorGUILayout.EndHorizontal(); //scrollPosition = GUILayout.BeginScrollView (scrollPosition); for (int i = 0; i < weaponList.Count; i++) { FPSWeapon weapon = weaponList[i]; GUILayout.BeginHorizontal(); GUILayout.Box("", GUILayout.Width(40), GUILayout.Height(40)); Rect rect = GUILayoutUtility.GetLastRect(); EditorUtilities.DrawSprite(rect, weapon.icon, false); GUILayout.BeginVertical(); EditorGUILayout.Space(); GUILayout.Label(weapon.name, GUILayout.ExpandWidth(false)); bool flag = !instance.unavailableIDList.Contains(weapon.prefabID) ? true : false; if (Application.isPlaying) { flag = !flag; //switch it around in runtime } flag = EditorGUILayout.Toggle(new GUIContent(" - enabled: ", "check to enable the weapon in this level"), flag); if (!Application.isPlaying) { if (flag) { instance.unavailableIDList.Remove(weapon.prefabID); } else { if (!instance.unavailableIDList.Contains(weapon.prefabID)) { instance.unavailableIDList.Add(weapon.prefabID); } } } GUILayout.EndVertical(); GUILayout.EndHorizontal(); } } EditorGUILayout.Space(); if (GUILayout.Button("Open FPSWeaponEditor")) { FPSWeaponEditorWindow.Init(); } EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.MaxWidth(10)); showDefaultFlag = EditorGUILayout.Foldout(showDefaultFlag, "Show default editor"); EditorGUILayout.EndHorizontal(); if (showDefaultFlag) { DrawDefaultInspector(); } if (GUI.changed) { EditorUtility.SetDirty(instance); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); if (instance == null) { Awake(); } GUI.changed = false; serializedObject.Update(); EditorGUILayout.Space(); PrefabType type = PrefabUtility.GetPrefabType(instance); if (type == PrefabType.Prefab || type == PrefabType.PrefabInstance) { bool existInDB = false; if (type == PrefabType.PrefabInstance) { existInDB = TDEditor.ExistInDB((FPSWeapon)PrefabUtility.GetPrefabParent(instance)); } else if (type == PrefabType.Prefab) { existInDB = TDEditor.ExistInDB(instance); } if (!existInDB) { EditorGUILayout.Space(); EditorGUILayout.HelpBox("This prefab hasn't been added to database hence it won't be accessible to the game.", MessageType.Warning); GUI.color = new Color(1f, 0.7f, .2f, 1f); if (GUILayout.Button("Add Prefab to Database")) { FPSWeaponEditorWindow.Init(); FPSWeaponEditorWindow.NewItem(instance); FPSWeaponEditorWindow.Init(); //call again to select the instance in editor window } GUI.color = Color.white; } else { EditorGUILayout.HelpBox("Editing FPS-weapon using Inspector is not recommended.\nPlease use the editor window instead.", MessageType.Info); if (GUILayout.Button("FPS-Weapon Editor Window")) { FPSWeaponEditorWindow.Init(instance.prefabID); } } EditorGUILayout.Space(); } else { string text = "FPS-weapon object won't be available for game deployment, or accessible in TDTK editor until it's made a prefab and added to TDTK database."; text += "\n\nYou can still edit the FPS-weapon object using default inspector. However it's not recommended"; EditorGUILayout.HelpBox(text, MessageType.Warning); EditorGUILayout.Space(); if (GUILayout.Button("FPS-Weapon Editor Window")) { FPSWeaponEditorWindow.Init(instance.prefabID); } } DefaultInspector(); if (GUI.changed) { EditorUtility.SetDirty(instance); } }