private void CreateEntity() { Debug.Log("Creating entity..."); m_showHolderWarningAlert = false; if (!m_errorOnModel) { //If there is no error with the model. Create the entity prefab and the entity data string absoluteAssetPath = Application.dataPath; string relativePath = "/MobaStorm/Prefabs/Entities/" + m_characterName; string characterFolderPath = absoluteAssetPath + relativePath; Debug.Log("Creating Entity folder at " + characterFolderPath); System.IO.Directory.CreateDirectory(characterFolderPath); CreateCharacter(relativePath, CharacterEditorWindow.m_entityHolderPrefab); } else { //Generate only the entity data var selectedLogicType = m_entityTypesLogics[m_entityLogicChoice]; System.Type logicType = CharacterEditorWindow.GetType(selectedLogicType); GameObject dummyModel = new GameObject(); Logic logic = dummyModel.AddComponent(logicType) as Logic; CreateCharacterData(logic); GameObject.DestroyImmediate(dummyModel); } m_holderCreated = true; }
public override void OnInspectorGUI() { if (GUILayout.Button("Open Character Editor")) { CharacterEditorWindow.Init(); } }
public override void OnInspectorGUI() { GUILayout.Label("Stance File"); if (GUILayout.Button("Open Character Editor")) { CharacterEditorWindow.Init(); } }
public static void CreateAsset <T> () where T : ScriptableObject { T asset = ScriptableObject.CreateInstance <T> (); string path = AssetDatabase.GetAssetPath(Selection.activeObject); if (path == "") { path = "Assets"; } else if (Path.GetExtension(path) != "") { path = path.Replace(Path.GetFileName(AssetDatabase.GetAssetPath(Selection.activeObject)), ""); } string fileName; if (asset is MoveInfo) { fileName = "New Move"; } else if (asset is CharacterInfo) { fileName = "New Character"; } else if (asset is GlobalInfo) { fileName = "UFE_Config"; } else { fileName = typeof(T).ToString(); } string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "/" + fileName + ".asset"); AssetDatabase.CreateAsset(asset, assetPathAndName); AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; if (asset is MoveInfo) { //MoveEditorWindow.Init(); } else if (asset is GlobalInfo) { //GlobalEditorWindow.Init(); } else if (asset is CharacterInfo) { CharacterEditorWindow.Init(); } }
static void ShowWindow() { CharacterEditorWindow window = (CharacterEditorWindow)GetWindow(typeof(CharacterEditorWindow)); window.UpdateSelection(); Vector2 size = window.minSize; size.x = 300.0f; window.minSize = size; }
/// <summary> /// Loads all the libraries for the editors. /// </summary> void LoadLibraries() { battleEditor = new BattleEditorWindow(battleLibrary, battleContainer); characterEditor = new CharacterEditorWindow(characterLibrary, charContainer, poseList); enemyEditor = new EnemyEditorWindow(enemyLibrary, enemyContainer); backgroundEditor = new BackgroundEditorWindow(backgroundLibrary, backgroundContainer); itemEditor = new ItemEditorWindow(itemLibrary, itemContainer); moduleEditor = new ModuleEditorWindow(moduleLibrary, moduleContainer); InitializeWindow(); }
/// <summary> /// Loads all the libraries for the editors. /// </summary> void LoadLibraries() { battleEditor = new BattleEditorWindow(battleLibrary, battleContainer); characterEditor = new CharacterEditorWindow(characterLibrary, charContainer, poseList); enemyEditor = new EnemyEditorWindow(enemyLibrary, enemyContainer); backgroundEditor = new BackgroundEditorWindow(backgroundLibrary, backgroundContainer); itemEquipEditor = new ItemEquipEditorWindow(itemEquipLibrary, itemEquipContainer); kanjiEditor = new KanjiEditorWindow(kanjiLibrary, kanjiContainer); musicEditor = new MusicEditorWindow(musicLibrary, musicContainer); InitializeWindow(); }
public override void Initialize() { base.Initialize(); m_entityTypesLogics = CharacterEditorWindow.GetEffectClasses <Logic>(); m_entityLogicChoice = 0; m_characterName = string.Empty; m_textFieldStyle = new GUIStyle(CharacterEditorWindow.m_skin.textField); m_textFieldStyle.fixedWidth = 200; m_errorOnModel = false; m_errorOnName = false; m_holderCreated = false; m_characterModel = null; }
/// <summary> /// Loads all the libraries for the editors. /// </summary> void LoadLibraries() { missionEditor = new MissionEditorWindow(missionLibrary, missionContainer); mapEditor = new MapEditorWindow(mapLibrary, mapContainer); characterEditor = new CharacterEditorWindow(characterLibrary, characterContainer); classEditor = new ClassEditorWindow(classLibrary, classContainer); itemEditor = new ItemEditorWindow(itemLibrary, itemContainer); upgradeEditor = new UpgradeEditorWindow(upgradeLibrary, upgradeContainer); skillEditor = new SkillEditorWindow(skillLibrary, skillContainer); backgroundEditor = new BackgroundEditorWindow(backgroundLibrary, backgroundContainer); portraitEditor = new PortraitEditorWindow(portraitLibrary, portraitContainer, poseList); InitializeWindow(); }
public override void Initialize() { base.Initialize(); if (m_characterInstance != null) { CharacterEditorWindow.DestroyImmediate(m_characterInstance); } m_characterInstance = null; if ((m_parent as CharacterEditorWindow) == null || CharacterEditorWindow.m_activeEntityData == null) { // Prevent null reference exception when the item list is selected by default or when the editor is closing but still // executes a render call. return; } if (LoadEntityClientAssets()) { m_characterInstance = CharacterEditorWindow.Instantiate(CharacterEditorWindow.m_clientEntityPrefab); GameObject cameraHolder = (m_parent as CharacterEditorWindow).m_cameraHolder; m_characterInstance.transform.SetParent(cameraHolder.transform); m_characterInstance.transform.position = new Vector3(0, 0, 0); m_animation = m_characterInstance.GetComponentInChildren <Animation>(); if (m_animation == null) { m_animator = m_characterInstance.GetComponentInChildren <Animator>(); } m_characterInstance.transform.rotation = Quaternion.Euler(0, 180, 0); InitializeClips(); (m_parent as CharacterEditorWindow).m_characterCamera.targetTexture = new RenderTexture(512, 512, 24, RenderTextureFormat.ARGB32); ResetCharacterPosition(); } m_playingAnimation = false; m_activeAnimationName = string.Empty; }
private void CreateCharacter(string folderPath, PrefabHolder holder) { folderPath = "Assets" + folderPath; // CLIENT PREFAB GameObject clientTemp = new GameObject(); GameObject modelClient = CharacterEditorWindow.Instantiate(m_characterModel); modelClient.name = m_characterName + " - Idle"; modelClient.transform.SetParent(clientTemp.transform); clientTemp.name = "Entity_" + m_characterName + "Client"; clientTemp.layer = LayerMask.NameToLayer("Entity"); clientTemp.AddComponent <EntityCanvas>(); clientTemp.AddComponent <EntityBehaviour>(); NetworkIdentity networkIdentity = clientTemp.GetComponent <NetworkIdentity>(); BoxCollider boxColliderClient = clientTemp.AddComponent <BoxCollider>(); boxColliderClient.center = new Vector3(0, 0.5f, 0); boxColliderClient.size = new Vector3(0.5f, 1, 0.5f); boxColliderClient.isTrigger = true; var selectedLogicType = m_entityTypesLogics[m_entityLogicChoice]; System.Type logicType = CharacterEditorWindow.GetType(selectedLogicType); Logic logic = clientTemp.AddComponent(logicType) as Logic; logic.SetMobaEntity(clientTemp); networkIdentity.localPlayerAuthority = logic.IsLocalPlayerAuthority(); EntityTransform modelTransform = modelClient.AddComponent <EntityTransform>(); modelTransform.EntityTransformType = EEntityTransform.Model; GameObject transformLeftHandGOClient = new GameObject(); transformLeftHandGOClient.name = "Transform_" + EEntityTransform.LeftHand; EntityTransform leftHandTransformClient = transformLeftHandGOClient.AddComponent <EntityTransform>(); leftHandTransformClient.EntityTransformType = EEntityTransform.LeftHand; GameObject transformRightHandGOClient = new GameObject(); transformRightHandGOClient.name = "Transform_" + EEntityTransform.RightHand; EntityTransform rightHandTransformClient = transformRightHandGOClient.AddComponent <EntityTransform>(); rightHandTransformClient.EntityTransformType = EEntityTransform.RightHand; GameObject transformCenterGOClient = new GameObject(); transformCenterGOClient.name = "Transform_" + EEntityTransform.Center; EntityTransform centerTransformClient = transformCenterGOClient.AddComponent <EntityTransform>(); centerTransformClient.EntityTransformType = EEntityTransform.Center; GameObject transformCanvasGOClient = new GameObject(); transformCanvasGOClient.name = "Transform_" + EEntityTransform.Head; EntityTransform canvasTransformClient = transformCanvasGOClient.AddComponent <EntityTransform>(); canvasTransformClient.EntityTransformType = EEntityTransform.Head; GameObject transformFloorGOClient = new GameObject(); transformFloorGOClient.name = "Transform_" + EEntityTransform.Floor; EntityTransform floorTransformClient = transformFloorGOClient.AddComponent <EntityTransform>(); floorTransformClient.EntityTransformType = EEntityTransform.Floor; GameObject transformSkyGOClient = new GameObject(); transformSkyGOClient.name = "Transform_" + EEntityTransform.Sky; EntityTransform skyTransformClient = transformSkyGOClient.AddComponent <EntityTransform>(); skyTransformClient.EntityTransformType = EEntityTransform.Sky; transformRightHandGOClient.transform.SetParent(clientTemp.transform); transformRightHandGOClient.transform.localPosition = new Vector3(0, 0.5f, 0.25f); transformLeftHandGOClient.transform.SetParent(clientTemp.transform); transformLeftHandGOClient.transform.localPosition = new Vector3(0, 0.5f, 0.25f); transformCenterGOClient.transform.SetParent(clientTemp.transform); transformCenterGOClient.transform.localPosition = new Vector3(0, 0.5f, 0); transformCanvasGOClient.transform.SetParent(clientTemp.transform); transformCanvasGOClient.transform.localPosition = new Vector3(0, 1.3f, 0); transformFloorGOClient.transform.SetParent(clientTemp.transform); transformSkyGOClient.transform.SetParent(clientTemp.transform); transformSkyGOClient.transform.localPosition = new Vector3(0, 5f, 0); Debug.Log("Create Client prefab at " + folderPath + "/" + clientTemp.name + ".prefab"); UnityEngine.Object emptyPrefab = PrefabUtility.CreateEmptyPrefab(folderPath + "/" + clientTemp.name + ".prefab"); GameObject clientPrefab = PrefabUtility.ReplacePrefab(clientTemp, emptyPrefab, ReplacePrefabOptions.ConnectToPrefab); CreateCharacterData(clientTemp.GetComponent <Logic>()); GameObject.DestroyImmediate(GameObject.Find(clientTemp.name)); // SERVER PREFAB GameObject serverTemp = new GameObject(); GameObject modelServer = CharacterEditorWindow.Instantiate(m_characterModel); modelServer.name = m_characterName + " - Idle"; modelServer.transform.SetParent(serverTemp.transform); serverTemp.name = "Entity_" + m_characterName; serverTemp.layer = LayerMask.NameToLayer("Entity"); serverTemp.AddComponent <EntityCanvas>(); serverTemp.AddComponent <EntityBehaviour>(); NetworkIdentity networkIdentityServer = serverTemp.GetComponent <NetworkIdentity>(); networkIdentityServer.localPlayerAuthority = true; BoxCollider boxColliderServer = serverTemp.AddComponent <BoxCollider>(); boxColliderServer.center = new Vector3(0, 0.5f, 0); boxColliderServer.size = new Vector3(0.5f, 1, 0.5f); boxColliderServer.isTrigger = true; Logic serverLogic = serverTemp.AddComponent(logicType) as Logic; serverLogic.SetMobaEntity(serverTemp); networkIdentityServer.localPlayerAuthority = serverLogic.IsLocalPlayerAuthority(); EntityTransform modelServerTransform = modelServer.AddComponent <EntityTransform>(); modelServerTransform.EntityTransformType = EEntityTransform.Model; GameObject transformLeftHandGOServer = new GameObject(); transformLeftHandGOServer.name = "Transform_" + EEntityTransform.LeftHand; EntityTransform leftHandTransformServer = transformLeftHandGOServer.AddComponent <EntityTransform>(); leftHandTransformServer.EntityTransformType = EEntityTransform.LeftHand; GameObject transformRightHandGOServer = new GameObject(); transformRightHandGOServer.name = "Transform_" + EEntityTransform.RightHand; EntityTransform rightHandTransformServer = transformRightHandGOServer.AddComponent <EntityTransform>(); rightHandTransformServer.EntityTransformType = EEntityTransform.RightHand; GameObject transformCenterGOServer = new GameObject(); transformCenterGOServer.name = "Transform_" + EEntityTransform.Center; EntityTransform centerTransformServer = transformCenterGOServer.AddComponent <EntityTransform>(); centerTransformServer.EntityTransformType = EEntityTransform.Center; GameObject transformCanvasGOServer = new GameObject(); transformCanvasGOServer.name = "Transform_" + EEntityTransform.Head; EntityTransform canvasTransformServer = transformCanvasGOServer.AddComponent <EntityTransform>(); canvasTransformServer.EntityTransformType = EEntityTransform.Head; GameObject transformFloorGOServer = new GameObject(); transformFloorGOServer.name = "Transform_" + EEntityTransform.Floor; EntityTransform floorTransformServer = transformFloorGOServer.AddComponent <EntityTransform>(); floorTransformServer.EntityTransformType = EEntityTransform.Floor; GameObject transformSkyGOServer = new GameObject(); transformSkyGOServer.name = "Transform_" + EEntityTransform.Sky; EntityTransform skyTransformServer = transformSkyGOServer.AddComponent <EntityTransform>(); skyTransformServer.EntityTransformType = EEntityTransform.Sky; transformRightHandGOServer.transform.SetParent(serverTemp.transform); transformRightHandGOServer.transform.localPosition = new Vector3(0, 0.5f, 0.25f); transformLeftHandGOServer.transform.SetParent(serverTemp.transform); transformLeftHandGOServer.transform.localPosition = new Vector3(0, 0.5f, 0.25f); transformCenterGOServer.transform.SetParent(serverTemp.transform); transformCenterGOServer.transform.localPosition = new Vector3(0, 0.5f, 0); transformCanvasGOServer.transform.SetParent(serverTemp.transform); transformCanvasGOServer.transform.localPosition = new Vector3(0, 1.3f, 0); transformFloorGOServer.transform.SetParent(serverTemp.transform); transformSkyGOServer.transform.SetParent(serverTemp.transform); transformSkyGOServer.transform.localPosition = new Vector3(0, 5f, 0); UnityEngine.Object emptyPrefabServer = PrefabUtility.CreateEmptyPrefab(folderPath + "/" + serverTemp.name + ".prefab"); GameObject serverPrefab = PrefabUtility.ReplacePrefab(serverTemp, emptyPrefabServer, ReplacePrefabOptions.ConnectToPrefab); GameObject.DestroyImmediate(GameObject.Find(serverTemp.name)); PoolData clientCharacterPoolData = new PoolData(); clientCharacterPoolData.m_quantity = 0; clientCharacterPoolData.m_register = false; clientCharacterPoolData.m_obj = clientPrefab; PoolData serverCharacterPoolData = new PoolData(); serverCharacterPoolData.m_quantity = 0; serverCharacterPoolData.m_register = true; serverCharacterPoolData.m_obj = serverPrefab; holder.m_poolDataList.Add(clientCharacterPoolData); holder.m_poolDataList.Add(serverCharacterPoolData); PrefabUtility.ReplacePrefab(SpawnManager.instance.gameObject, PrefabUtility.GetPrefabParent(SpawnManager.instance), ReplacePrefabOptions.ConnectToPrefab); }
public static void CreateAsset <T> () where T : ScriptableObject { T asset = ScriptableObject.CreateInstance <T> (); string path = AssetDatabase.GetAssetPath(Selection.activeObject); if (path == "") { path = "Assets"; } else if (Path.GetExtension(path) != "") { path = path.Replace(Path.GetFileName(AssetDatabase.GetAssetPath(Selection.activeObject)), ""); } string fileName; if (asset is MoveInfo) { fileName = "New Move"; } else if (asset is CharacterInfo) { fileName = "New Character"; } else if (asset.GetType().ToString().Equals("AIInfo")) { fileName = "New AI Instructions"; } else if (asset is GlobalInfo) { fileName = "UFE_Config"; } else { fileName = typeof(T).ToString(); } string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "/" + fileName + ".asset"); AssetDatabase.CreateAsset(asset, assetPathAndName); AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; if (asset is MoveInfo) { MoveEditorWindow.Init(); } else if (asset is GlobalInfo) { GlobalEditorWindow.Init(); } else if (asset.GetType().ToString().Equals("AIInfo")) { UFE.SearchClass("AIEditorWindow").GetMethod( "Init", BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy, null, null, null ).Invoke(null, new object[] {}); } else if (asset is CharacterInfo) { CharacterEditorWindow.Init(); } }
static void CreateWindow() { CharacterEditorWindow window = (CharacterEditorWindow)EditorWindow.GetWindow(typeof(CharacterEditorWindow)); window.Show(); }
public static void CreateAsset <T> (T data = null, T oldFile = null) where T : ScriptableObject { T asset = ScriptableObject.CreateInstance <T> (); Object referencePath = Selection.activeObject; if (data != null) { asset = data; if (oldFile != null) { referencePath = oldFile; } } string path = AssetDatabase.GetAssetPath(referencePath); if (path == "") { path = "Assets"; } else if (Path.GetExtension(path) != "") { path = path.Replace(Path.GetFileName(AssetDatabase.GetAssetPath(referencePath)), ""); } string fileName; if (oldFile != null) { fileName = oldFile.name; } else if (asset is MoveInfo) { fileName = "New Move"; } else if (asset is UFE3D.CharacterInfo) { fileName = "New Character"; } else if (asset.GetType().ToString().Equals("UFE3D.AIInfo")) { fileName = "New AI Instructions"; } else if (asset is GlobalInfo) { fileName = "New UFE Config"; } else if (asset is StanceInfo) { fileName = "New Combat Stance"; } else { fileName = typeof(T).ToString(); } string assetPathAndName = oldFile != null? path + fileName + ".asset" : AssetDatabase.GenerateUniqueAssetPath(path + "/" + fileName + ".asset"); if (!AssetDatabase.Contains(asset)) { AssetDatabase.CreateAsset(asset, assetPathAndName); } AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; if (asset is MoveInfo) { MoveEditorWindow.Init(); } else if (asset is GlobalInfo) { GlobalEditorWindow.Init(); } else if (asset.GetType().ToString().Equals("UFE3D.AIInfo")) { UFE.SearchClass("AIEditorWindow").GetMethod( "Init", BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy, null, null, null ).Invoke(null, new object[] {}); } else if (asset is UFE3D.CharacterInfo) { CharacterEditorWindow.Init(); } }
public static void Init() { characterEditorWindow = EditorWindow.GetWindow <CharacterEditorWindow>(false, "Character", true); characterEditorWindow.Show(); characterEditorWindow.Populate(); }