Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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
        }
Exemplo n.º 3
0
        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];
        }