|
|
package wow.doge.mygame.game.subsystems.level import com.jme3.asset.AssetManager import com.jme3.bullet.control.RigidBodyControl import com.jme3.bullet.util.CollisionShapeFactory import com.jme3.light.AmbientLight import com.jme3.light.DirectionalLight import com.jme3.math.ColorRGBA import com.jme3.math.Vector3f import com.jme3.renderer.ViewPort import com.jme3.scene.Spatial object DefaultGameLevel {
def apply( assetManager: AssetManager, viewPort: ViewPort ) = { lazy val sceneModel: Spatial = 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)
viewPort.setBackgroundColor(new ColorRGBA(0.7f, 0.8f, 1f, 1f)) sceneModel.setLocalScale(2f) sceneModel.addControl(landscape) // discard { 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);
new Level( model = sceneModel, physicsControl = landscape, ambientLight = al, directionalLight = dl ) } }
|