void Update(EngineUpdateEvent e) { var map = Resolve <IMapManager>().Current; if (_locked) { _position += new Vector2(_velocity.X, _velocity.Y) * e.DeltaSeconds; } else { var party = Resolve <IParty>(); if (map == null || party == null || !party.StatusBarOrder.Any()) { return; } var leader = party[party.Leader]; var position = leader.GetPosition() * map.TileSize; const float lerpRate = 3.0f; // TODO: Data driven _position = new Vector2( Util.Lerp(_position.X, position.X, lerpRate * e.DeltaSeconds), Util.Lerp(_position.Y, position.Y, lerpRate * e.DeltaSeconds)); } if (map == null) { return; } _camera.Position = new Vector3(_position, map.BaseCameraHeight); }
void Update(EngineUpdateEvent e) { var map = TryResolve <IMapManager>()?.Current; if (map == null) { _locked = true; } if (_locked) { if (_velocity.X == 0 && _velocity.Y == 0 && _velocity.Z == 0) { return; } _position += _velocity * e.DeltaSeconds; } else { var party = Resolve <IParty>(); var config = Resolve <GameConfig>().Visual.Camera2D; if (map == null || party == null || !party.StatusBarOrder.Any()) { return; } var leader = party.Leader; if (leader == null) { return; } var position = leader.GetPosition() * map.TileSize; var curPosition2 = new Vector2(_position.X, _position.Y); var position2 = new Vector2(position.X, position.Y); if ((curPosition2 - position2).LengthSquared() < 0.25f) { _position = new Vector3(position2, _position.Z); } else { _position = new Vector3( ApiUtil.Lerp(_position.X, position.X, config.LerpRate * e.DeltaSeconds), ApiUtil.Lerp(_position.Y, position.Y, config.LerpRate * e.DeltaSeconds), map.BaseCameraHeight); } } _camera.Position = _position; }
void OnEngineUpdate(EngineUpdateEvent e) { _elapsedTimeThisGameFrame += e.DeltaSeconds; var config = Resolve <GameConfig>(); var tickDurationSeconds = 1.0f / config.Time.IdleTicksPerSecond; // If the game was paused for a while don't try and catch up if (_elapsedTimeThisGameFrame > 4 * tickDurationSeconds) { _elapsedTimeThisGameFrame = 4 * tickDurationSeconds; } while (_elapsedTimeThisGameFrame >= tickDurationSeconds) { _elapsedTimeThisGameFrame -= tickDurationSeconds; Raise(_event); } }
void EngineUpdate(EngineUpdateEvent e) { if (_lerp >= 1.0f) { return; } var config = Resolve <GameConfig>(); var elapsed = (DateTime.Now - _lastChangeTime).TotalSeconds; var oldLerp = _lerp; _lerp = elapsed > config.UI.Transitions.InventoryChangLerpSeconds ? 1.0f : (float)(elapsed / config.UI.Transitions.InventoryChangLerpSeconds); if (Math.Abs(_lerp - oldLerp) > float.Epsilon) { Raise(new InventoryChangedEvent(new InventoryId(Id))); } }
void OnUpdate(EngineUpdateEvent e) { _totalTime += e.DeltaSeconds; if (_totalTime - _lastCleanup > CacheCheckIntervalSeconds) { lock (_syncRoot) { var keys = _cache.Keys.ToList(); foreach (var key in keys) { var entry = _cache[key]; if ((DateTime.Now - entry.LastAccessDateTime).TotalSeconds > CacheLifetimeSeconds) { _cache.Remove(key); entry.Dispose(); } } _lastCleanup = _totalTime; } } }
void OnUpdate(EngineUpdateEvent e) { _totalTime += e.DeltaSeconds; var config = Resolve <CoreConfig>().Visual.TextureManager; if (_totalTime - _lastCleanup > config.CacheCheckIntervalSeconds) { lock (_syncRoot) { var keys = _cache.Keys.ToList(); foreach (var key in keys) { var entry = _cache[key]; if ((DateTime.Now - entry.LastAccessDateTime).TotalSeconds > config.CacheLifetimeSeconds) { _cache.Remove(key); entry.Dispose(); } } _lastCleanup = _totalTime; } } }