public static long GetMeshToString(GameObject gameObj, Material[] materials, ref StringBuilder objects, ref StringBuilder connections, GameObject parentObject = null, long parentModelId = 0L) { StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder2 = new StringBuilder(); long randomFBXId = FBXWriter.GetRandomFBXId(); long randomFBXId2 = FBXWriter.GetRandomFBXId(); MeshFilter component = gameObj.GetComponent <MeshFilter>(); string name = gameObj.name; string text = "Null"; bool flag = component != null; if (flag) { name = component.sharedMesh.name; text = "Mesh"; } bool flag2 = parentModelId == 0L; if (flag2) { stringBuilder2.AppendLine("\t;Model::" + name + ", Model::RootNode"); } else { stringBuilder2.AppendLine("\t;Model::" + name + ", Model::USING PARENT"); } stringBuilder2.AppendLine(string.Concat(new object[] { "\tC: \"OO\",", randomFBXId2, ",", parentModelId })); stringBuilder2.AppendLine(); stringBuilder.AppendLine(string.Concat(new object[] { "\tModel: ", randomFBXId2, ", \"Model::", gameObj.name, "\", \"", text, "\" {" })); stringBuilder.AppendLine("\t\tVersion: 232"); stringBuilder.AppendLine("\t\tProperties70: {"); stringBuilder.AppendLine("\t\t\tP: \"RotationOrder\", \"enum\", \"\", \"\",4"); stringBuilder.AppendLine("\t\t\tP: \"RotationActive\", \"bool\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\tP: \"InheritType\", \"enum\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",0"); Vector3 localPosition = gameObj.transform.localPosition; stringBuilder.Append("\t\t\tP: \"Lcl Translation\", \"Lcl Translation\", \"\", \"A+\","); stringBuilder.AppendFormat("{0},{1},{2}", localPosition.x * -1f, localPosition.y, localPosition.z); stringBuilder.AppendLine(); Vector3 localEulerAngles = gameObj.transform.localEulerAngles; stringBuilder.AppendFormat("\t\t\tP: \"Lcl Rotation\", \"Lcl Rotation\", \"\", \"A+\",{0},{1},{2}", localEulerAngles.x, localEulerAngles.y * -1f, -1f * localEulerAngles.z); stringBuilder.AppendLine(); Vector3 localScale = gameObj.transform.localScale; stringBuilder.AppendFormat("\t\t\tP: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",{0},{1},{2}", localScale.x, localScale.y, localScale.z); stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t\tP: \"currentUVSet\", \"KString\", \"\", \"U\", \"map1\""); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t\tShading: T"); stringBuilder.AppendLine("\t\tCulling: \"CullingOff\""); stringBuilder.AppendLine("\t}"); bool flag3 = component != null; if (flag3) { Mesh sharedMesh = component.sharedMesh; stringBuilder.AppendLine("\tGeometry: " + randomFBXId + ", \"Geometry::\", \"Mesh\" {"); Vector3[] vertices = sharedMesh.vertices; int num = sharedMesh.vertexCount * 3; stringBuilder.AppendLine("\t\tVertices: *" + num + " {"); stringBuilder.Append("\t\t\ta: "); for (int i = 0; i < vertices.Length; i++) { bool flag4 = i > 0; if (flag4) { stringBuilder.Append(","); } stringBuilder.AppendFormat("{0},{1},{2}", vertices[i].x * -1f, vertices[i].y, vertices[i].z); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t} "); int num2 = sharedMesh.triangles.Length; int[] triangles = sharedMesh.triangles; stringBuilder.AppendLine("\t\tPolygonVertexIndex: *" + num2 + " {"); stringBuilder.Append("\t\t\ta: "); for (int j = 0; j < num2; j += 3) { bool flag5 = j > 0; if (flag5) { stringBuilder.Append(","); } stringBuilder.AppendFormat("{0},{1},{2}", triangles[j], triangles[j + 2], triangles[j + 1] * -1 - 1); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t} "); stringBuilder.AppendLine("\t\tGeometryVersion: 124"); stringBuilder.AppendLine("\t\tLayerElementNormal: 0 {"); stringBuilder.AppendLine("\t\t\tVersion: 101"); stringBuilder.AppendLine("\t\t\tName: \"\""); stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygonVertex\""); stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"Direct\""); Vector3[] normals = sharedMesh.normals; stringBuilder.AppendLine("\t\t\tNormals: *" + num2 * 3 + " {"); stringBuilder.Append("\t\t\t\ta: "); for (int k = 0; k < num2; k += 3) { bool flag6 = k > 0; if (flag6) { stringBuilder.Append(","); } Vector3 vector = normals[triangles[k]]; stringBuilder.AppendFormat("{0},{1},{2},", vector.x * -1f, vector.y, vector.z); vector = normals[triangles[k + 2]]; stringBuilder.AppendFormat("{0},{1},{2},", vector.x * -1f, vector.y, vector.z); vector = normals[triangles[k + 1]]; stringBuilder.AppendFormat("{0},{1},{2}", vector.x * -1f, vector.y, vector.z); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); int num3 = sharedMesh.uv.Length; Vector2[] array = sharedMesh.uv; stringBuilder.AppendLine("\t\tLayerElementUV: 0 {"); stringBuilder.AppendLine("\t\t\tVersion: 101"); stringBuilder.AppendLine("\t\t\tName: \"map1\""); stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygonVertex\""); stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"IndexToDirect\""); stringBuilder.AppendLine("\t\t\tUV: *" + num3 * 2 + " {"); stringBuilder.Append("\t\t\t\ta: "); for (int l = 0; l < num3; l++) { bool flag7 = l > 0; if (flag7) { stringBuilder.Append(","); } stringBuilder.AppendFormat("{0},{1}", array[l].x, array[l].y); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t\t\t}"); stringBuilder.AppendLine("\t\t\tUVIndex: *" + num2 + " {"); stringBuilder.Append("\t\t\t\ta: "); for (int m = 0; m < num2; m += 3) { bool flag8 = m > 0; if (flag8) { stringBuilder.Append(","); } int num4 = triangles[m]; int num5 = triangles[m + 2]; int num6 = triangles[m + 1]; stringBuilder.AppendFormat("{0},{1},{2}", num4, num5, num6); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); bool flag9 = sharedMesh.uv2.Length != 0; if (flag9) { num3 = sharedMesh.uv2.Length; array = sharedMesh.uv2; stringBuilder.AppendLine("\t\tLayerElementUV: 1 {"); stringBuilder.AppendLine("\t\t\tVersion: 101"); stringBuilder.AppendLine("\t\t\tName: \"map2\""); stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygonVertex\""); stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"IndexToDirect\""); stringBuilder.AppendLine("\t\t\tUV: *" + num3 * 2 + " {"); stringBuilder.Append("\t\t\t\ta: "); for (int n = 0; n < num3; n++) { bool flag10 = n > 0; if (flag10) { stringBuilder.Append(","); } stringBuilder.AppendFormat("{0},{1}", array[n].x, array[n].y); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t\t\t}"); stringBuilder.AppendLine("\t\t\tUVIndex: *" + num2 + " {"); stringBuilder.Append("\t\t\t\ta: "); for (int num7 = 0; num7 < num2; num7 += 3) { bool flag11 = num7 > 0; if (flag11) { stringBuilder.Append(","); } int num8 = triangles[num7]; int num9 = triangles[num7 + 2]; int num10 = triangles[num7 + 1]; stringBuilder.AppendFormat("{0},{1},{2}", num8, num9, num10); } stringBuilder.AppendLine(); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); } stringBuilder.AppendLine("\t\tLayerElementMaterial: 0 {"); stringBuilder.AppendLine("\t\t\tVersion: 101"); stringBuilder.AppendLine("\t\t\tName: \"\""); stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygon\""); stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"IndexToDirect\""); int num11 = 0; int subMeshCount = sharedMesh.subMeshCount; StringBuilder stringBuilder3 = new StringBuilder(); bool flag12 = subMeshCount == 1; if (flag12) { int num12 = triangles.Length / 3; for (int num13 = 0; num13 < num12; num13++) { stringBuilder3.Append("0,"); num11++; } } else { List <int[]> list = new List <int[]>(); for (int num14 = 0; num14 < subMeshCount; num14++) { list.Add(sharedMesh.GetIndices(num14)); } for (int num15 = 0; num15 < triangles.Length; num15 += 3) { for (int num16 = 0; num16 < list.Count; num16++) { bool flag13 = false; for (int num17 = 0; num17 < list[num16].Length; num17 += 3) { bool flag14 = triangles[num15] == list[num16][num17] && triangles[num15 + 1] == list[num16][num17 + 1] && triangles[num15 + 2] == list[num16][num17 + 2]; if (flag14) { stringBuilder3.Append(num16.ToString()); stringBuilder3.Append(","); num11++; break; } bool flag15 = flag13; if (flag15) { break; } } } } } stringBuilder.AppendLine("\t\t\tMaterials: *" + num11 + " {"); stringBuilder.Append("\t\t\t\ta: "); stringBuilder.AppendLine(stringBuilder3.ToString()); stringBuilder.AppendLine("\t\t\t} "); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t\tLayer: 0 {"); stringBuilder.AppendLine("\t\t\tVersion: 100"); stringBuilder.AppendLine("\t\t\tLayerElement: {"); stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementNormal\""); stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t\tLayerElement: {"); stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementMaterial\""); stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t\tLayerElement: {"); stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementTexture\""); stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t\tLayerElement: {"); stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementUV\""); stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); bool flag16 = sharedMesh.uv2.Length != 0; if (flag16) { stringBuilder.AppendLine("\t\tLayer: 1 {"); stringBuilder.AppendLine("\t\t\tVersion: 100"); stringBuilder.AppendLine("\t\t\tLayerElement: {"); stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementUV\""); stringBuilder.AppendLine("\t\t\t\tTypedIndex: 1"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); } stringBuilder.AppendLine("\t}"); stringBuilder2.AppendLine("\t;Geometry::, Model::" + sharedMesh.name); stringBuilder2.AppendLine(string.Concat(new object[] { "\tC: \"OO\",", randomFBXId, ",", randomFBXId2 })); stringBuilder2.AppendLine(); MeshRenderer component2 = gameObj.GetComponent <MeshRenderer>(); bool flag17 = component2 != null; if (flag17) { Material[] sharedMaterials = component2.sharedMaterials; for (int num18 = 0; num18 < sharedMaterials.Length; num18++) { Material material = sharedMaterials[num18]; int num19 = Mathf.Abs(material.GetInstanceID()); bool flag18 = material == null; if (flag18) { Debug.LogError("ERROR: the game object " + gameObj.name + " has an empty material on it. This will export problematic files. Please fix and reexport"); } else { stringBuilder2.AppendLine("\t;Material::" + material.name + ", Model::" + sharedMesh.name); stringBuilder2.AppendLine(string.Concat(new object[] { "\tC: \"OO\",", num19, ",", randomFBXId2 })); stringBuilder2.AppendLine(); } } } } for (int num20 = 0; num20 < gameObj.transform.childCount; num20++) { GameObject gameObject = gameObj.transform.GetChild(num20).gameObject; FBXMeshGetter.GetMeshToString(gameObject, materials, ref stringBuilder, ref stringBuilder2, gameObj, randomFBXId2); } objects.Append(stringBuilder.ToString()); connections.Append(stringBuilder2.ToString()); return(randomFBXId2); }
public static string MeshToString(GameObject gameObj, string newPath, Material[] materials, bool copyMaterials = false, bool copyTextures = false) { StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder2 = new StringBuilder(); stringBuilder2.AppendLine("; Object properties"); stringBuilder2.AppendLine(";------------------------------------------------------------------"); stringBuilder2.AppendLine(""); stringBuilder2.AppendLine("Objects: {"); StringBuilder stringBuilder3 = new StringBuilder(); stringBuilder3.AppendLine("; Object connections"); stringBuilder3.AppendLine(";------------------------------------------------------------------"); stringBuilder3.AppendLine(""); stringBuilder3.AppendLine("Connections: {"); stringBuilder3.AppendLine("\t"); string value = ""; string value2 = ""; FBXMaterialGetter.GetAllMaterialsToString(gameObj, newPath, copyMaterials, copyTextures, materials, out value, out value2); FBXMeshGetter.GetMeshToString(gameObj, materials, ref stringBuilder2, ref stringBuilder3, null, 0L); stringBuilder2.Append(value); stringBuilder3.Append(value2); stringBuilder2.AppendLine("}"); stringBuilder3.AppendLine("}"); stringBuilder.AppendLine("; FBX 7.3.0 project file"); stringBuilder.AppendLine("; Copyright (C) 1997-2010 Autodesk Inc. and/or its licensors."); stringBuilder.AppendLine("; All rights reserved."); stringBuilder.AppendLine("; ----------------------------------------------------"); stringBuilder.AppendLine(); stringBuilder.AppendLine("FBXHeaderExtension: {"); stringBuilder.AppendLine("\tFBXHeaderVersion: 1003"); stringBuilder.AppendLine("\tFBXVersion: 7300"); DateTime now = DateTime.Now; stringBuilder.AppendLine("\tCreationTimeStamp: {"); stringBuilder.AppendLine("\t\tVersion: 1000"); stringBuilder.AppendLine("\t\tYear: " + now.Year); stringBuilder.AppendLine("\t\tMonth: " + now.Month); stringBuilder.AppendLine("\t\tDay: " + now.Day); stringBuilder.AppendLine("\t\tHour: " + now.Hour); stringBuilder.AppendLine("\t\tMinute: " + now.Minute); stringBuilder.AppendLine("\t\tSecond: " + now.Second); stringBuilder.AppendLine("\t\tMillisecond: " + now.Millisecond); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("\tCreator: \"" + FBXWriter.VersionInformation + "\""); stringBuilder.AppendLine("\tSceneInfo: \"SceneInfo::GlobalInfo\", \"UserData\" {"); stringBuilder.AppendLine("\t\tType: \"UserData\""); stringBuilder.AppendLine("\t\tVersion: 100"); stringBuilder.AppendLine("\t\tMetaData: {"); stringBuilder.AppendLine("\t\t\tVersion: 100"); stringBuilder.AppendLine("\t\t\tTitle: \"\""); stringBuilder.AppendLine("\t\t\tSubject: \"\""); stringBuilder.AppendLine("\t\t\tAuthor: \"\""); stringBuilder.AppendLine("\t\t\tKeywords: \"\""); stringBuilder.AppendLine("\t\t\tRevision: \"\""); stringBuilder.AppendLine("\t\t\tComment: \"\""); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t\tProperties70: {"); string str = Application.dataPath + newPath + ".fbx"; stringBuilder.AppendLine("\t\t\tP: \"DocumentUrl\", \"KString\", \"Url\", \"\", \"" + str + "\""); stringBuilder.AppendLine("\t\t\tP: \"SrcDocumentUrl\", \"KString\", \"Url\", \"\", \"" + str + "\""); stringBuilder.AppendLine("\t\t\tP: \"Original\", \"Compound\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"Original|ApplicationVendor\", \"KString\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"Original|ApplicationName\", \"KString\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"Original|ApplicationVersion\", \"KString\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"Original|DateTime_GMT\", \"DateTime\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"Original|FileName\", \"KString\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"LastSaved\", \"Compound\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"LastSaved|ApplicationVendor\", \"KString\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"LastSaved|ApplicationName\", \"KString\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"LastSaved|ApplicationVersion\", \"KString\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t\tP: \"LastSaved|DateTime_GMT\", \"DateTime\", \"\", \"\", \"\""); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("}"); stringBuilder.AppendLine("GlobalSettings: {"); stringBuilder.AppendLine("\tVersion: 1000"); stringBuilder.AppendLine("\tProperties70: {"); stringBuilder.AppendLine("\t\tP: \"UpAxis\", \"int\", \"Integer\", \"\",1"); stringBuilder.AppendLine("\t\tP: \"UpAxisSign\", \"int\", \"Integer\", \"\",1"); stringBuilder.AppendLine("\t\tP: \"FrontAxis\", \"int\", \"Integer\", \"\",2"); stringBuilder.AppendLine("\t\tP: \"FrontAxisSign\", \"int\", \"Integer\", \"\",1"); stringBuilder.AppendLine("\t\tP: \"CoordAxis\", \"int\", \"Integer\", \"\",0"); stringBuilder.AppendLine("\t\tP: \"CoordAxisSign\", \"int\", \"Integer\", \"\",1"); stringBuilder.AppendLine("\t\tP: \"OriginalUpAxis\", \"int\", \"Integer\", \"\",-1"); stringBuilder.AppendLine("\t\tP: \"OriginalUpAxisSign\", \"int\", \"Integer\", \"\",1"); stringBuilder.AppendLine("\t\tP: \"UnitScaleFactor\", \"double\", \"Number\", \"\",100"); stringBuilder.AppendLine("\t\tP: \"OriginalUnitScaleFactor\", \"double\", \"Number\", \"\",100"); stringBuilder.AppendLine("\t\tP: \"AmbientColor\", \"ColorRGB\", \"Color\", \"\",0,0,0"); stringBuilder.AppendLine("\t\tP: \"DefaultCamera\", \"KString\", \"\", \"\", \"Producer Perspective\""); stringBuilder.AppendLine("\t\tP: \"TimeMode\", \"enum\", \"\", \"\",11"); stringBuilder.AppendLine("\t\tP: \"TimeSpanStart\", \"KTime\", \"Time\", \"\",0"); stringBuilder.AppendLine("\t\tP: \"TimeSpanStop\", \"KTime\", \"Time\", \"\",479181389250"); stringBuilder.AppendLine("\t\tP: \"CustomFrameRate\", \"double\", \"Number\", \"\",-1"); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("}"); stringBuilder.AppendLine("; Object definitions"); stringBuilder.AppendLine(";------------------------------------------------------------------"); stringBuilder.AppendLine(""); stringBuilder.AppendLine("Definitions: {"); stringBuilder.AppendLine("\tVersion: 100"); stringBuilder.AppendLine("\tCount: 4"); stringBuilder.AppendLine("\tObjectType: \"GlobalSettings\" {"); stringBuilder.AppendLine("\t\tCount: 1"); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("\tObjectType: \"Model\" {"); stringBuilder.AppendLine("\t\tCount: 1"); stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxNode\" {"); stringBuilder.AppendLine("\t\t\tProperties70: {"); stringBuilder.AppendLine("\t\t\t\tP: \"QuaternionInterpolate\", \"enum\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationOffset\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingOffset\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationActive\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMin\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMax\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMinX\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMinY\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMinZ\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMaxX\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMaxY\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMaxZ\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationOrder\", \"enum\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationSpaceForLimitOnly\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationStiffnessX\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationStiffnessY\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationStiffnessZ\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"AxisLen\", \"double\", \"Number\", \"\",10"); stringBuilder.AppendLine("\t\t\t\tP: \"PreRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"PostRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationActive\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMin\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMax\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMinX\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMinY\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMinZ\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMaxX\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMaxY\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"RotationMaxZ\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"InheritType\", \"enum\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingActive\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMin\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",1,1,1"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMinX\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMinY\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMinZ\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMaxX\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMaxY\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMaxZ\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"GeometricTranslation\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"GeometricRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"GeometricScaling\", \"Vector3D\", \"Vector\", \"\",1,1,1"); stringBuilder.AppendLine("\t\t\t\tP: \"MinDampRangeX\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MinDampRangeY\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MinDampRangeZ\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampRangeX\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampRangeY\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampRangeZ\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MinDampStrengthX\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MinDampStrengthY\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MinDampStrengthZ\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampStrengthX\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampStrengthY\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampStrengthZ\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"PreferedAngleX\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"PreferedAngleY\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"PreferedAngleZ\", \"double\", \"Number\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"LookAtProperty\", \"object\", \"\", \"\""); stringBuilder.AppendLine("\t\t\t\tP: \"UpVectorProperty\", \"object\", \"\", \"\""); stringBuilder.AppendLine("\t\t\t\tP: \"Show\", \"bool\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"NegativePercentShapeSupport\", \"bool\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",-1"); stringBuilder.AppendLine("\t\t\t\tP: \"Freeze\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"LODBox\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"Lcl Translation\", \"Lcl Translation\", \"\", \"A\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"Lcl Rotation\", \"Lcl Rotation\", \"\", \"A\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",1,1,1"); stringBuilder.AppendLine("\t\t\t\tP: \"Visibility\", \"Visibility\", \"\", \"A\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"Visibility Inheritance\", \"Visibility Inheritance\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("\tObjectType: \"Geometry\" {"); stringBuilder.AppendLine("\t\tCount: 1"); stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxMesh\" {"); stringBuilder.AppendLine("\t\t\tProperties70: {"); stringBuilder.AppendLine("\t\t\t\tP: \"Color\", \"ColorRGB\", \"Color\", \"\",0.8,0.8,0.8"); stringBuilder.AppendLine("\t\t\t\tP: \"BBoxMin\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"BBoxMax\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"Primary Visibility\", \"bool\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"Casts Shadows\", \"bool\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"Receive Shadows\", \"bool\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("\tObjectType: \"Material\" {"); stringBuilder.AppendLine("\t\tCount: 1"); stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxSurfacePhong\" {"); stringBuilder.AppendLine("\t\t\tProperties70: {"); stringBuilder.AppendLine("\t\t\t\tP: \"ShadingModel\", \"KString\", \"\", \"\", \"Phong\""); stringBuilder.AppendLine("\t\t\t\tP: \"MultiLayer\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"EmissiveColor\", \"Color\", \"\", \"A\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"EmissiveFactor\", \"Number\", \"\", \"A\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"AmbientColor\", \"Color\", \"\", \"A\",0.2,0.2,0.2"); stringBuilder.AppendLine("\t\t\t\tP: \"AmbientFactor\", \"Number\", \"\", \"A\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"DiffuseColor\", \"Color\", \"\", \"A\",0.8,0.8,0.8"); stringBuilder.AppendLine("\t\t\t\tP: \"DiffuseFactor\", \"Number\", \"\", \"A\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"Bump\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"NormalMap\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"BumpFactor\", \"double\", \"Number\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"TransparentColor\", \"Color\", \"\", \"A\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"TransparencyFactor\", \"Number\", \"\", \"A\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"DisplacementColor\", \"ColorRGB\", \"Color\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"DisplacementFactor\", \"double\", \"Number\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"VectorDisplacementColor\", \"ColorRGB\", \"Color\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"VectorDisplacementFactor\", \"double\", \"Number\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"SpecularColor\", \"Color\", \"\", \"A\",0.2,0.2,0.2"); stringBuilder.AppendLine("\t\t\t\tP: \"SpecularFactor\", \"Number\", \"\", \"A\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"ShininessExponent\", \"Number\", \"\", \"A\",20"); stringBuilder.AppendLine("\t\t\t\tP: \"ReflectionColor\", \"Color\", \"\", \"A\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"ReflectionFactor\", \"Number\", \"\", \"A\",1"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("\tObjectType: \"Texture\" {"); stringBuilder.AppendLine("\t\tCount: 2"); stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxFileTexture\" {"); stringBuilder.AppendLine("\t\t\tProperties70: {"); stringBuilder.AppendLine("\t\t\t\tP: \"TextureTypeUse\", \"enum\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"Texture alpha\", \"Number\", \"\", \"A\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"CurrentMappingType\", \"enum\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"WrapModeU\", \"enum\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"WrapModeV\", \"enum\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"UVSwap\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"PremultiplyAlpha\", \"bool\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"Translation\", \"Vector\", \"\", \"A\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"Rotation\", \"Vector\", \"\", \"A\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"Scaling\", \"Vector\", \"\", \"A\",1,1,1"); stringBuilder.AppendLine("\t\t\t\tP: \"TextureRotationPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"TextureScalingPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0"); stringBuilder.AppendLine("\t\t\t\tP: \"CurrentTextureBlendMode\", \"enum\", \"\", \"\",1"); stringBuilder.AppendLine("\t\t\t\tP: \"UVSet\", \"KString\", \"\", \"\", \"default\""); stringBuilder.AppendLine("\t\t\t\tP: \"UseMaterial\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t\tP: \"UseMipMap\", \"bool\", \"\", \"\",0"); stringBuilder.AppendLine("\t\t\t}"); stringBuilder.AppendLine("\t\t}"); stringBuilder.AppendLine("\t}"); stringBuilder.AppendLine("}"); stringBuilder.AppendLine(""); stringBuilder.Append(stringBuilder2.ToString()); stringBuilder.Append(stringBuilder3.ToString()); return(stringBuilder.ToString()); }