Пример #1
0
    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;
    }
Пример #2
0
 public override void OnInspectorGUI()
 {
     if (GUILayout.Button("Open Character Editor"))
     {
         CharacterEditorWindow.Init();
     }
 }
Пример #3
0
 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();
        }
    }
Пример #5
0
    static void ShowWindow()
    {
        CharacterEditorWindow window = (CharacterEditorWindow)GetWindow(typeof(CharacterEditorWindow));

        window.UpdateSelection();

        Vector2 size = window.minSize;

        size.x         = 300.0f;
        window.minSize = size;
    }
Пример #6
0
    /// <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();
    }
Пример #8
0
 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;
 }
Пример #9
0
    /// <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();
    }
Пример #10
0
    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;
    }
Пример #11
0
    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);
    }
Пример #12
0
    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();
        }
    }
Пример #13
0
    static void CreateWindow()
    {
        CharacterEditorWindow window = (CharacterEditorWindow)EditorWindow.GetWindow(typeof(CharacterEditorWindow));

        window.Show();
    }
Пример #14
0
    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();
        }
    }
Пример #15
0
 public static void Init()
 {
     characterEditorWindow = EditorWindow.GetWindow <CharacterEditorWindow>(false, "Character", true);
     characterEditorWindow.Show();
     characterEditorWindow.Populate();
 }