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--;
            }
        }