Package org.boxutil.base
Class SimpleParticleControlData
java.lang.Object
org.boxutil.base.BaseControlData
org.boxutil.base.SimpleParticleControlData
- All Implemented Interfaces:
ControlDataAPI
public class SimpleParticleControlData
extends org.boxutil.base.BaseControlData
Very^32 simple particle dynamic resource manager.
Only for one entity.
For reference.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final ReentrantSpinLockprotected InstanceRenderAPIprotected final int[]protected final boolean[]protected final float[] -
Constructor Summary
ConstructorsConstructorDescriptionSimpleParticleControlData(int maxParticles, float maxDur, float dataDur, boolean ignorePaused) SimpleParticleControlData(int maxParticles, float maxDur, float dataDur, boolean ignorePaused, boolean use3D) -
Method Summary
Modifier and TypeMethodDescriptionRecommend to callsetRemainingTimeToReset(float)orrefreshRemainingTimeToReset(float)after if needs.addParticle(float spawnStartRadius, float velocity, float scale, float out) addParticle(float spawnStartRadius, float velocity, float scale, float in, float full, float out) addParticle(float spawnStartRadius, float velAngRad, float velocity, float scale, Color basecolor, Color emissive, float in, float full, float out) addParticle(float spawnStartRadius, float velocity, float scale, Color basecolor, Color emissive, float in, float full, float out) addParticle(org.lwjgl.util.vector.Vector2f location, float facing, float turnRate, org.lwjgl.util.vector.Vector2f velocity, org.lwjgl.util.vector.Vector2f scale, org.lwjgl.util.vector.Vector2f scaleRate, Color basecolor, Color emissive, float in, float full, float out) Recommend to callsetRemainingTimeToReset(float)orrefreshRemainingTimeToReset(float)after if needs.voidvoidcontrolAdvance(RenderDataAPI renderEntity, float amount) Running on another thread.booleancontrolAlphaBasedTimer(RenderDataAPI renderEntity) AffectsBaseRenderData.getGlobalTimerAlpha().booleancontrolCanRenderNow(RenderDataAPI renderEntity) Check it in each rendering frame.voidcontrolInit(RenderDataAPI renderEntity) Run once as long as linked to a render entity.booleancontrolIsDone(RenderDataAPI renderEntity) Force remove entity if true.booleancontrolIsOnceRender(RenderDataAPI renderEntity) Force remove entity after init and render one frame.booleancontrolRemoveBasedTimer(RenderDataAPI renderEntity) Will callControlDataAPI.controlRemove(RenderDataAPI)when timer of entity is out.booleancontrolRunWhilePaused(RenderDataAPI renderEntity) AffectsControlDataAPI.controlAdvance(RenderDataAPI, float)and compute instance data.voidbooleanvoidrefreshRemainingTimeToReset(float duration) voidsetRemainingTimeToReset(float duration) protected InstanceDataAPItoAddAfter(float setRemaining) protected booleanMethods inherited from class org.boxutil.base.BaseControlData
controlAfterRenderingAdvance, controlBeforeRenderingAdvance, controlRemove
-
Field Details
-
_sync_lock
-
entity
-
stateB
protected final boolean[] stateB -
state
protected final int[] state -
stateF
protected final float[] stateF
-
-
Constructor Details
-
SimpleParticleControlData
public SimpleParticleControlData(int maxParticles, float maxDur, float dataDur, boolean ignorePaused, boolean use3D) - Parameters:
maxDur- The maximum duration for all particles. When a particle is added (unlesssetRemainingTimeToReset(float)orrefreshRemainingTimeToReset(float)called after that), the internal timer is set to this value. Once the timer expires, all particles are considered to have finished playing, at which point the data is reset and rendering is paused until new particles are added.dataDur- rendering once if at (-3000.0f, -1000.0f), always active if less than -3000.0f.
-
SimpleParticleControlData
public SimpleParticleControlData(int maxParticles, float maxDur, float dataDur, boolean ignorePaused) - Parameters:
maxDur- The maximum duration for all particles. When a particle is added (unlesssetRemainingTimeToReset(float)orrefreshRemainingTimeToReset(float)called after that), the internal timer is set to this value. Once the timer expires, all particles are considered to have finished playing, at which point the data is reset and rendering is paused until new particles are added.dataDur- rendering once if at (-3000.0f, -1000.0f), always active if less than -3000.0f.
-
-
Method Details
-
toAddBefore
protected boolean toAddBefore() -
toAddAfter
-
addParticle
Recommend to callsetRemainingTimeToReset(float)orrefreshRemainingTimeToReset(float)after if needs.- Returns:
nullif it cannot add.
-
addParticle3D
Recommend to callsetRemainingTimeToReset(float)orrefreshRemainingTimeToReset(float)after if needs.- Returns:
nullif it cannot add.
-
addParticle
public Instance2Data addParticle(org.lwjgl.util.vector.Vector2f location, float facing, float turnRate, org.lwjgl.util.vector.Vector2f velocity, org.lwjgl.util.vector.Vector2f scale, org.lwjgl.util.vector.Vector2f scaleRate, Color basecolor, Color emissive, float in, float full, float out) -
addParticle
public Instance2Data addParticle(float spawnStartRadius, float velAngRad, float velocity, float scale, Color basecolor, Color emissive, float in, float full, float out) -
addParticle
public Instance2Data addParticle(float spawnStartRadius, float velocity, float scale, Color basecolor, Color emissive, float in, float full, float out) -
addParticle
public Instance2Data addParticle(float spawnStartRadius, float velocity, float scale, float in, float full, float out) -
addParticle
-
setRemainingTimeToReset
public void setRemainingTimeToReset(float duration) -
refreshRemainingTimeToReset
public void refreshRemainingTimeToReset(float duration) -
clearParticles
public void clearParticles() -
forceDelete
public void forceDelete() -
isEntityExpired
public boolean isEntityExpired() -
getEntity
-
controlInit
Description copied from class:BaseControlDataRun once as long as linked to a render entity.- Specified by:
controlInitin interfaceControlDataAPI- Overrides:
controlInitin classorg.boxutil.base.BaseControlData
-
controlAdvance
Description copied from class:BaseControlDataRunning on another thread.Executes in the logical advance.
Invalid when
ControlDataAPI.controlIsOnceRender(RenderDataAPI)is ture.- Specified by:
controlAdvancein interfaceControlDataAPI- Overrides:
controlAdvancein classorg.boxutil.base.BaseControlData
-
controlAlphaBasedTimer
Description copied from interface:ControlDataAPIAffectsBaseRenderData.getGlobalTimerAlpha().- Specified by:
controlAlphaBasedTimerin interfaceControlDataAPI- Overrides:
controlAlphaBasedTimerin classorg.boxutil.base.BaseControlData
-
controlRemoveBasedTimer
Description copied from class:BaseControlDataWill callControlDataAPI.controlRemove(RenderDataAPI)when timer of entity is out.- Specified by:
controlRemoveBasedTimerin interfaceControlDataAPI- Overrides:
controlRemoveBasedTimerin classorg.boxutil.base.BaseControlData
-
controlRunWhilePaused
Description copied from class:BaseControlDataAffectsControlDataAPI.controlAdvance(RenderDataAPI, float)and compute instance data.- Specified by:
controlRunWhilePausedin interfaceControlDataAPI- Overrides:
controlRunWhilePausedin classorg.boxutil.base.BaseControlData
-
controlIsOnceRender
Description copied from class:BaseControlDataForce remove entity after init and render one frame.- Specified by:
controlIsOnceRenderin interfaceControlDataAPI- Overrides:
controlIsOnceRenderin classorg.boxutil.base.BaseControlData
-
controlIsDone
Description copied from class:BaseControlDataForce remove entity if true.- Specified by:
controlIsDonein interfaceControlDataAPI- Overrides:
controlIsDonein classorg.boxutil.base.BaseControlData
-
controlCanRenderNow
Description copied from class:BaseControlDataCheck it in each rendering frame.- Specified by:
controlCanRenderNowin interfaceControlDataAPI- Overrides:
controlCanRenderNowin classorg.boxutil.base.BaseControlData
-