Search in sources :

Example 16 with Entity

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);
        }
    }
}
Also used : Entity(net.drewke.tdme.engine.Entity)

Example 17 with Entity

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();
}
Also used : Entity(net.drewke.tdme.engine.Entity) LevelEditorEntity(net.drewke.tdme.tools.shared.model.LevelEditorEntity) FacesEntity(net.drewke.tdme.engine.model.FacesEntity) ArrayList(java.util.ArrayList)

Example 18 with Entity

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();
    }
}
Also used : GUIKeyboardEvent(net.drewke.tdme.gui.events.GUIKeyboardEvent) Entity(net.drewke.tdme.engine.Entity) LevelEditorEntity(net.drewke.tdme.tools.shared.model.LevelEditorEntity) FacesEntity(net.drewke.tdme.engine.model.FacesEntity) ArrayList(java.util.ArrayList) LevelEditorObject(net.drewke.tdme.tools.shared.model.LevelEditorObject) GUIMouseEvent(net.drewke.tdme.gui.events.GUIMouseEvent)

Example 19 with Entity

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()));
}
Also used : Entity(net.drewke.tdme.engine.Entity) LevelEditorEntity(net.drewke.tdme.tools.shared.model.LevelEditorEntity) FacesEntity(net.drewke.tdme.engine.model.FacesEntity) Vector3(net.drewke.tdme.math.Vector3)

Example 20 with Entity

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);
        }
    }
}
Also used : Entity(net.drewke.tdme.engine.Entity) LevelEditorEntity(net.drewke.tdme.tools.shared.model.LevelEditorEntity) FacesEntity(net.drewke.tdme.engine.model.FacesEntity) LevelEditorObject(net.drewke.tdme.tools.shared.model.LevelEditorObject)

Aggregations

Entity (net.drewke.tdme.engine.Entity)32 LevelEditorEntity (net.drewke.tdme.tools.shared.model.LevelEditorEntity)25 FacesEntity (net.drewke.tdme.engine.model.FacesEntity)22 LevelEditorObject (net.drewke.tdme.tools.shared.model.LevelEditorObject)17 Object3D (net.drewke.tdme.engine.Object3D)8 Vector3 (net.drewke.tdme.math.Vector3)8 PropertyModelClass (net.drewke.tdme.tools.shared.model.PropertyModelClass)6 ArrayList (java.util.ArrayList)4 ObjectParticleSystemEntity (net.drewke.tdme.engine.ObjectParticleSystemEntity)4 PointsParticleSystemEntity (net.drewke.tdme.engine.PointsParticleSystemEntity)4 BoundingVolume (net.drewke.tdme.engine.primitives.BoundingVolume)3 Camera (net.drewke.tdme.engine.Camera)2 Rotation (net.drewke.tdme.engine.Rotation)2 Transformations (net.drewke.tdme.engine.Transformations)2 LevelEditorEntityBoundingVolume (net.drewke.tdme.tools.shared.model.LevelEditorEntityBoundingVolume)2 Light (net.drewke.tdme.engine.Light)1 Model (net.drewke.tdme.engine.model.Model)1 BoundingBox (net.drewke.tdme.engine.primitives.BoundingBox)1 ParticleSystemEntity (net.drewke.tdme.engine.subsystems.particlesystem.ParticleSystemEntity)1 GUIKeyboardEvent (net.drewke.tdme.gui.events.GUIKeyboardEvent)1