use of net.drewke.tdme.engine.Entity in project tdme by andreasdr.
the class World method synch.
/**
* Synch physics world with engine
* @param engine
*/
public void synch(Engine engine) {
for (int i = 0; i < rigidBodies.size(); i++) {
// update rigid body
RigidBody rigidBody = rigidBodies.get(i);
// skip on static objects
if (rigidBody.isStatic == true)
continue;
if (rigidBody.isSleeping == true)
continue;
Entity engineEntity = engine.getEntity(rigidBody.id);
if (engineEntity == null) {
System.out.println("World::entity '" + rigidBody.id + "' not found");
continue;
}
engineEntity.setEnabled(rigidBody.enabled);
if (rigidBody.enabled == true) {
engineEntity.fromTransformations(rigidBody.transformations);
}
}
}
use of net.drewke.tdme.engine.Entity in project tdme by andreasdr.
the class LevelEditorView method selectObjects.
/**
* Select objects
* @param object ids
*/
public void selectObjects(ArrayList<String> objectIds) {
// remove all objects which are currently selected
ArrayList<Entity> objectsToRemove = (ArrayList<Entity>) selectedObjects.clone();
for (Entity objectToRemove : objectsToRemove) {
setStandardObjectColorEffect(objectToRemove);
selectedObjects.remove(objectToRemove);
selectedObjectsById.remove(objectToRemove.getId());
}
// select objects from selection
for (String objectId : objectIds) {
Entity selectedObject = engine.getEntity(objectId);
setStandardObjectColorEffect(selectedObject);
setHighlightObjectColorEffect(selectedObject);
selectedObjects.add(selectedObject);
selectedObjectsById.put(selectedObject.getId(), selectedObject);
}
// update gui elements
updateGUIElements();
}
use of net.drewke.tdme.engine.Entity in project tdme by andreasdr.
the class LevelEditorView method handleInputEvents.
/*
* (non-Javadoc)
* @see net.drewke.tdme.gui.events.GUIInputEventHandler#handleInputEvents()
*/
public void handleInputEvents() {
boolean keyDeleteBefore = keyDelete;
boolean keyControlBefore = keyControl;
boolean keyCBefore = keyC;
boolean keyVBefore = keyV;
boolean keyXBefore = keyX;
// handle keyboard events
for (int i = 0; i < engine.getGUI().getKeyboardEvents().size(); i++) {
GUIKeyboardEvent event = engine.getGUI().getKeyboardEvents().get(i);
// skip on processed events
if (event.isProcessed() == true)
continue;
//
boolean isKeyDown = event.getType() == Type.KEY_PRESSED;
//
if (event.getKeyCode() == GUIKeyboardEvent.KEYCODE_CONTROL)
keyControl = isKeyDown;
if (event.getKeyCode() == GUIKeyboardEvent.KEYCODE_ESCAPE)
keyEscape = isKeyDown;
if (event.getKeyCode() == GUIKeyboardEvent.KEYCODE_LEFT)
keyLeft = isKeyDown;
if (event.getKeyCode() == GUIKeyboardEvent.KEYCODE_RIGHT)
keyRight = isKeyDown;
if (event.getKeyCode() == GUIKeyboardEvent.KEYCODE_UP)
keyUp = isKeyDown;
if (event.getKeyCode() == GUIKeyboardEvent.KEYCODE_DOWN)
keyDown = isKeyDown;
if (event.getKeyCode() == GUIKeyboardEvent.KEYCODE_BACKSPACE)
keyDelete = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 'x')
keyX = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 'c')
keyC = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 'v')
keyV = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 'a')
keyA = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 'd')
keyD = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 'w')
keyW = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 's')
keyS = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == '+')
keyPlus = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == '-')
keyMinus = isKeyDown;
if (Character.toLowerCase(event.getKeyChar()) == 'r')
keyR = isKeyDown;
}
// unselect objects by key escape
if (keyEscape == true && selectedObjects.size() > 0) {
ArrayList<Entity> objectsToRemove = new ArrayList<Entity>();
for (Entity selectedObject : selectedObjects) {
objectsToRemove.add(selectedObject);
}
for (Entity objectToRemove : objectsToRemove) {
setStandardObjectColorEffect(objectToRemove);
selectedObjects.remove(objectToRemove);
selectedObjectsById.remove(objectToRemove.getId());
}
levelEditorScreenController.unselectObjectsInObjectListBox();
}
// handle mouse events
for (int i = 0; i < engine.getGUI().getMouseEvents().size(); i++) {
GUIMouseEvent event = engine.getGUI().getMouseEvents().get(i);
// skip on processed events
if (event.isProcessed() == true)
continue;
// check if dragging
if (event.getButton() != MOUSE_BUTTON_NONE) {
// check if dragging
if (mouseDragging == false) {
if (mouseDownLastX != event.getX() || mouseDownLastY != event.getY()) {
mouseDragging = true;
}
}
} else {
// unset dragging
if (mouseDragging == true) {
mouseDownLastX = MOUSE_DOWN_LAST_POSITION_NONE;
mouseDownLastY = MOUSE_DOWN_LAST_POSITION_NONE;
mouseDragging = false;
mouseDraggingLastObject = null;
}
}
// selection
if (event.getButton() == MOUSE_BUTTON_LEFT) {
// check if dragging
if (mouseDragging == false) {
if (mouseDownLastX != event.getX() || mouseDownLastY != event.getY()) {
mouseDragging = true;
}
}
// unselect current selected objects
if (keyControl == false) {
ArrayList<Entity> objectsToRemove = new ArrayList<Entity>();
for (Entity selectedObject : selectedObjects) {
if (mouseDragging == true && mouseDraggingLastObject == selectedObject) {
/// no op
} else {
objectsToRemove.add(selectedObject);
}
}
for (Entity objectToRemove : objectsToRemove) {
setStandardObjectColorEffect(objectToRemove);
selectedObjects.remove(objectToRemove);
selectedObjectsById.remove(objectToRemove.getId());
levelEditorScreenController.unselectObjectInObjectListBox(objectToRemove.getId());
}
}
// check if object was clicked first
Entity selectedObject = engine.getObjectByMousePosition(event.getX(), event.getY(), entityPickingFilterNoGrid);
// if not, check if ground plate was clicked
if (selectedObject == null) {
selectedObject = engine.getObjectByMousePosition(event.getX(), event.getY());
}
// select cell if any was selected
if (selectedObject != null) {
// add to selected objects if not yet done
if (mouseDragging == true && mouseDraggingLastObject == selectedObject) {
// no op
} else {
if (selectedObjects.contains(selectedObject) == false) {
setStandardObjectColorEffect(selectedObject);
setHighlightObjectColorEffect(selectedObject);
selectedObjects.add(selectedObject);
selectedObjectsById.put(selectedObject.getId(), selectedObject);
// select in objects listbox
levelEditorScreenController.selectObjectInObjectListbox(selectedObject.getId());
// select in entity library
LevelEditorObject levelEditorObject = level.getObjectById(selectedObject.getId());
if (levelEditorObject != null) {
TDMELevelEditor.getInstance().getLevelEditorEntityLibraryScreenController().selectEntity(levelEditorObject.getEntity().getId());
}
} else {
// undo add
setStandardObjectColorEffect(selectedObject);
selectedObjects.remove(selectedObject);
selectedObjectsById.remove(selectedObject.getId());
// unselect in objects listbox
levelEditorScreenController.unselectObjectInObjectListBox(selectedObject.getId());
}
}
}
// set mouse dragging last
mouseDraggingLastObject = selectedObject;
// update gui elements
updateGUIElements();
} else // panning
if (event.getButton() == MOUSE_BUTTON_RIGHT) {
if (mouseDownLastX != MOUSE_DOWN_LAST_POSITION_NONE && mouseDownLastY != MOUSE_DOWN_LAST_POSITION_NONE) {
mousePanningSide = event.getX() - mouseDownLastX;
mousePanningForward = event.getY() - mouseDownLastY;
}
} else if (event.getButton() == MOUSE_BUTTON_MIDDLE) {
centerObject();
if (mouseDownLastX != MOUSE_DOWN_LAST_POSITION_NONE && mouseDownLastY != MOUSE_DOWN_LAST_POSITION_NONE) {
mouseRotationX = event.getX() - mouseDownLastX;
mouseRotationY = event.getY() - mouseDownLastY;
}
}
// last mouse down position
if (event.getButton() != MOUSE_BUTTON_NONE) {
//
mouseDownLastX = event.getX();
mouseDownLastY = event.getY();
}
// process mouse wheel events
float mouseWheel = event.getWheelY();
if (mouseWheel != 0) {
camScale += -mouseWheel * 0.05f;
if (camScale < camScaleMin)
camScale = camScaleMin;
if (camScale > camScaleMax)
camScale = camScaleMax;
}
}
// delete objects
if (keyDeleteBefore == true && keyDelete == false) {
removeObject();
}
// cut objects
if ((keyControlBefore == true || keyControl == true) && keyXBefore == true && keyX == false) {
copyObjects();
removeObject();
}
// copy objects
if ((keyControlBefore == true || keyControl == true) && keyCBefore == true && keyC == false) {
copyObjects();
}
// paste objects
if ((keyControlBefore == true || keyControl == true) && keyVBefore == true && keyV == false) {
pasteObjects();
}
}
use of net.drewke.tdme.engine.Entity in project tdme by andreasdr.
the class LevelEditorView method centerObject.
/**
* Centers selected objects
*/
public void centerObject() {
// skip if no objects selected
if (selectedObjects.size() == 0) {
return;
}
// compute center of selected objects
Vector3 center = new Vector3();
for (Entity selectedObject : selectedObjects) {
center.add(selectedObject.getBoundingBoxTransformed().getMin().clone().add(selectedObject.getBoundingBoxTransformed().getMax()).scale(0.5f));
}
engine.getCamera().getLookAt().set(center.scale(1.0f / selectedObjects.size()));
}
use of net.drewke.tdme.engine.Entity in project tdme by andreasdr.
the class LevelEditorView method copyObjects.
/**
* Copy current selected objects
*/
private void copyObjects() {
pasteObjects.clear();
for (Entity selectedObject : selectedObjects) {
if (selectedObject != null && selectedObject.getId().startsWith("leveleditor.") == false) {
LevelEditorObject levelEditorObject = level.getObjectById(selectedObject.getId());
if (levelEditorObject == null)
continue;
pasteObjects.add(levelEditorObject);
}
}
}
Aggregations