public void OnFrame() { for (int i = 0; i < mSpectators.Count; i++) { if (mSpectators[i] != null) { mSpectators[i].OnFrame(); } } SpectatorGrid.DrawGrid(mSpectatorGrid, CellSize); }
public void OnCreate() { mFrustumGradient = SpawnPointMax - SpawnPointMin; if (mFrustumGradient.z != 0) { mFrustumGradient /= mFrustumGradient.z; } mSpectatorGrid = SpectatorGrid.CreateGrid(new Trapezoid(SpawnPointMin.x, SpawnPointMax.x, SpawnPointMin.z, SpawnPointMax.z), CellSize); mSpectators = new List <Spectator>(AbsoluteMaxSpectators); ComputeSpawnChanceSum(); }
public static void DrawGrid(SpectatorGrid Grid, Vector2 CellDimensions) { if (Grid == null) { return; } for (int i = 0; i < Grid.GetRowCount(); i++) { Vector3[] Corners = new Vector3[4]; for (int j = 0; j < Grid.GetRowLength(i); j++) { Corners[0] = new Vector3(Grid.GetCellPosition(i, j).x, 0, Grid.GetCellPosition(i, j).y); Corners[1] = Corners[0] + CellDimensions.x * Vector3.right; Corners[2] = Corners[1] - CellDimensions.y * Vector3.forward; Corners[3] = Corners[0] - CellDimensions.y * Vector3.forward; for (int c = 0; c < 4; c++) { Debug.DrawLine(Corners[c % 4], Corners[(c + 1) % 4], new Color(c / 4.0f, (c % 4) / 4.0f, 1 - (c % 4) / 4.0f)); } } } }