Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static Model createCardModel(float width, float height, float thickness, TextureRegion backImage, TextureRegion faceImage) {
- float dx = width / 2;
- float dy = height / 2;
- float dz = thickness / 2;
- ColorAttribute cAttr = ColorAttribute.createDiffuse(Color.BLACK);
- TextureAttribute backAttr = TextureAttribute.createDiffuse(backImage);
- TextureAttribute faceAttr = TextureAttribute.createDiffuse(faceImage);
- Material colorMat = new Material(cAttr);
- Material backMat = new Material(backAttr);
- Material faceMat = new Material(faceAttr);
- ModelBuilder modelBuilder = new ModelBuilder();
- int attr = VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal | VertexAttributes.Usage.TextureCoordinates;
- modelBuilder.begin();
- MeshPartBuilder mpb = modelBuilder.part("box", GL20.GL_TRIANGLES, attr, colorMat);
- mpb.rect(-dx,-dy,-dz, -dx,dy,-dz, dx,dy,-dz, dx,-dy,-dz, 0,0,-1);
- modelBuilder.part("front", GL20.GL_TRIANGLES, attr, faceMat)
- .rect(dx,-dy,-dz, -dx,-dy,-dz, -dx,dy,-dz, dx,dy,-dz, 0,0,-1);
- modelBuilder.part("back", GL20.GL_TRIANGLES, attr, backMat)
- .rect(-dx,-dy,dz, dx,-dy,dz, dx,dy,dz, -dx,dy,dz,0,0,1);
- modelBuilder.part("bottom", GL20.GL_TRIANGLES, attr, colorMat)
- .rect(-dx,-dy,dz, -dx,-dy,-dz, dx,-dy,-dz, dx,-dy,dz, 0,-1,0);
- modelBuilder.part("top", GL20.GL_TRIANGLES, attr, colorMat)
- .rect(-dx,dy,-dz, -dx,dy,dz, dx,dy,dz, dx,dy,-dz, 0,1,0);
- modelBuilder.part("left", GL20.GL_TRIANGLES, attr, colorMat)
- .rect(-dx,-dy,dz, -dx,dy,dz, -dx,dy,-dz, -dx,-dy,-dz, -1,0,0);
- modelBuilder.part("right", GL20.GL_TRIANGLES, attr, colorMat)
- .rect(dx,-dy,-dz, dx,dy,-dz, dx,dy,dz, dx,-dy,dz, 1,0,0);
- mpb.setUVRange(backImage);
- Model model = modelBuilder.end();
- return model;
- }
- public class Model3d {
- private ModelBatch modelBatch;
- private Environment environment;
- private PerspectiveCamera camera = new PerspectiveCamera();
- private ArrayList<AbstractGameCard> cards = new ArrayList();
- public Model3d(Viewport viewport) {
- modelBatch = new ModelBatch();
- environment = new Environment();
- environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
- environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 0, 20, 20));
- //camera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
- camera = new PerspectiveCamera(45, viewport.getWorldWidth(), viewport.getWorldHeight());
- camera.position.set(0, 0, 200);
- camera.lookAt(0, 0, 0);
- camera.near = 1f;
- camera.far = 300f;
- camera.update();
- }
- public void addReferenceToCard(AbstractGameCard card) {
- cards.add(card);
- }
- public void render() {
- //Нужно проверять карты на существование и удалять, если карта удалена
- modelBatch.begin(camera);
- for(AbstractGameCard card : cards) {
- if(card.isModelRendering()) { //Это просто булева, отвечающая за то, нужно ли выводить 3д модель или нет.
- modelBatch.render(card.getInstance(), environment);
- }
- }
- modelBatch.end();
- }
- public void dispose() {
- modelBatch.dispose();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement