package wow.doge.mygame.game.subsystems.level import com.jme3.bullet.control.RigidBodyControl import com.jme3.light.AmbientLight import com.jme3.light.DirectionalLight import com.jme3.scene.Spatial import com.jme3.bullet.PhysicsSpace import cats.effect.concurrent.Ref import monix.bio.Task import com.jme3.scene.Node import wow.doge.mygame.implicits._ class Level( model: Spatial, physicsControl: RigidBodyControl, ambientLight: AmbientLight, directionalLight: DirectionalLight ) { def addToGame(rootNode: Ref[Task, Node], physicsSpace: PhysicsSpace) = { for { _ <- rootNode.update(_ :+ model) _ <- rootNode.update { r => r.addLight(ambientLight) r } _ <- rootNode.update { r => r.addLight(directionalLight) r } _ <- Task(physicsSpace += model) _ <- Task(physicsSpace += physicsControl) } yield () } }