Ejemplo n.º 1
0
        void OnGUI()
        {
            EditorGUILayout.BeginVertical();
            EditorGUILayout.LabelField("Select Target FBX Source");
            m_ModelPrefab = EditorGUILayout.ObjectField(m_ModelPrefab, typeof(GameObject), false) as GameObject;

            ModelImporter importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(Selection.activeObject)) as ModelImporter;

            if (importer != null)
            {
                m_ModelPrefab = AssetDatabase.LoadAssetAtPath <GameObject>(AssetDatabase.GetAssetPath(Selection.activeObject));
            }
            else
            {
                importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(m_ModelPrefab)) as ModelImporter;
            }

            if (!importer)
            {
                EditorGUILayout.LabelField("<Color=#FF0000>Select FBX Model</Color>", UEGUIStyle_Window.m_ErrorLabel);
                return;
            }

            m_GenerateUV = (enum_VertexData)EditorGUILayout.EnumPopup("Generate UV:", m_GenerateUV);
            if (m_GenerateUV != enum_VertexData.None && GUILayout.Button("Generate"))
            {
                if (UEAsset.SaveFilePath(out string filePath, "prefab", UEPath.RemoveExtension(UEPath.GetPathName(AssetDatabase.GetAssetPath(m_ModelPrefab))) + "_SN"))
                {
                    GenerateSkinnedTarget(UEPath.FilePathToAssetPath(filePath), m_ModelPrefab, m_GenerateUV);
                }
            }

            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 2
0
        public void Save()
        {
            if (!UEAsset.SaveFilePath(out string filePath, "asset", m_ModifingMesh.name))
            {
                return;
            }

            UEAsset.CreateOrReplaceMainAsset(m_ModifingMesh, UEPath.FilePathToAssetPath(filePath));
        }
Ejemplo n.º 3
0
        public static bool SelectDirectory(UnityEngine.Object _srcAsset, out string directoryPath, out string objName)
        {
            directoryPath = "";
            objName       = "";
            string assetPath    = AssetDatabase.GetAssetPath(_srcAsset);
            string fbxDirectory = (Application.dataPath.Remove(Application.dataPath.Length - 6, 6) + assetPath.Remove(assetPath.LastIndexOf('/'))).Replace("/", @"\");
            string folderPath   = EditorUtility.OpenFolderPanel("Select Directory", fbxDirectory, "");

            if (folderPath.Length == 0)
            {
                return(false);
            }
            directoryPath = UEPath.FilePathToAssetPath(folderPath) + "/";
            objName       = UEPath.GetPathName(assetPath);
            return(true);
        }
Ejemplo n.º 4
0
        void ProceedGUI()
        {
            EditorGUILayout.LabelField("Select Optimize AnimationClip Asset");
            m_OptimizeAsset = (AnimationClip)EditorGUILayout.ObjectField(m_OptimizeAsset, typeof(AnimationClip), false);

            if (!m_OptimizeAsset)
            {
                return;
            }

            m_OptimizeScale     = EditorGUILayout.Toggle("Wipe Scale:", m_OptimizeScale);
            m_OptimizePresicion = EditorGUILayout.IntSlider("Float Presicion", m_OptimizePresicion, 2, 8);
            if (GUILayout.Button("Optimize"))
            {
                if (UEAsset.SaveFilePath(out string filePath, "anim", UEPath.RemoveExtension(UEPath.GetPathName(AssetDatabase.GetAssetPath(m_OptimizeAsset))) + "_O"))
                {
                    AnimationClip clip      = OptimizeAnimation(m_OptimizeAsset, m_OptimizePresicion, m_OptimizeScale);
                    string        assetPath = UEPath.FilePathToAssetPath(filePath);
                    AssetDatabase.CreateAsset(clip, assetPath);
                }
            }
        }
        void CreateSquare(float _tileSize, int _radius, bool circled)
        {
            Vector3        tileSize  = new Vector3(_tileSize, 0, _tileSize);
            List <Vector3> verticies = new List <Vector3>();
            List <Vector2> uvs       = new List <Vector2>();
            List <int>     indices   = new List <int>();
            List <Vector3> normals   = new List <Vector3>();
            List <Vector4> tangents  = new List <Vector4>();

            Vector2 uv0 = new Vector2(0, 0);
            Vector2 uv1 = new Vector2(1, 0);
            Vector2 uv2 = new Vector2(0, 1);
            Vector2 uv3 = new Vector2(1, 1);

            int     tileIndex = 0;
            Vector3 halfSize  = tileSize / 2;

            for (int i = -_radius + 1; i < _radius; i++)
            {
                for (int j = -_radius + 1; j < _radius; j++)
                {
                    if (circled && (i * i + j * j > _radius * _radius))
                    {
                        continue;
                    }

                    int     verticiesStartIndex = tileIndex * 4;
                    Vector3 v0 = -halfSize + new Vector3(i, 0, j).Multiply(tileSize);
                    Vector3 v1 = -halfSize + new Vector3(i + 1, 0, j).Multiply(tileSize);
                    Vector3 v2 = -halfSize + new Vector3(i, 0, j + 1).Multiply(tileSize);
                    Vector3 v3 = -halfSize + new Vector3(i + 1, 0, j + 1).Multiply(tileSize);

                    verticies.Add(v0);
                    verticies.Add(v1);
                    verticies.Add(v2);
                    verticies.Add(v3);

                    normals.Add(Vector3.up);
                    normals.Add(Vector3.up);
                    normals.Add(Vector3.up);
                    normals.Add(Vector3.up);

                    tangents.Add(new Vector4(1, 0, 0, 1));
                    tangents.Add(new Vector4(1, 0, 0, 1));
                    tangents.Add(new Vector4(1, 0, 0, 1));
                    tangents.Add(new Vector4(1, 0, 0, 1));

                    uvs.Add(uv0);
                    uvs.Add(uv1);
                    uvs.Add(uv2);
                    uvs.Add(uv3);

                    int indice0 = verticiesStartIndex + 0;
                    int indice1 = verticiesStartIndex + 1;
                    int indice2 = verticiesStartIndex + 2;
                    int indice3 = verticiesStartIndex + 3;
                    indices.Add(indice0);
                    indices.Add(indice2);
                    indices.Add(indice3);
                    indices.Add(indice0);
                    indices.Add(indice3);
                    indices.Add(indice1);
                    tileIndex++;
                }
            }

            Mesh mesh = new Mesh();

            mesh.name = "CustomPlane";
            mesh.SetVertices(verticies);
            mesh.SetUVs(0, uvs);
            mesh.SetNormals(normals);
            mesh.SetTangents(tangents);
            mesh.SetIndices(indices, MeshTopology.Triangles, 0);

            if (!UEAsset.SaveFilePath(out string path, "asset", "CustomPlane"))
            {
                return;
            }

            UEAsset.CreateOrReplaceMainAsset(mesh, UEPath.FilePathToAssetPath(path));
        }