Beispiel #1
0
        /// <summary>
        /// Checks if the Sprite has met its Limit criteria
        /// </summary>
        /// <param name="s"> The Sprite to check </param>
        public static void CheckLimit(Sprite s)
        {
            if (s.OnLimit == Wrap)
            {
                bool top = (s.LowerBound) < (s.LimitBox.Y);
                bool bottom = (s.UpperBound) > (s.LimitBox.Y + s.LimitBox.Height);
                bool right = (s.LeftBound) > s.LimitBox.X + (s.LimitBox.Width);
                bool left = (s.RightBound) < (s.LimitBox.X);

                if (top) s.OnLimit(new LimitObject(s, Direction.North));
                else if (bottom) s.OnLimit(new LimitObject(s, Direction.South));
                else if (right) s.OnLimit(new LimitObject(s, Direction.East));
                else if (left) s.OnLimit(new LimitObject(s, Direction.West));
            }
            else if (s.OnLimit == Bounce)
            {
                bool top = (s.Position.Y) < (s.LimitBox.Y);
                bool bottom = (s.Position.Y + s.Size.Y) > (s.LimitBox.Y + s.LimitBox.Height);
                bool right = (s.Position.X + s.Size.X) > (s.LimitBox.X + s.LimitBox.Height);
                bool left = (s.Position.X) < (s.LimitBox.X);

                if (top) s.OnLimit(new LimitObject(s, Direction.North));
                else if (bottom) s.OnLimit(new LimitObject(s, Direction.South));
                else if (right) s.OnLimit(new LimitObject(s, Direction.East));
                else if (left) s.OnLimit(new LimitObject(s, Direction.West));
            }
        }
Beispiel #2
0
 /// <summary>
 /// Calls the _onAnimate delgate on the Sprite
 /// </summary>
 /// <param name="s"> Does nothing. Here to keep delegates happy </param>
 public void Animate(Sprite s)
 {
     _onAnimate();
 }
Beispiel #3
0
 /// <summary>
 /// Default constructor for Animator
 /// </summary>
 /// <param name="s"> The Sprite associated with the Animator </param>
 public Animator(Sprite s)
 {
     AnimatingSprite = s;
 }
Beispiel #4
0
 /// <summary>
 /// Initializes the Sprites limiting within the limitbox
 /// </summary>
 /// <param name="s"> The Sprite to limit </param>
 /// <param name="onLimit"> The Delegate to call when Sprite hits limitBox </param>
 /// <param name="limitBox"> The LimitBox the Sprite is confined to </param>
 public static void LimitInitialize(Sprite s, LimitHit onLimit, Rectangle limitBox)
 {
     s.OnUpdate += CheckLimit;
     s.LimitBox = limitBox;
     s.OnLimit = onLimit;
 }
Beispiel #5
0
 /// <summary>
 /// Creates a new LimitObject
 /// </summary>
 /// <param name="s"> The Sprite being limited </param>
 /// <param name="direction"> The Direction it has hit the LimitBox </param>
 public LimitObject(Sprite s, Direction direction)
 {
     LimitingSprite = s;
     Direction = direction;
 }
 /// <summary>
 /// Returns a vector2 with resultant velocity in the direction the Sprite is facing
 /// </summary>
 /// <param name="velocity">The velocity to move the Sprite</param>
 /// <param name="sprite">The Sprite to get Rotation from</param>
 /// <returns> Vector2 Holding a velocity </returns>
 public static Vector2 VelocityAtAngle(float velocity, Sprite sprite)
 {
     float x = velocity * (float) Math.Sin(sprite.Rotation);
     float y = velocity *-(float) Math.Cos(sprite.Rotation);
     return new Vector2(x, y);
 }
Beispiel #7
0
 /// <summary>
 /// updates the velocity of the Sprite by adding acceleration
 /// </summary>
 /// <param name="s"></param>
 static void UpdateVelocity(Sprite s)
 {
     s.Velocity += s.Owner.EventM.ValuePerSecond(s.Acceleration);
 }
Beispiel #8
0
 /// <summary>
 /// updates the position of the Sprite by adding its velocity
 /// </summary>
 /// <param name="s"></param>
 static void UpdatePostition(Sprite s)
 {
     s.Position += s.Owner.EventM.ValuePerSecond(s.Velocity);
 }
Beispiel #9
0
 /// <summary>
 /// Updates the acceleration of the Sprite
 /// </summary>
 /// <param name="s"></param>
 static void UpdateAcceleration(Sprite s)
 {
     s.Acceleration += s.Owner.EventM.ValuePerSecond(s.ChangeInAcceleration);
 }