
package ammonite
package $file.src.main.resources
import _root_.ammonite.interp.api.InterpBridge.{
  value => interp
}
import _root_.ammonite.interp.api.InterpBridge.value.{
  exit
}
import _root_.ammonite.interp.api.IvyConstructor.{
  ArtifactIdExt,
  GroupIdExt
}
import _root_.ammonite.runtime.tools.{
  browse,
  grep,
  time,
  tail
}
import _root_.ammonite.repl.tools.{
  desugar,
  source
}
import _root_.ammonite.main.Router.{
  doc,
  main
}
import _root_.ammonite.repl.tools.Util.{
  pathScoptRead
}


object hello2{
/*<script>*/import $repo.$                            
// import $repo.`https://bintray.com/jmonkeyengine/com.jme3`
// import $file.dep
import $ivy.$                                         
// import $ivy.`wow.doge:game:1.0-SNAPSHOT`
import $ivy.$                              
// import wow.doge.game.types.GameScript
import com.jme3.scene.control.Control

// println("hello from script")

// class Scr extends GameScript {
//   def start(): Unit = println("hello from start")

//   def stop(): Unit = println("hello from stop")
// }

// // class SomeClass extends Control {}

// @main
// def main(): GameScript = new Scr()
import com.simsilica.es.base.DefaultEntityData
import com.simsilica.es.EntityData
import com.jme3.app.Application
import wow.doge.mygame.game.Implicits._
import wow.doge.mygame.components.TestComponent
import com.jme3.scene.shape.Box
import com.jme3.scene.Geometry
import com.jme3.material.Material
import com.jme3.math.ColorRGBA
import com.jme3.asset.AssetManager
import com.jme3.math.Vector3f
import wow.doge.mygame.state._
class TestAppState(
    // private var _entity: Option[EntityData] = Some(new DefaultEntityData())
) extends MyBaseState {
  protected lazy val b = new Box(1, 1, 1)
  protected lazy val geom = new Geometry("Box", b)
  protected lazy val mat = Material(
    assetManager = assetManager,
    path = "Common/MatDefs/Misc/Unshaded.j3md"
  )

//   def entity = _entity
  // override def initialize(app: Application): Unit = {
  //   super.initialize(app)

  // }

  override def init() = {
    entityData
      .createEntity()
      .withComponents(TestComponent())
    // entityData.setComponents(x, TestComponent())
    val es = entityData.getEntities(classOf[TestComponent])
    println(es)
    geom.setMaterial(mat)
    rootNode.attachChild(geom)

    // geom.foreach(e => {

    // })
  }

  override def update(tpf: Float) = {
    geom.rotate(0, 0.5f * tpf, 0)
    geom.move(new Vector3f(0, 1 * tpf, 0))
  }

  override def cleanup(app: Application): Unit = {
    // _entity.map(_.close())
    // _entity = None
  }

  override def onEnable(): Unit = {}

  override def onDisable(): Unit = {}

}

object Material {
  def apply(
      color: String = "Color",
      colorType: com.jme3.math.ColorRGBA = ColorRGBA.Blue,
      assetManager: AssetManager,
      path: String
  ): Material = {
    val mat =
      new Material(assetManager, path)
    mat.setColor(color, colorType)
    mat
  }
}

@main
def main(): MyBaseState = new TestAppState()
/*</script>*/ /*<generated>*/
def $main() = { scala.Iterator[String]() }
  override def toString = "hello2"
  /*</generated>*/
}
