/// <summary> /// Load the serialized settings. /// </summary> /// <returns>An ArcTeleportData instance.</returns> public static ArcTeleportData LoadArcTeleportSettings() { ArcTeleportData data = null; if (Application.isEditor) { #if UNITY_EDITOR // Load the asset from the serializable asset (runs on editor). data = AssetDatabase.LoadAssetAtPath(dataFileLocation, typeof(ArcTeleportData)) as ArcTeleportData; if (data == null) { // If we can't load create a new one. data = CreateInstance <ArcTeleportData>(); data.Initialize(); AssetDatabase.CreateAsset(data, dataFileLocation); AssetDatabase.SaveAssets(); } #endif } else { // Load the asset from the resources, (Runs in execution time). data = Resources.Load(resourcesDataLocation, typeof(ArcTeleportData)) as ArcTeleportData; if (data == null) { // If we can't load create a new one. data = CreateInstance <ArcTeleportData>(); data.Initialize(); } } return(data); }
public static void UpdateNavMesh(NavMeshRenderer mesh, SerializedObject serializedObject, ArcTeleportData teleportSettings) { UnityEngine.AI.NavMeshTriangulation tri = UnityEngine.AI.NavMesh.CalculateTriangulation(); int vert_size, tri_size; CullNavmeshTriangulation(ref tri, teleportSettings.NavAreaMask, out vert_size, out tri_size); Mesh m = ConvertNavmeshToMesh(tri, vert_size, tri_size); // Can't use SerializedProperties here because BorderPointSet doesn't derive from UnityEngine.Object mesh.SelectableMeshBorder = FindBorderEdges(m); teleportSettings.SelectableMesh = m; mesh.SelectableMesh = mesh.SelectableMesh; // Make sure that setter is called }
public static void ClearNavMesh(NavMeshRenderer mesh, SerializedObject serializedObject, ArcTeleportData teleportSettings) { //Undo.RecordObject(mesh, "Clear Navmesh Data"); // Note: Unity does not serialize "null" correctly so we set everything to empty objects Mesh m = new Mesh(); m = teleportSettings.SelectableMesh; //serializedObject.Update(); //SerializedProperty p_mesh = serializedObject.FindProperty("_SelectableMesh"); //p_mesh.objectReferenceValue = m; //serializedObject.ApplyModifiedPropertiesWithoutUndo(); mesh.SelectableMesh = mesh.SelectableMesh; // Make sure setter is called mesh.SelectableMeshBorder = new BorderPointSet[0]; }