public void Simulate() { if (VelocityChanged) { VelocityMagnitude = _velocity.Magnitude(); VelocityChanged = false; } LastPosition = _position; if (VelocityMagnitude != 0) { _position.x += _velocity.x / LockstepManager.FrameRate; _position.y += _velocity.y / LockstepManager.FrameRate; PositionChanged = true; } BuildChangedValues(); PartitionChanged = false; if (PositionChanged || this.PositionChangedBuffer) { Partition.UpdateObject(this); } if (SettingVisuals) { _settingVisualsCounter--; } }