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.

63 lines
1.8 KiB

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. trait MyBaseState extends BaseAppState {
  10. var simpleApp: SimpleApplication = null
  11. implicit val entityData: EntityData = new DefaultEntityData()
  12. def stateManager = simpleApp.getStateManager
  13. def guiNode = simpleApp.getGuiNode
  14. def rootNode = simpleApp.getRootNode
  15. def assetManager = simpleApp.getAssetManager
  16. def inputManager = simpleApp.getInputManager
  17. def cam = simpleApp.getCamera
  18. override protected final def initialize(app: Application): Unit = {
  19. simpleApp = app.asInstanceOf[SimpleApplication]
  20. init()
  21. // stateManager.getState(classOf[FlyCamAppState]).getCamera().setMoveSpeed(100)
  22. }
  23. protected def init(): Unit
  24. override protected def cleanup(app: Application): Unit = {
  25. entityData.close()
  26. }
  27. protected def getOrCreateNode(parent: Node, id: String) =
  28. Option(parent.getChild(id)).fold {
  29. val node = new Node(id)
  30. parent.attachChild(node)
  31. node
  32. }(node => node.asInstanceOf[Node])
  33. protected def enableStates(classes: Class[_ <: AppState]*) =
  34. setEnabledToStates(true, classes: _*)
  35. protected def disableStates(classes: Class[_ <: AppState]*) =
  36. setEnabledToStates(false, classes: _*)
  37. protected def setEnabledToStates(
  38. enabled: Boolean,
  39. classes: Class[_ <: AppState]*
  40. ) = {
  41. for (clazz <- classes) {
  42. val st = stateManager.getState(clazz)
  43. if (st != null) st.setEnabled(enabled)
  44. }
  45. }
  46. protected def removeStates(classes: Class[_ <: AppState]*) = {
  47. for (clazz <- classes) {
  48. val st = stateManager.getState(clazz)
  49. if (st != null) stateManager.detach(st)
  50. }
  51. }
  52. }