Example #1
0
        /// <summary>
        ///		Setup the boundaries and position of this collider given a sprite
        /// </summary>
        /// <param name="theProxy"></param>
        public void SetupCollisonSpriteProxy(SpriteProxy theProxy)
        {
            SpriteBatch colliderBatch = SpriteBatchManager.Active.Find(SpriteBatch.Name.SpriteCollisions);

            // Remove previous SpriteCollisionProxy if any
            if (this.collisionSprite != null)
            {
                bool oldProxyRemoved = colliderBatch.Detach(collisionSprite.SpriteName, collisionSprite.Id);
                Debug.Assert(oldProxyRemoved, "The old collision sprite proxy wasn't removed upon setting a new proxy!");
                Debug.Assert(this.collisionSprite.SpriteName != Sprite.Name.UNINITIALIZED);
                SpriteCollisonProxyManager.Active.Recycle(collisionSprite.SpriteName, collisionSprite.Id);
                this.collisionSprite = null;
            }

            // Create a new proxy
            this.collisionSprite = SpriteCollisonProxyManager.Active.Create(theProxy.SpriteName, theProxy.Id);
            this.collisionSprite.SetId(theProxy.Id);
            this.collisionSprite.SetPosition(this.colliderBoundary.x, this.colliderBoundary.y);
            this.colliderBoundary.w = this.collisionSprite.ModelSprite.Width;
            this.colliderBoundary.h = this.collisionSprite.ModelSprite.Height;
            this.collisionSprite.SetColor(this.color);

            // Attach it to the batch
            colliderBatch.Attach(this.collisionSprite, this.collisionSprite.Id);
        }
Example #2
0
        //
        // Constructor
        //

        public Collider()
        {
            this.collisionSprite  = null;
            this.colliderBoundary = new Azul.Rect();
            this.gameObjectId     = 0u;
            this.color            = Colors.Green;
        }
Example #3
0
        /// <summary>
        ///		Setup the boundaries and position of this collider given a width and height
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        public void SetupCollisonSpriteProxy(float width, float height, uint newId)
        {
            SpriteBatch colliderBatch = SpriteBatchManager.Active.Find(SpriteBatch.Name.SpriteCollisions);

            // Remove previous SpriteCollisionProxy if any
            if (this.collisionSprite != null)
            {
                bool oldRemSuccess = colliderBatch.Detach(collisionSprite.SpriteName, collisionSprite.Id);
                Debug.Assert(oldRemSuccess, "Upon setting a new collider sprite proxy, the old one was not deleted!");
                Debug.Assert(this.collisionSprite.SpriteName != Sprite.Name.UNINITIALIZED);
                SpriteCollisonProxyManager.Active.Recycle(collisionSprite.SpriteName, collisionSprite.Id);
                this.collisionSprite = null;
            }

            // Create a new proxy
            this.collisionSprite = SpriteCollisonProxyManager.Active.Create(Sprite.Name.NULL, newId);
            this.collisionSprite.SetId(newId);
            this.collisionSprite.SetPosition(this.colliderBoundary.x, this.colliderBoundary.y);
            this.collisionSprite.Resize(width, height);
            this.colliderBoundary.w = width;
            this.colliderBoundary.h = height;
            this.collisionSprite.SetColor(this.color);

            // Attach it to the batch
            colliderBatch.Attach(this.collisionSprite, this.collisionSprite.Id);
        }
Example #4
0
 /// <summary>
 ///		Makes the collider null so that it doesn't
 ///		render a SpriteCollison or check collisions
 /// </summary>
 public void MakeColliderNull()
 {
     // Remove previous SpriteCollisionProxy if any
     if (this.collisionSprite != null)
     {
         SpriteBatch colliderBatch = SpriteBatchManager.Active.Find(SpriteBatch.Name.SpriteCollisions);
         bool        colSprRemoved = colliderBatch.Detach(collisionSprite.SpriteName, collisionSprite.Id);
         Debug.Assert(colSprRemoved, "This collision sprite proxy wasn't removed for some reason!");
         Debug.Assert(this.collisionSprite.SpriteName != Sprite.Name.UNINITIALIZED);
         SpriteCollisonProxyManager.Active.Recycle(collisionSprite.SpriteName, collisionSprite.Id);
         this.collisionSprite = null;
     }
 }
Example #5
0
        /// <summary>
        ///		Reset function that can only be called by the base GameObject!
        /// </summary>
        public void Reset()
        {
            // Remove previous SpriteCollisionProxy if any
            if (this.collisionSprite != null)
            {
                SpriteBatch colliderBatch = SpriteBatchManager.Active.Find(SpriteBatch.Name.SpriteCollisions);
                bool        success       = colliderBatch.Detach(collisionSprite.SpriteName, collisionSprite.Id);
                Debug.Assert(success, "The collision sprite proxy wasn't found during collider's reset!");
                Debug.Assert(this.collisionSprite.SpriteName != Sprite.Name.UNINITIALIZED, "The collision sprite proxy already seems to be uninitialized, but it's probably not");
                SpriteCollisonProxyManager.Active.Recycle(collisionSprite.SpriteName, collisionSprite.Id);
                this.collisionSprite = null;
            }

            this.gameObjectId = 0u;
            this.color        = Colors.Yellow;
        }