/*
*
* (c)2010 Lein-Mathisen Digital
* http://lmdig.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
package com.lmdig.android.tutorial.oglbox2dbasics.geometry;
import org.jbox2d.common.Vec2;
import com.kristianlm.robotanks.box2dbridge.IBody;
import com.kristianlm.robotanks.box2dbridge.IShape;
public class GameShapeRectangle extends GameShape {
GLRectangle rect;
public GameShapeRectangle(GLRectangle r) {
rect = r;
}
/**
* Attach the shape to the body
*
* @param body
* @param position Shape's placment relative to body. 0,0 is at
* the body's center, which is what you usually want. Exceptions
* include the ground-body, which doesn't move @ 0,0.
*/
public IShape attachToBody(IBody body, Vec2 position, float density) {
if(this.shape != null) {
throw new RuntimeException("Shape already attached");
}
if(position == null)
position = new Vec2(0, 0);
shapePosition = position;
this.body = body;
shape = body.createBox(
rect.getHalfWidth(),
rect.getHalfHeight(),
position.x,
position.y,
density,
0
);
body.setMassFromShapes();
return shape;
}
@Override
public void draw() {
Vec2 p = body.getWorldCenter().add(shapePosition);
rect.draw(p.x, p.y, body.getAngle());
}
}