123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- = JMonkey Entity System Usage
- :revnumber: 2.0
- :revdate: 2020/07/24
- == Initialize the Entity System
- [source,java]
- ----
- EntitySystem entitySystem = new EntitySystem(new DefaultEntityData());
- ----
- == Writing an own Component
- [source,java]
- ----
- public class MovementComponent extends Component {
- private Vector3f movement;
- public MovementComponent(Vector3f movement)
- {
- this.movement=movement;
- }
- public Vector3f getMovement()
- {
- return movement;
- }
- }
- ----
- == Adding a new Entity
- [source,java]
- ----
- Component[] components = new Component[6];
- components[0] = new VisualRepComponent("Models/HoverTank/Tank2.mesh.xml");
- components[1] = new PositionComponent(v3f,new Quaternion());
- components[2] = new MovementComponent(Vector3f.ZERO);
- components[3] = new InSceneComponent(true);
- components[4] = new PlayerComponent();
- components[5] = new CollisionComponent(5);
- entitySystem.newEntity(components);
- ----
- == Creating a new EntitySet
- [source,java]
- ----
- Entity Set entitySet = entitySystem.getEntitySet(MovementComponent.class, PositionComponent.class);
- ----
- For the single parts of your program who deal with special components it is recommended to use xref:core:app/state/application_states.adoc[AppStates].
- == Loop through all entities
- [source,java]
- ----
- entitySet.applyChanges()
- Iterator<Entity> iterator = entitySet.getIterator();
- while (iterator.hasNext()) {
- Entity entity = iterator.next();
- //do something
- }
- ----
- == Only get changed Entities
- [source,java]
- ----
- if(entitySet.applyChanges())
- {
- entitySet.getAddedEntities(); //Get the Set of new added entities
- entitySet.getChangedEntities(); //Get the Set of changed entities
- entitySet.getRemovedEntities(); //Get the Set of removed entities
- }
- ----
- == Update a component
- [source,java]
- ----
- entity.setComponent(new PositionComponent(new Vector3f()));
- ----
- == Destroy an entity
- [source,java]
- ----
- entity.destroy();
- ----
- == How to display Spatials if it not allowed to save them into the components?
- Use an EntityControl class which is able to display Entitys with visual components.
- In an AppState with a Map containing Entities and and EntityControls they can be merged together and updated.
- //Have a look at the example:
- //link:http://peeeq.de/uploads/ogerlord/EntityTest.rar[http://peeeq.de/uploads/ogerlord/EntityTest.rar]
|