NavMeshBuildSource generateWalkablePlane() { NavMeshBuildSource result = new NavMeshBuildSource(); Mesh mesh = new Mesh(); Vector3 center = meshOrigin.position; //a quad representing the walkable area //0 1 //2 3 Vector3[] vertices = new Vector3[4]; vertices[0] = center + new Vector3(-buildSize.x, +buildSize.y, 0); vertices[1] = center + new Vector3(+buildSize.x, +buildSize.y, 0); vertices[2] = center + new Vector3(-buildSize.x, -buildSize.y, 0); vertices[3] = center + new Vector3(+buildSize.x, -buildSize.y, 0); mesh.vertices = vertices; mesh.triangles = new int[] { 0, 3, 1, 0, 2, 3 }; mesh.RecalculateBounds(); mesh.RecalculateNormals(); result.shape = NavMeshBuildSourceShape.Mesh; result.sourceObject = mesh; result.transform = Matrix4x4.identity; result.area = 0; return(result); }
NavMeshBuildSource generateUnreachableArea(Vector3[] deDupedVertices, int[] triangleIndices, HashSet <int> reachableVertices) { Dictionary <int, int> vertexIndexMapping = new Dictionary <int, int>(); for (int i = 0; i < deDupedVertices.Length; i++) { if (!reachableVertices.Contains(i)) { vertexIndexMapping[i] = vertexIndexMapping.Count; } } Mesh mesh = generateBuildSourceFromTriangulation(deDupedVertices, triangleIndices, vertexIndexMapping); Debug.Log(mesh.triangles.Length); NavMeshBuildSource reachableResult = new NavMeshBuildSource(); reachableResult.shape = NavMeshBuildSourceShape.Mesh; reachableResult.sourceObject = mesh; reachableResult.transform = Matrix4x4.identity; reachableResult.area = unreachableAreaIndex; return(reachableResult); }
public void SourcesCollected() { int count = sources.Count; UnityEngine.Debug.Log("Source count Pre cull : " + sources.Count); for (int num = sources.Count - 1; num >= 0; num--) { NavMeshBuildSource item = sources[num]; Matrix4x4 matrix4x = item.transform; Vector3 vector = new Vector3(matrix4x[0, 3], matrix4x[1, 3], matrix4x[2, 3]); bool flag = false; foreach (AIInformationZone zone in AIInformationZone.zones) { if (Vector3Ex.Distance2D(zone.ClosestPointTo(vector), vector) <= 50f) { flag = true; } } if (!flag) { sources.Remove(item); } } UnityEngine.Debug.Log("Source count post cull : " + sources.Count + " total removed : " + (count - sources.Count)); }
public static void Collect(ref List <NavMeshBuildSource> sources) { sources.Clear(); for (int index = 0; index < NavMeshBuildTag._meshes.Count; ++index) { NavMeshBuildTag.MeshInfo mesh = NavMeshBuildTag._meshes[index]; if (mesh != null) { Mesh sharedMesh = mesh.Filter.get_sharedMesh(); if (!Object.op_Equality((Object)sharedMesh, (Object)null)) { NavMeshBuildSource navMeshBuildSource = (NavMeshBuildSource)null; ((NavMeshBuildSource) ref navMeshBuildSource).set_shape((NavMeshBuildSourceShape)0); ((NavMeshBuildSource) ref navMeshBuildSource).set_sourceObject((Object)sharedMesh); ((NavMeshBuildSource) ref navMeshBuildSource).set_transform(((Component)mesh.Filter).get_transform().get_localToWorldMatrix()); ((NavMeshBuildSource) ref navMeshBuildSource).set_area(mesh.Area); sources.Add(navMeshBuildSource); } } } for (int index = 0; index < NavMeshBuildTag._terrains.Count; ++index) { NavMeshBuildTag.TerrainInfo terrain = NavMeshBuildTag._terrains[index]; if (terrain != null) { NavMeshBuildSource navMeshBuildSource = (NavMeshBuildSource)null; ((NavMeshBuildSource) ref navMeshBuildSource).set_shape((NavMeshBuildSourceShape)1); ((NavMeshBuildSource) ref navMeshBuildSource).set_sourceObject((Object)terrain.Terrain.get_terrainData()); ((NavMeshBuildSource) ref navMeshBuildSource).set_transform(Matrix4x4.TRS(((Component)terrain.Terrain).get_transform().get_position(), Quaternion.get_identity(), Vector3.get_one())); ((NavMeshBuildSource) ref navMeshBuildSource).set_area(terrain.Area); sources.Add(navMeshBuildSource); } } }
public static void Build(List <GameObject> gameObjects) { List <NavMeshBuildSource> buildSources = new List <NavMeshBuildSource>(); for (int i = 0; i < gameObjects.Count; i++) { NavMeshBuildSource navMeshSource = new NavMeshBuildSource(); navMeshSource.shape = NavMeshBuildSourceShape.Mesh; navMeshSource.sourceObject = gameObjects[i].GetComponent <MeshFilter>().sharedMesh; navMeshSource.transform = gameObjects[i].transform.localToWorldMatrix; navMeshSource.area = 0; buildSources.Add(navMeshSource); } NavMeshBuildSettings navSetting = new NavMeshBuildSettings(); navSetting.agentRadius = 0.4f; NavMeshData navData = UnityEngine.AI.NavMeshBuilder.BuildNavMeshData( navSetting, buildSources, new Bounds(Vector3.zero, new Vector3(10000, 10000, 10000)), Vector3.zero, Quaternion.identity ); navMeshDataInstance.Remove(); navMeshDataInstance = NavMesh.AddNavMeshData(navData); }
public static void Collect(ref List <NavMeshBuildSource> sources) { sources.Clear(); for (var i = 0; i < Meshes.Count; i++) { MeshFilter mf = Meshes[i]; if (mf == null) { continue; } Mesh m = mf.sharedMesh; if (m == null) { continue; } NavMeshBuildSource s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Mesh; s.sourceObject = m; s.transform = mf.transform.localToWorldMatrix; s.area = 0; sources.Add(s); } }
public static void Collect(ref List <NavMeshBuildSource> sources) { sources.Clear( ); for (var i = 0; i < _meshes.Count; ++i) { var mf = _meshes[i]; if (mf == null) { continue; } var m = mf.sharedMesh; if (m == null) { continue; } var s = new NavMeshBuildSource { shape = NavMeshBuildSourceShape.Mesh, sourceObject = m, transform = mf.transform.localToWorldMatrix, area = 0 }; sources.Add(s); } }
public static void Generate() { var sources = new List <NavMeshBuildSource>(); var meshs = Object.FindObjectsOfType <MeshFilter>(); foreach (var mesh in meshs) { if (!mesh.gameObject.isStatic) { continue; } var source = new NavMeshBuildSource(); source.sourceObject = mesh.sharedMesh; source.area = 0; source.transform = mesh.transform.localToWorldMatrix; sources.Add(source); } var navMeshData = new NavMeshData(); NavMesh.AddNavMeshData(navMeshData); var id = NavMesh.GetSettingsByID(0); var bounds = new Bounds(Vector3.zero, Vector3.one * 50.0f); bool result = NavMeshBuilder.UpdateNavMeshData(navMeshData, id, sources, bounds); Debug.Log(result); Debug.Log(id.agentRadius); }
//---------------------------------------------------------------------------------------- public static void CollectMeshes(ref List <NavMeshBuildSource> _sources) { _sources.Clear(); for (var i = 0; i < Meshes.Count; ++i) { var mf = Meshes[i]; if (mf == null) { continue; } var m = mf.sharedMesh; if (m == null) { continue; } var s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Mesh; s.sourceObject = m; s.transform = mf.transform.localToWorldMatrix; var modifier = mf.GetComponent <NavMeshModifier>(); s.area = modifier && modifier.overrideArea ? modifier.area : 0; _sources.Add(s); } }
//---------------------------------------------------------------------------------------- public static void CollectModifierVolumes(int _layerMask, ref List <NavMeshBuildSource> _sources) { foreach (var m in VolumeModifiers) { if ((_layerMask & (1 << m.gameObject.layer)) == 0) { continue; } if (!m.AffectsAgentType(AgentTypeId)) { continue; } var mcenter = m.transform.TransformPoint(m.center); var scale = m.transform.lossyScale; var msize = new Vector3(m.size.x * Mathf.Abs(scale.x), m.size.y * Mathf.Abs(scale.y), m.size.z * Mathf.Abs(scale.z)); var src = new NavMeshBuildSource(); src.shape = NavMeshBuildSourceShape.ModifierBox; src.transform = Matrix4x4.TRS(mcenter, m.transform.rotation, Vector3.one); src.size = msize; src.area = m.area; _sources.Add(src); } }
public NavMeshBuildSource CreateNavMeshBuildSource(int area) { NavMeshBuildSource result = CreateNavMeshBuildSource(); result.area = area; return(result); }
public void RebakeMesh() { area = new Bounds(); List <NavMeshBuildSource> sources = new List <NavMeshBuildSource>(); foreach (Transform go in transform) { var src = new NavMeshBuildSource(); src.transform = go.localToWorldMatrix; src.shape = NavMeshBuildSourceShape.Mesh; src.sourceObject = go.GetComponent <MeshFilter>().mesh; sources.Add(src); area.Encapsulate(go.GetComponent <Renderer>().bounds); } area.Expand(1); List <NavMeshBuildSettings> configs = new List <NavMeshBuildSettings>(); foreach (var agent in settings) { var s = NavMesh.CreateSettings(); s.agentClimb = agent.climbAngle; s.agentRadius = agent.radius; s.agentSlope = agent.jump; s.agentTypeID = 1; configs.Add(s); } NavMeshBuilder.UpdateNavMeshData(data, configs[0], sources, area); }
// Collect all the navmesh build sources for enabled objects tagged by this component public static void Collect(ref List<NavMeshBuildSource> sources) { sources.Clear(); for (var i = 0; i < m_Meshes.Count; ++i) { var mf = m_Meshes[i]; if (mf == null) continue; var m = mf.sharedMesh; if (m == null) continue; var s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Mesh; s.sourceObject = m; s.transform = mf.transform.localToWorldMatrix; s.area = 0; sources.Add(s); } for (var i = 0; i < m_Terrains.Count; ++i) { var t = m_Terrains[i]; if (t == null) continue; var s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Terrain; s.sourceObject = t.terrainData; // Terrain system only supports translation - so we pass translation only to back-end s.transform = Matrix4x4.TRS(t.transform.position, Quaternion.identity, Vector3.one); s.area = 0; sources.Add(s); } }
private void AppendModifierVolumes(ref List <NavMeshBuildSource> sources) { using (List <NavMeshModifierVolume> .Enumerator enumerator = NavMeshModifierVolume.get_activeModifiers().GetEnumerator()) { while (enumerator.MoveNext()) { NavMeshModifierVolume current = enumerator.Current; if ((LayerMask.op_Implicit(this.LayerMask) & 1 << ((Component)current).get_gameObject().get_layer()) != 0 && current.AffectsAgentType(this.agentTypeId)) { Vector3 vector3_1 = ((Component)current).get_transform().TransformPoint(current.get_center()); if (((Bounds) ref this.Bounds).Contains(vector3_1)) { Vector3 lossyScale = ((Component)current).get_transform().get_lossyScale(); Vector3 vector3_2; ((Vector3) ref vector3_2).\u002Ector((float)current.get_size().x *Mathf.Abs((float)lossyScale.x), (float)current.get_size().y *Mathf.Abs((float)lossyScale.y), (float)current.get_size().z *Mathf.Abs((float)lossyScale.z)); NavMeshBuildSource navMeshBuildSource = (NavMeshBuildSource)null; ((NavMeshBuildSource) ref navMeshBuildSource).set_shape((NavMeshBuildSourceShape)5); ((NavMeshBuildSource) ref navMeshBuildSource).set_transform(Matrix4x4.TRS(vector3_1, ((Component)current).get_transform().get_rotation(), Vector3.get_one())); ((NavMeshBuildSource) ref navMeshBuildSource).set_size(vector3_2); ((NavMeshBuildSource) ref navMeshBuildSource).set_area(current.get_area()); sources.Add(navMeshBuildSource); } } } } }
private IEnumerator CollectSourcesAsync(Action callback) { float time = Time.get_realtimeSinceStartup(); Debug.Log((object)"Starting Navmesh Source Collecting."); NavMeshBuilder.CollectSources(this.Bounds, LayerMask.op_Implicit(this.LayerMask), this.NavMeshCollectGeometry, this.defaultArea, new List <NavMeshBuildMarkup>(), this.sources); if (Object.op_Inequality((Object)TerrainMeta.HeightMap, (Object)null)) { for (float x = (float)-((Bounds) ref this.Bounds).get_extents().x; (double)x < ((Bounds) ref this.Bounds).get_extents().x; x += (float)this.CellSize) { for (float z = (float)-((Bounds) ref this.Bounds).get_extents().z; (double)z < ((Bounds) ref this.Bounds).get_extents().z; z += (float)this.CellSize) { AsyncTerrainNavMeshBake terrainSource = new AsyncTerrainNavMeshBake(Vector3.op_Addition(((Bounds) ref this.Bounds).get_center(), new Vector3(x, 0.0f, z)), this.CellSize, this.Height, false, true); yield return((object)terrainSource); this.terrainBakes.Add(terrainSource); NavMeshBuildSource navMeshBuildSource = terrainSource.CreateNavMeshBuildSource(true); ((NavMeshBuildSource) ref navMeshBuildSource).set_area(this.defaultArea); this.sources.Add(navMeshBuildSource); terrainSource = (AsyncTerrainNavMeshBake)null; } } } this.AppendModifierVolumes(ref this.sources); float num = Time.get_realtimeSinceStartup() - time; if ((double)num > 0.100000001490116) { Debug.LogWarning((object)("Calling CollectSourcesAsync took " + (object)num)); } if (callback != null) { callback(); } }
void UpdateNavMesh(bool asyncUpdate = false) { var defaultBuildSettings = NavMesh.GetSettingsByID(0); var bounds = QuantizedBounds(); NavMeshBuilder.CollectSources(bounds, navMeshLayers, NavMeshCollectGeometry.RenderMeshes, 0, new List <NavMeshBuildMarkup>(), m_Sources); for (int i = 0; i < m_Sources.Count; i++) { if (m_Sources[i].component.transform.gameObject.layer == 19) { NavMeshBuildSource m = new NavMeshBuildSource(); m = m_Sources[i]; m.area = 3; m_Sources[i] = m; } } if (asyncUpdate) { m_Operation = NavMeshBuilder.UpdateNavMeshDataAsync(m_NavMesh, defaultBuildSettings, m_Sources, bounds); } else { NavMeshBuilder.UpdateNavMeshData(m_NavMesh, defaultBuildSettings, m_Sources, bounds); } }
void AddChunkNavMesh(VoxelChunk chunk) { if (!applicationIsPlaying || (object)chunk.navMesh == null) { return; } if (chunk.navMeshSourceIndex < 0) { NavMeshBuildSource source = new NavMeshBuildSource(); source.shape = NavMeshBuildSourceShape.Mesh; source.size = chunk.navMesh.bounds.size; source.sourceObject = chunk.navMesh; source.transform = chunk.transform.localToWorldMatrix; int count = navMeshSources.Count; chunk.navMeshSourceIndex = count; navMeshSources.Add(source); } else { NavMeshBuildSource source = navMeshSources [chunk.navMeshSourceIndex]; source.size = chunk.navMesh.bounds.size; source.sourceObject = chunk.navMesh; source.transform = chunk.transform.localToWorldMatrix; navMeshSources [chunk.navMeshSourceIndex] = source; } worldBounds.Encapsulate(chunk.mr.bounds); worldBounds.Expand(0.1f); navMeshHasNewData = true; }
private void AppendModifierVolumes(ref List <NavMeshBuildSource> sources) { foreach (NavMeshModifierVolume activeModifier in NavMeshModifierVolume.activeModifiers) { if ((this.LayerMask & 1 << (activeModifier.gameObject.layer & 31)) == 0 || !activeModifier.AffectsAgentType(this.agentTypeId)) { continue; } Vector3 vector3 = activeModifier.transform.TransformPoint(activeModifier.center); if (!this.Bounds.Contains(vector3)) { continue; } Vector3 vector31 = activeModifier.transform.lossyScale; Vector3 vector32 = new Vector3(activeModifier.size.x * Mathf.Abs(vector31.x), activeModifier.size.y * Mathf.Abs(vector31.y), activeModifier.size.z * Mathf.Abs(vector31.z)); NavMeshBuildSource navMeshBuildSource = new NavMeshBuildSource() { shape = NavMeshBuildSourceShape.ModifierBox, transform = Matrix4x4.TRS(vector3, activeModifier.transform.rotation, Vector3.one), size = vector32, area = activeModifier.area }; sources.Add(navMeshBuildSource); } }
/*Nav Mesh*/ public static NavMeshBuildSource CreateEmptySource() { NavMeshBuildSource emptySource = new NavMeshBuildSource(); emptySource.sourceObject = new Mesh(); return(emptySource); }
// Collect all the navmesh build sources for enabled objects tagged by this component public static void Collect(ref List <NavMeshBuildSource> sources, int InArea, AI_TYPE InType) { sources.Clear(); for (var i = 0; i < Map_Meshes[InType].Count; ++i) { var mf = Map_Meshes[InType][i]; if (mf == null) { continue; } var m = mf.sharedMesh; if (m == null) { continue; } var s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Mesh; s.sourceObject = m; s.transform = mf.transform.localToWorldMatrix; s.area = InArea; sources.Add(s); } }
// Collect all the navmesh build sources for enabled objects tagged by this component public static void Collect(ref List <NavMeshBuildSource> sources) { sources.Clear(); for (var i = 0; i < m_Meshes.Count; ++i) { var mf = m_Meshes[i]; if (mf == null) { continue; } var m = mf.sharedMesh; if (m == null) { continue; } var s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Mesh; s.sourceObject = m; s.transform = mf.transform.localToWorldMatrix; s.area = 0; sources.Add(s); } for (var i = 0; i < m_Terrains.Count; ++i) { var t = m_Terrains[i]; if (t == null) { continue; } var s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Terrain; s.sourceObject = t.terrainData; // Terrain system only supports translation - so we pass translation only to back-end s.transform = Matrix4x4.TRS(t.transform.position, Quaternion.identity, Vector3.one); s.area = 0; sources.Add(s); } for (var i = 0; i < m_MVolumes.Count; ++i) { var v = m_MVolumes[i]; if (v == null) { continue; } var s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.ModifierBox; s.transform = Matrix4x4.TRS(v.transform.TransformPoint(v.center), v.transform.rotation, Vector3.one); s.size = new Vector3(v.size.x * Mathf.Abs(v.transform.lossyScale.x), v.size.y * Mathf.Abs(v.transform.lossyScale.y), v.size.z * Mathf.Abs(v.transform.lossyScale.z)); s.area = v.area; sources.Add(s); } }
// Make a build source for a box in local space public NavMeshBuildSource BoxSource10x10() { var src = new NavMeshBuildSource(); src.transform = transform.localToWorldMatrix; src.shape = NavMeshBuildSourceShape.Sphere; src.size = new Vector3(10.0f, 10f, 10.0f); return(src); }
public NavMeshBuildSource CreateNavMeshBuildSource() { NavMeshBuildSource result = default(NavMeshBuildSource); result.transform = Matrix4x4.TRS(pivot, Quaternion.identity, Vector3.one); result.shape = NavMeshBuildSourceShape.Mesh; result.sourceObject = mesh; return(result); }
public NavMeshBuildSource BoxSource() { var src = new NavMeshBuildSource(); src.transform = transform.localToWorldMatrix; src.shape = NavMeshBuildSourceShape.Box; src.size = new Vector3(GameObject.FindGameObjectWithTag("MapFloor").transform.localScale.x, GameObject.FindGameObjectWithTag("MapFloor").transform.localScale.y, GameObject.FindGameObjectWithTag("MapFloor").transform.localScale.z); return(src); }
// Token: 0x06000B4C RID: 2892 RVA: 0x000516E0 File Offset: 0x0004F8E0 private void BuildTile(Pathfinding.NavMeshTile tile) { DateTime now = DateTime.Now; List <NavMeshBuildSource> list = new List <NavMeshBuildSource>(); List <NavMeshBuildMarkup> markups = new List <NavMeshBuildMarkup>(); Pathfinding.AgentType z = (Pathfinding.AgentType)tile.m_tile.z; Pathfinding.AgentSettings settings = this.GetSettings(z); Bounds includedWorldBounds = new Bounds(tile.m_center, new Vector3(this.m_tileSize, 6000f, this.m_tileSize)); Bounds localBounds = new Bounds(Vector3.zero, new Vector3(this.m_tileSize, 6000f, this.m_tileSize)); int defaultArea = settings.m_canWalk ? 0 : 1; NavMeshBuilder.CollectSources(includedWorldBounds, this.m_layers.value, NavMeshCollectGeometry.PhysicsColliders, defaultArea, markups, list); if (settings.m_avoidWater) { List <NavMeshBuildSource> list2 = new List <NavMeshBuildSource>(); NavMeshBuilder.CollectSources(includedWorldBounds, this.m_waterLayers.value, NavMeshCollectGeometry.PhysicsColliders, 1, markups, list2); using (List <NavMeshBuildSource> .Enumerator enumerator = list2.GetEnumerator()) { while (enumerator.MoveNext()) { NavMeshBuildSource item = enumerator.Current; item.transform *= Matrix4x4.Translate(Vector3.down * 0.2f); list.Add(item); } goto IL_1AE; } } if (settings.m_canSwim) { List <NavMeshBuildSource> list3 = new List <NavMeshBuildSource>(); NavMeshBuilder.CollectSources(includedWorldBounds, this.m_waterLayers.value, NavMeshCollectGeometry.PhysicsColliders, 3, markups, list3); if (settings.m_swimDepth != 0f) { using (List <NavMeshBuildSource> .Enumerator enumerator = list3.GetEnumerator()) { while (enumerator.MoveNext()) { NavMeshBuildSource item2 = enumerator.Current; item2.transform *= Matrix4x4.Translate(Vector3.down * settings.m_swimDepth); list.Add(item2); } goto IL_1AE; } } list.AddRange(list3); } IL_1AE: if (tile.m_data == null) { tile.m_data = new NavMeshData(); tile.m_data.position = tile.m_center; } this.m_buildOperation = NavMeshBuilder.UpdateNavMeshDataAsync(tile.m_data, settings.m_build, list, localBounds); this.m_buildTile = tile; }
// Start is called before the first frame update void Awake() { Map = Instantiate(ObjectsToPlace[2], new Vector3(10, 0, 10), Quaternion.identity); sources = new List <NavMeshBuildSource>(); buildSettings = new NavMeshBuildSettings(); source = BoxSource(); sources.Add(source); }
static NavMeshBuildSource CreateMeshSource(Mesh mesh, Matrix4x4 transform) { var source = new NavMeshBuildSource(); source.shape = NavMeshBuildSourceShape.Mesh; source.sourceObject = mesh; source.transform = transform; source.area = 0; return(source); }
private void UpdateNavMesh() { _sources.Clear(); // get all meshfilters in hierarchy _meshFilters = _syncManager.syncRoot.GetComponentsInChildren <MeshFilter>(); // by pass if hierarchy contains no mesh if (_meshFilters.Length == 0) { return; } // initialize bounds with first renderer _bounds = (Bounds)_meshFilters[0].GetComponent <Renderer>()?.bounds; // for every mesh for (int i = 0; i < _meshFilters.Length; i++) { // find associated metadata //Metadata mData = _meshFilters[i].GetComponent<Metadata>(); Metadata mData = _meshFilters[i].GetComponentInParent <Metadata>(); // bypass filtered objects if (mData && ContainsData(mData, ignoreFilters)) { continue; } // extending bounds Renderer renderer = _meshFilters[i].GetComponent <Renderer>(); _bounds.Encapsulate(renderer.bounds.min); _bounds.Encapsulate(renderer.bounds.max); // add Mesh Colliders for interacting with objects if (addMeshColliders) { _meshFilters[i].gameObject.AddComponent <MeshCollider>().isTrigger = isTrigger; } Mesh m = _meshFilters[i].sharedMesh; if (m == null) { continue; } NavMeshBuildSource s = new NavMeshBuildSource(); s.shape = NavMeshBuildSourceShape.Mesh; s.sourceObject = m; s.transform = _meshFilters[i].transform.localToWorldMatrix; s.area = (mData && ContainsData(mData, notWalkable) || mData == null && unknownIsNotWalkable) ? 1 : 0; _sources.Add(s); } UpdateNavMeshMesh(); }
private NavMeshBuildSource CreateNavMeshBuildSource(Vector3 size, Mesh mesh, Matrix4x4 transf, int area) { NavMeshBuildSource source = new NavMeshBuildSource(); source.shape = NavMeshBuildSourceShape.Mesh; source.size = size; source.sourceObject = mesh; source.transform = transf; source.area = 0; return(source); }
public void AddSourceMeshes(List <MeshFilter> meshFilters, Transform meshParentTransform) { foreach (MeshFilter meshFilter in meshFilters) { NavMeshBuildSource src = new NavMeshBuildSource(); src.shape = NavMeshBuildSourceShape.Mesh; src.area = 0; src.transform = meshParentTransform.localToWorldMatrix; src.sourceObject = meshFilter.sharedMesh; m_navMeshSources.Add(src); } }