本文整理汇总了Java中com.jme3.bullet.objects.PhysicsRigidBody.setKinematic方法的典型用法代码示例。如果您正苦于以下问题:Java PhysicsRigidBody.setKinematic方法的具体用法?Java PhysicsRigidBody.setKinematic怎么用?Java PhysicsRigidBody.setKinematic使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.jme3.bullet.objects.PhysicsRigidBody
的用法示例。
在下文中一共展示了PhysicsRigidBody.setKinematic方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: 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);
}
}
}
示例3: 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());
}
}
示例4: 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());
}
}
示例5: 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;
}
示例6: boneRecursion
import com.jme3.bullet.objects.PhysicsRigidBody; //导入方法依赖的package包/类
private void boneRecursion(Spatial model, Bone bone, PhysicsRigidBody parent, int reccount, Map<Integer, List<Float>> pointsMap) {
PhysicsRigidBody parentShape = parent;
if (boneList.isEmpty() || boneList.contains(bone.getName())) {
PhysicsBoneLink link = new PhysicsBoneLink();
link.bone = bone;
//creating the collision shape
HullCollisionShape shape = null;
if (pointsMap != null) {
//build a shape for the bone, using the vertices that are most influenced by this bone
shape = RagdollUtils.makeShapeFromPointMap(pointsMap, RagdollUtils.getBoneIndices(link.bone, skeleton, boneList), initScale, link.bone.getModelSpacePosition());
} else {
//build a shape for the bone, using the vertices associated with this bone with a weight above the threshold
shape = RagdollUtils.makeShapeFromVerticeWeights(model, RagdollUtils.getBoneIndices(link.bone, skeleton, boneList), initScale, link.bone.getModelSpacePosition(), weightThreshold);
}
PhysicsRigidBody shapeNode = new PhysicsRigidBody(shape, rootMass / (float) reccount);
shapeNode.setKinematic(mode == Mode.Kinetmatic);
totalMass += rootMass / (float) reccount;
link.rigidBody = shapeNode;
link.initalWorldRotation = bone.getModelSpaceRotation().clone();
if (parent != null) {
//get joint position for parent
Vector3f posToParent = new Vector3f();
if (bone.getParent() != null) {
bone.getModelSpacePosition().subtract(bone.getParent().getModelSpacePosition(), posToParent).multLocal(initScale);
}
SixDofJoint joint = new SixDofJoint(parent, shapeNode, posToParent, new Vector3f(0, 0, 0f), true);
preset.setupJointForBone(bone.getName(), joint);
link.joint = joint;
joint.setCollisionBetweenLinkedBodys(false);
}
boneLinks.put(bone.getName(), link);
shapeNode.setUserObject(link);
parentShape = shapeNode;
}
for (Iterator<Bone> it = bone.getChildren().iterator(); it.hasNext();) {
Bone childBone = it.next();
boneRecursion(model, childBone, parentShape, reccount + 1, pointsMap);
}
}