protected override void Update(ProcessFrameEventArgs args) { if (!Visible) { return; } if (playerManager.LocalPlayer?.ControlledEntity == null) { contents.Text = "No attached entity."; return; } var entityTransform = playerManager.LocalPlayer.ControlledEntity.Transform; var playerWorldOffset = entityTransform.WorldPosition; var playerScreen = eyeManager.WorldToScreen(playerWorldOffset); var mouseScreenPos = inputManager.MouseScreenPosition; int mouseWorldMap; int mouseWorldGrid; GridCoordinates mouseWorldPos; ScreenCoordinates worldToScreen; IEntity mouseEntity = null; try { var coords = eyeManager.ScreenToWorld(new ScreenCoordinates(mouseScreenPos)); mouseWorldMap = (int)coords.MapID; mouseWorldGrid = (int)coords.GridID; mouseWorldPos = coords; worldToScreen = eyeManager.WorldToScreen(coords); if (stateManager.CurrentState is GameScreen gameScreen) { mouseEntity = gameScreen.GetEntityUnderPosition(coords); } } catch { mouseWorldPos = eyeManager.ScreenToWorld(mouseScreenPos); mouseWorldGrid = 0; mouseWorldMap = 0; worldToScreen = new ScreenCoordinates(); } contents.Text = $@"Positioning Debug: Character Pos: World: {playerWorldOffset} Screen: {playerScreen} Grid: {entityTransform.GridID} Map: {entityTransform.MapID} Mouse Pos: Screen: {mouseScreenPos} World: {mouseWorldPos} W2S: {worldToScreen.Position} Grid: {mouseWorldGrid} Map: {mouseWorldMap} Entity: {mouseEntity}"; MinimumSizeChanged(); }
protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); if (AttachedEntity?.IsValid() != true || !AttachedEntity.TryGetComponent(out DoAfterComponent? doAfterComponent)) { return; } var doAfters = doAfterComponent.DoAfters; // Nothing to render so we'll hide. if (doAfters.Count == 0 && _cancelledDoAfters.Count == 0) { _firstDraw = true; Visible = false; return; } // Set position ready for 2nd+ frames. _playerPosition = _eyeManager.WorldToScreen(AttachedEntity.Transform.GridPosition); LayoutContainer.SetPosition(this, new Vector2(_playerPosition.X - Width / 2, _playerPosition.Y - Height - 30.0f)); if (_firstDraw) { _firstDraw = false; return; } Visible = true; var currentTime = _gameTiming.CurTime; var toCancel = new List <byte>(); // Cleanup cancelled DoAfters foreach (var(id, cancelTime) in _cancelledDoAfters) { if ((currentTime - cancelTime).TotalSeconds > DoAfterSystem.ExcessTime) { toCancel.Add(id); } } foreach (var id in toCancel) { RemoveDoAfter(id); } // Update 0 -> 1.0f of the things foreach (var(id, message) in doAfters) { if (_cancelledDoAfters.ContainsKey(id) || !_doAfterControls.ContainsKey(id)) { continue; } var doAfterBar = _doAfterBars[id]; doAfterBar.Ratio = MathF.Min(1.0f, (float)(currentTime - message.StartTime).TotalSeconds / message.Delay); } }
protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); _timeLeft -= args.DeltaSeconds; if (_entityManager.Deleted(_senderEntity) || _timeLeft <= 0) { // Timer spawn to prevent concurrent modification exception. Timer.Spawn(0, Die); return; } // Lerp to our new vertical offset if it's been modified. if (MathHelper.CloseToPercent(_verticalOffsetAchieved - VerticalOffset, 0, 0.1)) { _verticalOffsetAchieved = VerticalOffset; } else { _verticalOffsetAchieved = MathHelper.Lerp(_verticalOffsetAchieved, VerticalOffset, 10 * args.DeltaSeconds); } if (!_entityManager.TryGetComponent <TransformComponent>(_senderEntity, out var xform) || !xform.Coordinates.IsValid(_entityManager)) { Modulate = Color.White.WithAlpha(0); return; } if (_timeLeft <= FadeTime) { // Update alpha if we're fading. Modulate = Color.White.WithAlpha(_timeLeft / FadeTime); } else { // Make opaque otherwise, because it might have been hidden before Modulate = Color.White; } var worldPos = xform.WorldPosition; var scale = _eyeManager.MainViewport.GetRenderScale(); var offset = new Vector2(0, EntityVerticalOffset * EyeManager.PixelsPerMeter * scale); var lowerCenter = (_eyeManager.WorldToScreen(worldPos) - offset) / UIScale; var screenPos = lowerCenter - (Width / 2, ContentHeight + _verticalOffsetAchieved); // Round to nearest 0.5 screenPos = (screenPos * 2).Rounded() / 2; LayoutContainer.SetPosition(this, screenPos); var height = MathF.Ceiling(MathHelper.Clamp(lowerCenter.Y - screenPos.Y, 0, ContentHeight)); SetHeight = height; }
protected override void Update(ProcessFrameEventArgs args) { if (!Visible) { return; } if (playerManager.LocalPlayer?.ControlledEntity == null) { contents.Text = "No attached entity."; return; } var entityTransform = playerManager.LocalPlayer.ControlledEntity.GetComponent <ITransformComponent>(); var playerWorldOffset = entityTransform.WorldPosition; var playerScreen = eyeManager.WorldToScreen(playerWorldOffset); var mouseScreenPos = inputManager.MouseScreenPosition; int mouseWorldMap; int mouseWorldGrid; Vector2 mouseWorldPos; try { var coords = eyeManager.ScreenToWorld(new ScreenCoordinates(mouseScreenPos, entityTransform.MapID)); mouseWorldMap = (int)coords.MapID; mouseWorldGrid = (int)coords.GridID; mouseWorldPos = coords.Position; } catch { mouseWorldPos = eyeManager.ScreenToWorld(mouseScreenPos); mouseWorldGrid = 0; mouseWorldMap = 0; } contents.Text = $@"Positioning Debug: Character Pos: World: {playerWorldOffset} Screen: {playerScreen} Grid: {entityTransform.GridID} Map: {entityTransform.MapID} Mouse Pos: Screen: {mouseScreenPos} World: {mouseWorldPos} Grid: {mouseWorldGrid} Map: {mouseWorldMap}"; MinimumSizeChanged(); }
protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); _timeLeft -= args.DeltaSeconds; if (_timeLeft <= FadeTime) { // Update alpha if we're fading. Modulate = Color.White.WithAlpha(_timeLeft / FadeTime); } if (_senderEntity.Deleted || _timeLeft <= 0) { // Timer spawn to prevent concurrent modification exception. Timer.Spawn(0, Die); return; } // Lerp to our new vertical offset if it's been modified. if (MathHelper.CloseToPercent(_verticalOffsetAchieved - VerticalOffset, 0, 0.1)) { _verticalOffsetAchieved = VerticalOffset; } else { _verticalOffsetAchieved = MathHelper.Lerp(_verticalOffsetAchieved, VerticalOffset, 10 * args.DeltaSeconds); } if (!_senderEntity.Transform.Coordinates.IsValid(_senderEntity.EntityManager)) { return; } var worldPos = _senderEntity.Transform.WorldPosition; worldPos += (0, EntityVerticalOffset); var lowerCenter = _eyeManager.WorldToScreen(worldPos) / UIScale; var screenPos = lowerCenter - (Width / 2, ContentHeight + _verticalOffsetAchieved); LayoutContainer.SetPosition(this, screenPos); var height = MathHelper.Clamp(lowerCenter.Y - screenPos.Y, 0, ContentHeight); SetHeight = height; }
public override void Update(float frameTime) { base.Update(frameTime); if (_tooltips == 0) { if (_aiBoxes.Count > 0) { foreach (var(_, panel) in _aiBoxes) { panel.Dispose(); } _aiBoxes.Clear(); } return; } var deletedEntities = new List <IEntity>(0); foreach (var(entity, panel) in _aiBoxes) { if (entity.Deleted) { deletedEntities.Add(entity); continue; } if (!_eyeManager.GetWorldViewport().Contains(entity.Transform.WorldPosition)) { panel.Visible = false; continue; } var(x, y) = _eyeManager.WorldToScreen(entity.Transform.GridPosition).Position; var offsetPosition = new Vector2(x - panel.Width / 2, y - panel.Height - 50f); panel.Visible = true; LayoutContainer.SetPosition(panel, offsetPosition); } foreach (var entity in deletedEntities) { _aiBoxes.Remove(entity); } }
protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); _timeLeft -= args.DeltaSeconds; if (_timeLeft <= FadeTime) { // Update alpha if we're fading. Modulate = Color.White.WithAlpha(_timeLeft / FadeTime); } if (_senderEntity.Deleted || _timeLeft <= 0) { // Timer spawn to prevent concurrent modification exception. Timer.Spawn(0, Die); return; } // Lerp to our new vertical offset if it's been modified. if (FloatMath.CloseTo(_verticalOffsetAchieved - VerticalOffset, 0, 0.1)) { _verticalOffsetAchieved = VerticalOffset; } else { _verticalOffsetAchieved = FloatMath.Lerp(_verticalOffsetAchieved, VerticalOffset, 10 * args.DeltaSeconds); } var worldPos = _senderEntity.Transform.WorldPosition; worldPos += (0, EntityVerticalOffset); var lowerCenter = _eyeManager.WorldToScreen(worldPos) / UIScale; var screenPos = lowerCenter - (Width / 2, ContentHeight + _verticalOffsetAchieved); Position = screenPos; var height = (lowerCenter.Y - screenPos.Y).Clamp(0, ContentHeight); Size = (Size.X, height); }
private void DrawGraph(DrawingHandleScreen screenHandle, Box2 viewport) { foreach (var(chunk, nodes) in Graph) { foreach (var tile in nodes) { if (!viewport.Contains(tile)) { continue; } var screenTile = _eyeManager.WorldToScreen(tile); var box = new UIBox2( screenTile.X - 15.0f, screenTile.Y - 15.0f, screenTile.X + 15.0f, screenTile.Y + 15.0f); screenHandle.DrawRect(box, _graphColors[chunk]); } } }
public override void FrameUpdate(float frameTime) { base.FrameUpdate(frameTime); if (!Enabled) { _label.Visible = false; return; } var player = _playerManager.LocalPlayer?.ControlledEntity; if (player == null || !player.TryGetComponent(out PhysicsComponent? body)) { _label.Visible = false; return; } var screenPos = _eyeManager.WorldToScreen(player.Transform.WorldPosition); LayoutContainer.SetPosition(_label, screenPos + new Vector2(0, 50)); _label.Visible = true; _label.Text = $"Speed: {body.LinearVelocity.Length}\nLinear: {body.LinearVelocity.X:0.00}, {body.LinearVelocity.Y:0.00}\nAngular:{body.AngularVelocity}"; }
protected override void FrameUpdate(FrameEventArgs args) { if (!VisibleInTree) { return; } var stringBuilder = new StringBuilder(); var mouseScreenPos = inputManager.MouseScreenPosition; var screenSize = _displayManager.ScreenSize; int mouseWorldMap; GridCoordinates mouseWorldPos; TileRef tile; try { var coords = eyeManager.ScreenToWorld(new ScreenCoordinates(mouseScreenPos)); mouseWorldMap = (int)_mapManager.GetGrid(coords.GridID).ParentMapId; mouseWorldPos = coords; tile = _mapManager.GetGrid(coords.GridID).GetTileRef(coords); } catch { mouseWorldPos = eyeManager.ScreenToWorld(mouseScreenPos); mouseWorldMap = 0; tile = new TileRef(); } stringBuilder.AppendFormat(@"Positioning Debug: Screen Size: {0} Mouse Pos: Screen: {1} World: {2} Map: {3} Tile: {5} GUI: {4}", screenSize, mouseScreenPos, mouseWorldPos, mouseWorldMap, UserInterfaceManager.CurrentlyHovered, tile); stringBuilder.AppendLine("\nAttached Entity:"); if (playerManager.LocalPlayer?.ControlledEntity == null) { stringBuilder.AppendLine("No attached entity."); } else { var entityTransform = playerManager.LocalPlayer.ControlledEntity.Transform; var playerWorldOffset = entityTransform.WorldPosition; var playerScreen = eyeManager.WorldToScreen(playerWorldOffset); stringBuilder.AppendFormat(@" World: {0} Screen: {1} Grid: {2} Map: {3}", playerWorldOffset, playerScreen, entityTransform.GridID, entityTransform.MapID); } contents.Text = stringBuilder.ToString(); MinimumSizeChanged(); }
protected override void FrameUpdate(RenderFrameEventArgs args) { if (!VisibleInTree) { return; } var stringBuilder = new StringBuilder(); var mouseScreenPos = inputManager.MouseScreenPosition; var screenSize = _displayManager.ScreenSize; int mouseWorldMap; int mouseWorldGrid; GridCoordinates mouseWorldPos; ScreenCoordinates worldToScreen; IEntity mouseEntity = null; try { var coords = eyeManager.ScreenToWorld(new ScreenCoordinates(mouseScreenPos)); mouseWorldMap = (int)coords.MapID; mouseWorldGrid = (int)coords.GridID; mouseWorldPos = coords; worldToScreen = eyeManager.WorldToScreen(coords); if (stateManager.CurrentState is GameScreen gameScreen) { mouseEntity = gameScreen.GetEntityUnderPosition(coords); } } catch { mouseWorldPos = eyeManager.ScreenToWorld(mouseScreenPos); mouseWorldGrid = 0; mouseWorldMap = 0; worldToScreen = new ScreenCoordinates(); } stringBuilder.AppendFormat(@"Positioning Debug: Screen Size: {0} Mouse Pos: Screen: {1} World: {2} W2S: {3} Grid: {4} Map: {5} Entity: {6} GUI: {7} ", screenSize, mouseScreenPos, mouseWorldPos, worldToScreen, mouseWorldGrid, mouseWorldMap, mouseEntity, UserInterfaceManager.CurrentlyHovered); stringBuilder.AppendLine("\nAttached Entity:"); if (playerManager.LocalPlayer?.ControlledEntity == null) { stringBuilder.AppendLine("No attached entity."); } else { var entityTransform = playerManager.LocalPlayer.ControlledEntity.Transform; var playerWorldOffset = entityTransform.WorldPosition; var playerScreen = eyeManager.WorldToScreen(playerWorldOffset); stringBuilder.AppendFormat(@" World: {0} Screen: {1} Grid: {2} Map: {3}", playerWorldOffset, playerScreen, entityTransform.GridID, entityTransform.MapID); } contents.Text = stringBuilder.ToString(); MinimumSizeChanged(); }
protected override void FrameUpdate(FrameEventArgs args) { if (!VisibleInTree) { return; } var stringBuilder = new StringBuilder(); var mouseScreenPos = _inputManager.MouseScreenPosition; var screenSize = _displayManager.ScreenSize; MapCoordinates mouseWorldMap; EntityCoordinates mouseGridPos; TileRef tile; mouseWorldMap = _eyeManager.ScreenToMap(mouseScreenPos); if (_mapManager.TryFindGridAt(mouseWorldMap, out var mouseGrid)) { mouseGridPos = mouseGrid.MapToGrid(mouseWorldMap); tile = mouseGrid.GetTileRef(mouseGridPos); } else { mouseGridPos = new EntityCoordinates(_mapManager.GetMapEntityId(mouseWorldMap.MapId), mouseWorldMap.Position); tile = new TileRef(mouseWorldMap.MapId, GridId.Invalid, mouseGridPos.ToVector2i(_entityManager, _mapManager), Tile.Empty); } var controlHovered = UserInterfaceManager.CurrentlyHovered; stringBuilder.AppendFormat(@"Positioning Debug: Screen Size: {0} Mouse Pos: Screen: {1} {2} {3} {4} GUI: {5}", screenSize, mouseScreenPos, mouseWorldMap, mouseGridPos, tile, controlHovered); stringBuilder.AppendLine("\nAttached Entity:"); if (_playerManager.LocalPlayer?.ControlledEntity == null) { stringBuilder.AppendLine("No attached entity."); } else { var entityTransform = _playerManager.LocalPlayer.ControlledEntity.Transform; var playerWorldOffset = entityTransform.MapPosition; var playerScreen = _eyeManager.WorldToScreen(playerWorldOffset.Position); var playerCoordinates = _playerManager.LocalPlayer.ControlledEntity.Transform.Coordinates; stringBuilder.AppendFormat(@" Screen: {0} {1} {2} EntId: {3} GridID: {4}", playerScreen, playerWorldOffset, playerCoordinates, entityTransform.Owner.Uid, entityTransform.GridID); } if (controlHovered != null) { _uiBox = UIBox2i.FromDimensions(controlHovered.GlobalPixelPosition, controlHovered.PixelSize); } _contents.Text = stringBuilder.ToString(); MinimumSizeChanged(); }
protected override void FrameUpdate(FrameEventArgs args) { if (!VisibleInTree) { return; } var stringBuilder = new StringBuilder(); var mouseScreenPos = inputManager.MouseScreenPosition; var screenSize = _displayManager.ScreenSize; MapCoordinates mouseWorldMap; GridCoordinates mouseGridPos; TileRef tile; mouseWorldMap = eyeManager.ScreenToMap(mouseScreenPos); if (_mapManager.TryFindGridAt(mouseWorldMap, out var mouseGrid)) { mouseGridPos = mouseGrid.MapToGrid(mouseWorldMap); tile = mouseGrid.GetTileRef(mouseGridPos); } else { mouseGridPos = new GridCoordinates(mouseWorldMap.Position, GridId.Invalid); tile = default; } stringBuilder.AppendFormat(@"Positioning Debug: Screen Size: {0} Mouse Pos: Screen: {1} {2} {3} {4} GUI: {5}", screenSize, mouseScreenPos, mouseWorldMap, mouseGridPos, tile, UserInterfaceManager.CurrentlyHovered); stringBuilder.AppendLine("\nAttached Entity:"); if (playerManager.LocalPlayer?.ControlledEntity == null) { stringBuilder.AppendLine("No attached entity."); } else { var entityTransform = playerManager.LocalPlayer.ControlledEntity.Transform; var playerWorldOffset = entityTransform.MapPosition; var playerScreen = eyeManager.WorldToScreen(playerWorldOffset.Position); GridCoordinates playerGridPos; if (_mapManager.TryFindGridAt(playerWorldOffset, out var playerGrid)) { playerGridPos = playerGrid.MapToGrid(playerWorldOffset); } else { playerGridPos = new GridCoordinates(playerWorldOffset.Position, GridId.Invalid); } stringBuilder.AppendFormat(@" Screen: {0} {1} {2} EntityUid: {3}", playerScreen, playerWorldOffset, playerGridPos, entityTransform.Owner.Uid); } contents.Text = stringBuilder.ToString(); MinimumSizeChanged(); }