示例#1
0
        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;
        }
示例#2
0
    // 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));
            }
        }
    }