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