btRigidBody rightlowerleg = (btRigidBody)world.add("lowerleg", x + 0.18f, y + 0.2f, z).body; btRigidBody leftupperarm = (btRigidBody)world.add("upperarm", tmpM.setFromEulerAnglesRad(PI2, 0, 0).trn(x - 0.35f, y + 1.45f, z)).body; btRigidBody leftlowerarm = (btRigidBody)world.add("lowerarm", tmpM.setFromEulerAnglesRad(PI2, 0, 0) .trn(x - 0.7f, y + 1.45f, z)).body; btRigidBody rightupperarm = (btRigidBody)world.add("upperarm", tmpM.setFromEulerAnglesRad(-PI2, 0, 0).trn(x + 0.35f, y + 1.45f, z)).body; btRigidBody rightlowerarm = (btRigidBody)world.add("lowerarm", tmpM.setFromEulerAnglesRad(-PI2, 0, 0).trn(x + 0.7f, y + 1.45f, z)).body; localA.setFromEulerAnglesRad(0, PI2, 0).trn(0, 0.15f, 0); localB.setFromEulerAnglesRad(0, PI2, 0).trn(0, -0.15f, 0); constraints.add(hingeC = new btHingeConstraint(pelvis, spine, localA, localB)); hingeC.setLimit(-PI4, PI2); localA.setFromEulerAnglesRad(PI2, 0, 0).trn(0, 0.3f, 0); localB.setFromEulerAnglesRad(PI2, 0, 0).trn(0, -0.14f, 0); constraints.add(coneC = new btConeTwistConstraint(spine, head, localA, localB)); coneC.setLimit(PI4, PI4, PI2); localA.setFromEulerAnglesRad(-PI4 * 5f, 0, 0).trn(-0.18f, -0.1f, 0); localB.setFromEulerAnglesRad(-PI4 * 5f, 0, 0).trn(0, 0.225f, 0); constraints.add(coneC = new btConeTwistConstraint(pelvis, leftupperleg, localA, localB)); coneC.setLimit(PI4, PI4, 0); localA.setFromEulerAnglesRad(0, PI2, 0).trn(0, -0.225f, 0); localB.setFromEulerAnglesRad(0, PI2, 0).trn(0, 0.185f, 0); constraints.add(hingeC = new btHingeConstraint(leftupperleg, leftlowerleg, localA, localB)); hingeC.setLimit(0, PI2);
@Override public void render () { transform.idt(); if (rotateCheckBox.isChecked()) transform.rotate(Vector3.Y, rotation = (rotation + rotationSpeed * Gdx.graphics.getRawDeltaTime()) % 360); if (moveCheckBox.isChecked()) { movement = (movement + moveSpeed * Gdx.graphics.getRawDeltaTime()) % 1f; final float sm = MathUtils.sin(movement * MathUtils.PI2); final float cm = MathUtils.cos(movement * MathUtils.PI2); transform.trn(0, moveRadius * cm, moveRadius * sm); } super.render(); stringBuilder.setLength(0); getStatus(stringBuilder); fpsLabel.setText(stringBuilder); hud.act(Gdx.graphics.getDeltaTime()); hud.draw(); }
@Override public void render () { angle += Gdx.graphics.getDeltaTime() * 40.0f; float aspect = Gdx.graphics.getWidth() / (float)Gdx.graphics.getHeight(); projection.setToProjection(1.0f, 20.0f, 60.0f, aspect); view.idt().trn(0, 0, -2.0f); model.setToRotation(axis, angle); combined.set(projection).mul(view).mul(model); Gdx.gl20.glViewport(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight()); Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT); shader.begin(); shader.setUniformMatrix("u_mvpMatrix", combined); mesh.render(shader, GL20.GL_TRIANGLES); shader.end(); Gdx.app.log("angle", "" + angle); } }
instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 0f), "mesh", true)); instances.add(new ModelInstance(model, new Matrix4().trn(-5f, 0f, -5f), "box", true)); instances.add(new ModelInstance(model, new Matrix4().trn(5f, 0f, -5f), "sphere", true)); instances.add(new ModelInstance(model, new Matrix4().trn(-5f, 0f, 5f), "cone", true)); instances.add(new ModelInstance(model, new Matrix4().trn(5f, 0f, 5f), "cylinder", true)); instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 5f), "capsule", true)); instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 10f), "capsuleNoTexture", true)); instances.add(new ModelInstance(model, new Matrix4().trn(0f, 0f, 0f), "transformedSphere", true));
BoundingBox bbox = new BoundingBox(); character.calculateBoundingBox(bbox); character.transform.setToRotation(Vector3.Y, 180).trn(0, -bbox.min.y, 0); instances.add(character); animation = new AnimationController(character);
ModelInstance sphere = new ModelInstance(sphereModel); instances.add(sphere); sphere.transform.trn(x + 0.1f * MathUtils.random(), y + 0.1f * MathUtils.random(), z + 0.1f * MathUtils.random()); btDefaultMotionState sphereMotionState = new btDefaultMotionState(); sphereMotionState.setWorldTransform(sphere.transform);
public void update (float delta) { if (isInvaderShot) transform.trn(0, 0, SHOT_VELOCITY * delta); else transform.trn(0, 0, -SHOT_VELOCITY * delta); transform.getTranslation(tmpV); if (tmpV.z > Simulation.PLAYFIELD_MAX_Z) hasLeftField = true; if (tmpV.z < Simulation.PLAYFIELD_MIN_Z) hasLeftField = true; } }
public void update (float delta, float speedMultiplier) { movedDistance += delta * INVADER_VELOCITY * speedMultiplier; if (state == STATE_MOVE_LEFT) { transform.trn(-delta * INVADER_VELOCITY * speedMultiplier, 0, 0); if (movedDistance > Simulation.PLAYFIELD_MAX_X) { state = STATE_MOVE_DOWN; transform.trn(delta * INVADER_VELOCITY * speedMultiplier, 0, 0); if (movedDistance > Simulation.PLAYFIELD_MAX_X) { state = STATE_MOVE_DOWN; transform.trn(0, 0, delta * INVADER_VELOCITY * speedMultiplier); if (movedDistance > 1) { if (wasLastStateLeft)
@Override public void box(float x, float y, float z, float width, float height, float depth) { box(matTmp1.setToScaling(width, height, depth).trn(x, y, z)); }
public SpriteBatch spriteBatch; private int posX = 100; private int posY = 100; private float angle = 45; private String text = "Hello, World!"; private BitmapFont font; private Matrix4 oldTransformMatrix; Matrix4 mx4Font = new Matrix4(); @Override public void show() { font = new BitmapFont(Gdx.files.internal("someFont.ttf")); oldTransformMatrix = spriteBatch.getTransformMatrix().cpy(); mx4Font.rotate(new Vector3(0, 0, 1), angle); mx4Font.trn(posX, posY, 0); } @Override public void render() { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriteBatch.setTransformMatrix(mx4Font); spriteBatch.begin(); font.draw(spriteBatch, text, 0, 0); spriteBatch.end(); spriteBatch.setTransformMatrix(oldTransformMatrix); }
localA.setFromEulerAnglesRad(0, PI0_25, 0).trn(0, halfExtMap.get(a).y, 0); localB.setFromEulerAnglesRad(0, PI0_25, 0).trn(0, -halfExtMap.get(b).y, 0); this.constraints.add(hingeC = new btHingeConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB)); hingeC.setLimit(-PI0_25, PI0_5); localA.setFromEulerAnglesRad(0, 0, 0).trn(0, halfExtMap.get(a).y, 0); localB.setFromEulerAnglesRad(0, 0, 0).trn(0, -halfExtMap.get(b).y, 0); this.constraints.add(fixedC = new btFixedConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB)); localA.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, halfExtMap.get(a).y, 0); localB.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, -halfExtMap.get(b).y, 0); this.constraints.add(coneC = new btConeTwistConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB)); coneC.setLimit(PI0_25, PI0_25, PI0_25); localA.setFromEulerAnglesRad(0, PI, 0).scl(-1, 1, 1).trn(halfExtMap.get(a).x * 0.5f, -halfExtMap.get ("abdomen").y, 0); localB.setFromEulerAnglesRad(0, 0, 0).scl(-1, 1, 1).trn(0, -halfExtMap.get(b).y, 0); this.constraints.add(coneC = new btConeTwistConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB)); coneC.setLimit(PI0_25, PI0_25, PI0_25); localA.setFromEulerAnglesRad(0, PI, 0).trn(-halfExtMap.get(a).x * 0.5f, -halfExtMap.get ("abdomen").y, 0); localB.setFromEulerAnglesRad(0, 0, 0).trn(0, -halfExtMap.get(b).y, 0); this.constraints.add(coneC = new btConeTwistConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB)); coneC.setLimit(PI0_25, PI0_25, PI0_25); localA.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, halfExtMap.get(a).y, 0); localB.setFromEulerAnglesRad(-PI0_5, 0, 0).trn(0, -halfExtMap.get(b).y, 0); this.constraints.add(hingeC = new btHingeConstraint(bodyMap.get(a), bodyMap.get(b), localA, localB));