package info.u250.c2d.box2deditor.gdx.scenes;
import info.u250.c2d.box2d.model.fixture.b2RectangleFixtureDefModel;
import info.u250.c2d.box2deditor.gdx.support.AbstractBox2dHelper;
import info.u250.c2d.box2deditor.gdx.support.Click;
import info.u250.c2d.box2deditor.gdx.support.Geometry;
import info.u250.c2d.engine.Engine;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Buttons;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.math.Vector2;
public class RectangleHelper extends AbstractBox2dHelper<b2RectangleFixtureDefModel> {
final Vector2 secondPoint = new Vector2();
Click click = Click.NONE;
InputAdapter input = new InputAdapter() {
@Override
public boolean touchDown(int x, int y, int pointer, int button) {
if(button == Buttons.LEFT){
if ( Click.NONE == click) {
secondPoint.set(Engine.screenToWorld(x, y));
click = Click.FIRST;
// do start
} else if (click == Click.FIRST) {
secondPoint.set(Engine.screenToWorld(x, y));
float width = secondPoint.x - worldCenter.x ;
float height = secondPoint.y - worldCenter.y ;
model.width = Math.abs(width)*2;
model.height = Math.abs(height)*2;
updateToUI();
click = Click.NONE;
// do end
}
}
return super.touchDown(x, y, pointer, button);
}
@Override
public boolean mouseMoved(int x, int y) {
if (click == Click.FIRST) {
// do move
secondPoint.set(Engine.screenToWorld(x, y));
float width = secondPoint.x - worldCenter.x ;
float height = secondPoint.y - worldCenter.y ;
model.width = Math.abs(width)*2;
model.height = Math.abs(height)*2;
updateToUI();
}
return super.mouseMoved(x, y);
}
};
public RectangleHelper(MainScene adapter) {
super(adapter);
}
@Override
public void render(float delta) {
Gdx.gl.glEnable(GL20.GL_BLEND);
Geometry.renderBox(model, worldCenter,0,false);
Gdx.gl.glDisable(GL20.GL_BLEND);
}
@Override
public InputProcessor getInputProcessor() {
return input;
}
@Override
public Class<b2RectangleFixtureDefModel> getType() {
return b2RectangleFixtureDefModel.class;
}
}