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.

69 lines
2.0 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. package wow.doge.mygame.state
  2. import com.jme3.app.Application
  3. import com.jme3.app.SimpleApplication
  4. import com.jme3.app.state.AppState
  5. import com.jme3.scene.Node
  6. import com.jme3.app.state.BaseAppState
  7. import com.simsilica.es.EntityData
  8. import com.simsilica.es.base.DefaultEntityData
  9. import com.jme3.scene.Spatial
  10. trait MyBaseState extends BaseAppState {
  11. var simpleApp: SimpleApplication = null
  12. implicit val entityData: EntityData = new DefaultEntityData()
  13. def stateManager = simpleApp.getStateManager
  14. def guiNode = simpleApp.getGuiNode
  15. def rootNode = simpleApp.getRootNode
  16. def assetManager = simpleApp.getAssetManager
  17. def inputManager = simpleApp.getInputManager
  18. def cam = simpleApp.getCamera
  19. override protected final def initialize(app: Application): Unit = {
  20. simpleApp = app.asInstanceOf[SimpleApplication]
  21. init()
  22. // stateManager.getState(classOf[FlyCamAppState]).getCamera().setMoveSpeed(100)
  23. }
  24. protected def init(): Unit
  25. protected def stop(): Unit
  26. override protected def cleanup(app: Application): Unit = {
  27. entityData.close()
  28. // stop()
  29. }
  30. protected def getChildOption(parent: Node, id: String) =
  31. Option(parent.getChild(id))
  32. protected def getOrCreateSpatial(parent: Node, id: String): Spatial =
  33. Option(parent.getChild(id)).getOrElse {
  34. val node: Spatial = new Node(id)
  35. parent.attachChild(node)
  36. node
  37. }
  38. protected def enableStates(classes: Class[_ <: AppState]*) =
  39. setEnabledToStates(true, classes: _*)
  40. protected def disableStates(classes: Class[_ <: AppState]*) =
  41. setEnabledToStates(false, classes: _*)
  42. protected def setEnabledToStates(
  43. enabled: Boolean,
  44. classes: Class[_ <: AppState]*
  45. ) = {
  46. for (clazz <- classes) {
  47. val st = stateManager.getState(clazz)
  48. if (st != null) st.setEnabled(enabled)
  49. }
  50. }
  51. protected def removeStates(classes: Class[_ <: AppState]*) = {
  52. for (clazz <- classes) {
  53. val st = stateManager.getState(clazz)
  54. if (st != null) stateManager.detach(st)
  55. }
  56. }
  57. }