void AddLink() { #if UNITY_EDITOR if (m_LinkInstance.valid) { Debug.LogError("Link is already added: " + this); return; } #endif var link = new NavMeshLinkData(); link.startPosition = m_StartPoint; link.endPosition = m_EndPoint; link.width = m_Width; link.costModifier = m_CostModifier; link.bidirectional = m_Bidirectional; link.area = m_Area; link.agentTypeID = m_AgentTypeID; m_LinkInstance = NavMesh.AddLink(link, transform.position, transform.rotation); if (m_LinkInstance.valid) { m_LinkInstance.owner = this; } m_LastPosition = transform.position; m_LastRotation = transform.rotation; }
// Token: 0x06000B52 RID: 2898 RVA: 0x00051ABC File Offset: 0x0004FCBC private void ConnectAlongEdge(List <KeyValuePair <Vector3, NavMeshLinkInstance> > links, Vector3 p0, Vector3 p1, float step, Pathfinding.AgentSettings settings) { Vector3 normalized = (p1 - p0).normalized; Vector3 a = Vector3.Cross(Vector3.up, normalized); float num = Vector3.Distance(p0, p1); bool canSwim = settings.m_canSwim; this.tempStitchPoints.Clear(); for (float num2 = step / 2f; num2 <= num; num2 += step) { Vector3 p2 = p0 + normalized * num2; this.FindGround(p2, canSwim, this.tempStitchPoints, settings); } if (this.CompareLinks(this.tempStitchPoints, links)) { return; } this.ClearLinks(links); foreach (Vector3 vector in this.tempStitchPoints) { NavMeshLinkInstance value = NavMesh.AddLink(new NavMeshLinkData { startPosition = vector - a * 0.1f, endPosition = vector + a * 0.1f, width = step, costModifier = this.m_linkCost, bidirectional = true, agentTypeID = settings.m_build.agentTypeID, area = 2 }); if (value.valid) { links.Add(new KeyValuePair <Vector3, NavMeshLinkInstance>(vector, value)); } } }