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 } }