Exemplo n.º 1
0
    public void Update()
    {
        m_timeSum += Time.deltaTime;
        if (sim != null)
        {
            if (m_timeSum > sim.m_timeStep)
            {
                sim.DoStep();
                m_timeSum -= sim.m_timeStep;
            }
        }
        m_sb.Length = 0;
        for (int i = 0; i < m_agentCount; i++)
        {
            Vector2 pos    = RVO.Simulator.Instance.GetAgentPos(i);
            Vector2 vel    = RVO.Simulator.Instance.GetAgentVel(i);
            var     radius = RVO.Simulator.Instance.GetAgentRadius(i);
            float   orient = RVO.Simulator.Instance.GetAgentOrient(i);
            m_sb.Append(string.Format("id:{0} pos:{1} vel:{2} orieng:{3}", i, pos, vel, orient));
            m_sb.AppendLine("");
            var target = new Vector2(goals[i].x, goals[i].z);
            RVO.Simulator.Instance.SetAgentTarget(i, target);


            Vector3 forward = new Vector3(Mathf.Cos(orient), 0, Mathf.Sin(orient)).normalized *radius;
            if (forward == Vector3.zero)
            {
                forward = new Vector3(0, 0, radius);
            }
            Vector3 right = Vector3.Cross(Vector3.up, forward);
            Vector3 orig  = new Vector3(pos.x, 0, pos.y) + renderingOffset;

            int vc = 4 * i;
            int tc = 2 * 3 * i;
            verts[vc + 0] = (orig + forward - right);
            verts[vc + 1] = (orig + forward + right);
            verts[vc + 2] = (orig - forward + right);
            verts[vc + 3] = (orig - forward - right);

            uv[vc + 0] = (new Vector2(0, 1));
            uv[vc + 1] = (new Vector2(1, 1));
            uv[vc + 2] = (new Vector2(1, 0));
            uv[vc + 3] = (new Vector2(0, 0));

            meshColors[vc + 0] = colors[i];
            meshColors[vc + 1] = colors[i];
            meshColors[vc + 2] = colors[i];
            meshColors[vc + 3] = colors[i];

            tris[tc + 0] = (vc + 0);
            tris[tc + 1] = (vc + 1);
            tris[tc + 2] = (vc + 2);

            tris[tc + 3] = (vc + 0);
            tris[tc + 4] = (vc + 2);
            tris[tc + 5] = (vc + 3);
        }
        Debug.Log(m_sb.ToString());
        //Update the mesh
        mesh.Clear();
        mesh.vertices  = verts;
        mesh.uv        = uv;
        mesh.colors    = meshColors;
        mesh.triangles = tris;
        mesh.RecalculateNormals();
    }