public void Deactivate()
        {
            Partition.UpdateObject(this, false);

            foreach (var collisionPair in CollisionPairs.Values)
            {
                collisionPair.Body2.CollisionPairHolders.Remove(ID);
                DeactivatePair(collisionPair);
            }
            CollisionPairs.Clear();
            foreach (var id in CollisionPairHolders)
            {
                LSBody other = PhysicsManager.SimObjects[id];
                if (other.IsNotNull())
                {
                    CollisionPair collisionPair;
                    if (other.CollisionPairs.TryGetValue(ID, out collisionPair))
                    {
                        other.CollisionPairs.Remove(this.ID);
                        DeactivatePair(collisionPair);
                    }
                    else
                    {
                        Debug.Log("nope " + ID);
                    }
                }
            }
            CollisionPairHolders.Clear();

            PhysicsManager.Dessimilate(this);
            Active = false;
        }
Beispiel #2
0
        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--;
            }
        }
Beispiel #3
0
        public void EarlySimulate()
        {
            if (VelocityChanged)
            {
                VelocityFastMagnitude = _velocity.FastMagnitude();
                VelocityChanged       = false;
            }
            if (VelocityFastMagnitude != 0)
            {
                _position.x    += _velocity.x;
                _position.y    += _velocity.y;
                PositionChanged = true;
            }

            if (PositionChanged || this.PositionChangedBuffer)
            {
                Partition.UpdateObject(this);
            }
            if (RotationChanged)
            {
            }
            else
            {
            }
        }
        public void EarlySimulate()
        {
            if (HasParent)
            {
                return;
            }

            if (VelocityChanged)
            {
                VelocityFastMagnitude = Velocity.FastMagnitude();
                VelocityChanged       = false;
            }

            if (VelocityFastMagnitude != 0)
            {
                Position.x     += Velocity.x;
                Position.y     += Velocity.y;
                PositionChanged = true;
            }

            if (PositionChanged)
            {
                Partition.UpdateObject(this);
            }
            if (RotationChanged)
            {
            }
            else
            {
            }
        }
Beispiel #5
0
        public void Simulate()
        {
            _SimVelocity();

            BuildChangedValues();

            PartitionChanged = false;
            if (PositionChanged || this.PositionChangedBuffer)
            {
                Partition.UpdateObject(this);
            }

            _SimVisualsCounter();
        }
        public void Simulate()
        {
            if (VelocityChanged)
            {
                VelocityFastMagnitude = _velocity.FastMagnitude();
                VelocityChanged       = false;
            }
            if (VelocityFastMagnitude != 0)
            {
                _position.x    += _velocity.x;
                _position.y    += _velocity.y;
                PositionChanged = true;
            }

            BuildChangedValues();


            if (PositionChanged || this.PositionChangedBuffer)
            {
                Partition.UpdateObject(this);
            }
        }
Beispiel #7
0
 public void Deactivate()
 {
     Partition.UpdateObject(this, false);
     PhysicsManager.Dessimilate(this);
 }