Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

package com.gebauz.bauzoid.math.collisionx;

import java.util.Vector;

import com.gebauz.bauzoid.graphics.spritex.Sprite;
import com.gebauz.bauzoid.math.Line2;
import com.gebauz.bauzoid.math.Matrix4;
import com.gebauz.bauzoid.math.Vector2;

/** A shape that is composed of several shape elements. */
public class Shape
{


        // Constants========================================================================================

        // Embedded Types===================================================================================

        // Fields===========================================================================================
       
        private Vector<BaseShapeElement> mElements = new Vector<BaseShapeElement>();

        // Methods==========================================================================================

        public Shape()
        {

        }
       
        public void addElement(BaseShapeElement element)
        {
                mElements.add(element);
        }
       
        /** Check if the point is inside any of the shape elements in this shape - meaning it's also in the whole shape. */
        public boolean isInside(float x, float y)
        {
                for (int i = 0; i < mElements.size(); i++)
                {
                        BaseShapeElement element = mElements.get(i);
                        if (element.isInside(x, y))
                                return true;
                }
               
                return false;
        }
       
        public boolean intersects(Shape shape, Matrix4 transform)
        {
                for (int i = 0; i < mElements.size(); i++)
                {
                        BaseShapeElement element = mElements.get(i);
                        if (element.intersects(shape, transform))
                                return true;
                }
               
                return false;
        }
       
        public boolean intersects(Shape shape, Matrix4 transform, Vector2 displaceVector)
        {
                for (int i = 0; i < mElements.size(); i++)
                {
                        BaseShapeElement element = mElements.get(i);
                        if (element.intersects(shape, transform, displaceVector))
                                return true;
                }
               
                return false;
        }
       
        public boolean intersectsLine(Line2 line)
        {
                for (int i = 0; i < mElements.size(); i++)
                {
                        BaseShapeElement element = mElements.get(i);
                        if (element.intersectsLine(line))
                                return true;
                }
               
                return false;
        }
       
        public void debugRender(Sprite sprite)
        {
                for (int i = 0; i < mElements.size(); i++)
                {
                        mElements.get(i).debugRender(sprite);
                }
        }
       
        // Getters/Setters==================================================================================

        public final int getNumElements() { return mElements.size(); }
        public final BaseShapeElement getElement(int i) { return mElements.get(i); }

}