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(); }
public void Save() { if (!UEAsset.SaveFilePath(out string filePath, "asset", m_ModifingMesh.name)) { return; } UEAsset.CreateOrReplaceMainAsset(m_ModifingMesh, UEPath.FilePathToAssetPath(filePath)); }
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); }
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)); }