use of org.terasology.network.ClientComponent in project Terasology by MovingBlocks.
the class CameraClientSystem method ensureCameraEntityCreated.
private void ensureCameraEntityCreated() {
if (!localPlayer.getCameraEntity().exists()) {
ClientComponent clientComponent = localPlayer.getClientEntity().getComponent(ClientComponent.class);
// create the camera from the prefab
EntityBuilder builder = entityManager.newBuilder("engine:camera");
builder.setPersistent(false);
clientComponent.camera = builder.build();
localPlayer.getClientEntity().saveComponent(clientComponent);
}
}
use of org.terasology.network.ClientComponent in project Terasology by MovingBlocks.
the class LocalPlayer method getViewPosition.
public Vector3f getViewPosition(Vector3f out) {
ClientComponent clientComponent = getClientEntity().getComponent(ClientComponent.class);
if (clientComponent == null) {
return out;
}
LocationComponent location = clientComponent.camera.getComponent(LocationComponent.class);
if (location == null) {
return getPosition();
}
return location.getWorldPosition(out);
}
use of org.terasology.network.ClientComponent in project Terasology by MovingBlocks.
the class LocalPlayer method setClientEntity.
// TODO: As per Immortius answer in Pull Request #1088,
// TODO: there appears to be situations in which LocalPlayer is instantiated
// TODO: but the client entity is -not- set, i.e. in the headless server.
// TODO: However, it's unclear why the headless server needs a LocalPlayer,
// TODO: instance. If that can be avoided the code in the following method
// TODO: might be more rightfully placed in the LocalPlayer constructor.
public void setClientEntity(EntityRef entity) {
this.clientEntity = entity;
ClientComponent clientComp = entity.getComponent(ClientComponent.class);
if (clientComp != null) {
clientComp.local = true;
entity.saveComponent(clientComp);
}
}
use of org.terasology.network.ClientComponent in project Terasology by MovingBlocks.
the class PlayerSystem method respawnPlayer.
private void respawnPlayer(EntityRef clientEntity) {
ClientComponent client = clientEntity.getComponent(ClientComponent.class);
EntityRef playerCharacter = client.character;
LocationComponent location = clientEntity.getComponent(LocationComponent.class);
PlayerFactory playerFactory = new PlayerFactory(entityManager, worldProvider);
Vector3f spawnPosition = playerFactory.findSpawnPositionFromLocationComponent(location);
location.setWorldPosition(spawnPosition);
clientEntity.saveComponent(location);
playerCharacter.addComponent(new AliveCharacterComponent());
playerCharacter.send(new CharacterTeleportEvent(spawnPosition));
logger.debug("Re-spawing player at: {}", spawnPosition);
Client clientListener = networkSystem.getOwner(clientEntity);
Vector3i distance = clientListener.getViewDistance().getChunkDistance();
updateRelevanceEntity(clientEntity, distance);
playerCharacter.send(new OnPlayerRespawnedEvent());
}
use of org.terasology.network.ClientComponent in project Terasology by MovingBlocks.
the class PlayerSystem method restoreCharacter.
private void restoreCharacter(EntityRef entity, EntityRef character) {
Client clientListener = networkSystem.getOwner(entity);
updateRelevanceEntity(entity, clientListener.getViewDistance().getChunkDistance());
ClientComponent client = entity.getComponent(ClientComponent.class);
client.character = character;
entity.saveComponent(client);
CharacterComponent characterComp = character.getComponent(CharacterComponent.class);
if (characterComp != null) {
characterComp.controller = entity;
character.saveComponent(characterComp);
character.setOwner(entity);
if (!character.hasComponent(AliveCharacterComponent.class)) {
character.addComponent(new AliveCharacterComponent());
}
Location.attachChild(character, entity, new Vector3f(), new Quat4f(0, 0, 0, 1));
} else {
character.destroy();
spawnPlayer(entity);
}
}
Aggregations