From 978215b510eaa50f4101023b40efc68ce8d1fbab Mon Sep 17 00:00:00 2001 From: Rohan Sircar Date: Sun, 10 Jan 2021 12:36:04 +0530 Subject: [PATCH] Execute on called at one place instead of many --- src/main/scala/wow/doge/mygame/MainApp.scala | 91 +++++++++---------- .../scala/wow/doge/mygame/game/GameApp.scala | 4 +- .../entities/player/PlayerController.scala | 2 +- 3 files changed, 44 insertions(+), 53 deletions(-) diff --git a/src/main/scala/wow/doge/mygame/MainApp.scala b/src/main/scala/wow/doge/mygame/MainApp.scala index eb153a7..612e104 100644 --- a/src/main/scala/wow/doge/mygame/MainApp.scala +++ b/src/main/scala/wow/doge/mygame/MainApp.scala @@ -101,7 +101,10 @@ class MainApp( bulletAppState <- Task(new BulletAppState()) _ <- Task(stateManager.attach(bulletAppState)) _ <- logger.info("Initializing console stream") - _ <- wire[MainAppDelegate].init(gameApp.scheduler) + _ <- + wire[MainAppDelegate] + .init(gameApp.scheduler) + .executeOn(gameApp.scheduler) } yield gameAppFib } @@ -165,7 +168,6 @@ class MainAppDelegate( rootNode, bulletAppState.physicsSpace ) - .executeOn(appScheduler) _ <- createPlayerController(appScheduler) .absorbWith(e => DummyException("boom")) .onErrorRestart(3) @@ -240,55 +242,44 @@ class MainAppDelegate( def createTestNpc( appScheduler: monix.execution.Scheduler, npcName: String - ) = - // : IO[PlayerController.Error, Unit] = - { - val initialPos = ImVector3f(50, 5, 0) - // val modelPath = os.rel / "Models" / "Jaime" / "Jaime.j3o" - val npcPhysicsControl = new BetterCharacterControl(1.5f, 6f, 1f) - // (1f, 2.1f, 10f) - .withJumpForce(ImVector3f(0, 5f, 0)) - // val npcMovementActor = AkkaUtils.spawnActorL2( - // new NpcMovementActor2.Props( - // initialPos, - // tickEventBus, - // npcPhysicsControl - // ).behavior, - // s"${npcName}-npcMovementActor" - // ) - val mbNpcNode = PlayerController.Defaults.defaultNpcNode( - assetManager, - initialPos, - npcPhysicsControl, - npcName - ) - val npcActorTask = AkkaUtils.spawnActorL( - NpcActorSupervisor - .Props( - new NpcMovementActor.Props( - enqueueR, - initialPos, - // tickEventBus, - npcPhysicsControl - ).behavior, - npcName, - initialPos - ) - .behavior, - s"${npcName}-npcActorSupervisor" - ) - // .taggedWith[PlayerControllerTags.PlayerTag] + ) = { + val initialPos = ImVector3f(50, 5, 0) + val npcPhysicsControl = new BetterCharacterControl(1.5f, 6f, 1f) + // (1f, 2.1f, 10f) + .withJumpForce(ImVector3f(0, 5f, 0)) + val mbNpcNode = PlayerController.Defaults.defaultNpcNode( + assetManager, + initialPos, + npcPhysicsControl, + npcName + ) + val npcActorTask = AkkaUtils.spawnActorL( + NpcActorSupervisor + .Props( + new NpcMovementActor.Props( + enqueueR, + initialPos, + // tickEventBus, + npcPhysicsControl + ).behavior, + npcName, + initialPos + ) + .behavior, + s"${npcName}-npcActorSupervisor" + ) + // .taggedWith[PlayerControllerTags.PlayerTag] - for { - npcNode <- IO.fromEither(mbNpcNode) - npcActor <- npcActorTask - _ <- IO { - physicsSpace += npcPhysicsControl - physicsSpace += npcNode - rootNode += npcNode - } - } yield npcActor - } + for { + npcNode <- IO.fromEither(mbNpcNode) + npcActor <- npcActorTask + _ <- IO { + physicsSpace += npcPhysicsControl + physicsSpace += npcNode + rootNode += npcNode + } + } yield npcActor + } } diff --git a/src/main/scala/wow/doge/mygame/game/GameApp.scala b/src/main/scala/wow/doge/mygame/game/GameApp.scala index eb2b7fc..d149a2a 100644 --- a/src/main/scala/wow/doge/mygame/game/GameApp.scala +++ b/src/main/scala/wow/doge/mygame/game/GameApp.scala @@ -93,7 +93,7 @@ object GameApp { def resource( logger: Logger[Task], - jmeScheduler: Scheduler, + jmeThread: Scheduler, schedulers: Schedulers ) = Resource.make( @@ -112,7 +112,7 @@ object GameApp { app.setSettings(settings) } gameApp <- Task(new GameApp(logger, app)) - fib <- gameApp.start.executeOn(jmeScheduler).start + fib <- gameApp.start.executeOn(jmeThread).start _ <- Task.fromCancelablePromise(startSignal) } yield gameApp -> fib )(_._2.cancel) diff --git a/src/main/scala/wow/doge/mygame/game/entities/player/PlayerController.scala b/src/main/scala/wow/doge/mygame/game/entities/player/PlayerController.scala index 908a3c4..4ed4495 100644 --- a/src/main/scala/wow/doge/mygame/game/entities/player/PlayerController.scala +++ b/src/main/scala/wow/doge/mygame/game/entities/player/PlayerController.scala @@ -96,7 +96,7 @@ object PlayerController { } } yield ()) .onErrorHandleWith(e => IO.raiseError(GenericError(e.getMessage()))) - .executeOn(appScheduler) + // .executeOn(appScheduler) } def apply(