Testing out JmonkeyEngine to make a game in Scala with Akka Actors within a pure FP layer
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package wow.doge.mygame.game.subsystems.level import com.jme3.bullet.BulletAppState import com.jme3.bullet.collision.shapes.CapsuleCollisionShape import com.jme3.bullet.control.CharacterControl import com.jme3.bullet.control.RigidBodyControl import com.jme3.bullet.util.CollisionShapeFactory import com.jme3.scene.Spatial import wow.doge.mygame.implicits._ import wow.doge.mygame.game.GameApp import com.jme3.syntax._ import com.jme3.math.ColorRGBA import com.jme3.light.DirectionalLight import com.jme3.math.Vector3f import com.jme3.light.AmbientLight object DefaultGameLevel {
// lazy valbulletAppState: BulletAppState
// bulletAppState.setThreadingType(ThreadingType.SEQUENTIAL)
// We set up collision detection for the scene by creating a
// compound collision shape and a static RigidBodyControl with mass zero.
// We set up collision detection for the player by creating
// a capsule collision shape and a CharacterControl.
// The CharacterControl offers extra settings for
// size, stepheight, jumping, falling, and gravity.
// We also put the player in its starting position.
lazy val capsuleShape = new CapsuleCollisionShape(1.5f, 6f, 1)
lazy val player: CharacterControl = new CharacterControl(capsuleShape, 0.05f) def apply(app: GameApp, bulletAppState: BulletAppState) = { lazy val sceneModel: Spatial = app.assetManager.loadModel("main.scene") lazy val sceneShape = CollisionShapeFactory.createMeshShape( sceneModel.toNode match { case util.Right(node) => node case util.Left(ex) => throw new NotImplementedError("No fallback sceneshape") } ) lazy val landscape: RigidBodyControl = new RigidBodyControl(sceneShape, 0)
// // discard { app.stateManager.attach(bulletAppState) }
app.viewPort.setBackgroundColor(new ColorRGBA(0.7f, 0.8f, 1f, 1f)) sceneModel.setLocalScale(2f) sceneModel.addControl(landscape) discard { app.rootNode.attachChild(sceneModel) } bulletAppState.getPhysicsSpace.add(landscape) bulletAppState.getPhysicsSpace.add(player)
val al = new AmbientLight(); al.setColor(ColorRGBA.White.mult(1.3f)); app.rootNode.addLight(al);
val dl = new DirectionalLight(); dl.setColor(ColorRGBA.White); dl.setDirection(new Vector3f(2.8f, -2.8f, -2.8f).normalizeLocal()); app.rootNode.addLight(dl);
} }
|