From b14e3085d61c8f16e5dfbd348a8cbd7e5f86e263 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 17 Dec 2022 20:15:41 +0900 Subject: [PATCH] how do atomicsomething work --- .../terrarum/modulebasegame/gameitems/FixtureItemBase.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt index baeef4455..644c76fb2 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt @@ -59,12 +59,13 @@ open class FixtureItemBase(originalID: ItemID, val fixtureClassName: String) : G override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) { // println("ghost: ${ghostItem}; ghostInit = $ghostInit; instance: $hash") - if (!ghostInit.get()) { - ghostItem.getAndSet(makeFixture()) - ghostInit.getAndSet(true) + if (!ghostInit.compareAndExchangeAcquire(false, true)) { + ghostItem.set(makeFixture()) // printdbg(this, "ghost item initialised: $ghostItem") + } + (INGAME as TerrarumIngame).blockMarkingActor.let { it.setGhost(ghostItem.get()) it.isVisible = true