本文整理汇总了Java中com.jme3.bullet.objects.PhysicsRigidBody类的典型用法代码示例。如果您正苦于以下问题:Java PhysicsRigidBody类的具体用法?Java PhysicsRigidBody怎么用?Java PhysicsRigidBody使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PhysicsRigidBody类属于com.jme3.bullet.objects包,在下文中一共展示了PhysicsRigidBody类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: updateObject
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
protected void updateObject(PhysicsRigidBody rigidBody, Entity e) {
RigidBody rigidBodyInfo = e.get(RigidBody.class);
CustomShape collisionShapeInfo = e.get(CustomShape.class);
rigidBody.setKinematic(rigidBodyInfo.isKinematic());
rigidBody.setMass(rigidBodyInfo.getMass());
//rigidBody.setFriction(rigidBodyInfo.getFriction());
rigidBody.setRestitution(rigidBodyInfo.getRestitution());
if(!rigidBody.getCollisionShape().equals(collisionShapeInfo.getDefinition())) {
physicsSpace.remove(rigidBody);
CollisionShape shape = provider.getShape(e.get(shapeType));
rigidBody.setCollisionShape(shape);
physicsSpace.add(rigidBody);
}
// rigidBody.setUserObject(e.getId()); already set?
}
示例2: prePhysicsTick
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
public void prePhysicsTick(PhysicsSpace space, float tpf) {
warpPositions.applyChanges();
warpPositions.forEach(entity -> {
WarpPosition position = entity.get(WarpPosition.class);
PhysicsRigidBody rigidBody = rigidBodies.getObject(entity.getId());
if(rigidBody != null){
rigidBody.setPhysicsLocation(position.getLocation());
rigidBody.setPhysicsRotation(position.getRotation());
entityData.removeComponent(entity.getId(), WarpPosition.class);
}
PhysicsGhostObject ghostObject = ghostObjects.getObject(entity.getId());
if(ghostObject != null){
ghostObject.setPhysicsLocation(position.getLocation());
ghostObject.setPhysicsRotation(position.getRotation());
entityData.removeComponent(entity.getId(), WarpPosition.class);
}
});
}
示例3: physicsTick
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
public void physicsTick(PhysicsSpace space, float f) {
//get all overlapping objects and apply impulse to them
for (Iterator<PhysicsCollisionObject> it = ghostObject.getOverlappingObjects().iterator(); it.hasNext();) {
PhysicsCollisionObject physicsCollisionObject = it.next();
if (physicsCollisionObject instanceof PhysicsRigidBody) {
PhysicsRigidBody rBody = (PhysicsRigidBody) physicsCollisionObject;
rBody.getPhysicsLocation(vector2);
vector2.subtractLocal(vector);
float force = explosionRadius - vector2.length();
force *= forceFactor;
force = force > 0 ? force : 0;
vector2.normalizeLocal();
vector2.multLocal(force);
((PhysicsRigidBody) physicsCollisionObject).applyImpulse(vector2, Vector3f.ZERO);
}
}
space.removeTickListener(this);
space.remove(ghostObject);
}
示例4: scanSpatial
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
private void scanSpatial(Spatial model) {
AnimControl animControl = model.getControl(AnimControl.class);
Map<Integer, List<Float>> pointsMap = null;
if (weightThreshold == -1.0f) {
pointsMap = RagdollUtils.buildPointMap(model);
}
skeleton = animControl.getSkeleton();
skeleton.resetAndUpdate();
for (int i = 0; i < skeleton.getRoots().length; i++) {
Bone childBone = skeleton.getRoots()[i];
if (childBone.getParent() == null) {
logger.log(Level.INFO, "Found root bone in skeleton {0}", skeleton);
baseRigidBody = new PhysicsRigidBody(new BoxCollisionShape(Vector3f.UNIT_XYZ.mult(0.1f)), 1);
baseRigidBody.setKinematic(mode == Mode.Kinetmatic);
boneRecursion(model, childBone, baseRigidBody, 1, pointsMap);
}
}
}
示例5: SixDofJoint
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
/**
* @param pivotA local translation of the joint connection point in node A
* @param pivotB local translation of the joint connection point in node B
*/
public SixDofJoint(PhysicsRigidBody nodeA, PhysicsRigidBody nodeB, Vector3f pivotA, Vector3f pivotB, Matrix3f rotA, Matrix3f rotB, boolean useLinearReferenceFrameA) {
super(nodeA, nodeB, pivotA, pivotB);
this.useLinearReferenceFrameA = useLinearReferenceFrameA;
Transform transA = new Transform(Converter.convert(rotA));
Converter.convert(pivotA, transA.origin);
Converter.convert(rotA, transA.basis);
Transform transB = new Transform(Converter.convert(rotB));
Converter.convert(pivotB, transB.origin);
Converter.convert(rotB, transB.basis);
constraint = new Generic6DofConstraint(nodeA.getObjectId(), nodeB.getObjectId(), transA, transB, useLinearReferenceFrameA);
gatherMotors();
}
示例6: addRigidBody
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
private void addRigidBody(PhysicsRigidBody node) {
physicsNodes.put(node.getObjectId(), node);
//Workaround
//It seems that adding a Kinematic RigidBody to the dynamicWorld prevent it from being non kinematic again afterward.
//so we add it non kinematic, then set it kinematic again.
boolean kinematic = false;
if (node.isKinematic()) {
kinematic = true;
node.setKinematic(false);
}
dynamicsWorld.addRigidBody(node.getObjectId());
if (kinematic) {
node.setKinematic(true);
}
Logger.getLogger(PhysicsSpace.class.getName()).log(Level.INFO, "Adding RigidBody {0} to physics space.", node.getObjectId());
if (node instanceof PhysicsVehicle) {
Logger.getLogger(PhysicsSpace.class.getName()).log(Level.INFO, "Adding vehicle constraint {0} to physics space.", ((PhysicsVehicle) node).getVehicleId());
((PhysicsVehicle) node).createVehicle(this);
dynamicsWorld.addVehicle(((PhysicsVehicle) node).getVehicleId());
}
}
示例7: addRigidBody
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
private void addRigidBody(PhysicsRigidBody node) {
physicsNodes.put(node.getObjectId(), node);
//Workaround
//It seems that adding a Kinematic RigidBody to the dynamicWorld prevent it from being non kinematic again afterward.
//so we add it non kinematic, then set it kinematic again.
boolean kinematic = false;
if (node.isKinematic()) {
kinematic = true;
node.setKinematic(false);
}
addRigidBody(physicsSpaceId, node.getObjectId());
if (kinematic) {
node.setKinematic(true);
}
Logger.getLogger(PhysicsSpace.class.getName()).log(Level.FINE, "Adding RigidBody {0} to physics space.", node.getObjectId());
if (node instanceof PhysicsVehicle) {
Logger.getLogger(PhysicsSpace.class.getName()).log(Level.FINE, "Adding vehicle constraint {0} to physics space.", Long.toHexString(((PhysicsVehicle) node).getVehicleId()));
((PhysicsVehicle) node).createVehicle(this);
addVehicle(physicsSpaceId, ((PhysicsVehicle) node).getVehicleId());
// dynamicsWorld.addVehicle(((PhysicsVehicle) node).getVehicleId());
}
}
示例8: finalize
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
protected void finalize() throws Throwable {
for(;;) {
try {
while(physicsJoints.size() > 0) {
remove(physicsJoints.get(0));
}
while(physicsNodes.size() > 0) {
for(PhysicsRigidBody node : physicsNodes.values()) {
remove(node);
break;
}
}
super.finalize();
Logger.getLogger(this.getClass().getName()).log(Level.FINE, "Finalizing PhysicsSpace {0}", Long.toHexString(physicsSpaceId));
finalizeNative(physicsSpaceId);
break;
} catch(Exception ex) {
Logger.getLogger(PhysicsSpace.class.getName()).log(Level.SEVERE, "finalize failed.", ex);
}
}
}
示例9: getObject
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
public PhysicsRigidBody getObject(EntityId entityId) {
PhysicsRigidBody body = customShapes.getObject(entityId);
if(body != null){
return body;
}
body = sphereShapes.getObject(entityId);
if(body != null){
return body;
}
body = boxShapes.getObject(entityId);
return body;
}
示例10: addObject
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
protected PhysicsRigidBody addObject(Entity e) {
RigidBody rigidBodyInfo = e.get(RigidBody.class);
CollisionShape shape = provider.getShape(e.get(shapeType));
PhysicsRigidBody rigidBody = new PhysicsRigidBody(shape, rigidBodyInfo.getMass());
rigidBody.setMass(rigidBodyInfo.getMass());
rigidBody.setKinematic(rigidBodyInfo.isKinematic());
//rigidBody.setFriction(rigidBodyInfo.getFriction());
rigidBody.setRestitution(rigidBodyInfo.getRestitution());
rigidBody.setUserObject(e.getId());
physicsSpace.add(rigidBody);
return rigidBody;
}
示例11: prePhysicsTick
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
public void prePhysicsTick(PhysicsSpace space, float tpf) {
collidingObjects.applyChanges();
collidingObjects.forEach(entity -> entityData.removeComponent(entity.getId(), Collision.class));
collisionGroups.applyChanges();
collisionGroups.forEach(entity -> {
PhysicsRigidBody rigidBody = rigidBodies.getObject(entity.getId());
if(rigidBody != null){
CollisionGroup collisionGroup = entity.get(CollisionGroup.class);
rigidBody.setCollideWithGroups(collisionGroup.getCollideWithGroups());
rigidBody.setCollisionGroup(collisionGroup.getCollisionGroup());
}
});
}
示例12: prePhysicsTick
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
public void prePhysicsTick(PhysicsSpace space, float tpf) {
warpVelocities.applyChanges();
warpVelocities.forEach(entity -> {
PhysicsRigidBody rigidBody = rigidBodies.getObject(entity.getId());
if(rigidBody != null){
WarpVelocity warpVelocity = entity.get(WarpVelocity.class);
rigidBody.setLinearVelocity(warpVelocity.getLinearVelocity());
rigidBody.setAngularVelocity(warpVelocity.getAngularVelocity());
}
entityData.removeComponent(entity.getId(), WarpVelocity.class);
});
}
示例13: prePhysicsTick
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
public void prePhysicsTick(PhysicsSpace space, float tpf) {
gravities.applyChanges();
gravities.forEach(entity -> {
PhysicsRigidBody rigidBody = rigidBodies.getObject(entity.getId());
if(rigidBody != null){
rigidBody.setGravity(entity.get(Gravity.class).getForce());
}
});
}
示例14: BulletRigidBodyDebugControl
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
public BulletRigidBodyDebugControl(@NotNull final BulletDebugAppState debugAppState,
@NotNull final PhysicsRigidBody body) {
super(debugAppState);
this.body = body;
this.currentShape = body.getCollisionShape();
this.geom = getDebugShape(body.getCollisionShape());
this.geom.setName(body.toString());
this.geom.setMaterial(debugAppState.getDebugBlue());
}
示例15: controlUpdate
import com.jme3.bullet.objects.PhysicsRigidBody; //导入依赖的package包/类
@Override
protected void controlUpdate(final float tpf) {
final PhysicsRigidBody body = getBody();
final CollisionShape shape = body.getCollisionShape();
if (currentShape != shape) {
final Node node = (Node) getSpatial();
node.detachChild(geom);
geom = getDebugShape(shape);
node.attachChild(geom);
currentShape = shape;
}
if (body.isActive()) {
geom.setMaterial(debugAppState.getDebugMagenta());
} else {
geom.setMaterial(debugAppState.getDebugBlue());
}
final Vector3f physicsLocation = body.getPhysicsLocation(physicalLocation);
final Quaternion physicsRotation = body.getPhysicsRotation(physicalRotation);
applyPhysicsTransform(physicsLocation, physicsRotation);
geom.setLocalScale(shape.getScale());
}