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(); }