├── .gitattributes ├── .gitignore ├── Assets ├── Examples.meta ├── Examples │ ├── Cube.prefab │ ├── Cube.prefab.meta │ ├── Editor.meta │ ├── Editor │ │ ├── NavMeshComponentsExamplesEditor.asmdef │ │ ├── NavMeshComponentsExamplesEditor.asmdef.meta │ │ ├── NavMeshPrefabInstanceEditor.cs │ │ └── NavMeshPrefabInstanceEditor.cs.meta │ ├── Materials.meta │ ├── Materials │ │ ├── brightgreen.mat │ │ ├── brightgreen.mat.meta │ │ ├── brown.mat │ │ ├── brown.mat.meta │ │ ├── crosshair.mat │ │ ├── crosshair.mat.meta │ │ ├── floor.mat │ │ ├── floor.mat.meta │ │ ├── green.mat │ │ ├── green.mat.meta │ │ ├── grey.mat │ │ ├── grey.mat.meta │ │ ├── modify_crosshair.png │ │ ├── modify_crosshair.png.meta │ │ ├── red.mat │ │ ├── red.mat.meta │ │ ├── yellow.mat │ │ └── yellow.mat.meta │ ├── NavMeshComponentsExamples.asmdef │ ├── NavMeshComponentsExamples.asmdef.meta │ ├── Prefabs.meta │ ├── Prefabs │ │ ├── BanyanTree.fbx │ │ ├── BanyanTree.fbx.meta │ │ ├── BanyanTree.prefab │ │ ├── BanyanTree.prefab.meta │ │ ├── DungeonTiles.meta │ │ ├── DungeonTiles │ │ │ ├── Tile0.prefab │ │ │ ├── Tile0.prefab.meta │ │ │ ├── Tile1.prefab │ │ │ ├── Tile1.prefab.meta │ │ │ ├── Tile10.prefab │ │ │ ├── Tile10.prefab.meta │ │ │ ├── Tile11.prefab │ │ │ ├── Tile11.prefab.meta │ │ │ ├── Tile12.prefab │ │ │ ├── Tile12.prefab.meta │ │ │ ├── Tile13.prefab │ │ │ ├── Tile13.prefab.meta │ │ │ ├── Tile14.prefab │ │ │ ├── Tile14.prefab.meta │ │ │ ├── Tile15.prefab │ │ │ ├── Tile15.prefab.meta │ │ │ ├── Tile2.prefab │ │ │ ├── Tile2.prefab.meta │ │ │ ├── Tile3.prefab │ │ │ ├── Tile3.prefab.meta │ │ │ ├── Tile4.prefab │ │ │ ├── Tile4.prefab.meta │ │ │ ├── Tile5.prefab │ │ │ ├── Tile5.prefab.meta │ │ │ ├── Tile6.prefab │ │ │ ├── Tile6.prefab.meta │ │ │ ├── Tile7.prefab │ │ │ ├── Tile7.prefab.meta │ │ │ ├── Tile8.prefab │ │ │ ├── Tile8.prefab.meta │ │ │ ├── Tile9.prefab │ │ │ └── Tile9.prefab.meta │ │ ├── GroundTile.prefab │ │ ├── GroundTile.prefab.meta │ │ ├── Materials.meta │ │ ├── Materials │ │ │ ├── BanyanBark.mat │ │ │ ├── BanyanBark.mat.meta │ │ │ ├── BanyanBranches.mat │ │ │ └── BanyanBranches.mat.meta │ │ ├── Plank.prefab │ │ └── Plank.prefab.meta │ ├── Scenes.meta │ ├── Scenes │ │ ├── 1_multiple_agent_sizes.meta │ │ ├── 1_multiple_agent_sizes.unity │ │ ├── 1_multiple_agent_sizes.unity.meta │ │ ├── 1_multiple_agent_sizes │ │ │ ├── NavMesh-Geometry 1.asset │ │ │ ├── NavMesh-Geometry 1.asset.meta │ │ │ ├── NavMesh-Geometry.asset │ │ │ └── NavMesh-Geometry.asset.meta │ │ ├── 2_drop_plank.unity │ │ ├── 2_drop_plank.unity.meta │ │ ├── 3_free_orientation.meta │ │ ├── 3_free_orientation.unity │ │ ├── 3_free_orientation.unity.meta │ │ ├── 3_free_orientation │ │ │ ├── NavMesh.asset │ │ │ └── NavMesh.asset.meta │ │ ├── 4_sliding_window_infinite.unity │ │ ├── 4_sliding_window_infinite.unity.meta │ │ ├── 5_sliding_window_terrain.unity │ │ ├── 5_sliding_window_terrain.unity.meta │ │ ├── 6_modify_mesh.unity │ │ ├── 6_modify_mesh.unity.meta │ │ ├── 7_dungeon.unity │ │ ├── 7_dungeon.unity.meta │ │ ├── 7b_dungeon_tile_prefabs.unity │ │ └── 7b_dungeon_tile_prefabs.unity.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── AgentLinkMover.cs │ │ ├── AgentLinkMover.cs.meta │ │ ├── ClickToMove.cs │ │ ├── ClickToMove.cs.meta │ │ ├── DestroyOnTrigger.cs │ │ ├── DestroyOnTrigger.cs.meta │ │ ├── DungeonManager.cs │ │ ├── DungeonManager.cs.meta │ │ ├── EnableIffSleeping.cs │ │ ├── EnableIffSleeping.cs.meta │ │ ├── FreeCam.cs │ │ ├── FreeCam.cs.meta │ │ ├── LocalNavMeshBuilder.cs │ │ ├── LocalNavMeshBuilder.cs.meta │ │ ├── MeshTool.cs │ │ ├── MeshTool.cs.meta │ │ ├── NavMeshPrefabInstance.cs │ │ ├── NavMeshPrefabInstance.cs.meta │ │ ├── NavMeshSourceTag.cs │ │ ├── NavMeshSourceTag.cs.meta │ │ ├── Oscillator.cs │ │ ├── Oscillator.cs.meta │ │ ├── RandomInstancing.cs │ │ ├── RandomInstancing.cs.meta │ │ ├── RandomWalk.cs │ │ ├── RandomWalk.cs.meta │ │ ├── SpawnPrefabOnKeyDown.cs │ │ └── SpawnPrefabOnKeyDown.cs.meta │ ├── Terrains.meta │ └── Terrains │ │ ├── Islands.asset │ │ ├── Islands.asset.meta │ │ ├── LightmapWithFog.png │ │ ├── LightmapWithFog.png.meta │ │ ├── layer_LightmapWithFog(2048.000,2048.000)(0.000,0.000)(0.000,0.000,0.000),0.000,0.000.terrainlayer │ │ └── layer_LightmapWithFog(2048.000,2048.000)(0.000,0.000)(0.000,0.000,0.000),0.000,0.000.terrainlayer.meta ├── Gizmos.meta ├── Gizmos │ ├── NavMeshLink Icon.png │ ├── NavMeshLink Icon.png.meta │ ├── NavMeshModifierVolume Icon.png │ ├── NavMeshModifierVolume Icon.png.meta │ ├── NavMeshSurface Icon.png │ └── NavMeshSurface Icon.png.meta ├── NavMeshComponents.meta ├── NavMeshComponents │ ├── Editor.meta │ ├── Editor │ │ ├── NavMeshAssetManager.cs │ │ ├── NavMeshAssetManager.cs.meta │ │ ├── NavMeshComponentsEditor.asmdef │ │ ├── NavMeshComponentsEditor.asmdef.meta │ │ ├── NavMeshComponentsGUIUtility.cs │ │ ├── NavMeshComponentsGUIUtility.cs.meta │ │ ├── NavMeshLinkEditor.cs │ │ ├── NavMeshLinkEditor.cs.meta │ │ ├── NavMeshModifierEditor.cs │ │ ├── NavMeshModifierEditor.cs.meta │ │ ├── NavMeshModifierVolumeEditor.cs │ │ ├── NavMeshModifierVolumeEditor.cs.meta │ │ ├── NavMeshSurfaceEditor.cs │ │ └── NavMeshSurfaceEditor.cs.meta │ ├── Scripts.meta │ └── Scripts │ │ ├── NavMeshComponents.asmdef │ │ ├── NavMeshComponents.asmdef.meta │ │ ├── NavMeshLink.cs │ │ ├── NavMeshLink.cs.meta │ │ ├── NavMeshModifier.cs │ │ ├── NavMeshModifier.cs.meta │ │ ├── NavMeshModifierVolume.cs │ │ ├── NavMeshModifierVolume.cs.meta │ │ ├── NavMeshSurface.cs │ │ └── NavMeshSurface.cs.meta ├── Tests.meta └── Tests │ ├── Editor.meta │ ├── Editor │ ├── NavMeshComponentsTestsEditmode.asmdef │ ├── NavMeshComponentsTestsEditmode.asmdef.meta │ ├── NavMeshModifierVolumeInPrefabTests.cs │ ├── NavMeshModifierVolumeInPrefabTests.cs.meta │ ├── NavMeshSurfaceInPrefabTests.cs │ ├── NavMeshSurfaceInPrefabTests.cs.meta │ ├── NavMeshSurfaceInPrefabVariantTests.cs │ ├── NavMeshSurfaceInPrefabVariantTests.cs.meta │ ├── PrefabSavingUtil.cs │ ├── PrefabSavingUtil.cs.meta │ ├── PrefabStageAutoSavingUtil.cs │ └── PrefabStageAutoSavingUtil.cs.meta │ ├── NavMeshComponentsTestsPlaymode.asmdef │ ├── NavMeshComponentsTestsPlaymode.asmdef.meta │ ├── NavMeshSurfaceAgentTests.cs │ ├── NavMeshSurfaceAgentTests.cs.meta │ ├── NavMeshSurfaceLinkTests.cs │ ├── NavMeshSurfaceLinkTests.cs.meta │ ├── NavMeshSurfaceModifierTests.cs │ ├── NavMeshSurfaceModifierTests.cs.meta │ ├── NavMeshSurfaceModifierVolumeTests.cs │ ├── NavMeshSurfaceModifierVolumeTests.cs.meta │ ├── NavMeshSurfaceTests.cs │ └── NavMeshSurfaceTests.cs.meta ├── Documentation ├── ConnectingSurfaces.md ├── Images │ ├── ConnectingSurfaces-Example.png │ ├── NavMeshLink-Example.png │ ├── NavMeshModifier-Example.png │ ├── NavMeshModifierVolume-Example.png │ ├── NavMeshSurface-Advanced.png │ └── NavMeshSurface-Example.png ├── NavMeshLink.md ├── NavMeshModifier.md ├── NavMeshModifierVolume.md ├── NavMeshSurface.md └── README.md ├── LICENSE ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | # Text files 3 | *.cs diff=csharp text 4 | *.txt text 5 | *.mat text 6 | *.shader text 7 | *.meta text 8 | *.md5 text 9 | *.compute text 10 | *.md text 11 | */ProjectSettings/*.asset text 12 | 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/Library/ 2 | **/Temp/ 3 | **/obj/ 4 | 5 | **/.vscode/ 6 | **/.vs 7 | 8 | **/Assets/Plugins/* 9 | **/Assets/Plugins.meta 10 | 11 | *.idea 12 | *.csproj 13 | *.sln 14 | *.suo 15 | *.userprefs 16 | *.app 17 | *.VC.* 18 | .DS_Store 19 | *~ 20 | *.swp 21 | 22 | .vs/ 23 | build/* 24 | *.rsp 25 | *.pyc 26 | /Logs 27 | -------------------------------------------------------------------------------- /Assets/Examples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ea32815e218f46fba31f151ba6ec33b 3 | folderAsset: yes 4 | timeCreated: 1477925203 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Cube.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1755815944733136} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1755815944733136 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4521939787204286} 22 | - component: {fileID: 33066638701771236} 23 | - component: {fileID: 65247530736557704} 24 | - component: {fileID: 23023040489221742} 25 | - component: {fileID: 114100204087538482} 26 | m_Layer: 0 27 | m_Name: Cube 28 | m_TagString: Untagged 29 | m_Icon: {fileID: 0} 30 | m_NavMeshLayer: 0 31 | m_StaticEditorFlags: 0 32 | m_IsActive: 1 33 | --- !u!4 &4521939787204286 34 | Transform: 35 | m_ObjectHideFlags: 1 36 | m_PrefabParentObject: {fileID: 0} 37 | m_PrefabInternal: {fileID: 100100000} 38 | m_GameObject: {fileID: 1755815944733136} 39 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 40 | m_LocalPosition: {x: -0, y: 32.3, z: 35.3} 41 | m_LocalScale: {x: 5, y: 0.1, z: 5} 42 | m_Children: [] 43 | m_Father: {fileID: 0} 44 | m_RootOrder: 0 45 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 46 | --- !u!23 &23023040489221742 47 | MeshRenderer: 48 | m_ObjectHideFlags: 1 49 | m_PrefabParentObject: {fileID: 0} 50 | m_PrefabInternal: {fileID: 100100000} 51 | m_GameObject: {fileID: 1755815944733136} 52 | m_Enabled: 1 53 | m_CastShadows: 1 54 | m_ReceiveShadows: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_Materials: 59 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 60 | m_StaticBatchInfo: 61 | firstSubMesh: 0 62 | subMeshCount: 0 63 | m_StaticBatchRoot: {fileID: 0} 64 | m_ProbeAnchor: {fileID: 0} 65 | m_LightProbeVolumeOverride: {fileID: 0} 66 | m_ScaleInLightmap: 1 67 | m_PreserveUVs: 1 68 | m_IgnoreNormalsForChartDetection: 0 69 | m_ImportantGI: 0 70 | m_SelectedEditorRenderState: 3 71 | m_MinimumChartSize: 4 72 | m_AutoUVMaxDistance: 0.5 73 | m_AutoUVMaxAngle: 89 74 | m_LightmapParameters: {fileID: 0} 75 | m_SortingLayerID: 0 76 | m_SortingOrder: 0 77 | --- !u!33 &33066638701771236 78 | MeshFilter: 79 | m_ObjectHideFlags: 1 80 | m_PrefabParentObject: {fileID: 0} 81 | m_PrefabInternal: {fileID: 100100000} 82 | m_GameObject: {fileID: 1755815944733136} 83 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 84 | --- !u!65 &65247530736557704 85 | BoxCollider: 86 | m_ObjectHideFlags: 1 87 | m_PrefabParentObject: {fileID: 0} 88 | m_PrefabInternal: {fileID: 100100000} 89 | m_GameObject: {fileID: 1755815944733136} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | serializedVersion: 2 94 | m_Size: {x: 1, y: 1, z: 1} 95 | m_Center: {x: 0, y: 0, z: 0} 96 | --- !u!114 &114100204087538482 97 | MonoBehaviour: 98 | m_ObjectHideFlags: 1 99 | m_PrefabParentObject: {fileID: 0} 100 | m_PrefabInternal: {fileID: 100100000} 101 | m_GameObject: {fileID: 1755815944733136} 102 | m_Enabled: 1 103 | m_EditorHideFlags: 0 104 | m_Script: {fileID: 11500000, guid: 7a5ac11cc976e418e8d13136b07e1f52, type: 3} 105 | m_Name: 106 | m_EditorClassIdentifier: 107 | m_AgentTypeID: 0 108 | m_CollectObjects: 2 109 | m_Size: {x: 10, y: 10, z: 10} 110 | m_Center: {x: 0, y: 2, z: 0} 111 | m_LayerMask: 112 | serializedVersion: 2 113 | m_Bits: 4294967295 114 | m_UseGeometry: 0 115 | m_DefaultArea: 0 116 | m_IgnoreNavMeshAgent: 1 117 | m_IgnoreNavMeshObstacle: 1 118 | m_OverrideTileSize: 0 119 | m_TileSize: 256 120 | m_OverrideVoxelSize: 0 121 | m_VoxelSize: 0.16666667 122 | m_BuildHeightMesh: 0 123 | m_BakedNavMeshData: {fileID: 23800000, guid: 6d87d19e3868c4cd0bc45b1737630bfb, type: 2} 124 | -------------------------------------------------------------------------------- /Assets/Examples/Cube.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86232f43ed7fd4fc5a9098ccda13d2ef 3 | timeCreated: 1477957945 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2754679492f144202988ea69417caa96 3 | folderAsset: yes 4 | timeCreated: 1475053750 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Editor/NavMeshComponentsExamplesEditor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NavMeshComponentsExamplesEditor", 3 | "references": [ 4 | "NavMeshComponentsExamples" 5 | ], 6 | "optionalUnityReferences": [], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false 12 | } -------------------------------------------------------------------------------- /Assets/Examples/Editor/NavMeshComponentsExamplesEditor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a7ee44b1baf6b0b4cbdf2079057c7f85 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Examples/Editor/NavMeshPrefabInstanceEditor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEditor; 3 | using UnityEngine; 4 | using UnityEngine.AI; 5 | 6 | [CanEditMultipleObjects] 7 | [CustomEditor(typeof(NavMeshPrefabInstance))] 8 | class NavMeshPrefabInstanceEditor : Editor 9 | { 10 | SerializedProperty m_FollowTransformProp; 11 | SerializedProperty m_NavMeshDataProp; 12 | 13 | public void OnEnable() 14 | { 15 | m_FollowTransformProp = serializedObject.FindProperty("m_FollowTransform"); 16 | m_NavMeshDataProp = serializedObject.FindProperty("m_NavMesh"); 17 | } 18 | 19 | public override void OnInspectorGUI() 20 | { 21 | var instance = (NavMeshPrefabInstance)target; 22 | var go = instance.gameObject; 23 | 24 | serializedObject.Update(); 25 | 26 | GUI.enabled = false; 27 | EditorGUILayout.PropertyField(m_NavMeshDataProp); 28 | GUI.enabled = true; 29 | EditorGUILayout.PropertyField(m_FollowTransformProp); 30 | 31 | EditorGUILayout.Space(); 32 | 33 | OnInspectorGUIPrefab(go); 34 | 35 | serializedObject.ApplyModifiedProperties(); 36 | } 37 | 38 | void OnInspectorGUIPrefab(GameObject go) 39 | { 40 | var prefab = PrefabUtility.GetPrefabInstanceHandle(go); 41 | var path = AssetDatabase.GetAssetPath(prefab); 42 | 43 | if (prefab && string.IsNullOrEmpty(path)) 44 | { 45 | if (GUILayout.Button("Select the Prefab asset to bake or clear the navmesh", EditorStyles.helpBox)) 46 | { 47 | Selection.activeObject = PrefabUtility.GetCorrespondingObjectFromSource(go); 48 | EditorGUIUtility.PingObject(Selection.activeObject); 49 | } 50 | } 51 | 52 | if (string.IsNullOrEmpty(path)) 53 | return; 54 | 55 | GUILayout.BeginHorizontal(); 56 | GUILayout.Space(EditorGUIUtility.labelWidth); 57 | 58 | if (GUILayout.Button("Clear")) 59 | OnClear(); 60 | 61 | if (GUILayout.Button("Bake")) 62 | OnBake(); 63 | 64 | GUILayout.EndHorizontal(); 65 | } 66 | 67 | NavMeshData Build(NavMeshPrefabInstance instance) 68 | { 69 | var root = instance.transform; 70 | var sources = new List(); 71 | var markups = new List(); 72 | 73 | UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage( 74 | root, ~0, NavMeshCollectGeometry.RenderMeshes, 0, markups, instance.gameObject.scene, sources); 75 | var settings = NavMesh.GetSettingsByID(0); 76 | var bounds = new Bounds(Vector3.zero, 1000.0f * Vector3.one); 77 | var navmesh = NavMeshBuilder.BuildNavMeshData(settings, sources, bounds, root.position, root.rotation); 78 | navmesh.name = "Navmesh"; 79 | return navmesh; 80 | } 81 | 82 | void OnClear() 83 | { 84 | foreach (var tgt in targets) 85 | { 86 | var instance = (NavMeshPrefabInstance)tgt; 87 | var go = instance.gameObject; 88 | var prefab = PrefabUtility.GetPrefabInstanceHandle(go); 89 | var path = AssetDatabase.GetAssetPath(prefab); 90 | 91 | if (string.IsNullOrEmpty(path)) 92 | { 93 | Debug.LogError("GameObject: " + go + " has no valid prefab path"); 94 | continue; 95 | } 96 | 97 | DestroyNavMeshData(path); 98 | AssetDatabase.SaveAssets(); 99 | } 100 | } 101 | 102 | void OnBake() 103 | { 104 | foreach (var tgt in targets) 105 | { 106 | var instance = (NavMeshPrefabInstance)tgt; 107 | var go = instance.gameObject; 108 | var prefab = PrefabUtility.GetPrefabInstanceHandle(go); 109 | var path = AssetDatabase.GetAssetPath(prefab); 110 | 111 | if (string.IsNullOrEmpty(path)) 112 | { 113 | Debug.LogError("GameObject: " + go + " has no valid prefab path"); 114 | continue; 115 | } 116 | 117 | DestroyNavMeshData(path); 118 | 119 | // Store navmesh as a sub-asset of the prefab 120 | var navmesh = Build(instance); 121 | AssetDatabase.AddObjectToAsset(navmesh, prefab); 122 | 123 | instance.navMeshData = navmesh; 124 | AssetDatabase.SaveAssets(); 125 | } 126 | } 127 | 128 | void DestroyNavMeshData(string path) 129 | { 130 | // Destroy and remove all existing NavMeshData sub-assets 131 | var assets = AssetDatabase.LoadAllAssetsAtPath(path); 132 | foreach (var o in assets) 133 | { 134 | var data = o as NavMeshData; 135 | if (data != null) 136 | DestroyImmediate(o, true); 137 | } 138 | } 139 | 140 | [DrawGizmo(GizmoType.Selected | GizmoType.Active | GizmoType.Pickable)] 141 | static void RenderGizmo(NavMeshPrefabInstance instance, GizmoType gizmoType) 142 | { 143 | if (!EditorApplication.isPlaying) 144 | instance.UpdateInstance(); 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /Assets/Examples/Editor/NavMeshPrefabInstanceEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cea3a39b71a6f48999d2f884b3b41239 3 | timeCreated: 1474998981 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1716d92973fc64cc09961634f8be8d76 3 | folderAsset: yes 4 | timeCreated: 1430737280 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/brightgreen.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: brightgreen 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _EMISSION 12 | m_LightmapFlags: 1 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | - first: 19 | name: _BumpMap 20 | second: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - first: 25 | name: _DetailAlbedoMap 26 | second: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - first: 31 | name: _DetailMask 32 | second: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - first: 37 | name: _DetailNormalMap 38 | second: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - first: 43 | name: _EmissionMap 44 | second: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - first: 49 | name: _MainTex 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - first: 55 | name: _MetallicGlossMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - first: 61 | name: _OcclusionMap 62 | second: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - first: 67 | name: _ParallaxMap 68 | second: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Floats: 73 | - first: 74 | name: _BumpScale 75 | second: 1 76 | - first: 77 | name: _Cutoff 78 | second: 0.5 79 | - first: 80 | name: _DetailNormalMapScale 81 | second: 1 82 | - first: 83 | name: _DstBlend 84 | second: 0 85 | - first: 86 | name: _GlossMapScale 87 | second: 1 88 | - first: 89 | name: _Glossiness 90 | second: 0.5 91 | - first: 92 | name: _GlossyReflections 93 | second: 1 94 | - first: 95 | name: _Metallic 96 | second: 0 97 | - first: 98 | name: _Mode 99 | second: 0 100 | - first: 101 | name: _OcclusionStrength 102 | second: 1 103 | - first: 104 | name: _Parallax 105 | second: 0.02 106 | - first: 107 | name: _SmoothnessTextureChannel 108 | second: 0 109 | - first: 110 | name: _SpecularHighlights 111 | second: 1 112 | - first: 113 | name: _SrcBlend 114 | second: 1 115 | - first: 116 | name: _UVSec 117 | second: 0 118 | - first: 119 | name: _ZWrite 120 | second: 1 121 | m_Colors: 122 | - first: 123 | name: _Color 124 | second: {r: 0.43598613, g: 0.847, b: 0.6017361, a: 1} 125 | - first: 126 | name: _EmissionColor 127 | second: {r: 0, g: 0, b: 0, a: 1} 128 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/brightgreen.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c9ea827aaa4145c8900e81ca1395aae 3 | timeCreated: 1430813789 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/brown.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: brown 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _EMISSION 12 | m_LightmapFlags: 1 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | - first: 19 | name: _BumpMap 20 | second: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - first: 25 | name: _DetailAlbedoMap 26 | second: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - first: 31 | name: _DetailMask 32 | second: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - first: 37 | name: _DetailNormalMap 38 | second: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - first: 43 | name: _EmissionMap 44 | second: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - first: 49 | name: _MainTex 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - first: 55 | name: _MetallicGlossMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - first: 61 | name: _OcclusionMap 62 | second: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - first: 67 | name: _ParallaxMap 68 | second: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Floats: 73 | - first: 74 | name: _BumpScale 75 | second: 1 76 | - first: 77 | name: _Cutoff 78 | second: 0.5 79 | - first: 80 | name: _DetailNormalMapScale 81 | second: 1 82 | - first: 83 | name: _DstBlend 84 | second: 0 85 | - first: 86 | name: _GlossMapScale 87 | second: 1 88 | - first: 89 | name: _Glossiness 90 | second: 0.5 91 | - first: 92 | name: _GlossyReflections 93 | second: 1 94 | - first: 95 | name: _Metallic 96 | second: 0 97 | - first: 98 | name: _Mode 99 | second: 0 100 | - first: 101 | name: _OcclusionStrength 102 | second: 1 103 | - first: 104 | name: _Parallax 105 | second: 0.02 106 | - first: 107 | name: _SmoothnessTextureChannel 108 | second: 0 109 | - first: 110 | name: _SpecularHighlights 111 | second: 1 112 | - first: 113 | name: _SrcBlend 114 | second: 1 115 | - first: 116 | name: _UVSec 117 | second: 0 118 | - first: 119 | name: _ZWrite 120 | second: 1 121 | m_Colors: 122 | - first: 123 | name: _Color 124 | second: {r: 0.44852942, g: 0.27459896, b: 0.15500648, a: 1} 125 | - first: 126 | name: _EmissionColor 127 | second: {r: 0, g: 0, b: 0, a: 1} 128 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/brown.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e1c6a0a64beb49ec96272beefa468a5 3 | timeCreated: 1430813651 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/crosshair.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: crosshair 10 | m_Shader: {fileID: 10753, guid: 0000000000000000e000000000000000, type: 0} 11 | m_ShaderKeywords: _ALPHATEST_ON 12 | m_LightmapFlags: 5 13 | m_CustomRenderQueue: 2450 14 | stringTagMap: 15 | RenderType: TransparentCutout 16 | m_SavedProperties: 17 | serializedVersion: 2 18 | m_TexEnvs: 19 | data: 20 | first: 21 | name: _MainTex 22 | second: 23 | m_Texture: {fileID: 2800000, guid: 28d2c2677149d45e290e8fa042b1b80f, type: 3} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | data: 27 | first: 28 | name: _BumpMap 29 | second: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | data: 34 | first: 35 | name: _DetailNormalMap 36 | second: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | data: 41 | first: 42 | name: _ParallaxMap 43 | second: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | data: 48 | first: 49 | name: _OcclusionMap 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | data: 55 | first: 56 | name: _EmissionMap 57 | second: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | data: 62 | first: 63 | name: _DetailMask 64 | second: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | data: 69 | first: 70 | name: _DetailAlbedoMap 71 | second: 72 | m_Texture: {fileID: 0} 73 | m_Scale: {x: 1, y: 1} 74 | m_Offset: {x: 0, y: 0} 75 | data: 76 | first: 77 | name: _MetallicGlossMap 78 | second: 79 | m_Texture: {fileID: 0} 80 | m_Scale: {x: 1, y: 1} 81 | m_Offset: {x: 0, y: 0} 82 | data: 83 | first: 84 | name: _DetailTex 85 | second: 86 | m_Texture: {fileID: 0} 87 | m_Scale: {x: 1, y: 1} 88 | m_Offset: {x: 0, y: 0} 89 | m_Floats: 90 | data: 91 | first: 92 | name: _SrcBlend 93 | second: 1 94 | data: 95 | first: 96 | name: _DstBlend 97 | second: 0 98 | data: 99 | first: 100 | name: _Cutoff 101 | second: .66900003 102 | data: 103 | first: 104 | name: PixelSnap 105 | second: 0 106 | data: 107 | first: 108 | name: _Parallax 109 | second: .0199999996 110 | data: 111 | first: 112 | name: _ZWrite 113 | second: 1 114 | data: 115 | first: 116 | name: _Glossiness 117 | second: .904999971 118 | data: 119 | first: 120 | name: _BumpScale 121 | second: 1 122 | data: 123 | first: 124 | name: _OcclusionStrength 125 | second: 1 126 | data: 127 | first: 128 | name: _DetailNormalMapScale 129 | second: 1 130 | data: 131 | first: 132 | name: _UVSec 133 | second: 0 134 | data: 135 | first: 136 | name: _Mode 137 | second: 1 138 | data: 139 | first: 140 | name: _Metallic 141 | second: 0 142 | data: 143 | first: 144 | name: _Stencil 145 | second: 0 146 | data: 147 | first: 148 | name: _StencilComp 149 | second: 255 150 | data: 151 | first: 152 | name: _StencilOp 153 | second: 0 154 | data: 155 | first: 156 | name: _StencilReadMask 157 | second: 255 158 | data: 159 | first: 160 | name: _StencilWriteMask 161 | second: 255 162 | data: 163 | first: 164 | name: _ColorMask 165 | second: 255 166 | data: 167 | first: 168 | name: _Strength 169 | second: .246000007 170 | m_Colors: 171 | data: 172 | first: 173 | name: _EmissionColor 174 | second: {r: 0, g: 0, b: 0, a: 1} 175 | data: 176 | first: 177 | name: _Color 178 | second: {r: 1, g: 1, b: 1, a: 1} 179 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/crosshair.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6f20074b5ffb143d2a869e4cc78d9d5e 3 | timeCreated: 1431078136 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/floor.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: floor 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _EMISSION 12 | m_LightmapFlags: 1 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | - first: 19 | name: _BumpMap 20 | second: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - first: 25 | name: _DetailAlbedoMap 26 | second: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - first: 31 | name: _DetailMask 32 | second: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - first: 37 | name: _DetailNormalMap 38 | second: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - first: 43 | name: _EmissionMap 44 | second: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - first: 49 | name: _MainTex 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - first: 55 | name: _MetallicGlossMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - first: 61 | name: _OcclusionMap 62 | second: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - first: 67 | name: _ParallaxMap 68 | second: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Floats: 73 | - first: 74 | name: _BumpScale 75 | second: 1 76 | - first: 77 | name: _Cutoff 78 | second: 0.5 79 | - first: 80 | name: _DetailNormalMapScale 81 | second: 1 82 | - first: 83 | name: _DstBlend 84 | second: 0 85 | - first: 86 | name: _GlossMapScale 87 | second: 1 88 | - first: 89 | name: _Glossiness 90 | second: 0.5 91 | - first: 92 | name: _GlossyReflections 93 | second: 1 94 | - first: 95 | name: _Metallic 96 | second: 0 97 | - first: 98 | name: _Mode 99 | second: 0 100 | - first: 101 | name: _OcclusionStrength 102 | second: 1 103 | - first: 104 | name: _Parallax 105 | second: 0.02 106 | - first: 107 | name: _SmoothnessTextureChannel 108 | second: 0 109 | - first: 110 | name: _SpecularHighlights 111 | second: 1 112 | - first: 113 | name: _SrcBlend 114 | second: 1 115 | - first: 116 | name: _UVSec 117 | second: 0 118 | - first: 119 | name: _ZWrite 120 | second: 1 121 | m_Colors: 122 | - first: 123 | name: _Color 124 | second: {r: 0.6691177, g: 0.58876926, b: 0.4870783, a: 1} 125 | - first: 126 | name: _EmissionColor 127 | second: {r: 0, g: 0, b: 0, a: 1} 128 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/floor.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3adb56b3302734c8d8e5a18699302e85 3 | timeCreated: 1430743212 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/green.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: green 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _EMISSION 12 | m_LightmapFlags: 1 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | - first: 19 | name: _BumpMap 20 | second: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - first: 25 | name: _DetailAlbedoMap 26 | second: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - first: 31 | name: _DetailMask 32 | second: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - first: 37 | name: _DetailNormalMap 38 | second: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - first: 43 | name: _EmissionMap 44 | second: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - first: 49 | name: _MainTex 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - first: 55 | name: _MetallicGlossMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - first: 61 | name: _OcclusionMap 62 | second: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - first: 67 | name: _ParallaxMap 68 | second: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Floats: 73 | - first: 74 | name: _BumpScale 75 | second: 1 76 | - first: 77 | name: _Cutoff 78 | second: 0.5 79 | - first: 80 | name: _DetailNormalMapScale 81 | second: 1 82 | - first: 83 | name: _DstBlend 84 | second: 0 85 | - first: 86 | name: _GlossMapScale 87 | second: 1 88 | - first: 89 | name: _Glossiness 90 | second: 0.51 91 | - first: 92 | name: _GlossyReflections 93 | second: 1 94 | - first: 95 | name: _Metallic 96 | second: 0 97 | - first: 98 | name: _Mode 99 | second: 0 100 | - first: 101 | name: _OcclusionStrength 102 | second: 1 103 | - first: 104 | name: _Parallax 105 | second: 0.02 106 | - first: 107 | name: _SmoothnessTextureChannel 108 | second: 0 109 | - first: 110 | name: _SpecularHighlights 111 | second: 1 112 | - first: 113 | name: _SrcBlend 114 | second: 1 115 | - first: 116 | name: _UVSec 117 | second: 0 118 | - first: 119 | name: _ZWrite 120 | second: 1 121 | m_Colors: 122 | - first: 123 | name: _Color 124 | second: {r: 0.16738756, g: 0.5294118, b: 0.28972682, a: 1} 125 | - first: 126 | name: _EmissionColor 127 | second: {r: 0, g: 0, b: 0, a: 1} 128 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/green.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0aa37164acf594e03876b4e0b590280e 3 | timeCreated: 1430813582 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/grey.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: grey 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _EMISSION 12 | m_LightmapFlags: 1 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | - first: 19 | name: _BumpMap 20 | second: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - first: 25 | name: _DetailAlbedoMap 26 | second: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - first: 31 | name: _DetailMask 32 | second: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - first: 37 | name: _DetailNormalMap 38 | second: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - first: 43 | name: _EmissionMap 44 | second: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - first: 49 | name: _MainTex 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - first: 55 | name: _MetallicGlossMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - first: 61 | name: _OcclusionMap 62 | second: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - first: 67 | name: _ParallaxMap 68 | second: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Floats: 73 | - first: 74 | name: _BumpScale 75 | second: 1 76 | - first: 77 | name: _Cutoff 78 | second: 0.5 79 | - first: 80 | name: _DetailNormalMapScale 81 | second: 1 82 | - first: 83 | name: _DstBlend 84 | second: 0 85 | - first: 86 | name: _GlossMapScale 87 | second: 1 88 | - first: 89 | name: _Glossiness 90 | second: 0.5 91 | - first: 92 | name: _GlossyReflections 93 | second: 1 94 | - first: 95 | name: _Metallic 96 | second: 0 97 | - first: 98 | name: _Mode 99 | second: 0 100 | - first: 101 | name: _OcclusionStrength 102 | second: 1 103 | - first: 104 | name: _Parallax 105 | second: 0.02 106 | - first: 107 | name: _SmoothnessTextureChannel 108 | second: 0 109 | - first: 110 | name: _SpecularHighlights 111 | second: 1 112 | - first: 113 | name: _SrcBlend 114 | second: 1 115 | - first: 116 | name: _UVSec 117 | second: 0 118 | - first: 119 | name: _ZWrite 120 | second: 1 121 | m_Colors: 122 | - first: 123 | name: _Color 124 | second: {r: 0.5294118, g: 0.5294118, b: 0.5254902, a: 1} 125 | - first: 126 | name: _EmissionColor 127 | second: {r: 0, g: 0, b: 0, a: 1} 128 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/grey.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ade8fca681f724cd89b5a568642f15ae 3 | timeCreated: 1430737280 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/modify_crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Materials/modify_crosshair.png -------------------------------------------------------------------------------- /Assets/Examples/Materials/modify_crosshair.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28d2c2677149d45e290e8fa042b1b80f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: -2 31 | maxTextureSize: 128 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 1 35 | aniso: 16 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 128 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | spriteSheet: 74 | serializedVersion: 2 75 | sprites: [] 76 | outline: [] 77 | physicsShape: [] 78 | bones: [] 79 | spriteID: 5e97eb03825dee720800000000000000 80 | internalID: 0 81 | vertices: [] 82 | indices: 83 | edges: [] 84 | weights: [] 85 | secondaryTextures: [] 86 | spritePackingTag: 87 | pSDRemoveMatte: 0 88 | pSDShowRemoveMatteOption: 0 89 | userData: 90 | assetBundleName: 91 | assetBundleVariant: 92 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/red.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: red 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _EMISSION 12 | m_LightmapFlags: 1 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | - first: 19 | name: _BumpMap 20 | second: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - first: 25 | name: _DetailAlbedoMap 26 | second: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - first: 31 | name: _DetailMask 32 | second: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - first: 37 | name: _DetailNormalMap 38 | second: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - first: 43 | name: _EmissionMap 44 | second: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - first: 49 | name: _MainTex 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - first: 55 | name: _MetallicGlossMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - first: 61 | name: _OcclusionMap 62 | second: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - first: 67 | name: _ParallaxMap 68 | second: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Floats: 73 | - first: 74 | name: _BumpScale 75 | second: 1 76 | - first: 77 | name: _Cutoff 78 | second: 0.5 79 | - first: 80 | name: _DetailNormalMapScale 81 | second: 1 82 | - first: 83 | name: _DstBlend 84 | second: 0 85 | - first: 86 | name: _GlossMapScale 87 | second: 1 88 | - first: 89 | name: _Glossiness 90 | second: 0.5 91 | - first: 92 | name: _GlossyReflections 93 | second: 1 94 | - first: 95 | name: _Metallic 96 | second: 0 97 | - first: 98 | name: _Mode 99 | second: 0 100 | - first: 101 | name: _OcclusionStrength 102 | second: 1 103 | - first: 104 | name: _Parallax 105 | second: 0.02 106 | - first: 107 | name: _SmoothnessTextureChannel 108 | second: 0 109 | - first: 110 | name: _SpecularHighlights 111 | second: 1 112 | - first: 113 | name: _SrcBlend 114 | second: 1 115 | - first: 116 | name: _UVSec 117 | second: 0 118 | - first: 119 | name: _ZWrite 120 | second: 1 121 | m_Colors: 122 | - first: 123 | name: _Color 124 | second: {r: 0.7137255, g: 0.12941177, b: 0.1254902, a: 1} 125 | - first: 126 | name: _EmissionColor 127 | second: {r: 0, g: 0, b: 0, a: 1} 128 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/red.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5195427c0d27644ed90d87ebe86d468a 3 | timeCreated: 1430999474 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/yellow.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: yellow 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _EMISSION 12 | m_LightmapFlags: 1 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | - first: 19 | name: _BumpMap 20 | second: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - first: 25 | name: _DetailAlbedoMap 26 | second: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - first: 31 | name: _DetailMask 32 | second: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - first: 37 | name: _DetailNormalMap 38 | second: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - first: 43 | name: _EmissionMap 44 | second: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - first: 49 | name: _MainTex 50 | second: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - first: 55 | name: _MetallicGlossMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - first: 61 | name: _OcclusionMap 62 | second: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - first: 67 | name: _ParallaxMap 68 | second: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Floats: 73 | - first: 74 | name: _BumpScale 75 | second: 1 76 | - first: 77 | name: _Cutoff 78 | second: 0.5 79 | - first: 80 | name: _DetailNormalMapScale 81 | second: 1 82 | - first: 83 | name: _DstBlend 84 | second: 0 85 | - first: 86 | name: _GlossMapScale 87 | second: 1 88 | - first: 89 | name: _Glossiness 90 | second: 0.5 91 | - first: 92 | name: _GlossyReflections 93 | second: 1 94 | - first: 95 | name: _Metallic 96 | second: 0 97 | - first: 98 | name: _Mode 99 | second: 0 100 | - first: 101 | name: _OcclusionStrength 102 | second: 1 103 | - first: 104 | name: _Parallax 105 | second: 0.02 106 | - first: 107 | name: _SmoothnessTextureChannel 108 | second: 0 109 | - first: 110 | name: _SpecularHighlights 111 | second: 1 112 | - first: 113 | name: _SrcBlend 114 | second: 1 115 | - first: 116 | name: _UVSec 117 | second: 0 118 | - first: 119 | name: _ZWrite 120 | second: 1 121 | m_Colors: 122 | - first: 123 | name: _Color 124 | second: {r: 1, g: 0.928, b: 0.184, a: 1} 125 | - first: 126 | name: _EmissionColor 127 | second: {r: 0, g: 0, b: 0, a: 1} 128 | -------------------------------------------------------------------------------- /Assets/Examples/Materials/yellow.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c07befab8ca1540368e662cfe2fddf6b 3 | timeCreated: 1430813764 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/NavMeshComponentsExamples.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NavMeshComponentsExamples", 3 | "references": [ 4 | "NavMeshComponents" 5 | ], 6 | "optionalUnityReferences": [], 7 | "includePlatforms": [], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false 10 | } -------------------------------------------------------------------------------- /Assets/Examples/NavMeshComponentsExamples.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62b574997e92efd41a8a1109157a0cb5 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 547d8777744d94a36a3bd59fbf4ee093 3 | folderAsset: yes 4 | timeCreated: 1430991743 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/BanyanTree.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/BanyanTree.fbx -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/BanyanTree.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0015d5d487e6b4c51b6be43a47511ed9 3 | timeCreated: 1430736341 4 | licenseType: Pro 5 | ModelImporter: 6 | serializedVersion: 18 7 | fileIDToRecycleName: 8 | 100000: //RootNode 9 | 400000: //RootNode 10 | 2300000: //RootNode 11 | 3300000: //RootNode 12 | 4300000: BanyanTree 13 | 9500000: //RootNode 14 | materials: 15 | importMaterials: 1 16 | materialName: 0 17 | materialSearch: 1 18 | animations: 19 | legacyGenerateAnimations: 4 20 | bakeSimulation: 0 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | animationImportErrors: 24 | animationImportWarnings: 25 | animationRetargetingWarnings: 26 | animationCompression: 1 27 | animationRotationError: .5 28 | animationPositionError: .5 29 | animationScaleError: .5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | clipAnimations: [] 33 | isReadable: 1 34 | meshes: 35 | lODScreenPercentages: [] 36 | globalScale: 50 37 | meshCompression: 0 38 | addColliders: 0 39 | importBlendShapes: 1 40 | swapUVChannels: 0 41 | generateSecondaryUV: 0 42 | useFileUnits: 1 43 | optimizeMeshForGPU: 1 44 | keepQuads: 0 45 | weldVertices: 1 46 | secondaryUVAngleDistortion: 8 47 | secondaryUVAreaDistortion: 15.000001 48 | secondaryUVHardAngle: 88 49 | secondaryUVPackMargin: 4 50 | useFileScale: 1 51 | tangentSpace: 52 | normalSmoothAngle: 60 53 | splitTangentsAcrossUV: 1 54 | normalImportMode: 0 55 | tangentImportMode: 1 56 | importAnimation: 0 57 | copyAvatar: 0 58 | humanDescription: 59 | human: [] 60 | skeleton: [] 61 | armTwist: .5 62 | foreArmTwist: .5 63 | upperLegTwist: .5 64 | legTwist: .5 65 | armStretch: .0500000007 66 | legStretch: .0500000007 67 | feetSpacing: 0 68 | rootMotionBoneName: 69 | lastHumanDescriptionAvatarSource: {instanceID: 0} 70 | animationType: 2 71 | additionalBone: 0 72 | userData: 73 | assetBundleName: 74 | assetBundleVariant: 75 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/BanyanTree.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &183886 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 4: {fileID: 480174} 11 | - 33: {fileID: 3341038} 12 | - 23: {fileID: 2376972} 13 | - 114: {fileID: 11416908} 14 | m_Layer: 0 15 | m_Name: BanyanTree 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &480174 22 | Transform: 23 | m_ObjectHideFlags: 1 24 | m_PrefabParentObject: {fileID: 0} 25 | m_PrefabInternal: {fileID: 100100000} 26 | m_GameObject: {fileID: 183886} 27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 28 | m_LocalPosition: {x: 0, y: 0, z: 0} 29 | m_LocalScale: {x: 1, y: 1, z: 1} 30 | m_Children: [] 31 | m_Father: {fileID: 0} 32 | m_RootOrder: 0 33 | --- !u!23 &2376972 34 | MeshRenderer: 35 | m_ObjectHideFlags: 1 36 | m_PrefabParentObject: {fileID: 0} 37 | m_PrefabInternal: {fileID: 100100000} 38 | m_GameObject: {fileID: 183886} 39 | m_Enabled: 1 40 | m_CastShadows: 1 41 | m_ReceiveShadows: 1 42 | m_Materials: 43 | - {fileID: 2100000, guid: 1e1c6a0a64beb49ec96272beefa468a5, type: 2} 44 | - {fileID: 2100000, guid: 0aa37164acf594e03876b4e0b590280e, type: 2} 45 | m_SubsetIndices: 46 | m_StaticBatchRoot: {fileID: 0} 47 | m_UseLightProbes: 0 48 | m_ReflectionProbeUsage: 1 49 | m_ProbeAnchor: {fileID: 0} 50 | m_ScaleInLightmap: 1 51 | m_PreserveUVs: 0 52 | m_ImportantGI: 0 53 | m_AutoUVMaxDistance: .5 54 | m_AutoUVMaxAngle: 89 55 | m_LightmapParameters: {fileID: 0} 56 | m_SortingLayerID: 0 57 | m_SortingOrder: 0 58 | --- !u!33 &3341038 59 | MeshFilter: 60 | m_ObjectHideFlags: 1 61 | m_PrefabParentObject: {fileID: 0} 62 | m_PrefabInternal: {fileID: 100100000} 63 | m_GameObject: {fileID: 183886} 64 | m_Mesh: {fileID: 4300000, guid: 0015d5d487e6b4c51b6be43a47511ed9, type: 3} 65 | --- !u!114 &11416908 66 | MonoBehaviour: 67 | m_ObjectHideFlags: 1 68 | m_PrefabParentObject: {fileID: 0} 69 | m_PrefabInternal: {fileID: 100100000} 70 | m_GameObject: {fileID: 183886} 71 | m_Enabled: 1 72 | m_EditorHideFlags: 0 73 | m_Script: {fileID: 11500000, guid: 6e038bf700cfa444fb16c6ef963be9f9, type: 3} 74 | m_Name: 75 | m_EditorClassIdentifier: 76 | --- !u!1001 &100100000 77 | Prefab: 78 | m_ObjectHideFlags: 1 79 | serializedVersion: 2 80 | m_Modification: 81 | m_TransformParent: {fileID: 0} 82 | m_Modifications: [] 83 | m_RemovedComponents: [] 84 | m_ParentPrefab: {fileID: 0} 85 | m_RootGameObject: {fileID: 183886} 86 | m_IsPrefabParent: 1 87 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/BanyanTree.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46d69f622d1354ee0820b7921e262b38 3 | timeCreated: 1430814488 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: be9fddd1e682b4cfa9f64bd6f34b553f 3 | folderAsset: yes 4 | timeCreated: 1431424477 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile0.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile0.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile0.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d7ea54c92e3c4ca3bdd081adb6953e3 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238891995730992468, guid: 7d7ea54c92e3c4ca3bdd081adb6953e3, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile1.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile1.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile1.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00022e44e06ba4686a52ff33cd6af19b 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238864135012467344, guid: 00022e44e06ba4686a52ff33cd6af19b, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile10.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile10.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile10.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8eccfbc35cf449459e0a29707a8601a 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238232249414703486, guid: d8eccfbc35cf449459e0a29707a8601a, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile11.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile11.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile11.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8f00be40153543d0ab1f0d99a74df6c 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238506205261310830, guid: d8f00be40153543d0ab1f0d99a74df6c, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile12.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile12.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile12.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02a96c93422fc486489a73449bf5dc57 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238758083010604980, guid: 02a96c93422fc486489a73449bf5dc57, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile13.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile13.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile13.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e161c87f6a4c3413c881fcb2dfdd9b28 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238049416425005162, guid: e161c87f6a4c3413c881fcb2dfdd9b28, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile14.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile14.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile14.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a4dcf0d36e2c40188dbb2e26e6bebb4 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238737442254228608, guid: 9a4dcf0d36e2c40188dbb2e26e6bebb4, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile15.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile15.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile15.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ccf62cf2152f44840bc4038e037a7075 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238361702938023640, guid: ccf62cf2152f44840bc4038e037a7075, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile2.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile2.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile2.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ecf4f05d57d0b4d8aae8ee4c7cdc7ed3 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238007120443016764, guid: ecf4f05d57d0b4d8aae8ee4c7cdc7ed3, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile3.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile3.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile3.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b33f2fc7081e8459fb6d76b57d008b89 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238817638144178146, guid: b33f2fc7081e8459fb6d76b57d008b89, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile4.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile4.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile4.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90dfa7f7fe66347389d869f92b1b6a9f 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238571762410112910, guid: 90dfa7f7fe66347389d869f92b1b6a9f, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile5.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile5.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile5.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5031ae0cd920f4015b78bf393dd8d327 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238703659830128490, guid: 5031ae0cd920f4015b78bf393dd8d327, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile6.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile6.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile6.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cd19d9115d9a14e4193a39766437a679 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238499112439393678, guid: cd19d9115d9a14e4193a39766437a679, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile7.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile7.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile7.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7af464697e0ab41a5be05dee6f5c2b73 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238960200379394454, guid: 7af464697e0ab41a5be05dee6f5c2b73, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile8.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile8.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile8.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29ceda01ee5384847a4e46a74595d08c 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238098503315482684, guid: 29ceda01ee5384847a4e46a74595d08c, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile9.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Prefabs/DungeonTiles/Tile9.prefab -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/DungeonTiles/Tile9.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 828a29cbf25f8441dabc6d11c2acb77b 3 | PrefabImporter: 4 | externalObjects: {} 5 | addedSourceAssetObjects: 6 | - {fileID: 238926158337688270, guid: 828a29cbf25f8441dabc6d11c2acb77b, type: 2} 7 | isPrefabVariant: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/GroundTile.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &111250 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 4 9 | m_Component: 10 | - 4: {fileID: 451866} 11 | - 33: {fileID: 3315128} 12 | - 64: {fileID: 6407284} 13 | - 23: {fileID: 2370882} 14 | - 114: {fileID: 11479062} 15 | m_Layer: 0 16 | m_Name: Plane 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!1 &131166 23 | GameObject: 24 | m_ObjectHideFlags: 0 25 | m_PrefabParentObject: {fileID: 0} 26 | m_PrefabInternal: {fileID: 100100000} 27 | serializedVersion: 4 28 | m_Component: 29 | - 4: {fileID: 461404} 30 | m_Layer: 0 31 | m_Name: GroundTile 32 | m_TagString: Untagged 33 | m_Icon: {fileID: 0} 34 | m_NavMeshLayer: 0 35 | m_StaticEditorFlags: 0 36 | m_IsActive: 1 37 | --- !u!4 &451866 38 | Transform: 39 | m_ObjectHideFlags: 1 40 | m_PrefabParentObject: {fileID: 0} 41 | m_PrefabInternal: {fileID: 100100000} 42 | m_GameObject: {fileID: 111250} 43 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 44 | m_LocalPosition: {x: 50, y: 0, z: 50} 45 | m_LocalScale: {x: 10, y: 10, z: 10} 46 | m_Children: [] 47 | m_Father: {fileID: 461404} 48 | m_RootOrder: 0 49 | --- !u!4 &461404 50 | Transform: 51 | m_ObjectHideFlags: 1 52 | m_PrefabParentObject: {fileID: 0} 53 | m_PrefabInternal: {fileID: 100100000} 54 | m_GameObject: {fileID: 131166} 55 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 56 | m_LocalPosition: {x: 0, y: 0, z: 0} 57 | m_LocalScale: {x: 1, y: 1, z: 1} 58 | m_Children: 59 | - {fileID: 451866} 60 | m_Father: {fileID: 0} 61 | m_RootOrder: 0 62 | --- !u!23 &2370882 63 | MeshRenderer: 64 | m_ObjectHideFlags: 1 65 | m_PrefabParentObject: {fileID: 0} 66 | m_PrefabInternal: {fileID: 100100000} 67 | m_GameObject: {fileID: 111250} 68 | m_Enabled: 1 69 | m_CastShadows: 1 70 | m_ReceiveShadows: 1 71 | m_Materials: 72 | - {fileID: 2100000, guid: 5c9ea827aaa4145c8900e81ca1395aae, type: 2} 73 | m_SubsetIndices: 74 | m_StaticBatchRoot: {fileID: 0} 75 | m_UseLightProbes: 1 76 | m_ReflectionProbeUsage: 1 77 | m_ProbeAnchor: {fileID: 0} 78 | m_ScaleInLightmap: 1 79 | m_PreserveUVs: 1 80 | m_ImportantGI: 0 81 | m_AutoUVMaxDistance: .5 82 | m_AutoUVMaxAngle: 89 83 | m_LightmapParameters: {fileID: 0} 84 | m_SortingLayerID: 0 85 | m_SortingOrder: 0 86 | --- !u!33 &3315128 87 | MeshFilter: 88 | m_ObjectHideFlags: 1 89 | m_PrefabParentObject: {fileID: 0} 90 | m_PrefabInternal: {fileID: 100100000} 91 | m_GameObject: {fileID: 111250} 92 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 93 | --- !u!64 &6407284 94 | MeshCollider: 95 | m_ObjectHideFlags: 1 96 | m_PrefabParentObject: {fileID: 0} 97 | m_PrefabInternal: {fileID: 100100000} 98 | m_GameObject: {fileID: 111250} 99 | m_Material: {fileID: 0} 100 | m_IsTrigger: 0 101 | m_Enabled: 1 102 | serializedVersion: 2 103 | m_Convex: 0 104 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 105 | --- !u!114 &11479062 106 | MonoBehaviour: 107 | m_ObjectHideFlags: 1 108 | m_PrefabParentObject: {fileID: 0} 109 | m_PrefabInternal: {fileID: 100100000} 110 | m_GameObject: {fileID: 111250} 111 | m_Enabled: 1 112 | m_EditorHideFlags: 0 113 | m_Script: {fileID: 11500000, guid: 6e038bf700cfa444fb16c6ef963be9f9, type: 3} 114 | m_Name: 115 | m_EditorClassIdentifier: 116 | --- !u!1001 &100100000 117 | Prefab: 118 | m_ObjectHideFlags: 1 119 | serializedVersion: 2 120 | m_Modification: 121 | m_TransformParent: {fileID: 0} 122 | m_Modifications: 123 | - target: {fileID: 0} 124 | propertyPath: m_Materials.Array.data[0] 125 | value: 126 | objectReference: {fileID: 2100000, guid: 5c9ea827aaa4145c8900e81ca1395aae, type: 2} 127 | m_RemovedComponents: [] 128 | m_ParentPrefab: {fileID: 0} 129 | m_RootGameObject: {fileID: 131166} 130 | m_IsPrefabParent: 1 131 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/GroundTile.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1f4492f15da844ebae2767c08ef4aab 3 | timeCreated: 1430816526 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d90e8e96f35140d6bed17ee9c581927 3 | folderAsset: yes 4 | timeCreated: 1431423977 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/Materials/BanyanBark.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: BanyanBark 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 5 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | data: 19 | first: 20 | name: _MainTex 21 | second: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | data: 26 | first: 27 | name: _BumpMap 28 | second: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | data: 33 | first: 34 | name: _DetailNormalMap 35 | second: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | data: 40 | first: 41 | name: _ParallaxMap 42 | second: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | data: 47 | first: 48 | name: _OcclusionMap 49 | second: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | data: 54 | first: 55 | name: _EmissionMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | data: 61 | first: 62 | name: _DetailMask 63 | second: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | data: 68 | first: 69 | name: _DetailAlbedoMap 70 | second: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | data: 75 | first: 76 | name: _MetallicGlossMap 77 | second: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | m_Floats: 82 | data: 83 | first: 84 | name: _SrcBlend 85 | second: 1 86 | data: 87 | first: 88 | name: _DstBlend 89 | second: 0 90 | data: 91 | first: 92 | name: _Cutoff 93 | second: .5 94 | data: 95 | first: 96 | name: _Parallax 97 | second: .0199999996 98 | data: 99 | first: 100 | name: _ZWrite 101 | second: 1 102 | data: 103 | first: 104 | name: _Glossiness 105 | second: .5 106 | data: 107 | first: 108 | name: _BumpScale 109 | second: 1 110 | data: 111 | first: 112 | name: _OcclusionStrength 113 | second: 1 114 | data: 115 | first: 116 | name: _DetailNormalMapScale 117 | second: 1 118 | data: 119 | first: 120 | name: _UVSec 121 | second: 0 122 | data: 123 | first: 124 | name: _Mode 125 | second: 0 126 | data: 127 | first: 128 | name: _Metallic 129 | second: 0 130 | m_Colors: 131 | data: 132 | first: 133 | name: _EmissionColor 134 | second: {r: 0, g: 0, b: 0, a: 1} 135 | data: 136 | first: 137 | name: _Color 138 | second: {r: 1, g: 1, b: 1, a: 1} 139 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/Materials/BanyanBark.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4013ffb83471c44a99ae39dd19f4bb58 3 | timeCreated: 1431423977 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/Materials/BanyanBranches.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: BanyanBranches 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 5 13 | m_CustomRenderQueue: -1 14 | stringTagMap: {} 15 | m_SavedProperties: 16 | serializedVersion: 2 17 | m_TexEnvs: 18 | data: 19 | first: 20 | name: _MainTex 21 | second: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | data: 26 | first: 27 | name: _BumpMap 28 | second: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | data: 33 | first: 34 | name: _DetailNormalMap 35 | second: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | data: 40 | first: 41 | name: _ParallaxMap 42 | second: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | data: 47 | first: 48 | name: _OcclusionMap 49 | second: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | data: 54 | first: 55 | name: _EmissionMap 56 | second: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | data: 61 | first: 62 | name: _DetailMask 63 | second: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | data: 68 | first: 69 | name: _DetailAlbedoMap 70 | second: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | data: 75 | first: 76 | name: _MetallicGlossMap 77 | second: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | m_Floats: 82 | data: 83 | first: 84 | name: _SrcBlend 85 | second: 1 86 | data: 87 | first: 88 | name: _DstBlend 89 | second: 0 90 | data: 91 | first: 92 | name: _Cutoff 93 | second: .5 94 | data: 95 | first: 96 | name: _Parallax 97 | second: .0199999996 98 | data: 99 | first: 100 | name: _ZWrite 101 | second: 1 102 | data: 103 | first: 104 | name: _Glossiness 105 | second: .5 106 | data: 107 | first: 108 | name: _BumpScale 109 | second: 1 110 | data: 111 | first: 112 | name: _OcclusionStrength 113 | second: 1 114 | data: 115 | first: 116 | name: _DetailNormalMapScale 117 | second: 1 118 | data: 119 | first: 120 | name: _UVSec 121 | second: 0 122 | data: 123 | first: 124 | name: _Mode 125 | second: 0 126 | data: 127 | first: 128 | name: _Metallic 129 | second: 0 130 | m_Colors: 131 | data: 132 | first: 133 | name: _EmissionColor 134 | second: {r: 0, g: 0, b: 0, a: 1} 135 | data: 136 | first: 137 | name: _Color 138 | second: {r: 1, g: 1, b: 1, a: 1} 139 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/Materials/BanyanBranches.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7186e4ec31ca3459da36b9faf2049a09 3 | timeCreated: 1431423977 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/Plank.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &162510 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 5 9 | m_Component: 10 | - component: {fileID: 441804} 11 | - component: {fileID: 3309252} 12 | - component: {fileID: 6560326} 13 | - component: {fileID: 2343460} 14 | - component: {fileID: 5419616} 15 | - component: {fileID: 11422298} 16 | - component: {fileID: 11403464} 17 | m_Layer: 0 18 | m_Name: Plank 19 | m_TagString: Untagged 20 | m_Icon: {fileID: 0} 21 | m_NavMeshLayer: 0 22 | m_StaticEditorFlags: 0 23 | m_IsActive: 1 24 | --- !u!4 &441804 25 | Transform: 26 | m_ObjectHideFlags: 1 27 | m_PrefabParentObject: {fileID: 0} 28 | m_PrefabInternal: {fileID: 100100000} 29 | m_GameObject: {fileID: 162510} 30 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 31 | m_LocalPosition: {x: 0, y: 0, z: 0} 32 | m_LocalScale: {x: 2, y: 0.1, z: 4} 33 | m_Children: [] 34 | m_Father: {fileID: 0} 35 | m_RootOrder: 0 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | --- !u!23 &2343460 38 | MeshRenderer: 39 | m_ObjectHideFlags: 1 40 | m_PrefabParentObject: {fileID: 0} 41 | m_PrefabInternal: {fileID: 100100000} 42 | m_GameObject: {fileID: 162510} 43 | m_Enabled: 1 44 | m_CastShadows: 1 45 | m_ReceiveShadows: 1 46 | m_MotionVectors: 1 47 | m_LightProbeUsage: 1 48 | m_ReflectionProbeUsage: 1 49 | m_Materials: 50 | - {fileID: 2100000, guid: 5195427c0d27644ed90d87ebe86d468a, type: 2} 51 | m_StaticBatchInfo: 52 | firstSubMesh: 0 53 | subMeshCount: 0 54 | m_StaticBatchRoot: {fileID: 0} 55 | m_ProbeAnchor: {fileID: 0} 56 | m_LightProbeVolumeOverride: {fileID: 0} 57 | m_ScaleInLightmap: 1 58 | m_PreserveUVs: 1 59 | m_IgnoreNormalsForChartDetection: 0 60 | m_ImportantGI: 0 61 | m_SelectedEditorRenderState: 3 62 | m_MinimumChartSize: 4 63 | m_AutoUVMaxDistance: 0.5 64 | m_AutoUVMaxAngle: 89 65 | m_LightmapParameters: {fileID: 0} 66 | m_SortingLayerID: 0 67 | m_SortingOrder: 0 68 | --- !u!33 &3309252 69 | MeshFilter: 70 | m_ObjectHideFlags: 1 71 | m_PrefabParentObject: {fileID: 0} 72 | m_PrefabInternal: {fileID: 100100000} 73 | m_GameObject: {fileID: 162510} 74 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 75 | --- !u!54 &5419616 76 | Rigidbody: 77 | m_ObjectHideFlags: 1 78 | m_PrefabParentObject: {fileID: 0} 79 | m_PrefabInternal: {fileID: 100100000} 80 | m_GameObject: {fileID: 162510} 81 | serializedVersion: 2 82 | m_Mass: 1 83 | m_Drag: 0 84 | m_AngularDrag: 0.05 85 | m_UseGravity: 1 86 | m_IsKinematic: 0 87 | m_Interpolate: 0 88 | m_Constraints: 0 89 | m_CollisionDetection: 0 90 | --- !u!65 &6560326 91 | BoxCollider: 92 | m_ObjectHideFlags: 1 93 | m_PrefabParentObject: {fileID: 0} 94 | m_PrefabInternal: {fileID: 100100000} 95 | m_GameObject: {fileID: 162510} 96 | m_Material: {fileID: 0} 97 | m_IsTrigger: 0 98 | m_Enabled: 1 99 | serializedVersion: 2 100 | m_Size: {x: 1, y: 1, z: 1} 101 | m_Center: {x: 0, y: 0, z: 0} 102 | --- !u!114 &11403464 103 | MonoBehaviour: 104 | m_ObjectHideFlags: 1 105 | m_PrefabParentObject: {fileID: 0} 106 | m_PrefabInternal: {fileID: 100100000} 107 | m_GameObject: {fileID: 162510} 108 | m_Enabled: 1 109 | m_EditorHideFlags: 0 110 | m_Script: {fileID: 11500000, guid: c56046daca8eb46f3af030c05f030e37, type: 3} 111 | m_Name: 112 | m_EditorClassIdentifier: 113 | m_Behaviour: {fileID: 11422298} 114 | --- !u!114 &11422298 115 | MonoBehaviour: 116 | m_ObjectHideFlags: 1 117 | m_PrefabParentObject: {fileID: 0} 118 | m_PrefabInternal: {fileID: 100100000} 119 | m_GameObject: {fileID: 162510} 120 | m_Enabled: 0 121 | m_EditorHideFlags: 0 122 | m_Script: {fileID: 11500000, guid: 6e038bf700cfa444fb16c6ef963be9f9, type: 3} 123 | m_Name: 124 | m_EditorClassIdentifier: 125 | --- !u!1001 &100100000 126 | Prefab: 127 | m_ObjectHideFlags: 1 128 | serializedVersion: 2 129 | m_Modification: 130 | m_TransformParent: {fileID: 0} 131 | m_Modifications: 132 | - target: {fileID: 0} 133 | propertyPath: m_Materials.Array.data[0] 134 | value: 135 | objectReference: {fileID: 2100000, guid: 5195427c0d27644ed90d87ebe86d468a, type: 2} 136 | - target: {fileID: 0} 137 | propertyPath: m_behaviour 138 | value: 139 | objectReference: {fileID: 11422298} 140 | - target: {fileID: 0} 141 | propertyPath: m_Enabled 142 | value: 0 143 | objectReference: {fileID: 0} 144 | m_RemovedComponents: [] 145 | m_ParentPrefab: {fileID: 0} 146 | m_RootGameObject: {fileID: 162510} 147 | m_IsPrefabParent: 1 148 | -------------------------------------------------------------------------------- /Assets/Examples/Prefabs/Plank.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9c7047f49d1a47f8b32b67338d4fc92 3 | timeCreated: 1430998965 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2cb1390efdb94ba790577476c2dba3c 3 | folderAsset: yes 4 | timeCreated: 1430992180 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/1_multiple_agent_sizes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b1b14868671104a5ea9d67deed03d64d 3 | folderAsset: yes 4 | timeCreated: 1461672818 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/1_multiple_agent_sizes.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3a4b724d578d4696a8ccd679e44174c 3 | timeCreated: 1431084827 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/1_multiple_agent_sizes/NavMesh-Geometry 1.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Scenes/1_multiple_agent_sizes/NavMesh-Geometry 1.asset -------------------------------------------------------------------------------- /Assets/Examples/Scenes/1_multiple_agent_sizes/NavMesh-Geometry 1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3102e40dfee54ef4b9e05daad8492d3 3 | timeCreated: 1479298643 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/1_multiple_agent_sizes/NavMesh-Geometry.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Scenes/1_multiple_agent_sizes/NavMesh-Geometry.asset -------------------------------------------------------------------------------- /Assets/Examples/Scenes/1_multiple_agent_sizes/NavMesh-Geometry.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 16f366ac098d14128924f8cb99c76613 3 | timeCreated: 1479298645 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/2_drop_plank.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5440f69c97a641f19160f152dfb503f 3 | timeCreated: 1430998263 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/3_free_orientation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52cc192293b90458b95f9fdcda30be14 3 | folderAsset: yes 4 | timeCreated: 1460116234 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/3_free_orientation.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: de3b928c3e7da4138bdb4cf0c0c43b2f 3 | timeCreated: 1431090429 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/3_free_orientation/NavMesh.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Scenes/3_free_orientation/NavMesh.asset -------------------------------------------------------------------------------- /Assets/Examples/Scenes/3_free_orientation/NavMesh.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df1140b6a36a84fcc80e4e177275c22b 3 | timeCreated: 1475077811 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/4_sliding_window_infinite.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e51437cfed50e46d58183a8174327158 3 | timeCreated: 1430735143 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/5_sliding_window_terrain.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c20ed45d4ebd40df8a16fa95e142c57 3 | timeCreated: 1430832619 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/6_modify_mesh.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01a58dc6a76c24f859a51e3de2203501 3 | timeCreated: 1430914489 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/7_dungeon.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64e67ca20d18848429dd567d351e9746 3 | timeCreated: 1430743376 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scenes/7b_dungeon_tile_prefabs.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9bfaa57130eb14f6d8c52e272c368f13 3 | timeCreated: 1431424678 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2ed02c68fbdf4352979d89a8d1c7bfb 3 | folderAsset: yes 4 | timeCreated: 1475051136 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/AgentLinkMover.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.AI; 3 | using System.Collections; 4 | 5 | public enum OffMeshLinkMoveMethod 6 | { 7 | Teleport, 8 | NormalSpeed, 9 | Parabola, 10 | Curve 11 | } 12 | 13 | [RequireComponent(typeof(NavMeshAgent))] 14 | public class AgentLinkMover : MonoBehaviour 15 | { 16 | public OffMeshLinkMoveMethod m_Method = OffMeshLinkMoveMethod.Parabola; 17 | public AnimationCurve m_Curve = new AnimationCurve(); 18 | 19 | IEnumerator Start() 20 | { 21 | NavMeshAgent agent = GetComponent(); 22 | agent.autoTraverseOffMeshLink = false; 23 | while (true) 24 | { 25 | if (agent.isOnOffMeshLink) 26 | { 27 | if (m_Method == OffMeshLinkMoveMethod.NormalSpeed) 28 | yield return StartCoroutine(NormalSpeed(agent)); 29 | else if (m_Method == OffMeshLinkMoveMethod.Parabola) 30 | yield return StartCoroutine(Parabola(agent, 2.0f, 0.5f)); 31 | else if (m_Method == OffMeshLinkMoveMethod.Curve) 32 | yield return StartCoroutine(Curve(agent, 0.5f)); 33 | agent.CompleteOffMeshLink(); 34 | } 35 | yield return null; 36 | } 37 | } 38 | 39 | IEnumerator NormalSpeed(NavMeshAgent agent) 40 | { 41 | OffMeshLinkData data = agent.currentOffMeshLinkData; 42 | Vector3 endPos = data.endPos + Vector3.up * agent.baseOffset; 43 | while (agent.transform.position != endPos) 44 | { 45 | agent.transform.position = Vector3.MoveTowards(agent.transform.position, endPos, agent.speed * Time.deltaTime); 46 | yield return null; 47 | } 48 | } 49 | 50 | IEnumerator Parabola(NavMeshAgent agent, float height, float duration) 51 | { 52 | OffMeshLinkData data = agent.currentOffMeshLinkData; 53 | Vector3 startPos = agent.transform.position; 54 | Vector3 endPos = data.endPos + Vector3.up * agent.baseOffset; 55 | float normalizedTime = 0.0f; 56 | while (normalizedTime < 1.0f) 57 | { 58 | float yOffset = height * 4.0f * (normalizedTime - normalizedTime * normalizedTime); 59 | agent.transform.position = Vector3.Lerp(startPos, endPos, normalizedTime) + yOffset * Vector3.up; 60 | normalizedTime += Time.deltaTime / duration; 61 | yield return null; 62 | } 63 | } 64 | 65 | IEnumerator Curve(NavMeshAgent agent, float duration) 66 | { 67 | OffMeshLinkData data = agent.currentOffMeshLinkData; 68 | Vector3 startPos = agent.transform.position; 69 | Vector3 endPos = data.endPos + Vector3.up * agent.baseOffset; 70 | float normalizedTime = 0.0f; 71 | while (normalizedTime < 1.0f) 72 | { 73 | float yOffset = m_Curve.Evaluate(normalizedTime); 74 | agent.transform.position = Vector3.Lerp(startPos, endPos, normalizedTime) + yOffset * Vector3.up; 75 | normalizedTime += Time.deltaTime / duration; 76 | yield return null; 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/AgentLinkMover.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 03bc8063c9e95401f9a8a38bc716750d 3 | timeCreated: 1460116525 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/ClickToMove.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.AI; 3 | 4 | // Use physics raycast hit from mouse click to set agent destination 5 | [RequireComponent(typeof(NavMeshAgent))] 6 | public class ClickToMove : MonoBehaviour 7 | { 8 | NavMeshAgent m_Agent; 9 | RaycastHit m_HitInfo = new RaycastHit(); 10 | 11 | void Start() 12 | { 13 | m_Agent = GetComponent(); 14 | } 15 | 16 | void Update() 17 | { 18 | if (Input.GetMouseButtonDown(0) && !Input.GetKey(KeyCode.LeftShift)) 19 | { 20 | var ray = Camera.main.ScreenPointToRay(Input.mousePosition); 21 | if (Physics.Raycast(ray.origin, ray.direction, out m_HitInfo)) 22 | m_Agent.destination = m_HitInfo.point; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/ClickToMove.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9472e73a59274b9b8da79d72004bd8b 3 | timeCreated: 1430734266 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/DestroyOnTrigger.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // Destroy owning GameObject if any collider with a specific tag is trespassing 4 | public class DestroyOnTrigger : MonoBehaviour 5 | { 6 | public string m_Tag = "Player"; 7 | 8 | void OnTriggerEnter(Collider other) 9 | { 10 | if (other.gameObject.tag == m_Tag) 11 | Destroy(gameObject); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/DestroyOnTrigger.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c786c4b29e72040b881bf13065fb9788 3 | timeCreated: 1430999621 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/DungeonManager.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [DefaultExecutionOrder(-200)] 4 | public class DungeonManager : MonoBehaviour 5 | { 6 | public int m_Width = 10; 7 | public int m_Height = 10; 8 | public float m_Spacing = 4.0f; 9 | public GameObject[] m_Tiles = new GameObject[16]; 10 | 11 | void Awake() 12 | { 13 | Random.InitState(23431); 14 | var map = new int[m_Width * m_Height]; 15 | for (int y = 0; y < m_Height; y++) 16 | { 17 | for (int x = 0; x < m_Width; x++) 18 | { 19 | bool px = false; 20 | bool py = false; 21 | if (x > 0) 22 | px = (map[(x - 1) + y * m_Width] & 1) != 0; 23 | if (y > 0) 24 | py = (map[x + (y - 1) * m_Width] & 2) != 0; 25 | 26 | int tile = 0; 27 | if (px) 28 | tile |= 4; 29 | if (py) 30 | tile |= 8; 31 | if (x + 1 < m_Width && Random.value > 0.5f) 32 | tile |= 1; 33 | if (y + 1 < m_Height && Random.value > 0.5f) 34 | tile |= 2; 35 | 36 | map[x + y * m_Width] = tile; 37 | } 38 | } 39 | 40 | for (int y = 0; y < m_Height; y++) 41 | { 42 | for (int x = 0; x < m_Width; x++) 43 | { 44 | var pos = new Vector3(x * m_Spacing, 0, y * m_Spacing); 45 | if (m_Tiles[map[x + y * m_Width]] != null) 46 | Instantiate(m_Tiles[map[x + y * m_Width]], pos, Quaternion.identity); 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/DungeonManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c56d911659e3c4b499e11b47a73a4dbb 3 | timeCreated: 1430743428 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/EnableIffSleeping.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // Enables a behaviour when a rigidbody settles movement 4 | // otherwise disables the behaviour 5 | public class EnableIffSleeping : MonoBehaviour 6 | { 7 | public Behaviour m_Behaviour; 8 | Rigidbody m_Rigidbody; 9 | 10 | void Start() 11 | { 12 | m_Rigidbody = GetComponent(); 13 | } 14 | 15 | void Update() 16 | { 17 | if (m_Rigidbody == null || m_Behaviour == null) 18 | return; 19 | 20 | if (m_Rigidbody.IsSleeping() && !m_Behaviour.enabled) 21 | m_Behaviour.enabled = true; 22 | 23 | if (!m_Rigidbody.IsSleeping() && m_Behaviour.enabled) 24 | m_Behaviour.enabled = false; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/EnableIffSleeping.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c56046daca8eb46f3af030c05f030e37 3 | timeCreated: 1431001396 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/FreeCam.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class FreeCam : MonoBehaviour 4 | { 5 | public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } 6 | public RotationAxes axes = RotationAxes.MouseXAndY; 7 | public float sensitivityX = 15F; 8 | public float sensitivityY = 15F; 9 | 10 | public float minimumX = -360F; 11 | public float maximumX = 360F; 12 | 13 | public float minimumY = -60F; 14 | public float maximumY = 60F; 15 | 16 | public float moveSpeed = 1.0f; 17 | 18 | public bool lockHeight = false; 19 | 20 | float rotationY = 0F; 21 | 22 | void Update() 23 | { 24 | if (axes == RotationAxes.MouseXAndY) 25 | { 26 | float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; 27 | 28 | rotationY += Input.GetAxis("Mouse Y") * sensitivityY; 29 | rotationY = Mathf.Clamp(rotationY, minimumY, maximumY); 30 | 31 | transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); 32 | } 33 | else if (axes == RotationAxes.MouseX) 34 | { 35 | transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0); 36 | } 37 | else 38 | { 39 | rotationY += Input.GetAxis("Mouse Y") * sensitivityY; 40 | rotationY = Mathf.Clamp(rotationY, minimumY, maximumY); 41 | 42 | transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0); 43 | } 44 | 45 | var xAxisValue = Input.GetAxis("Horizontal"); 46 | var zAxisValue = Input.GetAxis("Vertical"); 47 | if (lockHeight) 48 | { 49 | var dir = transform.TransformDirection(new Vector3(xAxisValue, 0.0f, zAxisValue) * moveSpeed); 50 | dir.y = 0.0f; 51 | transform.position += dir; 52 | } 53 | else 54 | { 55 | transform.Translate(new Vector3(xAxisValue, 0.0f, zAxisValue) * moveSpeed); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/FreeCam.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b6c30eb361e754b75ac25325c5d024bd 3 | timeCreated: 1430921534 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/LocalNavMeshBuilder.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.AI; 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using NavMeshBuilder = UnityEngine.AI.NavMeshBuilder; 6 | 7 | // Build and update a localized navmesh from the sources marked by NavMeshSourceTag 8 | [DefaultExecutionOrder(-102)] 9 | public class LocalNavMeshBuilder : MonoBehaviour 10 | { 11 | // The center of the build 12 | public Transform m_Tracked; 13 | 14 | // The size of the build bounds 15 | public Vector3 m_Size = new Vector3(80.0f, 20.0f, 80.0f); 16 | 17 | NavMeshData m_NavMesh; 18 | AsyncOperation m_Operation; 19 | NavMeshDataInstance m_Instance; 20 | List m_Sources = new List(); 21 | 22 | IEnumerator Start() 23 | { 24 | while (true) 25 | { 26 | UpdateNavMesh(true); 27 | yield return m_Operation; 28 | } 29 | } 30 | 31 | void OnEnable() 32 | { 33 | // Construct and add navmesh 34 | m_NavMesh = new NavMeshData(); 35 | m_Instance = NavMesh.AddNavMeshData(m_NavMesh); 36 | if (m_Tracked == null) 37 | m_Tracked = transform; 38 | UpdateNavMesh(false); 39 | } 40 | 41 | void OnDisable() 42 | { 43 | // Unload navmesh and clear handle 44 | m_Instance.Remove(); 45 | } 46 | 47 | void UpdateNavMesh(bool asyncUpdate = false) 48 | { 49 | NavMeshSourceTag.Collect(ref m_Sources); 50 | var defaultBuildSettings = NavMesh.GetSettingsByID(0); 51 | var bounds = QuantizedBounds(); 52 | 53 | if (asyncUpdate) 54 | m_Operation = NavMeshBuilder.UpdateNavMeshDataAsync(m_NavMesh, defaultBuildSettings, m_Sources, bounds); 55 | else 56 | NavMeshBuilder.UpdateNavMeshData(m_NavMesh, defaultBuildSettings, m_Sources, bounds); 57 | } 58 | 59 | static Vector3 Quantize(Vector3 v, Vector3 quant) 60 | { 61 | float x = quant.x * Mathf.Floor(v.x / quant.x); 62 | float y = quant.y * Mathf.Floor(v.y / quant.y); 63 | float z = quant.z * Mathf.Floor(v.z / quant.z); 64 | return new Vector3(x, y, z); 65 | } 66 | 67 | Bounds QuantizedBounds() 68 | { 69 | // Quantize the bounds to update only when theres a 10% change in size 70 | var center = m_Tracked ? m_Tracked.position : transform.position; 71 | return new Bounds(Quantize(center, 0.1f * m_Size), m_Size); 72 | } 73 | 74 | void OnDrawGizmosSelected() 75 | { 76 | if (m_NavMesh) 77 | { 78 | Gizmos.color = Color.green; 79 | Gizmos.DrawWireCube(m_NavMesh.sourceBounds.center, m_NavMesh.sourceBounds.size); 80 | } 81 | 82 | Gizmos.color = Color.yellow; 83 | var bounds = QuantizedBounds(); 84 | Gizmos.DrawWireCube(bounds.center, bounds.size); 85 | 86 | Gizmos.color = Color.green; 87 | var center = m_Tracked ? m_Tracked.position : transform.position; 88 | Gizmos.DrawWireCube(center, m_Size); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/LocalNavMeshBuilder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 115dfe7b0938447cbbf9507076f54049 3 | timeCreated: 1454852118 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/MeshTool.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | // Manipulation tool for displacing the vertices in a list of meshes 5 | public class MeshTool : MonoBehaviour 6 | { 7 | public enum ExtrudeMethod 8 | { 9 | Vertical, 10 | MeshNormal 11 | } 12 | 13 | public List m_Filters = new List(); 14 | public float m_Radius = 1.5f; 15 | public float m_Power = 2.0f; 16 | public ExtrudeMethod m_Method = ExtrudeMethod.Vertical; 17 | 18 | RaycastHit m_HitInfo = new RaycastHit(); 19 | 20 | void Start() 21 | { 22 | Cursor.lockState = CursorLockMode.Locked; 23 | Cursor.visible = false; 24 | } 25 | 26 | void Update() 27 | { 28 | var ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward); 29 | if (Physics.Raycast(ray.origin, ray.direction, out m_HitInfo)) 30 | { 31 | Debug.DrawRay(m_HitInfo.point, m_HitInfo.normal, Color.red); 32 | Vector3 displacement = (m_Method == ExtrudeMethod.Vertical) ? Vector3.up : m_HitInfo.normal; 33 | 34 | if (Input.GetMouseButton(0) || (Input.GetKey(KeyCode.Space) && !Input.GetKey(KeyCode.LeftShift))) 35 | ModifyMesh(m_Power * displacement, m_HitInfo.point); 36 | if (Input.GetMouseButton(1) || (Input.GetKey(KeyCode.Space) && Input.GetKey(KeyCode.LeftShift))) 37 | ModifyMesh(-m_Power * displacement, m_HitInfo.point); 38 | } 39 | } 40 | 41 | void ModifyMesh(Vector3 displacement, Vector3 center) 42 | { 43 | foreach (var filter in m_Filters) 44 | { 45 | Mesh mesh = filter.mesh; 46 | Vector3[] vertices = mesh.vertices; 47 | 48 | for (int i = 0; i < vertices.Length; ++i) 49 | { 50 | Vector3 v = filter.transform.TransformPoint(vertices[i]); 51 | vertices[i] = vertices[i] + displacement * Gaussian(v, center, m_Radius); 52 | } 53 | 54 | mesh.vertices = vertices; 55 | mesh.RecalculateBounds(); 56 | 57 | var col = filter.GetComponent(); 58 | if (col != null) 59 | { 60 | var colliMesh = new Mesh(); 61 | colliMesh.vertices = mesh.vertices; 62 | colliMesh.triangles = mesh.triangles; 63 | col.sharedMesh = colliMesh; 64 | } 65 | } 66 | } 67 | 68 | static float Gaussian(Vector3 pos, Vector3 mean, float dev) 69 | { 70 | float x = pos.x - mean.x; 71 | float y = pos.y - mean.y; 72 | float z = pos.z - mean.z; 73 | float n = 1.0f / (2.0f * Mathf.PI * dev * dev); 74 | return n * Mathf.Pow(2.718281828f, -(x * x + y * y + z * z) / (2.0f * dev * dev)); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/MeshTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9d5a3e609186342b2a976cd32fd7d0f0 3 | timeCreated: 1430920188 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/NavMeshPrefabInstance.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | using UnityEngine.AI; 4 | 5 | [ExecuteInEditMode] 6 | [DefaultExecutionOrder(-102)] 7 | public class NavMeshPrefabInstance : MonoBehaviour 8 | { 9 | [SerializeField] 10 | NavMeshData m_NavMesh; 11 | public NavMeshData navMeshData 12 | { 13 | get { return m_NavMesh; } 14 | set { m_NavMesh = value; } 15 | } 16 | 17 | [SerializeField] 18 | bool m_FollowTransform; 19 | public bool followTransform 20 | { 21 | get { return m_FollowTransform; } 22 | set { SetFollowTransform(value); } 23 | } 24 | 25 | NavMeshDataInstance m_Instance; 26 | 27 | // Position Tracking 28 | static readonly List s_TrackedInstances = new List(); 29 | public static List trackedInstances {get {return s_TrackedInstances; }} 30 | Vector3 m_Position; 31 | Quaternion m_Rotation; 32 | 33 | void OnEnable() 34 | { 35 | AddInstance(); 36 | 37 | if (m_Instance.valid && m_FollowTransform) 38 | AddTracking(); 39 | } 40 | 41 | void OnDisable() 42 | { 43 | m_Instance.Remove(); 44 | RemoveTracking(); 45 | } 46 | 47 | public void UpdateInstance() 48 | { 49 | m_Instance.Remove(); 50 | AddInstance(); 51 | } 52 | 53 | void AddInstance() 54 | { 55 | #if UNITY_EDITOR 56 | if (m_Instance.valid) 57 | { 58 | Debug.LogError("Instance is already added: " + this); 59 | return; 60 | } 61 | #endif 62 | if (m_NavMesh) 63 | m_Instance = NavMesh.AddNavMeshData(m_NavMesh, transform.position, transform.rotation); 64 | 65 | m_Rotation = transform.rotation; 66 | m_Position = transform.position; 67 | } 68 | 69 | void AddTracking() 70 | { 71 | #if UNITY_EDITOR 72 | // At runtime we don't want linear lookup 73 | if (s_TrackedInstances.Contains(this)) 74 | { 75 | Debug.LogError("Double registration of " + this); 76 | return; 77 | } 78 | #endif 79 | if (s_TrackedInstances.Count == 0) 80 | NavMesh.onPreUpdate += UpdateTrackedInstances; 81 | s_TrackedInstances.Add(this); 82 | } 83 | 84 | void RemoveTracking() 85 | { 86 | s_TrackedInstances.Remove(this); 87 | if (s_TrackedInstances.Count == 0) 88 | NavMesh.onPreUpdate -= UpdateTrackedInstances; 89 | } 90 | 91 | void SetFollowTransform(bool value) 92 | { 93 | if (m_FollowTransform == value) 94 | return; 95 | m_FollowTransform = value; 96 | if (value) 97 | AddTracking(); 98 | else 99 | RemoveTracking(); 100 | } 101 | 102 | bool HasMoved() 103 | { 104 | return m_Position != transform.position || m_Rotation != transform.rotation; 105 | } 106 | 107 | static void UpdateTrackedInstances() 108 | { 109 | foreach (var instance in s_TrackedInstances) 110 | { 111 | if (instance.HasMoved()) 112 | instance.UpdateInstance(); 113 | } 114 | } 115 | 116 | #if UNITY_EDITOR 117 | void OnValidate() 118 | { 119 | // Only when the instance is valid (OnEnable is called) - we react to changes caused by serialization 120 | if (!m_Instance.valid) 121 | return; 122 | // OnValidate can be called several times - avoid double registration 123 | // We afford this linear lookup in the editor only 124 | if (!m_FollowTransform) 125 | { 126 | RemoveTracking(); 127 | } 128 | else if (!s_TrackedInstances.Contains(this)) 129 | { 130 | AddTracking(); 131 | } 132 | } 133 | #endif 134 | } 135 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/NavMeshPrefabInstance.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4abfa16db9d114ec0ae6e10e4a566cb4 3 | timeCreated: 1454507331 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/NavMeshSourceTag.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.AI; 3 | using System.Collections.Generic; 4 | 5 | // Tagging component for use with the LocalNavMeshBuilder 6 | // Supports mesh-filter and terrain - can be extended to physics and/or primitives 7 | [DefaultExecutionOrder(-200)] 8 | public class NavMeshSourceTag : MonoBehaviour 9 | { 10 | // Global containers for all active mesh/terrain tags 11 | public static List m_Meshes = new List(); 12 | public static List m_Terrains = new List(); 13 | 14 | void OnEnable() 15 | { 16 | var m = GetComponent(); 17 | if (m != null) 18 | { 19 | m_Meshes.Add(m); 20 | } 21 | 22 | var t = GetComponent(); 23 | if (t != null) 24 | { 25 | m_Terrains.Add(t); 26 | } 27 | } 28 | 29 | void OnDisable() 30 | { 31 | var m = GetComponent(); 32 | if (m != null) 33 | { 34 | m_Meshes.Remove(m); 35 | } 36 | 37 | var t = GetComponent(); 38 | if (t != null) 39 | { 40 | m_Terrains.Remove(t); 41 | } 42 | } 43 | 44 | // Collect all the navmesh build sources for enabled objects tagged by this component 45 | public static void Collect(ref List sources) 46 | { 47 | sources.Clear(); 48 | 49 | for (var i = 0; i < m_Meshes.Count; ++i) 50 | { 51 | var mf = m_Meshes[i]; 52 | if (mf == null) continue; 53 | 54 | var m = mf.sharedMesh; 55 | if (m == null) continue; 56 | 57 | var s = new NavMeshBuildSource(); 58 | s.shape = NavMeshBuildSourceShape.Mesh; 59 | s.sourceObject = m; 60 | s.transform = mf.transform.localToWorldMatrix; 61 | s.area = 0; 62 | sources.Add(s); 63 | } 64 | 65 | for (var i = 0; i < m_Terrains.Count; ++i) 66 | { 67 | var t = m_Terrains[i]; 68 | if (t == null) continue; 69 | 70 | var s = new NavMeshBuildSource(); 71 | s.shape = NavMeshBuildSourceShape.Terrain; 72 | s.sourceObject = t.terrainData; 73 | // Terrain system only supports translation - so we pass translation only to back-end 74 | s.transform = Matrix4x4.TRS(t.transform.position, Quaternion.identity, Vector3.one); 75 | s.area = 0; 76 | sources.Add(s); 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/NavMeshSourceTag.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e038bf700cfa444fb16c6ef963be9f9 3 | timeCreated: 1430814538 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/Oscillator.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // Makes a transform oscillate relative to its start position 4 | public class Oscillator : MonoBehaviour 5 | { 6 | public float m_Amplitude = 1.0f; 7 | public float m_Period = 1.0f; 8 | public Vector3 m_Direction = Vector3.up; 9 | Vector3 m_StartPosition; 10 | 11 | void Start() 12 | { 13 | m_StartPosition = transform.position; 14 | } 15 | 16 | void Update() 17 | { 18 | var pos = m_StartPosition + m_Direction * m_Amplitude * Mathf.Sin(2.0f * Mathf.PI * Time.time / m_Period); 19 | transform.position = pos; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/Oscillator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c59ac8154f1b24ea7a85cab0f39a4489 3 | timeCreated: 1454359265 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/RandomInstancing.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | using System.Collections.Generic; 4 | 5 | // Fill 5x5 tiles around the local position procedurally by instantiating prefabs at random positions/orientations 6 | [DefaultExecutionOrder(-200)] 7 | public class RandomInstancing : MonoBehaviour 8 | { 9 | public GameObject m_Prefab; 10 | public int m_PoolSize = 250; 11 | public int m_InstancesPerTile = 10; 12 | public bool m_RandomPosition = true; 13 | public bool m_RandomOrientation = true; 14 | public float m_Height; 15 | 16 | public int m_BaseHash = 347652783; 17 | public float m_Size = 100.0f; 18 | 19 | List m_Instances = new List(); 20 | int m_Used; 21 | int m_LocX, m_LocZ; 22 | 23 | void Awake() 24 | { 25 | for (int i = 0; i < m_PoolSize; ++i) 26 | { 27 | var go = Instantiate(m_Prefab, Vector3.zero, Quaternion.identity) as GameObject; 28 | go.SetActive(false); 29 | m_Instances.Add(go.transform); 30 | } 31 | } 32 | 33 | void OnEnable() 34 | { 35 | m_LocX = ~0; 36 | m_LocZ = ~0; 37 | UpdateInstances(); 38 | } 39 | 40 | void OnDestroy() 41 | { 42 | for (int i = 0; i < m_Instances.Count; ++i) 43 | { 44 | if (m_Instances[i]) 45 | Destroy(m_Instances[i].gameObject); 46 | } 47 | m_Instances.Clear(); 48 | } 49 | 50 | void Update() 51 | { 52 | UpdateInstances(); 53 | } 54 | 55 | void UpdateInstances() 56 | { 57 | var x = (int)Mathf.Floor(transform.position.x / m_Size); 58 | var z = (int)Mathf.Floor(transform.position.z / m_Size); 59 | if (x == m_LocX && z == m_LocZ) 60 | return; 61 | 62 | m_LocX = x; 63 | m_LocZ = z; 64 | 65 | m_Used = 0; 66 | for (var i = x - 2; i <= x + 2; ++i) 67 | { 68 | for (var j = z - 2; j <= z + 2; ++j) 69 | { 70 | var count = UpdateTileInstances(i, j); 71 | if (count != m_InstancesPerTile) 72 | return; 73 | } 74 | } 75 | 76 | // Deactivate the remaining active elements in the pool. 77 | // Here we assume all active elements are contiguous and first in the list. 78 | for (int i = m_Used; i < m_PoolSize && m_Instances[i].gameObject.activeSelf; ++i) 79 | m_Instances[i].gameObject.SetActive(false); 80 | } 81 | 82 | int UpdateTileInstances(int i, int j) 83 | { 84 | var seed = Hash2(i, j) ^ m_BaseHash; 85 | var count = System.Math.Min(m_InstancesPerTile, m_PoolSize - m_Used); 86 | for (var end = m_Used + count; m_Used < end; ++m_Used) 87 | { 88 | float x = 0; 89 | float y = 0; 90 | 91 | if (m_RandomPosition) 92 | { 93 | x = Random(ref seed); 94 | y = Random(ref seed); 95 | } 96 | var pos = new Vector3((i + x) * m_Size, m_Height, (j + y) * m_Size); 97 | 98 | if (m_RandomOrientation) 99 | { 100 | float r = 360.0f * Random(ref seed); 101 | m_Instances[m_Used].rotation = Quaternion.AngleAxis(r, Vector3.up); 102 | } 103 | m_Instances[m_Used].position = pos; 104 | m_Instances[m_Used].gameObject.SetActive(true); 105 | } 106 | 107 | if (count < m_InstancesPerTile) 108 | Debug.LogWarning("Pool exhausted", this); 109 | 110 | return count; 111 | } 112 | 113 | static int Hash2(int i, int j) 114 | { 115 | return (i * 73856093) ^ (j * 19349663); 116 | } 117 | 118 | static float Random(ref int seed) 119 | { 120 | seed = (seed ^ 123459876); 121 | var k = seed / 127773; 122 | seed = 16807 * (seed - k * 127773) - 2836 * k; 123 | if (seed < 0) seed = seed + 2147483647; 124 | float ran0 = seed * 1.0f / 2147483647.0f; 125 | seed = (seed ^ 123459876); 126 | return ran0; 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/RandomInstancing.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0805752a20e62489680c7c8ba929bccc 3 | timeCreated: 1430813999 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/RandomWalk.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.AI; 3 | 4 | // Walk to a random position and repeat 5 | [RequireComponent(typeof(NavMeshAgent))] 6 | public class RandomWalk : MonoBehaviour 7 | { 8 | public float m_Range = 25.0f; 9 | NavMeshAgent m_Agent; 10 | 11 | void Start() 12 | { 13 | m_Agent = GetComponent(); 14 | } 15 | 16 | void Update() 17 | { 18 | if (m_Agent.pathPending || m_Agent.remainingDistance > 0.1f) 19 | return; 20 | 21 | m_Agent.destination = m_Range * Random.insideUnitCircle; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/RandomWalk.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd76b8ee2dbcf4be6998e917c65cd6ed 3 | timeCreated: 1431075769 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/SpawnPrefabOnKeyDown.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class SpawnPrefabOnKeyDown : MonoBehaviour 4 | { 5 | public GameObject m_Prefab; 6 | public KeyCode m_KeyCode; 7 | 8 | void Update() 9 | { 10 | if (Input.GetKeyDown(m_KeyCode) && m_Prefab != null) 11 | Instantiate(m_Prefab, transform.position, transform.rotation); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Assets/Examples/Scripts/SpawnPrefabOnKeyDown.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c751607f01df8445c86b012985b8b152 3 | timeCreated: 1430998893 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Examples/Terrains.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75dd45a13a93f4ea2a0e5018ef4651c6 3 | folderAsset: yes 4 | timeCreated: 1430832572 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Examples/Terrains/Islands.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Terrains/Islands.asset -------------------------------------------------------------------------------- /Assets/Examples/Terrains/Islands.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94511fbc8bb3e4f94aa3a65d6f584b9d 3 | timeCreated: 1431423810 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Examples/Terrains/LightmapWithFog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Examples/Terrains/LightmapWithFog.png -------------------------------------------------------------------------------- /Assets/Examples/Terrains/LightmapWithFog.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8377171c01a5547358598762f90c022f 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 2 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: .25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: 3 28 | maxTextureSize: 512 29 | textureSettings: 30 | filterMode: 1 31 | aniso: 1 32 | mipBias: 0 33 | wrapMode: 0 34 | nPOTScale: 0 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | spriteMode: 0 39 | spriteExtrude: 1 40 | spriteMeshType: 1 41 | alignment: 0 42 | spritePivot: {x: .5, y: .5} 43 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 44 | spritePixelsToUnits: 100 45 | alphaIsTransparency: 0 46 | textureType: -1 47 | buildTargetSettings: [] 48 | spriteSheet: 49 | sprites: [] 50 | spritePackingTag: 51 | userData: 52 | assetBundleName: 53 | assetBundleVariant: 54 | -------------------------------------------------------------------------------- /Assets/Examples/Terrains/layer_LightmapWithFog(2048.000,2048.000)(0.000,0.000)(0.000,0.000,0.000),0.000,0.000.terrainlayer: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1953259897 &8574412962073106934 4 | TerrainLayer: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: layer_LightmapWithFog(2048.000,2048.000)(0.000,0.000)(0.000,0.000,0.000),0.000,0.000 10 | m_DiffuseTexture: {fileID: 2800000, guid: 8377171c01a5547358598762f90c022f, type: 3} 11 | m_NormalMapTexture: {fileID: 0} 12 | m_MaskMapTexture: {fileID: 0} 13 | m_TileSize: {x: 2048, y: 2048} 14 | m_TileOffset: {x: 0, y: 0} 15 | m_Specular: {r: 0, g: 0, b: 0, a: 0} 16 | m_Metallic: 0 17 | m_Smoothness: 0 18 | m_NormalScale: 1 19 | m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0} 20 | m_DiffuseRemapMax: {x: 1, y: 1, z: 1, w: 1} 21 | m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0} 22 | m_MaskMapRemapMax: {x: 1, y: 1, z: 1, w: 1} 23 | -------------------------------------------------------------------------------- /Assets/Examples/Terrains/layer_LightmapWithFog(2048.000,2048.000)(0.000,0.000)(0.000,0.000,0.000),0.000,0.000.terrainlayer.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9f4e51767bd6244418c3f1234ffeac48 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 8574412962073106934 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Gizmos.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 93b9715f5a4bf471c8154f6cbab7e94d 3 | folderAsset: yes 4 | timeCreated: 1477656493 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Gizmos/NavMeshLink Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Gizmos/NavMeshLink Icon.png -------------------------------------------------------------------------------- /Assets/Gizmos/NavMeshLink Icon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92f4afa3e25264f5b964937ccea49ff2 3 | timeCreated: 1477656497 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | spriteSheet: 62 | serializedVersion: 2 63 | sprites: [] 64 | outline: [] 65 | spritePackingTag: 66 | userData: 67 | assetBundleName: 68 | assetBundleVariant: 69 | -------------------------------------------------------------------------------- /Assets/Gizmos/NavMeshModifierVolume Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Gizmos/NavMeshModifierVolume Icon.png -------------------------------------------------------------------------------- /Assets/Gizmos/NavMeshModifierVolume Icon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc7b9475dbddf4f9088d327d6e10ab77 3 | timeCreated: 1477656497 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | spriteSheet: 62 | serializedVersion: 2 63 | sprites: [] 64 | outline: [] 65 | spritePackingTag: 66 | userData: 67 | assetBundleName: 68 | assetBundleVariant: 69 | -------------------------------------------------------------------------------- /Assets/Gizmos/NavMeshSurface Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Assets/Gizmos/NavMeshSurface Icon.png -------------------------------------------------------------------------------- /Assets/Gizmos/NavMeshSurface Icon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e4f97225bcfb64760a1c81f460837f01 3 | timeCreated: 1477656497 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | spriteSheet: 62 | serializedVersion: 2 63 | sprites: [] 64 | outline: [] 65 | spritePackingTag: 66 | userData: 67 | assetBundleName: 68 | assetBundleVariant: 69 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90490f1de0cc846679dcec6f99663653 3 | folderAsset: yes 4 | timeCreated: 1477656493 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 63b588f3892bb4b5eb73ad3d2791e05c 3 | folderAsset: yes 4 | timeCreated: 1477656493 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshAssetManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 178d8366aa1616849b91b66285c51454 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NavMeshComponentsEditor", 3 | "references": [ 4 | "NavMeshComponents" 5 | ], 6 | "optionalUnityReferences": [], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [] 16 | } -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshComponentsEditor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86c9d8e67265f41469be06142c397d17 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshComponentsGUIUtility.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77fba670b979046f18d52d751e0d4659 3 | timeCreated: 1480524815 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshLinkEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ece1e865d1ad84587872fe8580ab5a20 3 | timeCreated: 1477036743 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine.AI; 2 | 3 | namespace UnityEditor.AI 4 | { 5 | [CanEditMultipleObjects] 6 | [CustomEditor(typeof(NavMeshModifier))] 7 | class NavMeshModifierEditor : Editor 8 | { 9 | SerializedProperty m_AffectedAgents; 10 | SerializedProperty m_Area; 11 | SerializedProperty m_IgnoreFromBuild; 12 | SerializedProperty m_OverrideArea; 13 | 14 | void OnEnable() 15 | { 16 | m_AffectedAgents = serializedObject.FindProperty("m_AffectedAgents"); 17 | m_Area = serializedObject.FindProperty("m_Area"); 18 | m_IgnoreFromBuild = serializedObject.FindProperty("m_IgnoreFromBuild"); 19 | m_OverrideArea = serializedObject.FindProperty("m_OverrideArea"); 20 | 21 | NavMeshVisualizationSettings.showNavigation++; 22 | } 23 | 24 | void OnDisable() 25 | { 26 | NavMeshVisualizationSettings.showNavigation--; 27 | } 28 | 29 | public override void OnInspectorGUI() 30 | { 31 | serializedObject.Update(); 32 | 33 | EditorGUILayout.PropertyField(m_IgnoreFromBuild); 34 | 35 | EditorGUILayout.PropertyField(m_OverrideArea); 36 | if (m_OverrideArea.boolValue) 37 | { 38 | EditorGUI.indentLevel++; 39 | NavMeshComponentsGUIUtility.AreaPopup("Area Type", m_Area); 40 | EditorGUI.indentLevel--; 41 | } 42 | 43 | NavMeshComponentsGUIUtility.AgentMaskPopup("Affected Agents", m_AffectedAgents); 44 | EditorGUILayout.Space(); 45 | 46 | serializedObject.ApplyModifiedProperties(); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshModifierEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6fa04b4743e3947eba4d7b9e5832ea69 3 | timeCreated: 1477036742 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshModifierVolumeEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c0f3bef2a67ae4e139538afec3e59b03 3 | timeCreated: 1477036743 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1c32167dbf3314852b6006a288eb449b 3 | timeCreated: 1476968447 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce67aa87f613246dda63a54a59c6399e 3 | folderAsset: yes 4 | timeCreated: 1477656493 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NavMeshComponents", 3 | "references": [], 4 | "optionalUnityReferences": [], 5 | "includePlatforms": [], 6 | "excludePlatforms": [], 7 | "allowUnsafeCode": false, 8 | "overrideReferences": false, 9 | "precompiledReferences": [], 10 | "autoReferenced": true, 11 | "defineConstraints": [] 12 | } -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshComponents.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c4dd21966739024fbd72155091d199e 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshLink.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace UnityEngine.AI 4 | { 5 | [ExecuteInEditMode] 6 | [DefaultExecutionOrder(-101)] 7 | [AddComponentMenu("Navigation/NavMeshLink", 33)] 8 | [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] 9 | public class NavMeshLink : MonoBehaviour 10 | { 11 | [SerializeField] 12 | int m_AgentTypeID; 13 | public int agentTypeID { get { return m_AgentTypeID; } set { m_AgentTypeID = value; UpdateLink(); } } 14 | 15 | [SerializeField] 16 | Vector3 m_StartPoint = new Vector3(0.0f, 0.0f, -2.5f); 17 | public Vector3 startPoint { get { return m_StartPoint; } set { m_StartPoint = value; UpdateLink(); } } 18 | 19 | [SerializeField] 20 | Vector3 m_EndPoint = new Vector3(0.0f, 0.0f, 2.5f); 21 | public Vector3 endPoint { get { return m_EndPoint; } set { m_EndPoint = value; UpdateLink(); } } 22 | 23 | [SerializeField] 24 | float m_Width; 25 | public float width { get { return m_Width; } set { m_Width = value; UpdateLink(); } } 26 | 27 | [SerializeField] 28 | int m_CostModifier = -1; 29 | public int costModifier { get { return m_CostModifier; } set { m_CostModifier = value; UpdateLink(); } } 30 | 31 | [SerializeField] 32 | bool m_Bidirectional = true; 33 | public bool bidirectional { get { return m_Bidirectional; } set { m_Bidirectional = value; UpdateLink(); } } 34 | 35 | [SerializeField] 36 | bool m_AutoUpdatePosition; 37 | public bool autoUpdate { get { return m_AutoUpdatePosition; } set { SetAutoUpdate(value); } } 38 | 39 | [SerializeField] 40 | int m_Area; 41 | public int area { get { return m_Area; } set { m_Area = value; UpdateLink(); } } 42 | 43 | NavMeshLinkInstance m_LinkInstance = new NavMeshLinkInstance(); 44 | 45 | Vector3 m_LastPosition = Vector3.zero; 46 | Quaternion m_LastRotation = Quaternion.identity; 47 | 48 | static readonly List s_Tracked = new List(); 49 | 50 | void OnEnable() 51 | { 52 | AddLink(); 53 | if (m_AutoUpdatePosition && m_LinkInstance.valid) 54 | AddTracking(this); 55 | } 56 | 57 | void OnDisable() 58 | { 59 | RemoveTracking(this); 60 | m_LinkInstance.Remove(); 61 | } 62 | 63 | public void UpdateLink() 64 | { 65 | m_LinkInstance.Remove(); 66 | AddLink(); 67 | } 68 | 69 | static void AddTracking(NavMeshLink link) 70 | { 71 | #if UNITY_EDITOR 72 | if (s_Tracked.Contains(link)) 73 | { 74 | Debug.LogError("Link is already tracked: " + link); 75 | return; 76 | } 77 | #endif 78 | 79 | if (s_Tracked.Count == 0) 80 | NavMesh.onPreUpdate += UpdateTrackedInstances; 81 | 82 | s_Tracked.Add(link); 83 | } 84 | 85 | static void RemoveTracking(NavMeshLink link) 86 | { 87 | s_Tracked.Remove(link); 88 | 89 | if (s_Tracked.Count == 0) 90 | NavMesh.onPreUpdate -= UpdateTrackedInstances; 91 | } 92 | 93 | void SetAutoUpdate(bool value) 94 | { 95 | if (m_AutoUpdatePosition == value) 96 | return; 97 | m_AutoUpdatePosition = value; 98 | if (value) 99 | AddTracking(this); 100 | else 101 | RemoveTracking(this); 102 | } 103 | 104 | void AddLink() 105 | { 106 | #if UNITY_EDITOR 107 | if (m_LinkInstance.valid) 108 | { 109 | Debug.LogError("Link is already added: " + this); 110 | return; 111 | } 112 | #endif 113 | 114 | var link = new NavMeshLinkData(); 115 | link.startPosition = m_StartPoint; 116 | link.endPosition = m_EndPoint; 117 | link.width = m_Width; 118 | link.costModifier = m_CostModifier; 119 | link.bidirectional = m_Bidirectional; 120 | link.area = m_Area; 121 | link.agentTypeID = m_AgentTypeID; 122 | m_LinkInstance = NavMesh.AddLink(link, transform.position, transform.rotation); 123 | if (m_LinkInstance.valid) 124 | m_LinkInstance.owner = this; 125 | 126 | m_LastPosition = transform.position; 127 | m_LastRotation = transform.rotation; 128 | } 129 | 130 | bool HasTransformChanged() 131 | { 132 | if (m_LastPosition != transform.position) return true; 133 | if (m_LastRotation != transform.rotation) return true; 134 | return false; 135 | } 136 | 137 | void OnDidApplyAnimationProperties() 138 | { 139 | UpdateLink(); 140 | } 141 | 142 | static void UpdateTrackedInstances() 143 | { 144 | foreach (var instance in s_Tracked) 145 | { 146 | if (instance.HasTransformChanged()) 147 | instance.UpdateLink(); 148 | } 149 | } 150 | 151 | #if UNITY_EDITOR 152 | void OnValidate() 153 | { 154 | m_Width = Mathf.Max(0.0f, m_Width); 155 | 156 | if (!m_LinkInstance.valid) 157 | return; 158 | 159 | UpdateLink(); 160 | 161 | if (!m_AutoUpdatePosition) 162 | { 163 | RemoveTracking(this); 164 | } 165 | else if (!s_Tracked.Contains(this)) 166 | { 167 | AddTracking(this); 168 | } 169 | } 170 | #endif 171 | } 172 | } 173 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshLink.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6eeb5dc026fdf4b488bc7ae0138ab719 3 | timeCreated: 1477924439 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {fileID: 2800000, guid: 92f4afa3e25264f5b964937ccea49ff2, type: 3} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshModifier.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace UnityEngine.AI 4 | { 5 | [ExecuteInEditMode] 6 | [AddComponentMenu("Navigation/NavMeshModifier", 32)] 7 | [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] 8 | public class NavMeshModifier : MonoBehaviour 9 | { 10 | [SerializeField] 11 | bool m_OverrideArea; 12 | public bool overrideArea { get { return m_OverrideArea; } set { m_OverrideArea = value; } } 13 | 14 | [SerializeField] 15 | int m_Area; 16 | public int area { get { return m_Area; } set { m_Area = value; } } 17 | 18 | [SerializeField] 19 | bool m_IgnoreFromBuild; 20 | public bool ignoreFromBuild { get { return m_IgnoreFromBuild; } set { m_IgnoreFromBuild = value; } } 21 | 22 | // List of agent types the modifier is applied for. 23 | // Special values: empty == None, m_AffectedAgents[0] =-1 == All. 24 | [SerializeField] 25 | List m_AffectedAgents = new List(new int[] { -1 }); // Default value is All 26 | 27 | static readonly List s_NavMeshModifiers = new List(); 28 | 29 | public static List activeModifiers 30 | { 31 | get { return s_NavMeshModifiers; } 32 | } 33 | 34 | void OnEnable() 35 | { 36 | if (!s_NavMeshModifiers.Contains(this)) 37 | s_NavMeshModifiers.Add(this); 38 | } 39 | 40 | void OnDisable() 41 | { 42 | s_NavMeshModifiers.Remove(this); 43 | } 44 | 45 | public bool AffectsAgentType(int agentTypeID) 46 | { 47 | if (m_AffectedAgents.Count == 0) 48 | return false; 49 | if (m_AffectedAgents[0] == -1) 50 | return true; 51 | return m_AffectedAgents.IndexOf(agentTypeID) != -1; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshModifier.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e3fdca004f2d45fe8abbed571a8abd5 3 | timeCreated: 1477924411 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {fileID: 2800000, guid: cc7b9475dbddf4f9088d327d6e10ab77, type: 3} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace UnityEngine.AI 4 | { 5 | [ExecuteInEditMode] 6 | [AddComponentMenu("Navigation/NavMeshModifierVolume", 31)] 7 | [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] 8 | public class NavMeshModifierVolume : MonoBehaviour 9 | { 10 | [SerializeField] 11 | Vector3 m_Size = new Vector3(4.0f, 3.0f, 4.0f); 12 | public Vector3 size { get { return m_Size; } set { m_Size = value; } } 13 | 14 | [SerializeField] 15 | Vector3 m_Center = new Vector3(0, 1.0f, 0); 16 | public Vector3 center { get { return m_Center; } set { m_Center = value; } } 17 | 18 | [SerializeField] 19 | int m_Area; 20 | public int area { get { return m_Area; } set { m_Area = value; } } 21 | 22 | // List of agent types the modifier is applied for. 23 | // Special values: empty == None, m_AffectedAgents[0] =-1 == All. 24 | [SerializeField] 25 | List m_AffectedAgents = new List(new int[] { -1 }); // Default value is All 26 | 27 | static readonly List s_NavMeshModifiers = new List(); 28 | 29 | public static List activeModifiers 30 | { 31 | get { return s_NavMeshModifiers; } 32 | } 33 | 34 | void OnEnable() 35 | { 36 | if (!s_NavMeshModifiers.Contains(this)) 37 | s_NavMeshModifiers.Add(this); 38 | } 39 | 40 | void OnDisable() 41 | { 42 | s_NavMeshModifiers.Remove(this); 43 | } 44 | 45 | public bool AffectsAgentType(int agentTypeID) 46 | { 47 | if (m_AffectedAgents.Count == 0) 48 | return false; 49 | if (m_AffectedAgents[0] == -1) 50 | return true; 51 | return m_AffectedAgents.IndexOf(agentTypeID) != -1; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshModifierVolume.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35e95dc5ff2b64380880dd7ac5922847 3 | timeCreated: 1477924430 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {fileID: 2800000, guid: cc7b9475dbddf4f9088d327d6e10ab77, type: 3} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/NavMeshComponents/Scripts/NavMeshSurface.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a5ac11cc976e418e8d13136b07e1f52 3 | timeCreated: 1477658803 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {fileID: 2800000, guid: e4f97225bcfb64760a1c81f460837f01, type: 3} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4ffdd6288cb842a8ac2b31823ceaab0 3 | folderAsset: yes 4 | timeCreated: 1490606291 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Tests/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 276ab4071255d9f49931e6a8373248e1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/NavMeshComponentsTestsEditmode.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NavMeshComponentsTestsEditmode", 3 | "references": [ 4 | "NavMeshComponents", 5 | "NavMeshComponentsEditor" 6 | ], 7 | "optionalUnityReferences": [ 8 | "TestAssemblies" 9 | ], 10 | "includePlatforms": [ 11 | "Editor" 12 | ], 13 | "excludePlatforms": [], 14 | "allowUnsafeCode": false, 15 | "overrideReferences": false, 16 | "precompiledReferences": [], 17 | "autoReferenced": true, 18 | "defineConstraints": [] 19 | } -------------------------------------------------------------------------------- /Assets/Tests/Editor/NavMeshComponentsTestsEditmode.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 794824b4a8f003f47a92875e8342f790 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/NavMeshModifierVolumeInPrefabTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd4d066d0a75d8446bc2852c3bc1d4bb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/NavMeshSurfaceInPrefabTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e570ad5b9d660a4bbeebf9f8b872eb4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/NavMeshSurfaceInPrefabVariantTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 84d904f3fbe3c1b4c8daab917453682f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/PrefabSavingUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using UnityEditor.Experimental.SceneManagement; 4 | 5 | public class PrefabSavingUtil { 6 | 7 | public static void SavePrefab(PrefabStage prefabStage) 8 | { 9 | if (prefabStage == null) 10 | throw new ArgumentNullException(); 11 | 12 | var savePrefabMethod = prefabStage.GetType().GetMethod("SavePrefab", BindingFlags.NonPublic | BindingFlags.Instance); 13 | if (savePrefabMethod == null) 14 | throw new InvalidOperationException(); 15 | 16 | savePrefabMethod.Invoke(prefabStage, null); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/PrefabSavingUtil.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4de45126199b4c84dbc8b9620cf3263d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/PrefabStageAutoSavingUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using UnityEditor; 4 | 5 | public static class PrefabStageAutoSavingUtil 6 | { 7 | public static bool GetPrefabStageAutoSave() 8 | { 9 | var stageNavMgrInstance = GetStageNavigationManagerInstance(); 10 | var autoSaveProperty = GetAutoSaveProperty(stageNavMgrInstance); 11 | return (bool)autoSaveProperty.GetValue(stageNavMgrInstance, null); 12 | } 13 | 14 | public static void SetPrefabStageAutoSave(bool value) 15 | { 16 | var stageNavMgrInstance = GetStageNavigationManagerInstance(); 17 | var autoSaveProperty = GetAutoSaveProperty(stageNavMgrInstance); 18 | autoSaveProperty.SetValue(stageNavMgrInstance, value, null); 19 | } 20 | 21 | static object GetStageNavigationManagerInstance() 22 | { 23 | var editorAssemblyName = typeof(EditorWindow).Assembly.FullName; 24 | var t = Type.GetType("UnityEditor.SceneManagement.StageNavigationManager, " + editorAssemblyName, true, true); 25 | if (t == null) 26 | throw new ArgumentException(); 27 | 28 | var instanceProperty = t.GetProperty("instance", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy); 29 | if (instanceProperty == null) 30 | throw new ArgumentException(); 31 | 32 | var stageNavMgrInstance = instanceProperty.GetValue(null, null); 33 | return stageNavMgrInstance; 34 | } 35 | 36 | static PropertyInfo GetAutoSaveProperty(object stageNavigationManagerInstance) 37 | { 38 | var autoSaveProperty = stageNavigationManagerInstance.GetType().GetProperty("autoSave", BindingFlags.Instance | BindingFlags.NonPublic); 39 | if (autoSaveProperty == null) 40 | throw new ArgumentException(); 41 | 42 | return autoSaveProperty; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Assets/Tests/Editor/PrefabStageAutoSavingUtil.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9cd905de8fe98d94a82de074adbd499d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshComponentsTestsPlaymode.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NavMeshComponentsTestsPlaymode", 3 | "references": [ 4 | "NavMeshComponents" 5 | ], 6 | "optionalUnityReferences": [ 7 | "TestAssemblies" 8 | ], 9 | "includePlatforms": [], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [] 16 | } -------------------------------------------------------------------------------- /Assets/Tests/NavMeshComponentsTestsPlaymode.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 455cd750f394b1c41b963b3335eae29c 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceAgentTests.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR || UNITY_STANDALONE 2 | using UnityEngine; 3 | using UnityEngine.AI; 4 | using UnityEngine.TestTools; 5 | using NUnit.Framework; 6 | using System.Collections; 7 | 8 | public class NavMeshSurfaceAgentTests 9 | { 10 | NavMeshSurface m_Surface; 11 | NavMeshAgent m_Agent; 12 | 13 | [SetUp] 14 | public void Setup() 15 | { 16 | m_Surface = GameObject.CreatePrimitive(PrimitiveType.Plane).AddComponent(); 17 | } 18 | 19 | [TearDown] 20 | public void TearDown() 21 | { 22 | Object.DestroyImmediate(m_Agent.gameObject); 23 | Object.DestroyImmediate(m_Surface.gameObject); 24 | m_Agent = null; 25 | m_Surface = null; 26 | } 27 | 28 | [Test] 29 | public void AgentIdentifiesSurfaceOwner() 30 | { 31 | m_Surface.BuildNavMesh(); 32 | 33 | m_Agent = new GameObject("Agent").AddComponent(); 34 | Assert.AreEqual(m_Surface, m_Agent.navMeshOwner); 35 | Assert.IsTrue(m_Agent.isOnNavMesh); 36 | } 37 | 38 | [Test] 39 | [Ignore("1012991 : Missing functionality for notifying the NavMeshAgent about the removal of the NavMesh.")] 40 | public void AgentDetachesAndAttachesToSurface() 41 | { 42 | m_Surface.BuildNavMesh(); 43 | 44 | m_Agent = new GameObject("Agent").AddComponent(); 45 | Assert.AreEqual(m_Surface, m_Agent.navMeshOwner); 46 | Assert.IsTrue(m_Agent.isOnNavMesh); 47 | 48 | m_Surface.enabled = false; 49 | Assert.IsNull(m_Agent.navMeshOwner); 50 | Assert.IsFalse(m_Agent.isOnNavMesh); 51 | 52 | m_Surface.enabled = true; 53 | Assert.AreEqual(m_Surface, m_Agent.navMeshOwner); 54 | Assert.IsTrue(m_Agent.isOnNavMesh); 55 | } 56 | 57 | 58 | /* 59 | [Test] 60 | public void AgentIsOnNavMeshWhenMatchingAgentTypeID() 61 | { 62 | m_Surface.agentTypeID = 1234; 63 | m_Surface.BuildNavMesh(); 64 | 65 | m_Agent = new GameObject("Agent").AddComponent(); 66 | Assert.IsFalse(m_Agent.isOnNavMesh); 67 | 68 | m_Agent.agentTypeID = 1234; 69 | Assert.IsTrue(m_Agent.isOnNavMesh); 70 | } 71 | */ 72 | 73 | [UnityTest] 74 | public IEnumerator AgentAlignsToSurfaceNextFrame() 75 | { 76 | m_Surface.transform.rotation = new Quaternion(-0.679622f, 0.351242f, -0.373845f, 0.524388f); 77 | m_Surface.BuildNavMesh(); 78 | 79 | m_Agent = new GameObject("Agent").AddComponent(); 80 | 81 | yield return null; 82 | 83 | var residual = m_Surface.transform.up - m_Agent.transform.up; 84 | Assert.IsTrue(residual.magnitude < 0.01f); 85 | } 86 | 87 | [UnityTest] 88 | public IEnumerator AgentDoesNotAlignToSurfaceNextFrame() 89 | { 90 | m_Surface.transform.rotation = new Quaternion(-0.679622f, 0.351242f, -0.373845f, 0.524388f); 91 | m_Surface.BuildNavMesh(); 92 | 93 | m_Agent = new GameObject("Agent").AddComponent(); 94 | m_Agent.updateUpAxis = false; 95 | 96 | yield return null; 97 | 98 | var residual = Vector3.up - m_Agent.transform.up; 99 | Assert.IsTrue(residual.magnitude < 0.01f); 100 | } 101 | } 102 | #endif 103 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceAgentTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45e898f1334e740678c21331ac30d746 3 | timeCreated: 1490606318 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceLinkTests.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR || UNITY_STANDALONE 2 | using UnityEngine; 3 | using UnityEngine.AI; 4 | using UnityEngine.TestTools; 5 | using NUnit.Framework; 6 | using System.Collections; 7 | 8 | [TestFixture] 9 | public class NavMeshSurfaceLinkTests 10 | { 11 | public GameObject plane1, plane2; 12 | public NavMeshLink link; 13 | public NavMeshSurface surface; 14 | 15 | [SetUp] 16 | public void CreatesPlanesAndLink() 17 | { 18 | plane1 = GameObject.CreatePrimitive(PrimitiveType.Plane); 19 | plane2 = GameObject.CreatePrimitive(PrimitiveType.Plane); 20 | plane1.transform.position = 11.0f * Vector3.right; 21 | 22 | surface = new GameObject().AddComponent(); 23 | surface.BuildNavMesh(); 24 | 25 | Assert.IsFalse(HasPathConnecting(plane1, plane2)); 26 | Assert.IsFalse(HasPathConnecting(plane2, plane1)); 27 | 28 | link = new GameObject().AddComponent(); 29 | link.startPoint = plane1.transform.position; 30 | link.endPoint = plane2.transform.position; 31 | 32 | Assert.IsTrue(HasPathConnecting(plane1, plane2)); 33 | Assert.IsTrue(HasPathConnecting(plane2, plane1)); 34 | } 35 | 36 | [TearDown] 37 | public void DestroyPlanesAndLink() 38 | { 39 | GameObject.DestroyImmediate(surface.gameObject); 40 | GameObject.DestroyImmediate(link.gameObject); 41 | GameObject.DestroyImmediate(plane1); 42 | GameObject.DestroyImmediate(plane2); 43 | } 44 | 45 | [Test] 46 | public void NavMeshLinkCanConnectTwoSurfaces() 47 | { 48 | Assert.IsTrue(HasPathConnecting(plane1, plane2)); 49 | } 50 | 51 | [Test] 52 | public void DisablingBidirectionalMakesTheLinkOneWay() 53 | { 54 | link.bidirectional = false; 55 | Assert.IsTrue(HasPathConnecting(plane1, plane2)); 56 | Assert.IsFalse(HasPathConnecting(plane2, plane1)); 57 | } 58 | 59 | [Test] 60 | public void ChangingAreaTypeCanBlockPath() 61 | { 62 | var areaMask = ~(1 << 4); 63 | Assert.IsTrue(HasPathConnecting(plane1, plane2, areaMask)); 64 | 65 | link.area = 4; 66 | Assert.IsFalse(HasPathConnecting(plane1, plane2, areaMask)); 67 | } 68 | 69 | [Test] 70 | public void EndpointsMoveRelativeToLinkOnUpdate() 71 | { 72 | link.transform.position += Vector3.forward; 73 | Assert.IsFalse(HasPathConnectingViaPoint(plane1, plane2, plane1.transform.position + Vector3.forward)); 74 | Assert.IsFalse(HasPathConnectingViaPoint(plane1, plane2, plane2.transform.position + Vector3.forward)); 75 | 76 | link.UpdateLink(); 77 | 78 | Assert.IsTrue(HasPathConnectingViaPoint(plane1, plane2, plane1.transform.position + Vector3.forward)); 79 | Assert.IsTrue(HasPathConnectingViaPoint(plane1, plane2, plane2.transform.position + Vector3.forward)); 80 | } 81 | 82 | [UnityTest] 83 | public IEnumerator EndpointsMoveRelativeToLinkNextFrameWhenAutoUpdating() 84 | { 85 | link.transform.position += Vector3.forward; 86 | link.autoUpdate = true; 87 | 88 | Assert.IsFalse(HasPathConnectingViaPoint(plane1, plane2, plane1.transform.position + Vector3.forward)); 89 | Assert.IsFalse(HasPathConnectingViaPoint(plane1, plane2, plane2.transform.position + Vector3.forward)); 90 | 91 | yield return null; 92 | 93 | Assert.IsTrue(HasPathConnectingViaPoint(plane1, plane2, plane1.transform.position + Vector3.forward)); 94 | Assert.IsTrue(HasPathConnectingViaPoint(plane1, plane2, plane2.transform.position + Vector3.forward)); 95 | } 96 | 97 | [Test] 98 | public void ChangingCostModifierAffectsRoute() 99 | { 100 | var link1 = link; 101 | link1.startPoint = plane1.transform.position; 102 | link1.endPoint = plane2.transform.position + Vector3.forward; 103 | 104 | var link2 = link.gameObject.AddComponent(); 105 | link2.startPoint = plane1.transform.position; 106 | link2.endPoint = plane2.transform.position - Vector3.forward; 107 | 108 | link1.costModifier = -1; 109 | link2.costModifier = 100; 110 | Assert.IsTrue(HasPathConnectingViaPoint(plane1, plane2, link1.endPoint)); 111 | Assert.IsFalse(HasPathConnectingViaPoint(plane1, plane2, link2.endPoint)); 112 | 113 | link1.costModifier = 100; 114 | link2.costModifier = -1; 115 | Assert.IsFalse(HasPathConnectingViaPoint(plane1, plane2, link1.endPoint)); 116 | Assert.IsTrue(HasPathConnectingViaPoint(plane1, plane2, link2.endPoint)); 117 | } 118 | 119 | public static bool HasPathConnecting(GameObject a, GameObject b, int areaMask = NavMesh.AllAreas, int agentTypeID = 0) 120 | { 121 | var path = new NavMeshPath(); 122 | var filter = new NavMeshQueryFilter(); 123 | filter.areaMask = areaMask; 124 | filter.agentTypeID = agentTypeID; 125 | NavMesh.CalculatePath(a.transform.position, b.transform.position, filter, path); 126 | return path.status == NavMeshPathStatus.PathComplete; 127 | } 128 | 129 | public static bool HasPathConnectingViaPoint(GameObject a, GameObject b, Vector3 point, int areaMask = NavMesh.AllAreas, int agentTypeID = 0) 130 | { 131 | var path = new NavMeshPath(); 132 | var filter = new NavMeshQueryFilter(); 133 | filter.areaMask = areaMask; 134 | filter.agentTypeID = agentTypeID; 135 | NavMesh.CalculatePath(a.transform.position, b.transform.position, filter, path); 136 | if (path.status != NavMeshPathStatus.PathComplete) 137 | return false; 138 | 139 | for (int i = 0; i < path.corners.Length; ++i) 140 | if (Vector3.Distance(path.corners[i], point) < 0.1f) 141 | return true; 142 | return false; 143 | } 144 | } 145 | #endif 146 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceLinkTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 264ca61ae1b6e4c16bcfc55f84300402 3 | timeCreated: 1490606318 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceModifierTests.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR || UNITY_STANDALONE 2 | using UnityEngine; 3 | using UnityEngine.AI; 4 | using UnityEngine.TestTools; 5 | using NUnit.Framework; 6 | using System.Collections; 7 | 8 | [TestFixture] 9 | public class NavMeshSurfaceModifierTests 10 | { 11 | NavMeshSurface surface; 12 | NavMeshModifier modifier; 13 | 14 | [SetUp] 15 | public void CreatePlaneWithModifier() 16 | { 17 | var plane = GameObject.CreatePrimitive(PrimitiveType.Plane); 18 | surface = plane.AddComponent(); 19 | modifier = plane.AddComponent(); 20 | } 21 | 22 | [TearDown] 23 | public void DestroyPlaneWithModifier() 24 | { 25 | GameObject.DestroyImmediate(modifier.gameObject); 26 | } 27 | 28 | [Test] 29 | public void ModifierIgnoreAffectsSelf() 30 | { 31 | modifier.ignoreFromBuild = true; 32 | 33 | surface.BuildNavMesh(); 34 | 35 | Assert.IsFalse(NavMeshSurfaceTests.HasNavMeshAtOrigin()); 36 | } 37 | 38 | [Test] 39 | public void ModifierIgnoreAffectsChild() 40 | { 41 | modifier.ignoreFromBuild = true; 42 | modifier.GetComponent().enabled = false; 43 | 44 | var childPlane = GameObject.CreatePrimitive(PrimitiveType.Plane); 45 | childPlane.transform.SetParent(modifier.transform); 46 | 47 | surface.BuildNavMesh(); 48 | 49 | Assert.IsFalse(NavMeshSurfaceTests.HasNavMeshAtOrigin()); 50 | GameObject.DestroyImmediate(childPlane); 51 | } 52 | 53 | [Test] 54 | public void ModifierIgnoreDoesNotAffectSibling() 55 | { 56 | modifier.ignoreFromBuild = true; 57 | modifier.GetComponent().enabled = false; 58 | 59 | var siblingPlane = GameObject.CreatePrimitive(PrimitiveType.Plane); 60 | 61 | surface.BuildNavMesh(); 62 | 63 | Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin()); 64 | GameObject.DestroyImmediate(siblingPlane); 65 | } 66 | 67 | [Test] 68 | public void ModifierOverrideAreaAffectsSelf() 69 | { 70 | modifier.area = 4; 71 | modifier.overrideArea = true; 72 | 73 | surface.BuildNavMesh(); 74 | 75 | var expectedAreaMask = 1 << 4; 76 | Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask)); 77 | } 78 | 79 | [Test] 80 | public void ModifierOverrideAreaAffectsChild() 81 | { 82 | modifier.area = 4; 83 | modifier.overrideArea = true; 84 | modifier.GetComponent().enabled = false; 85 | 86 | var childPlane = GameObject.CreatePrimitive(PrimitiveType.Plane); 87 | childPlane.transform.SetParent(modifier.transform); 88 | 89 | surface.BuildNavMesh(); 90 | 91 | var expectedAreaMask = 1 << 4; 92 | Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask)); 93 | GameObject.DestroyImmediate(childPlane); 94 | } 95 | 96 | [Test] 97 | public void ModifierOverrideAreaDoesNotAffectSibling() 98 | { 99 | modifier.area = 4; 100 | modifier.overrideArea = true; 101 | modifier.GetComponent().enabled = false; 102 | 103 | var siblingPlane = GameObject.CreatePrimitive(PrimitiveType.Plane); 104 | 105 | surface.BuildNavMesh(); 106 | 107 | var expectedAreaMask = 1; 108 | Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask)); 109 | GameObject.DestroyImmediate(siblingPlane); 110 | } 111 | } 112 | #endif 113 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceModifierTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9fe5cff05af44c0fb71a8dcc44efc41 3 | timeCreated: 1490606318 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceModifierVolumeTests.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR || UNITY_STANDALONE 2 | using UnityEngine; 3 | using UnityEngine.AI; 4 | using UnityEngine.TestTools; 5 | using NUnit.Framework; 6 | using System.Collections; 7 | 8 | [TestFixture] 9 | public class NavMeshSurfaceModifierVolumeTests 10 | { 11 | NavMeshSurface surface; 12 | NavMeshModifierVolume modifier; 13 | 14 | [SetUp] 15 | public void CreatePlaneAndModifierVolume() 16 | { 17 | var go = GameObject.CreatePrimitive(PrimitiveType.Plane); 18 | surface = go.AddComponent(); 19 | 20 | modifier = new GameObject().AddComponent(); 21 | } 22 | 23 | [TearDown] 24 | public void DestroyPlaneAndModifierVolume() 25 | { 26 | GameObject.DestroyImmediate(surface.gameObject); 27 | GameObject.DestroyImmediate(modifier.gameObject); 28 | } 29 | 30 | [Test] 31 | public void AreaAffectsNavMeshOverlapping() 32 | { 33 | modifier.center = Vector3.zero; 34 | modifier.size = Vector3.one; 35 | modifier.area = 4; 36 | 37 | surface.BuildNavMesh(); 38 | 39 | var expectedAreaMask = 1 << 4; 40 | Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask)); 41 | } 42 | 43 | [Test] 44 | public void AreaDoesNotAffectsNavMeshWhenNotOverlapping() 45 | { 46 | modifier.center = 1.1f * Vector3.right; 47 | modifier.size = Vector3.one; 48 | modifier.area = 4; 49 | 50 | surface.BuildNavMesh(); 51 | 52 | var expectedAreaMask = 1; 53 | Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask)); 54 | } 55 | 56 | [Test] 57 | public void BuildUsesOnlyIncludedModifierVolume() 58 | { 59 | modifier.center = Vector3.zero; 60 | modifier.size = Vector3.one; 61 | modifier.area = 4; 62 | modifier.gameObject.layer = 7; 63 | 64 | surface.layerMask = ~(1 << 7); 65 | surface.BuildNavMesh(); 66 | 67 | var expectedAreaMask = 1; 68 | Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask)); 69 | } 70 | } 71 | #endif 72 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceModifierVolumeTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5d873c779b014234ba92f3cb7476da6 3 | timeCreated: 1490606318 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tests/NavMeshSurfaceTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 925111c157b314873b97f89e0f03d570 3 | timeCreated: 1490606318 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Documentation/ConnectingSurfaces.md: -------------------------------------------------------------------------------- 1 | # Connecting NavMesh Surfaces 2 | 3 | ![Connecting surfaces example](Images/ConnectingSurfaces-Example.png) 4 | 5 | If it is desired to allow an agent to move along multiple NavMesh Surfaces in a Scene, the surfaces need to be connected together using NavMesh Links. 6 | 7 | In the example scene above, the blue and red NavMeshes are defined in different NavMesh Surfaces. A wide NavMesh Link is added, it spans from one surface to another. 8 | 9 | Things to keep in mind when connecting surfaces: 10 | * You can connect surfaces using multiple links. 11 | * Both the surfaces and the link must have same agent type. 12 | * The link’s start and end point must be only on one surface. It is OK to have multiple NavMeshes at the same location, but then selecting a NavMesh becomes ambiguous. 13 | * If you are loading a second NavMesh Surface additively and you have “dangling” links in the first scene, check that they do not connect to unwanted surfaces. 14 | -------------------------------------------------------------------------------- /Documentation/Images/ConnectingSurfaces-Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Documentation/Images/ConnectingSurfaces-Example.png -------------------------------------------------------------------------------- /Documentation/Images/NavMeshLink-Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Documentation/Images/NavMeshLink-Example.png -------------------------------------------------------------------------------- /Documentation/Images/NavMeshModifier-Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Documentation/Images/NavMeshModifier-Example.png -------------------------------------------------------------------------------- /Documentation/Images/NavMeshModifierVolume-Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Documentation/Images/NavMeshModifierVolume-Example.png -------------------------------------------------------------------------------- /Documentation/Images/NavMeshSurface-Advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Documentation/Images/NavMeshSurface-Advanced.png -------------------------------------------------------------------------------- /Documentation/Images/NavMeshSurface-Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vectao/NavMeshComponents/41d24c4639f3196905f547cb0148e4f44c2d2b7d/Documentation/Images/NavMeshSurface-Example.png -------------------------------------------------------------------------------- /Documentation/NavMeshLink.md: -------------------------------------------------------------------------------- 1 | # NavMeshLink 2 | 3 | ![NavMeshLink example](Images/NavMeshLink-Example.png) 4 | 5 | NavMesh Link allows to create a navigable link between two locations. The link can be from point-to-point, or it can be wider in which case the agent uses the nearest location along entry edge to cross the link. 6 | 7 | The link is necessary to connect different NavMesh Surfaces 8 | 9 | * Agent Type – the agent type which can use the link. 10 | * Start Point – start point of the link, relative to the Game Object. 11 | * End Point – end point of the link, relative to the Game Object. 12 | * Align Transform To Points – clicking this button will move the Game Object at the links center point and alight the transform’s forward axis towards the end point. 13 | * Cost Modifier – When the cost modifier value is non-negative the cost of moving over the NavMeshLink is equivalent to the cost modifier value times the Euclidean distance between NavMeshLink end points. 14 | * Bidirectional – when checked the link can be traversed from start-to-end and end-to-start, when unchecked only from start-to-end. 15 | * Area Type – the area type of the link (affects path finding cost) 16 | 17 | -------------------------------------------------------------------------------- /Documentation/NavMeshModifier.md: -------------------------------------------------------------------------------- 1 | # NavMeshModifier 2 | 3 | ![NavMeshModifier example](Images/NavMeshModifier-Example.png) 4 | 5 | NavMesh Modifier allows to fine tune how a specific object behaves during NavMesh baking. In the above picture, the lower platform has modifier attached to it, which sets the object to have Lava area type. 6 | 7 | The NavMesh Modifier affects hierarchically, that is, the Game Object where the Components is attached and all of its’ children are affected. If another NavMesh Modifier is found further down the transform hierarchy it will override the modification for its children. 8 | 9 | The NavMesh Modifier affects the NavMesh generation process, this means the NavMesh has to be updated to reflect changes to NavMesh Modifiers. 10 | 11 | Note: This component is a replacement for the old setting which could be enabled from the Navigation window Objects tab as well as the static flags dropdown on the GameObject. This component is available for baking at runtime, whereas the static flags are available in the editor only. 12 | 13 | ## Parameters 14 | * Ignore From Build – when checked, the object and all if its’ children are skipped from the build process. 15 | * Override Area Type – when checked the area type will be overridden for the game object containing the Modifier and all of it’s children. 16 | * Area Type – new area type to apply 17 | * Affected Agents – a selection of agents the Modifier affects. For example, you may choose to exclude certain obstacles from specific agent. 18 | 19 | -------------------------------------------------------------------------------- /Documentation/NavMeshModifierVolume.md: -------------------------------------------------------------------------------- 1 | # NavMeshModifierVolume 2 | 3 | ![NavMeshModifierVolume example](Images/NavMeshModifierVolume-Example.png) 4 | 5 | NavMesh Modifier Volume allows you to mark the area that falls inside the volume with specific area type. Where NavMesh Modifier marks certain objects with an area type, the Modifier Volume allows change the area type even more locally based on a volume. 6 | 7 | The modifier is useful for annotating certain areas over walkable surfaces which might not be represented as separate geometry, e.g. danger areas. It can be even be used to make certain areas non-walkable. 8 | 9 | The NavMesh Modifier Volume affects the NavMesh generation process, this means the NavMesh has to be updated to reflect changes to NavMesh Modifier Volumes. 10 | 11 | ## Parameters 12 | * Size – dimensions of the modifier volume. 13 | * Center – center of the modifier volume relative to the GameObject center. 14 | * Area Type – describes the area type which the volume applies. 15 | * Affected Agents – a selection of agents the Modifier affects. For example, you may choose to create danger zone for specific agent type only. 16 | 17 | -------------------------------------------------------------------------------- /Documentation/NavMeshSurface.md: -------------------------------------------------------------------------------- 1 | # NavMeshSurface 2 | 3 | ![NavMeshSurface example](Images/NavMeshSurface-Example.png) 4 | 5 | The NavMeshSurface component represents the walkable area for a specific agent type. The NavMesh Surface component defines a part of the world where a NavMesh should be built. A scene can contain multiple NavMesh Surfaces. 6 | 7 | The preferred way to use the NavMeshSurface component is to create an empty Game Object containing the NavMeshSurface component. There’s a menu option for that: GameObject > AI > NavMesh Surface. This creates an empty Game Object with a NavMeshSurface component attached to it. 8 | 9 | The NavMeshSurface component can be also added to any game object. This is useful for cases where you want to use the Hierarchy to define which objects contribute to the NavMesh. 10 | 11 | ## Parameters 12 | * Agent Type – the agent type which will use this NavMesh Surface. The agent type is used for bake settings, as well as to match a NavMeshAgent to proper surface during pathfinding. 13 | * Collect Objects – defines on a high level which objects should be used for baking. 14 | * All – use all active objects. 15 | * Volume – use all active objects overlapping the bounding volume (defined later) 16 | * Children – use all active objects which are children to the NavMeshSurface component, in addition to the object the component is placed on. 17 | * Include Layers – defines the layers on which the objects must be to be included in the bake. This allows further culling of objects from inclusion in the bake e.g. effects or animated characters. 18 | * Use Geometry – selects which geometry is used for baking. 19 | * Render Meshes – use geometry from rendered meshes and terrains 20 | * Physics Colliders – use geometry from colliders and terrains. When using physics this is usually a better option than Render Meshes. This way the agents will be closer to the physical bounds of the environment. 21 | 22 | The main settings for the NavMesh Surface component allow you to filter the input geometry on a broad scale. To fine tune how input geometry is treated on a per-object level when building a navmesh, see NavMeshModifer component. 23 | 24 | Game Objects which have a NavMesh Agent or NavMesh Obstacle will be excluded from the baking process automatically. They are dynamic users of the navmesh – and hence should not contribute to the navmesh building. 25 | 26 | ## Advanced Settings 27 | 28 | ![NavMeshSurface advanced](Images/NavMeshSurface-Advanced.png) 29 | 30 | 31 | The main settings will cater for most use cases, but for anything not covered by the main settings, the advanced section has the following additional parameters 32 | 33 | * Default Area – defines the area type generated when building the navmesh. The default value is Walkable. The NavMeshModifer component can be used to modify the area type in more detail. 34 | * Override Voxel Size – The override voxel size controls how accurately the input geometry is processed for NavMesh baking. It is a tradeoff between speed and accuracy. A good value to start with is 3 voxels per agent radius (6 per diameter). This allows to capture most of the narrow passages, like doors and still have quick baking. If you have big open areas, you might go down to 1 or 2 to speed things up. Or if you have tight indoor spots, you can use smaller voxels, and use maybe 4-6 voxels per radius. More than 8 is usually not really worth it. 35 | * Override Tile Size – In order to make the bake process parallel and memory efficient, the world is divided into tiles for baking. The white lines you can see on your NavMesh are tile boundaries. The default tiles size is 256 voxels. It is a good trade-off between memory usage and NavMesh fragmentation. The smaller the tiles are the more fragmented the NavMesh is, and this can sometimes cause non-optimal paths. NavMesh carving also operates on tiles. If you have a lot of obstacles, you can potentially speed up carving by making the tile size smaller, say 64-128. Also, if you plan to bake the NavMesh at runtime, you may choose to use smaller tile size to keep the maximum memory usage low. 36 | * Build Height Mesh – Not supported yet. 37 | 38 | -------------------------------------------------------------------------------- /Documentation/README.md: -------------------------------------------------------------------------------- 1 | # High-level NavMesh Building Components 2 | 3 | Here we introduce four high level components for the navigation system: 4 | 5 | * [NavMeshSurface](NavMeshSurface.md) – for building and enabling a navmesh surface for one agent type. 6 | * [NavMeshModifier](NavMeshModifier.md) – affects the navmesh generation of navmesh area types, based on the transform hierarchy. 7 | * [NavMeshModifierVolume](NavMeshModifierVolume.md) – affects the navmesh generation of navmesh area types, based on volume. 8 | * [NavMeshLink](NavMeshLink.md) – connects same or different navmesh surfaces for one agent type. 9 | 10 | These components comprise the high level controls for building and using NavMeshes at runtime as well as edit time. 11 | 12 | ## Techniques and Patterns 13 | * [Connecting NavMesh Surfaces](ConnectingSurfaces.md) using the NavMeshLink compoenent. 14 | 15 | 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016, Unity Technologies 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ide.rider": "1.1.4", 4 | "com.unity.ide.visualstudio": "1.0.11", 5 | "com.unity.ide.vscode": "1.2.0", 6 | "com.unity.test-framework": "1.1.14", 7 | "com.unity.ugui": "1.0.0", 8 | "com.unity.modules.ai": "1.0.0", 9 | "com.unity.modules.androidjni": "1.0.0", 10 | "com.unity.modules.animation": "1.0.0", 11 | "com.unity.modules.assetbundle": "1.0.0", 12 | "com.unity.modules.audio": "1.0.0", 13 | "com.unity.modules.cloth": "1.0.0", 14 | "com.unity.modules.director": "1.0.0", 15 | "com.unity.modules.imageconversion": "1.0.0", 16 | "com.unity.modules.imgui": "1.0.0", 17 | "com.unity.modules.jsonserialize": "1.0.0", 18 | "com.unity.modules.particlesystem": "1.0.0", 19 | "com.unity.modules.physics": "1.0.0", 20 | "com.unity.modules.physics2d": "1.0.0", 21 | "com.unity.modules.screencapture": "1.0.0", 22 | "com.unity.modules.terrain": "1.0.0", 23 | "com.unity.modules.terrainphysics": "1.0.0", 24 | "com.unity.modules.tilemap": "1.0.0", 25 | "com.unity.modules.ui": "1.0.0", 26 | "com.unity.modules.uielements": "1.0.0", 27 | "com.unity.modules.umbra": "1.0.0", 28 | "com.unity.modules.unityanalytics": "1.0.0", 29 | "com.unity.modules.unitywebrequest": "1.0.0", 30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 31 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 32 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 33 | "com.unity.modules.unitywebrequestwww": "1.0.0", 34 | "com.unity.modules.vehicles": "1.0.0", 35 | "com.unity.modules.video": "1.0.0", 36 | "com.unity.modules.vr": "1.0.0", 37 | "com.unity.modules.wind": "1.0.0", 38 | "com.unity.modules.xr": "1.0.0" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_DisableAudio: 0 16 | m_VirtualizeEffects: 1 17 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_EnablePCM: 1 18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 1 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 2 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 0 16 | m_EtcTextureFastCompressor: 2 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 5 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 43 | m_CustomRenderPipeline: {fileID: 0} 44 | m_TransparencySortMode: 0 45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 46 | m_DefaultRenderingPath: 1 47 | m_DefaultMobileRenderingPath: 1 48 | m_TierSettings: [] 49 | m_LightmapStripping: 0 50 | m_FogStripping: 0 51 | m_InstancingStripping: 0 52 | m_LightmapKeepPlain: 1 53 | m_LightmapKeepDirCombined: 1 54 | m_LightmapKeepDynamicPlain: 1 55 | m_LightmapKeepDynamicDirCombined: 1 56 | m_LightmapKeepShadowMask: 1 57 | m_LightmapKeepSubtractive: 1 58 | m_FogKeepLinear: 1 59 | m_FogKeepExp: 1 60 | m_FogKeepExp2: 1 61 | m_AlbedoSwatchInfos: [] 62 | m_LightsUseLinearIntensity: 0 63 | m_LightsUseColorTemperature: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -1372625422 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | - serializedVersion: 2 89 | agentTypeID: -1372625422 90 | agentRadius: 1 91 | agentHeight: 2 92 | agentSlope: 35 93 | agentClimb: 0.4 94 | ledgeDropHeight: 0 95 | maxJumpAcrossDistance: 0 96 | minRegionArea: 2 97 | manualCellSize: 0 98 | cellSize: 0.16666667 99 | manualTileSize: 0 100 | tileSize: 256 101 | accuratePlacement: 0 102 | m_SettingNames: 103 | - Humanoid 104 | - Ogre 105 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_MinPenetrationForPenalty: 0.01 17 | m_BaumgarteScale: 0.2 18 | m_BaumgarteTimeOfImpactScale: 0.75 19 | m_TimeToSleep: 0.5 20 | m_LinearSleepTolerance: 0.01 21 | m_AngularSleepTolerance: 2 22 | m_QueriesHitTriggers: 1 23 | m_QueriesStartInColliders: 1 24 | m_ChangeStopsCallbacks: 0 25 | m_AlwaysShowColliders: 0 26 | m_ShowColliderSleep: 1 27 | m_ShowColliderContacts: 0 28 | m_ShowColliderAABB: 0 29 | m_ContactArrowScale: 0.2 30 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 31 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 32 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 33 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 34 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 35 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.4.0f1 2 | m_EditorVersionWithRevision: 2019.4.0f1 (0af376155913) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Fastest 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | blendWeights: 1 21 | textureQuality: 1 22 | anisotropicTextures: 0 23 | antiAliasing: 0 24 | softParticles: 0 25 | softVegetation: 0 26 | realtimeReflectionProbes: 0 27 | billboardsFaceCameraPosition: 0 28 | vSyncCount: 0 29 | lodBias: 0.3 30 | maximumLODLevel: 0 31 | particleRaycastBudget: 4 32 | asyncUploadTimeSlice: 2 33 | asyncUploadBufferSize: 4 34 | excludedTargetPlatforms: [] 35 | - serializedVersion: 2 36 | name: Fast 37 | pixelLightCount: 0 38 | shadows: 0 39 | shadowResolution: 0 40 | shadowProjection: 1 41 | shadowCascades: 1 42 | shadowDistance: 20 43 | shadowNearPlaneOffset: 3 44 | shadowCascade2Split: 0.33333334 45 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 46 | blendWeights: 2 47 | textureQuality: 0 48 | anisotropicTextures: 0 49 | antiAliasing: 0 50 | softParticles: 0 51 | softVegetation: 0 52 | realtimeReflectionProbes: 0 53 | billboardsFaceCameraPosition: 0 54 | vSyncCount: 0 55 | lodBias: 0.4 56 | maximumLODLevel: 0 57 | particleRaycastBudget: 16 58 | asyncUploadTimeSlice: 2 59 | asyncUploadBufferSize: 4 60 | excludedTargetPlatforms: [] 61 | - serializedVersion: 2 62 | name: Simple 63 | pixelLightCount: 1 64 | shadows: 1 65 | shadowResolution: 0 66 | shadowProjection: 1 67 | shadowCascades: 1 68 | shadowDistance: 20 69 | shadowNearPlaneOffset: 3 70 | shadowCascade2Split: 0.33333334 71 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 72 | blendWeights: 2 73 | textureQuality: 0 74 | anisotropicTextures: 1 75 | antiAliasing: 0 76 | softParticles: 0 77 | softVegetation: 0 78 | realtimeReflectionProbes: 0 79 | billboardsFaceCameraPosition: 0 80 | vSyncCount: 1 81 | lodBias: 0.7 82 | maximumLODLevel: 0 83 | particleRaycastBudget: 64 84 | asyncUploadTimeSlice: 2 85 | asyncUploadBufferSize: 4 86 | excludedTargetPlatforms: [] 87 | - serializedVersion: 2 88 | name: Good 89 | pixelLightCount: 2 90 | shadows: 2 91 | shadowResolution: 1 92 | shadowProjection: 1 93 | shadowCascades: 2 94 | shadowDistance: 40 95 | shadowNearPlaneOffset: 3 96 | shadowCascade2Split: 0.33333334 97 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 98 | blendWeights: 2 99 | textureQuality: 0 100 | anisotropicTextures: 1 101 | antiAliasing: 0 102 | softParticles: 0 103 | softVegetation: 1 104 | realtimeReflectionProbes: 1 105 | billboardsFaceCameraPosition: 1 106 | vSyncCount: 1 107 | lodBias: 1 108 | maximumLODLevel: 0 109 | particleRaycastBudget: 256 110 | asyncUploadTimeSlice: 2 111 | asyncUploadBufferSize: 4 112 | excludedTargetPlatforms: [] 113 | - serializedVersion: 2 114 | name: Beautiful 115 | pixelLightCount: 3 116 | shadows: 2 117 | shadowResolution: 2 118 | shadowProjection: 1 119 | shadowCascades: 2 120 | shadowDistance: 70 121 | shadowNearPlaneOffset: 3 122 | shadowCascade2Split: 0.33333334 123 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 124 | blendWeights: 4 125 | textureQuality: 0 126 | anisotropicTextures: 2 127 | antiAliasing: 2 128 | softParticles: 1 129 | softVegetation: 1 130 | realtimeReflectionProbes: 1 131 | billboardsFaceCameraPosition: 1 132 | vSyncCount: 1 133 | lodBias: 1.5 134 | maximumLODLevel: 0 135 | particleRaycastBudget: 1024 136 | asyncUploadTimeSlice: 2 137 | asyncUploadBufferSize: 4 138 | excludedTargetPlatforms: [] 139 | - serializedVersion: 2 140 | name: Fantastic 141 | pixelLightCount: 4 142 | shadows: 2 143 | shadowResolution: 2 144 | shadowProjection: 1 145 | shadowCascades: 4 146 | shadowDistance: 150 147 | shadowNearPlaneOffset: 3 148 | shadowCascade2Split: 0.33333334 149 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 150 | blendWeights: 4 151 | textureQuality: 0 152 | anisotropicTextures: 2 153 | antiAliasing: 2 154 | softParticles: 1 155 | softVegetation: 1 156 | realtimeReflectionProbes: 1 157 | billboardsFaceCameraPosition: 1 158 | vSyncCount: 1 159 | lodBias: 2 160 | maximumLODLevel: 0 161 | particleRaycastBudget: 4096 162 | asyncUploadTimeSlice: 2 163 | asyncUploadBufferSize: 4 164 | excludedTargetPlatforms: [] 165 | m_PerPlatformDefaultQuality: 166 | Android: 2 167 | Nintendo 3DS: 5 168 | PS4: 5 169 | PSM: 5 170 | PSP2: 2 171 | Samsung TV: 2 172 | Standalone: 5 173 | Tizen: 2 174 | Web: 5 175 | WebGL: 3 176 | WiiU: 5 177 | Windows Store Apps: 5 178 | XboxOne: 5 179 | iPhone: 2 180 | tvOS: 5 181 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 1 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | UnityAdsSettings: 25 | m_Enabled: 0 26 | m_InitializeOnStartup: 1 27 | m_TestMode: 0 28 | m_IosGameId: 29 | m_AndroidGameId: 30 | m_GameIds: {} 31 | m_GameId: 32 | PerformanceReportingSettings: 33 | m_Enabled: 0 34 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Status of the project 2 | 3 | ## Development 4 | This project is now developed as part of the [AI Navigation](https://docs.unity3d.com/Packages/com.unity.ai.navigation@latest) package. Please add that package to your project in order to continue building the NavMesh using these components and to get access to newer versions. 5 | 6 | The content of this repository remains available for older Unity versions but no further development will be made here. 7 | 8 | ## Questions and feature requests 9 | Please use the [AI & Navigation Previews](https://forum.unity.com/forums/ai-navigation-previews.122/) section of the forum to discuss about the **AI Navigation** package and to stay informed about major releases. 10 | 11 | You can learn about the future developments of **AI Navigation** and also share your feature requests in the [Unity Platform Roadmap](https://unity.com/roadmap/unity-platform/navigation-game-ai) portal. 12 | 13 | ## Bug Reporting 14 | The _Issues_ section of this repository is closed. Please use the [Unity built-in report system](https://unity3d.com/unity/qa/bug-reporting 15 | ) to report any bugs that you find in the **AI Navigation** package. 16 | 17 | # Using This Repository 18 | 19 | ## Components for Runtime NavMesh Building 20 | 21 | Here we introduce four components for the navigation system: 22 | 23 | * __NavMeshSurface__ – for building and enabling a NavMesh surface for one agent type. 24 | * __NavMeshModifier__ – affects the NavMesh generation of NavMesh area types, based on the transform hierarchy. 25 | * __NavMeshModifierVolume__ – affects the NavMesh generation of NavMesh area types, based on volume. 26 | * __NavMeshLink__ – connects same or different NavMesh surfaces for one agent type. 27 | 28 | These components comprise the high level controls for building and using NavMeshes at runtime as well as edit time. 29 | 30 | Detailed information can be found in the [Documentation](Documentation) section or in the [NavMesh building components](https://docs.unity3d.com/Manual/NavMesh-BuildingComponents.html) section of the Unity Manual. 31 | 32 | ## How To Get Started 33 | 34 | Download and install Unity 5.6 or newer. 35 | 36 | Clone or download this repository and open the project in Unity. 37 | Alternatively, you can copy the contents of `Assets/NavMeshComponents` to an existing project. 38 | 39 | Make sure to select a branch of the repository that matches the Unity version: 40 | > [master](../../tree/master) for 2020.3-LTS, [2019.3](../../tree/2019.3) for up to 2019.4-LTS, [2018.3](../../tree/2018.3) for up to 2018.4-LTS and 2019.2, [2018.2](../../tree/2018.2), [2018.1](../../tree/2018.1), [2017.2](../../tree/2017.2) for up to 2017.4-LTS, [2017.1](../../tree/2017.1), [5.6](../../tree/5.6). 41 | 42 | Additional examples are available in the `Assets/Examples` folder. 43 | The examples are provided "as is". They are neither generic nor robust, but serve as inspiration. 44 | 45 | _Note: During the beta cycle features and API are subject to change.\ 46 | **Make sure to backup an existing project before opening it with a beta build.**_ 47 | 48 | ## FAQ 49 | 50 | Q: Can I bake a NavMesh at runtime? 51 | A: Yes. 52 | 53 | Q: Can I use NavMesh'es for more than one agent size? 54 | A: Yes. 55 | 56 | Q: Can I put a NavMesh in a prefab? 57 | A: Yes - with some limitations. 58 | 59 | Q: How do I connect two NavMesh surfaces? 60 | A: Use the NavMeshLink to connect the two sides. 61 | 62 | Q: How do I query the NavMesh for one specific size of agent? 63 | A: Use the NavMeshQuery filter when querying the NavMesh. 64 | 65 | Q: What's the deal with the 'DefaultExecutionOrder' attribute? 66 | A: It gives a way of controlling the order of execution of scripts - specifically it allows us to build a NavMesh before the 67 | (native) NavMeshAgent component is enabled. 68 | 69 | Q: What's the use of the new delegate 'NavMesh.onPreUpdate'? 70 | A: It allows you to hook in to controlling the NavMesh data and links set up before the navigation update loop is called on the native side. 71 | 72 | Q: Can I do moving NavMesh platforms? 73 | A: No - new API is required for consistently moving platforms carrying agents. 74 | 75 | Q: Is OffMeshLink now obsolete? 76 | A: No - you can still use OffMeshLink - however you'll find that NavMeshLink is more flexible and have less overhead. 77 | 78 | Q: What happened to HeightMesh and Auto Generated OffMeshLinks? 79 | A: They're not supported in the new NavMesh building feature. HeightMesh will be added at some point. Auto OffMeshLink generation will possibly be replaced with a solution that allows better control of placement. 80 | --------------------------------------------------------------------------------