use of org.terasology.engine.logic.characters.CharacterMoveInputEvent in project Terasology by MovingBlocks.
the class EventCopier method copyEvent.
public Event copyEvent(Event toBeCopied) {
if (toBeCopied instanceof PlaySoundEvent) {
return toBeCopied;
} else if (toBeCopied instanceof BindButtonEvent) {
BindButtonEvent originalEvent = (BindButtonEvent) toBeCopied;
BindButtonEvent newEvent = (BindButtonEvent) createNewBindEvent(originalEvent);
newEvent.prepare(originalEvent.getId(), originalEvent.getState(), originalEvent.getDelta());
inputEventSetup(newEvent, originalEvent);
return newEvent;
} else if (toBeCopied instanceof KeyEvent) {
KeyEvent originalEvent = (KeyEvent) toBeCopied;
KeyEvent newEvent = createNewKeyEvent(originalEvent);
inputEventSetup(newEvent, originalEvent);
return newEvent;
} else if (toBeCopied instanceof BindAxisEvent) {
BindAxisEvent originalEvent = (BindAxisEvent) toBeCopied;
BindAxisEvent newEvent = (BindAxisEvent) createNewBindEvent(originalEvent);
newEvent.prepare(originalEvent.getId(), (float) originalEvent.getValue(), originalEvent.getDelta());
inputEventSetup(newEvent, originalEvent);
return newEvent;
} else if (toBeCopied instanceof MouseAxisEvent) {
MouseAxisEvent originalEvent = (MouseAxisEvent) toBeCopied;
MouseAxisEvent newEvent = createNewMouseAxisEvent(originalEvent);
inputEventSetup(newEvent, originalEvent);
return newEvent;
} else if (toBeCopied instanceof CameraTargetChangedEvent) {
CameraTargetChangedEvent originalEvent = (CameraTargetChangedEvent) toBeCopied;
return new CameraTargetChangedEvent(originalEvent.getOldTarget(), originalEvent.getNewTarget());
} else if (toBeCopied instanceof CharacterMoveInputEvent) {
CharacterMoveInputEvent originalEvent = (CharacterMoveInputEvent) toBeCopied;
return new CharacterMoveInputEvent(originalEvent.getSequenceNumber(), originalEvent.getPitch(), originalEvent.getYaw(), originalEvent.getMovementDirection(), originalEvent.isRunning(), originalEvent.isCrouching(), originalEvent.isJumping(), originalEvent.getDeltaMs());
} else if (toBeCopied instanceof MouseButtonEvent) {
MouseButtonEvent originalEvent = (MouseButtonEvent) toBeCopied;
MouseButtonEvent newEvent = new MouseButtonEvent(originalEvent.getButton(), originalEvent.getState(), originalEvent.getDelta());
newEvent.setMousePosition(originalEvent.getMousePosition());
inputEventSetup(newEvent, originalEvent);
return newEvent;
} else if (toBeCopied instanceof MouseWheelEvent) {
MouseWheelEvent originalEvent = (MouseWheelEvent) toBeCopied;
MouseWheelEvent newEvent = new MouseWheelEvent(originalEvent.getMousePosition(), originalEvent.getWheelTurns(), originalEvent.getDelta());
inputEventSetup(newEvent, originalEvent);
return newEvent;
} else if (toBeCopied instanceof GetMaxSpeedEvent) {
GetMaxSpeedEvent originalEvent = (GetMaxSpeedEvent) toBeCopied;
GetMaxSpeedEvent newEvent = new GetMaxSpeedEvent(originalEvent.getBaseValue(), originalEvent.getMovementMode());
newEvent.setModifiers(originalEvent.getModifiers());
newEvent.setMultipliers(originalEvent.getMultipliers());
newEvent.setPostModifiers(originalEvent.getPostModifiers());
return newEvent;
} else if (toBeCopied instanceof AttackEvent) {
AttackEvent originalEvent = (AttackEvent) toBeCopied;
AttackEvent newEvent = new AttackEvent(originalEvent.getInstigator(), originalEvent.getDirectCause());
return newEvent;
} else {
return null;
}
}
use of org.terasology.engine.logic.characters.CharacterMoveInputEvent in project Terasology by MovingBlocks.
the class LocalPlayerSystem method processInput.
private void processInput(EntityRef entity, CharacterMovementComponent characterMovementComponent) {
lookYaw = (float) ((lookYaw - lookYawDelta) % 360);
lookYawDelta = 0f;
lookPitch = (float) Math.clamp(-89, 89, lookPitch + lookPitchDelta);
lookPitchDelta = 0f;
Vector3f relMove = new Vector3f(relativeMovement);
relMove.y = 0;
Quaternionf viewRotation = new Quaternionf();
switch(characterMovementComponent.mode) {
case CROUCHING:
case WALKING:
if (!config.getRendering().isVrSupport()) {
viewRotation.rotationYXZ(Math.toRadians(lookYaw), 0, 0);
playerCamera.setOrientation(viewRotation);
}
playerCamera.getOrientation(new Quaternionf()).transform(relMove);
break;
case CLIMBING:
// Rotation is applied in KinematicCharacterMover
relMove.y += relativeMovement.y;
break;
default:
if (!config.getRendering().isVrSupport()) {
viewRotation.rotationYXZ(Math.toRadians(lookYaw), Math.toRadians(lookPitch), 0);
playerCamera.setOrientation(viewRotation);
}
playerCamera.getOrientation(new Quaternionf()).transform(relMove);
relMove.y += relativeMovement.y;
break;
}
// trouble down the line.
if (relMove.isFinite()) {
entity.send(new CharacterMoveInputEvent(inputSequenceNumber++, lookPitch, lookYaw, relMove, run, crouch, jump, time.getGameDeltaInMs()));
}
jump = false;
}
Aggregations