Class DirtyTrackerSystem
- 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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfacestatic final classstatic final classFluent builder transform/geometry submask. -
Field Summary
Fields inherited from class com.artemis.BaseSystem
world -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcamera(int e) com.badlogic.gdx.utils.IntArrayLive list of CAMERA-ticketed entities (do not modify).voidclearAll()voidclearAllGeomSub(int e) voidclearAllPhysicsSub(int e) voidclearEntity(int e) voidFlush de fin de frame (coarse + sub).voidclearGeomSub(int e, int subMask) voidclearPhysicsSub(int e, int subMask) intcoarseBits(int e) coarse onlyvoidcolor(int e) com.badlogic.gdx.utils.IntArrayLive list of COLOR-ticketed entities (do not modify).voidconsume(int bit, DirtyTrackerSystem.IntConsumer fn) voidvoidconsumeMask(int mask, DirtyTrackerSystem.IntConsumer fn) voidvoidensureCapacity(int capacity) voidgeometry(int e, int geomSubMask) Marks coarse GEOMETRY and ORs GeometryDirty.* submask into the packed field.com.badlogic.gdx.utils.IntArrayLive list of GEOMETRY-ticketed entities (do not modify).intgeomSub(int e) protected voidbooleanisDirty(int e, int coarseMask) voidjoint(int e, int subMask) com.badlogic.gdx.utils.IntArrayintjointSub(int e) voidlayer(int e) com.badlogic.gdx.utils.IntArrayLive list of LAYER-ticketed entities (do not modify).voidmark(int e, int coarseMask) voidmarkAll(int coarseMask) voidmaterial(int e) com.badlogic.gdx.utils.IntArrayLive list of MATERIAL-ticketed entities (do not modify).voidorder(int e) com.badlogic.gdx.utils.IntArrayLive list of ORDER-ticketed entities (do not modify).intpackedBits(int e) packed bits (coarse + geom sub).voidphysics(int e, int subMask) com.badlogic.gdx.utils.IntArrayintphysicsSub(int e) protected voidMethods inherited from class com.artemis.BaseSystem
begin, checkProcessing, dispose, end, getWorld, isEnabled, process, setEnabled, setWorld
-
Constructor Details
-
DirtyTrackerSystem
public DirtyTrackerSystem(int initialCapacityHint)
-
-
Method Details
-
initialize
protected void initialize()- Overrides:
initializein classcom.artemis.BaseSystem
-
processSystem
protected void processSystem()- Specified by:
processSystemin classcom.artemis.BaseSystem
-
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
-
consumeMask
-
consumePhysics
-
consumeJoints
-
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)
-