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.nodes
import com.jme3.scene.Node import com.jme3.scene.CameraNode import com.jme3.scene.Geometry import com.jme3.renderer.Camera import wow.doge.mygame.implicits._ import com.jme3.asset.AssetManager import wow.doge.mygame.state.MyMaterial import com.jme3.math.Vector3f import com.jme3.scene.control.CameraControl.ControlDirection import com.jme3.syntax._ import com.jme3.scene.shape.Box
// class PlayerNode(val name: String) extends Node(name) {}
object PlayerNode { def defaultMesh() = { lazy val b = new Box(1, 1, 1) lazy val geom = new Geometry("playerMesh", b) geom } def defaultTexture(assetManager: AssetManager) = MyMaterial( assetManager = assetManager, path = os.rel / "Common" / "MatDefs" / "Misc" / "Unshaded.j3md" )
def apply( modelPath: os.RelPath, cam: Camera )(assetManager: AssetManager) = { lazy val playerNode = new Node("PlayerNode") lazy val camNode = new CameraNode("CameraNode", cam)
// lazy val camNode = new CameraNode("CameraNode", simpleApp.getCamera())
// camNode.setCamera(simpleApp.getCamera())
val playerModel: Node = assetManager.loadModel(modelPath).asInstanceOf[Node] discard { playerNode .child(camNode) .child(playerModel) // playerNode.children(Seq(camNode, geom))
}
{ camNode.setControlDir(ControlDirection.SpatialToCamera) camNode.setLocalTranslation( new Vector3f(0, 1.5f, 10) ) camNode.lookAt(playerNode.getLocalTranslation(), Vector3f.UNIT_Y) }
playerNode } def apply( mesh: Geometry = defaultMesh(), texturePath: os.RelPath = os.rel / "Common" / "MatDefs" / "Misc" / "Unshaded.j3md", cam: Camera )(assetManager: AssetManager): Node = {
lazy val playerNode = new Node("PlayerNode") lazy val camNode = new CameraNode("CameraNode", cam)
{ val mat = MyMaterial( assetManager = assetManager, path = texturePath ) mesh.setMaterial(mat) }
// lazy val camNode = new CameraNode("CameraNode", simpleApp.getCamera())
// camNode.setCamera(simpleApp.getCamera())
discard { playerNode .child(camNode) .child(mesh) // playerNode.children(Seq(camNode, geom))
}
{ camNode.setControlDir(ControlDirection.SpatialToCamera) camNode.setLocalTranslation( new Vector3f(0, 1.5f, 10) ) camNode.lookAt(playerNode.getLocalTranslation(), Vector3f.UNIT_Y) }
playerNode } }
|