public void Tick() { if (Visible) { return; } //memory.SetText("Memory " + (int) (System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64 / 1024f) + " KB"); //memory.SetText("Public Memory " + (int)(GC.GetTotalMemory(false) / 1024f) + " KB"); visibility.SetText(CameraVisibility.TilesVisible() + " Tiles visible"); if (Window.GlobalTick % 10 != 0) { return; } var tps = PerfInfo.AverageTPS(); tick.SetColor(getColor(tps, Settings.UpdatesPerSecond)); tick.SetText("Tick " + tps.ToString("F1") + " @ " + PerfInfo.TMS.ToString("00") + " ms"); var frameCount = Settings.FrameLimiter == 0 ? ScreenInfo.ScreenRefreshRate : Settings.FrameLimiter; var fps = PerfInfo.AverageFPS(); render.SetColor(getColor(fps, frameCount)); render.SetText("Render " + fps.ToString("F1") + " @ " + PerfInfo.FMS.ToString("00") + " ms"); }
public void FinishPlayerSwitch(Actor @new) { LocalPlayer.FollowupActor = @new; LocalPlayer = @new; Add(@new); CameraVisibility.ShroudUpdated(); }
public static void Reset(Game @new) { game = @new; world = game.World; CameraVisibility.Reset(); Camera.Reset(); ClearRenderLists(); }
public void Load() { Camera.SetBounds(Bounds); CameraVisibility.SetBounds(this, world.ShroudLayer); var mapLoader = new MapLoader(world, this); mapLoader.Generate(); mapLoader.Apply(); }
public bool CheckVisibility(bool checkEdges = false) { renderable.Visible = CameraVisibility.IsVisible(Position); if (!firstChecked || checkEdges) { CheckEdgeVisibility(); firstChecked = true; } return(renderable.Visible); }
public bool CheckVisibility() { if (renderable == null || Dissolved) { Visible = false; return(Visible); } Visible = CameraVisibility.IsVisible(Position); return(Visible); }
void changeState(int x, int y, bool value) { foreach (var shroud in listenerPositions[new MPos(x, y)]) { if (shroud.ChangeState(value)) { changingShroud.Add(shroud); } } if (value) { CameraVisibility.ShroudRevealed(x / 2, y / 2); } }
public override bool CheckVisibility() { if (Disposed) { return(false); } if (WorldPart != null) { Visible = CameraVisibility.IsVisible(GraphicPosition + WorldPart.VisibilityBoxOffset, WorldPart.VisibilityBox); } else { Visible = CameraVisibility.IsVisible(GraphicPosition, new MPos(512, 512)); } return(Visible); }
public Actor FindValidTarget(CPos pos, int team = Actor.PlayerTeam) { const int range = 1024; if (KeyInput.IsKeyDown(Keys.LeftShift)) { return(null); } // Look for actors in range. var sectors = self.World.ActorLayer.GetSectors(pos, range); var currentRange = long.MaxValue; Actor validTarget = null; foreach (var sector in sectors) { foreach (var actor in sector.Actors) { if (actor.Team == team || actor.WorldPart == null || !CameraVisibility.IsVisible(actor.Position)) { continue; } var targetPart = actor.GetPartOrDefault <TargetablePart>(); if (targetPart == null || !targetPart.InTargetBox(pos)) { continue; } var dist = (actor.Position - pos).SquaredFlatDist; if (dist < currentRange) { currentRange = dist; validTarget = actor; } } } return(validTarget); }
private void Update() { if (!recording) { return; } timeElapsedSec += Time.deltaTime; if (timeElapsedSec < RecordDelaySec) { return; } timeElapsedSec = 0f; if (Camera.main == null) { return; } Transform transform = Camera.main.transform; Vector3 position = Camera.main.transform.position; Vector3 forward = Camera.main.transform.forward; if (!(lastCamVisibility.Position == position) || !(lastCamVisibility.Forward == forward)) { CameraVisibility cameraVisibility = default(CameraVisibility); cameraVisibility.Position = position; cameraVisibility.Forward = forward.normalized; cameraVisibility.Up = transform.up; cameraVisibility.Right = transform.right; camVisibilities[camVisIndex] = cameraVisibility; camVisIndex++; lastCamVisibility = cameraVisibility; if (camVisIndex == MaxEntries) { StopRecording(); } } }
private List <CameraVisibility> collapseVisibilities() { int num = int.MaxValue; int num2 = int.MinValue; int num3 = int.MaxValue; int num4 = int.MinValue; int num5 = int.MaxValue; int num6 = int.MinValue; for (int i = 0; i < camVisIndex; i++) { int num7 = (int)Mathf.Round(camVisibilities[i].Position.x); if (num7 < num) { num = num7; } if (num7 > num2) { num2 = num7; } int num8 = (int)Mathf.Round(camVisibilities[i].Position.y); if (num8 < num3) { num3 = num8; } if (num8 > num4) { num4 = num8; } int num9 = (int)Mathf.Round(camVisibilities[i].Position.z); if (num9 < num5) { num5 = num9; } if (num9 > num6) { num6 = num9; } } num--; num2++; num3--; num4++; num5--; num6++; int num10 = -num; int num11 = Mathf.Abs(num2 - num) + 1; int num12 = -num3; int num13 = Mathf.Abs(num4 - num3) + 1; int num14 = -num5; int num15 = Mathf.Abs(num6 - num5) + 1; List <CameraVisibility>[,,] array = new List <CameraVisibility> [num11, num13, num15]; for (int i = 0; i < camVisIndex; i++) { int num16 = (int)Mathf.Round(camVisibilities[i].Position.x) + num10; int num17 = (int)Mathf.Round(camVisibilities[i].Position.y) + num12; int num18 = (int)Mathf.Round(camVisibilities[i].Position.z) + num14; bool flag = false; List <CameraVisibility> list = array[num16, num17, num18]; if (list == null) { list = new List <CameraVisibility>(); array[num16, num17, num18] = list; } else { for (int j = 0; j < list.Count; j++) { float magnitude = (camVisibilities[i].Position - list[j].Position).magnitude; if (magnitude <= MinDistanceVariance && Vector3.Angle(list[j].Forward, camVisibilities[i].Forward) <= MinAngleVariance) { flag = true; break; } } } if (!flag) { CameraVisibility item = default(CameraVisibility); item.Forward = camVisibilities[i].Forward; item.Up = camVisibilities[i].Up; item.Right = camVisibilities[i].Right; item.Position = camVisibilities[i].Position; item.Fov = CamFov; list.Add(item); } } deriveAdditionalVisibilities(array, num10, num12, num14); return(getUniqueVisibilities(array)); }
private void deriveAdditionalVisibilities(List <CameraVisibility>[,,] camVisibilitiesAtPos, int xIndexOffset, int yIndexOffset, int zIndexOffset) { int length = camVisibilitiesAtPos.GetLength(0); int length2 = camVisibilitiesAtPos.GetLength(1); int length3 = camVisibilitiesAtPos.GetLength(2); int num = 0; for (int i = 0; i < length; i++) { for (int j = 0; j < length2; j++) { for (int k = 0; k < length3; k++) { List <CameraVisibility> list = camVisibilitiesAtPos[i, j, k]; if (list != null) { continue; } Vector3 a = default(Vector3); Vector3 a2 = default(Vector3); float num2 = 0f; int num3 = -1; int num4 = 1; for (int l = num3; l <= num4; l++) { int num5 = i + l; if (num5 < 0 || num5 >= length) { continue; } for (int m = num3; m <= num4; m++) { int num6 = j + m; if (num6 < 0 || num6 >= length2) { continue; } for (int n = num3; n <= num4; n++) { int num7 = k + n; if (num7 < 0 || num7 >= length3) { continue; } List <CameraVisibility> list2 = camVisibilitiesAtPos[num5, num6, num7]; if (list2 == null) { continue; } for (int num8 = 0; num8 < list2.Count; num8++) { if (!list2[num8].IsDerived) { a += list2[num8].Forward; a2 += list2[num8].Up; num2 = ((list2[num8].Fov > num2) ? list2[num8].Fov : num2); } } } } } if (a.magnitude != 0f) { CameraVisibility item = default(CameraVisibility); item.Forward = a.normalized; item.Up = a2.normalized; item.Right = Vector3.Cross(item.Up, item.Forward).normalized; item.Fov = num2; item.IsDerived = true; item.Position = new Vector3(i - xIndexOffset, j - yIndexOffset, k - zIndexOffset); num++; List <CameraVisibility> list3 = new List <CameraVisibility>(); list3.Add(item); camVisibilitiesAtPos[i, j, k] = list3; } } } } }
public override bool CheckVisibility() { return(CameraVisibility.IsVisible(GraphicPosition) || CameraVisibility.IsVisible(originPos)); }