当前位置: 首页>>代码示例>>Java>>正文


Java PhysicsRigidBody类代码示例

本文整理汇总了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?
    }
 
开发者ID:jvpichowski,项目名称:ZayES-Bullet,代码行数:17,代码来源:RigidBodyContainer.java

示例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);
        }
    });
}
 
开发者ID:jvpichowski,项目名称:ZayES-Bullet,代码行数:20,代码来源:PhysicsPositionSystem.java

示例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);
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:20,代码来源:BombControl.java

示例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);
        }
    }
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:20,代码来源:KinematicRagdollControl.java

示例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();
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:20,代码来源:SixDofJoint.java

示例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());
    }
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:24,代码来源:PhysicsSpace.java

示例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());
        }
    }
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:25,代码来源:PhysicsSpace.java

示例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);
        }
    }
}
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:23,代码来源:PhysicsSpace.java

示例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;
}
 
开发者ID:jvpichowski,项目名称:ZayES-Bullet,代码行数:14,代码来源:RigidBodyContainer.java

示例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;
}
 
开发者ID:jvpichowski,项目名称:ZayES-Bullet,代码行数:14,代码来源:RigidBodyContainer.java

示例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());
        }
    });
}
 
开发者ID:jvpichowski,项目名称:ZayES-Bullet,代码行数:15,代码来源:CollisionSystem.java

示例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);
    });
}
 
开发者ID:jvpichowski,项目名称:ZayES-Bullet,代码行数:14,代码来源:VelocitySystem.java

示例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());
        }
    });
}
 
开发者ID:jvpichowski,项目名称:ZayES-Bullet,代码行数:11,代码来源:GravitySystem.java

示例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());
}
 
开发者ID:JavaSaBr,项目名称:jmonkeybuilder-extension,代码行数:10,代码来源:BulletRigidBodyDebugControl.java

示例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());
}
 
开发者ID:JavaSaBr,项目名称:jmonkeybuilder-extension,代码行数:28,代码来源:BulletRigidBodyDebugControl.java


注:本文中的com.jme3.bullet.objects.PhysicsRigidBody类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。