// I've settled on the first prototype being a trail of evenly spaced VERY small dots. private void RenderRoute(DT_PlayerRole role, PLY_SnapSpot snapSpot) { Vector3 vPos = role.mStart; vPos.z = vPos.y - 1f; vPos.y = 1f; vPos += snapSpot.transform.position; DATA_Route rt = IO_RouteList.FLOAD_ROUTE_BY_NAME(role.mDetail); for (int i = 0; i + 1 < rt.mSpots.Length; i++) { // render a bunch of spots, along the path from a -> b. Vector3 vStartPos = vPos + UT_VecConversion.ConvertVec2(rt.mSpots[i]); Vector3 vFinalPos = vPos + UT_VecConversion.ConvertVec2(rt.mSpots[i + 1]); Vector3 vIterPos = vStartPos; Vector3 vDir = Vector3.Normalize(vFinalPos - vStartPos); while (Vector3.Dot(vDir, vFinalPos - vIterPos) > 0f) { Instantiate(GFX_RouteTrail, vIterPos, transform.rotation); vIterPos += vDir * 1f; } } }
private void RenderRoute(List <Vector2> nodes, Vector3 vStart, PLY_SnapSpot snapSpot) { // This should be the actual starting spot of the player. Vector3 vPos = vStart; vPos.z = vPos.y; vPos.y = 0f; vPos += snapSpot.transform.position; Instantiate(GFX_RouteTrail, vPos, transform.rotation); for (int i = 1; i < nodes.Count; i++) { // render a bunch of spots, along the path from a -> b. We're actually going backwards, but it doesn't matter. Vector3 vINode = UT_VecConversion.ConvertVec2(nodes[i]) * 2f; vINode.z *= -1f; Vector3 vIMinusOneNode = UT_VecConversion.ConvertVec2(nodes[i - 1]) * 2f; vIMinusOneNode.z *= -1f; Vector3 vStartPos = vPos + vINode; Vector3 vFinalPos = vPos + vIMinusOneNode; Vector3 vIterPos = vStartPos; Vector3 vDir = Vector3.Normalize(vFinalPos - vStartPos); while (Vector3.Dot(vDir, vFinalPos - vIterPos) > 0f) { Instantiate(GFX_RouteTrail, vIterPos, transform.rotation); vIterPos += vDir * 1f; } } }
private void RenderRush(DT_PlayerRole role, PLY_SnapSpot snapSpot) { // Make it just behind the player. Vector3 vPos = UT_VecConversion.ConvertVec2(role.mStart); vPos.z -= 1f; vPos.y = 1f; vPos += snapSpot.transform.position; Instantiate(GFX_Rush, vPos, transform.rotation); }
public void FSetUpRoute(DATA_ORoute rt) { cRouteLog.mRouteSpots = new List <Vector3>(); for (int i = 0; i < rt.mSpots.Count; i++) { Vector3 rtSpot = UT_VecConversion.ConvertVec2(rt.mSpots[i]); rtSpot += transform.position; Debug.Log(rtSpot); cRouteLog.mRouteSpots.Add(rtSpot); } }
private void RenderZone(DT_PlayerRole role, PLY_SnapSpot snapSpot) { // get the zone details. DATA_Zone zn = IO_ZoneList.FLOAD_ZONE_BY_NAME(role.mDetail); GFX_Zone zoneGFX; if (zn.mSpot.y > 19f) { // render using the "deep zone" version. zoneGFX = GFX_DeepZone; } else if (zn.mSpot.y > 9f) { // render using mid zone version zoneGFX = GFX_MidZone; } else { // render using shallow zone version. zoneGFX = GFX_ShallowZone; } Vector3 vZonePos = snapSpot.transform.position; vZonePos.z += zn.mSpot.y; vZonePos.x += zn.mSpot.x; Instantiate(zoneGFX, vZonePos, transform.rotation); Vector3 vStartPos = UT_VecConversion.ConvertVec2(role.mStart); vStartPos += snapSpot.transform.position; Vector3 vIterPos = vStartPos; Vector3 vDir = Vector3.Normalize(vZonePos - vStartPos); while (Vector3.Dot(vDir, vZonePos - vIterPos) > 0f) { Instantiate(GFX_ZoneTrail, vIterPos, transform.rotation); vIterPos += vDir * 0.5f; } }