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.
69 lines
2.0 KiB
69 lines
2.0 KiB
package wow.doge.mygame.state
|
|
|
|
import com.jme3.app.Application
|
|
import com.jme3.app.SimpleApplication
|
|
import com.jme3.app.state.AppState
|
|
import com.jme3.scene.Node
|
|
import com.jme3.app.state.BaseAppState
|
|
import com.simsilica.es.EntityData
|
|
import com.simsilica.es.base.DefaultEntityData
|
|
import com.jme3.scene.Spatial
|
|
|
|
trait MyBaseState extends BaseAppState {
|
|
|
|
var simpleApp: SimpleApplication = null
|
|
implicit val entityData: EntityData = new DefaultEntityData()
|
|
def stateManager = simpleApp.getStateManager
|
|
def guiNode = simpleApp.getGuiNode
|
|
def rootNode = simpleApp.getRootNode
|
|
def assetManager = simpleApp.getAssetManager
|
|
def inputManager = simpleApp.getInputManager
|
|
def cam = simpleApp.getCamera
|
|
|
|
override protected final def initialize(app: Application): Unit = {
|
|
simpleApp = app.asInstanceOf[SimpleApplication]
|
|
init()
|
|
// stateManager.getState(classOf[FlyCamAppState]).getCamera().setMoveSpeed(100)
|
|
}
|
|
|
|
protected def init(): Unit
|
|
protected def stop(): Unit
|
|
|
|
override protected def cleanup(app: Application): Unit = {
|
|
entityData.close()
|
|
// stop()
|
|
}
|
|
|
|
protected def getChildOption(parent: Node, id: String) =
|
|
Option(parent.getChild(id))
|
|
|
|
protected def getOrCreateSpatial(parent: Node, id: String): Spatial =
|
|
Option(parent.getChild(id)).getOrElse {
|
|
val node: Spatial = new Node(id)
|
|
parent.attachChild(node)
|
|
node
|
|
}
|
|
|
|
protected def enableStates(classes: Class[_ <: AppState]*) =
|
|
setEnabledToStates(true, classes: _*)
|
|
protected def disableStates(classes: Class[_ <: AppState]*) =
|
|
setEnabledToStates(false, classes: _*)
|
|
|
|
protected def setEnabledToStates(
|
|
enabled: Boolean,
|
|
classes: Class[_ <: AppState]*
|
|
) = {
|
|
for (clazz <- classes) {
|
|
val st = stateManager.getState(clazz)
|
|
if (st != null) st.setEnabled(enabled)
|
|
}
|
|
}
|
|
|
|
protected def removeStates(classes: Class[_ <: AppState]*) = {
|
|
for (clazz <- classes) {
|
|
val st = stateManager.getState(clazz)
|
|
if (st != null) stateManager.detach(st)
|
|
}
|
|
}
|
|
|
|
}
|