Class DirtyTrackerSystem

java.lang.Object
com.artemis.BaseSystem
games.pixscape.runtime.system.DirtyTrackerSystem

public final class DirtyTrackerSystem extends com.artemis.BaseSystem
Dirty tracker outside components (per bit) + GEOMETRY submask packed in bitsByEntity[e].

- bitsByEntity[e] : int packed (coarse bits + submask GEOMETRY) - 1 list per coarse bit (IntArray) + idx[] for O(1) swap-pop - purge auto via SubscriptionListener.removed()

Convention: - Le submask GEOMETRY = logical granularity (pos/origin/rot/scale/size). - Le bit coarse GEOMETRY = "render pipeline must be recomputed side sprite sync".

API dev-friendly: dirty.markDirty().transform(e).position().rotation(); dirty.markDirty().material(e); dirty.markDirty().transform(e).all();

IMPORTANT: returned builders are reused (zero alloc). Do not store them.

  • Constructor Details

    • DirtyTrackerSystem

      public DirtyTrackerSystem(int initialCapacityHint)
  • Method Details

    • initialize

      protected void initialize()
      Overrides:
      initialize in class com.artemis.BaseSystem
    • processSystem

      protected void processSystem()
      Specified by:
      processSystem in class com.artemis.BaseSystem
    • markDirty

      public DirtyTrackerSystem.MarkDirty markDirty()
    • ensureCapacity

      public void ensureCapacity(int capacity)
    • mark

      public void mark(int e, int coarseMask)
    • material

      public void material(int e)
    • color

      public void color(int e)
    • order

      public void order(int e)
    • layer

      public void layer(int e)
    • camera

      public void camera(int e)
    • geometry

      public void geometry(int e, int geomSubMask)
      Marks coarse GEOMETRY and ORs GeometryDirty.* submask into the packed field.
    • geomSub

      public int geomSub(int e)
    • clearGeomSub

      public void clearGeomSub(int e, int subMask)
    • clearAllGeomSub

      public void clearAllGeomSub(int e)
    • packedBits

      public int packedBits(int e)
      packed bits (coarse + geom sub).
    • coarseBits

      public int coarseBits(int e)
      coarse only
    • isDirty

      public boolean isDirty(int e, int coarseMask)
    • consume

      public void consume(int bit, DirtyTrackerSystem.IntConsumer fn)
    • consumeMask

      public void consumeMask(int mask, DirtyTrackerSystem.IntConsumer fn)
    • consumePhysics

      public void consumePhysics(DirtyTrackerSystem.IntConsumer fn)
    • consumeJoints

      public void consumeJoints(DirtyTrackerSystem.IntConsumer fn)
    • joint

      public void joint(int e, int subMask)
    • jointSub

      public int jointSub(int e)
    • clearFrame

      public void clearFrame()
      Flush de fin de frame (coarse + sub). Goal: remove dependency on "which system consumes what".

      - Empties all coarse lists. - Clears corresponding coarse bits. - Also clears geomSub for entities still ticketed in GEOMETRY (fail-safe).

      NB: normal flow = UpdateWorldGeometrySystem clearAllGeomSub(e) itself. Here we force to 0 if something was missed (otherwise submask can "leak").

    • clearAll

      public void clearAll()
    • clearEntity

      public void clearEntity(int e)
    • geometryEntities

      public com.badlogic.gdx.utils.IntArray geometryEntities()
      Live list of GEOMETRY-ticketed entities (do not modify).
    • materialEntities

      public com.badlogic.gdx.utils.IntArray materialEntities()
      Live list of MATERIAL-ticketed entities (do not modify).
    • colorEntities

      public com.badlogic.gdx.utils.IntArray colorEntities()
      Live list of COLOR-ticketed entities (do not modify).
    • orderEntities

      public com.badlogic.gdx.utils.IntArray orderEntities()
      Live list of ORDER-ticketed entities (do not modify).
    • layerEntities

      public com.badlogic.gdx.utils.IntArray layerEntities()
      Live list of LAYER-ticketed entities (do not modify).
    • cameraEntities

      public com.badlogic.gdx.utils.IntArray cameraEntities()
      Live list of CAMERA-ticketed entities (do not modify).
    • physicsEntities

      public com.badlogic.gdx.utils.IntArray physicsEntities()
    • jointsEntities

      public com.badlogic.gdx.utils.IntArray jointsEntities()
    • physics

      public void physics(int e, int subMask)
    • physicsSub

      public int physicsSub(int e)
    • clearPhysicsSub

      public void clearPhysicsSub(int e, int subMask)
    • clearAllPhysicsSub

      public void clearAllPhysicsSub(int e)
    • markAll

      public void markAll(int coarseMask)