forked from nova/jmonkey-test
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.
94 lines
2.5 KiB
94 lines
2.5 KiB
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
|
|
}
|
|
}
|