Class DarkMatter
- java.lang.Object
-
- de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
-
- de.extio.spacecraft.shared.model.entity.builtin.composite.DarkMatter
-
- All Implemented Interfaces:
HasPosition2,HasPositionAndDimension2,SpatialIndex2Capable
public class DarkMatter extends AbstractCompositeEntity
A lump of dark matter, the mysterious (and heavy!) stuff in the game world causing different spatial effects
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
AbstractCompositeEntity.CollisionCalculationResult, AbstractCompositeEntity.DefaultDamageWaveDamageHandler
-
-
Field Summary
-
Fields inherited from class de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
accelerationVector, DAMAGE_COLORS, DAMAGE_CONSUMER_BOTH, DAMAGE_CONSUMER_ENTITY, DAMAGE_CONSUMER_SHIELD, DAMAGEWAVE_DIRECTIONS, dimension, dirty, entityManager, fields, fresh, lastMovement, LOGGER, meshes, position, positionDirty, precisePosition, prevPosition, prevVelocityVector, ROTATE_COLLISION_COLOR, splitEntityGroups, sumMassCached, sumMassCachedTurn, uuid, velocityVector, VMAX_M_LB, VMAX_M_UB, VMAX_VEL_MAX, VMAX_VEL_MIN, VMAX_VEL_VAR
-
-
Constructor Summary
Constructors Constructor Description DarkMatter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcreate(UUID uuid, CoordI2 position, CoordI2 dimension)Called upon initial creation of this composite entity.voiddamageWave(GameSession gameSession, DamageWaveOptions damageWaveOptions, List<AbstractEntity> damagedEntities)Distributes incoming damage on entities.
There are certain aspects relevant for the calculation:
* A tiles consists of several layered entities
* An entity only absorbs a certain amount of damage (plateaus), which is also dependent on the weapon
* A tile can be protected by shields
* Also shields have plateaus
* Damage that is not absorbed propagates to nearby tiles
* Damage cannot propagate through some tiles in certain directions, i.e.doublegetGravityAccel()doublegetGravityPotential()CoordI2getGravityRange1()doublegetGravityRangeDist0()doublegetGravityRangeDist1()voidlocalCopy(AbstractCompositeEntity other)Local copy of all fields that are not covered by update()voidlocalInit(EntityManager entityManager)Local initialization of transient fields.voidonClientDraw(List<RenderingBo> renderingBo)Client side: Draw effects related to this composite entity.voidonServerTurnPass0(GameSession gameSession)Server side: Called every turn to contain any logic related to this entitiy.voidonServerTurnPass2(GameSession gameSession)Server side: Called every turn to contain any logic related to this entitiy.voidsetGravityAccel(double gravityAccel)voidsetGravityPotential(double gravityPotential)voidsetGravityRange1(CoordI2 gravityRange1)voidsetGravityRangeDist0(double gravityRangeDist0)voidsetGravityRangeDist1(double gravityRangeDist1)voidupdate(AbstractCompositeEntity other)Updates non-transient fields (i.e.-
Methods inherited from class de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
accelerate, calculateCollision, calculateVMax, compressDimension, excludeDynamicSerializationPropertiesPermanentStorage, getAccelerationVector, getAnimationOffset, getCompositeEntityFactoryClassName, getDimension, getDynamicSerializationProperties, getDynamicSerializationPropertiesForSeparateTransfer, getEntityManager, getEntityNetworkConsolesCache, getFields, getLastEdited, getLastRotation, getLastRotationDirection, getMeshes, getPosition, getPrecisePosition, getPrevPosition, getSceneTag, getServerFieldsLastPublished, getServerLastInViewPort, getServerMeshesLastPublished, getServerScannedBy, getUuid, getVelocityVector, handleMove, handleMoveApply, includeInSpatialIndex2ResultSet, isDirty, isFresh, isInSpatialIndex2ResultSet, isLocalInit, isPositionDirty, isRemoved, isShadowed, isSplitEntityGroups, onClientActionMessage, onClientFrame, onRemove, onServerActionMessage, onServerCollision, onServerTurnPass1, priorityCalculateCollision, resetFieldsForPermanentStorage, resetStatic, restoreFieldsFromPermanentStorage, rotate, setAccelerationVector, setCompositeEntityFactoryClassName, setDimension, setDirty, setDynamicSerializationProperties, setEntityManager, setFresh, setLastEdited, setPosition, setPositionDirty, setPrecisePosition, setPrevPosition, setSceneTag, setServerFieldsLastPublished, setServerMeshesLastPublished, setShadowed, setSplitEntityGroups, setUuid, setVelocityVector, splitEntityGroups, sumMass
-
-
-
-
Method Detail
-
create
public void create(UUID uuid, CoordI2 position, CoordI2 dimension)
Description copied from class:AbstractCompositeEntityCalled upon initial creation of this composite entity. This method is not called locally (i.e. when the composite has been transferred from server to client), so only initialize non-transient fields here. See also localInit()- Overrides:
createin classAbstractCompositeEntity
-
update
public void update(AbstractCompositeEntity other)
Description copied from class:AbstractCompositeEntityUpdates non-transient fields (i.e. when receiving an entity update from server or copying a composite entity)- Overrides:
updatein classAbstractCompositeEntity
-
localInit
public void localInit(EntityManager entityManager)
Description copied from class:AbstractCompositeEntityLocal initialization of transient fields. See also create() and update()- Overrides:
localInitin classAbstractCompositeEntity
-
localCopy
public void localCopy(AbstractCompositeEntity other)
Description copied from class:AbstractCompositeEntityLocal copy of all fields that are not covered by update()- Overrides:
localCopyin classAbstractCompositeEntity
-
onClientDraw
public void onClientDraw(List<RenderingBo> renderingBo)
Description copied from class:AbstractCompositeEntityClient side: Draw effects related to this composite entity. All entities are already drawn separately by the game core.- Overrides:
onClientDrawin classAbstractCompositeEntity
-
onServerTurnPass0
public void onServerTurnPass0(GameSession gameSession)
Description copied from class:AbstractCompositeEntityServer side: Called every turn to contain any logic related to this entitiy. Pass0 is called at the beginning of the cycle before entity callbacks have been called.- Overrides:
onServerTurnPass0in classAbstractCompositeEntity
-
onServerTurnPass2
public void onServerTurnPass2(GameSession gameSession)
Description copied from class:AbstractCompositeEntityServer side: Called every turn to contain any logic related to this entitiy. Pass2 is called after pass1 was called on all composites.- Overrides:
onServerTurnPass2in classAbstractCompositeEntity
-
damageWave
public void damageWave(GameSession gameSession, DamageWaveOptions damageWaveOptions, List<AbstractEntity> damagedEntities)
Description copied from class:AbstractCompositeEntityDistributes incoming damage on entities.
There are certain aspects relevant for the calculation:
* A tiles consists of several layered entities
* An entity only absorbs a certain amount of damage (plateaus), which is also dependent on the weapon
* A tile can be protected by shields
* Also shields have plateaus
* Damage that is not absorbed propagates to nearby tiles
* Damage cannot propagate through some tiles in certain directions, i.e. walls, unless the entity is destroyed
* Propagated damage is dampened
* Damage handlers for tiles are pluggable- Overrides:
damageWavein classAbstractCompositeEntity
-
getGravityRangeDist0
public double getGravityRangeDist0()
-
setGravityRangeDist0
public void setGravityRangeDist0(double gravityRangeDist0)
-
getGravityRangeDist1
public double getGravityRangeDist1()
-
setGravityRangeDist1
public void setGravityRangeDist1(double gravityRangeDist1)
-
getGravityRange1
public CoordI2 getGravityRange1()
-
setGravityRange1
public void setGravityRange1(CoordI2 gravityRange1)
-
getGravityPotential
public double getGravityPotential()
-
setGravityPotential
public void setGravityPotential(double gravityPotential)
-
getGravityAccel
public double getGravityAccel()
-
setGravityAccel
public void setGravityAccel(double gravityAccel)
-
-