Example usage for com.badlogic.gdx.math Polygon dirty

List of usage examples for com.badlogic.gdx.math Polygon dirty

Introduction

In this page you can find the example usage for com.badlogic.gdx.math Polygon dirty.

Prototype

boolean dirty

To view the source code for com.badlogic.gdx.math Polygon dirty.

Click Source Link

Usage

From source file:com.bladecoder.engineeditor.scneditor.ScnWidgetInputListener.java

License:Apache License

@Override
public void touchDragged(InputEvent event, float x, float y, int pointer) {
    // EditorLogger.debug("Touch Dragged - X: " + Gdx.input.getX() + " Y: "
    // + Gdx.input.getY());

    super.touchDragged(event, x, y, pointer);

    if (Gdx.input.isButtonPressed(Buttons.LEFT)) {
        Scene scn = scnWidget.getScene();

        if (scn == null)
            return;

        Vector2 d = new Vector2(Gdx.input.getX(), Gdx.input.getY());
        scnWidget.screenToWorldCoords(d);

        d.sub(org);/* w w w .  ja va 2  s .c  o m*/
        org.add(d);

        if (draggingMode == DraggingModes.DRAGGING_ACTOR) {

            selActor.setPosition(selActor.getX() + d.x, selActor.getY() + d.y);
            Ctx.project.setModified(this, Project.POSITION_PROPERTY, null, selActor);

        } else if (draggingMode == DraggingModes.DRAGGING_BBOX_POINT) {
            Polygon poly = selActor.getBBox();

            float verts[] = poly.getVertices();
            verts[vertIndex] += d.x;
            verts[vertIndex + 1] += d.y;
            poly.dirty();

            Ctx.project.setModified();
        } else if (draggingMode == DraggingModes.DRAGGING_WALKZONE_POINT) {
            Polygon poly = scn.getPolygonalNavGraph().getWalkZone();

            float verts[] = poly.getVertices();
            verts[vertIndex] += d.x;
            verts[vertIndex + 1] += d.y;
            poly.dirty();

            Ctx.project.setModified();
        } else if (draggingMode == DraggingModes.DRAGGING_WALKZONE) {
            Polygon poly = scn.getPolygonalNavGraph().getWalkZone();
            poly.translate(d.x, d.y);
        } else if (draggingMode == DraggingModes.DRAGGING_MARKER_0) {
            Vector2 depthVector = scnWidget.getScene().getDepthVector();

            depthVector.x += d.y;
            Ctx.project.setModified();
            updateFakeDepth();
        } else if (draggingMode == DraggingModes.DRAGGING_MARKER_100) {
            Vector2 depthVector = scnWidget.getScene().getDepthVector();

            depthVector.y += d.y;
            Ctx.project.setModified();
            updateFakeDepth();
        }

    } else if (Gdx.input.isButtonPressed(Buttons.RIGHT) || Gdx.input.isButtonPressed(Buttons.MIDDLE)) {

        Vector2 p = new Vector2(Gdx.input.getX(), Gdx.input.getY());
        scnWidget.screenToWorldCoords(p);
        p.sub(org);

        scnWidget.translate(p);
    }
}

From source file:com.bladecoder.engineeditor.ui.EditActorDialog.java

License:Apache License

@Override
protected void inputsToModel(boolean create) {

    String type = typePanel.getText();
    boolean typeChanged = false;
    BaseActor oldElement = e;/*from   ww w.java 2 s .  c om*/

    boolean isPlayer = false;

    if (!create) {

        typeChanged = (type.equals(CHARACTER_TYPE_STR) && !(e instanceof CharacterActor))
                || (type.equals(SPRITE_TYPE_STR)
                        && (!(e instanceof SpriteActor) || e instanceof CharacterActor))
                || (type.equals(BACKGROUND_TYPE_STR)
                        && (!(e instanceof InteractiveActor) || e instanceof SpriteActor))
                || (type.equals(OBSTACLE_TYPE_STR) && !(e instanceof ObstacleActor))
                || (type.equals(ANCHOR_TYPE_STR) && !(e instanceof AnchorActor));

        isPlayer = parent.getPlayer() == e;

        // remove to allow id, zindex and layer change
        parent.removeActor(e);
    }

    if (create || typeChanged) {
        if (type.equals(BACKGROUND_TYPE_STR)) {
            e = new InteractiveActor();
        } else if (type.equals(SPRITE_TYPE_STR)) {
            e = new SpriteActor();
        } else if (type.equals(CHARACTER_TYPE_STR)) {
            e = new CharacterActor();
        } else if (type.equals(OBSTACLE_TYPE_STR)) {
            e = new ObstacleActor();
        } else if (type.equals(ANCHOR_TYPE_STR)) {
            e = new AnchorActor();
        }

        if (!(e instanceof SpriteActor) && !(e instanceof AnchorActor)) {
            Polygon bbox = e.getBBox();

            bbox.setVertices(new float[8]);

            float[] verts = bbox.getVertices();

            verts[0] = -DEFAULT_DIM / 2;
            verts[1] = 0f;
            verts[2] = -DEFAULT_DIM / 2;
            verts[3] = DEFAULT_DIM;
            verts[4] = DEFAULT_DIM / 2;
            verts[5] = DEFAULT_DIM;
            verts[6] = DEFAULT_DIM / 2;
            verts[7] = 0f;
            bbox.dirty();
        }
    }

    if (typeChanged) {
        // Put sounds, verbs and animations in the new element

        if (oldElement instanceof InteractiveActor && e instanceof InteractiveActor) {
            HashMap<String, Verb> verbs = ((InteractiveActor) e).getVerbManager().getVerbs();
            HashMap<String, Verb> oldVerbs = ((InteractiveActor) oldElement).getVerbManager().getVerbs();

            for (String k : oldVerbs.keySet()) {
                Verb v = oldVerbs.get(k);
                verbs.put(k, v);
            }

            HashMap<String, SoundFX> oldSounds = ((InteractiveActor) oldElement).getSounds();

            if (oldSounds != null) {
                for (String k : oldSounds.keySet()) {
                    ((InteractiveActor) e).addSound(oldSounds.get(k));
                }
            }
        }

        if (oldElement instanceof SpriteActor && e instanceof SpriteActor) {
            ((SpriteActor) e).setRenderer(((SpriteActor) oldElement).getRenderer());
        }
    }

    e.setId(ElementUtils.getCheckedId(id.getText(), parent.getActors().keySet().toArray(new String[0])));
    e.setVisible(Boolean.parseBoolean(visible.getText()));

    if (e instanceof InteractiveActor) {
        InteractiveActor ia = (InteractiveActor) e;

        ia.setLayer(layer.getText());
        ia.setInteraction(Boolean.parseBoolean(interaction.getText()));

        String key = desc.getText();

        if (key == null || key.isEmpty() || key.charAt(0) != I18N.PREFIX)
            key = Ctx.project.getI18N().genKey(parent.getId(), e.getId(), "desc");

        Ctx.project.getI18N().setTranslation(key, desc.getText());

        if (desc.getText() != null)
            ia.setDesc(key);
        else
            ia.setDesc(null);

        ia.setState(state.getText());
        ia.setZIndex(Float.parseFloat(zIndex.getText()));

        if (e instanceof SpriteActor) {
            SpriteActor sa = (SpriteActor) e;

            String rendererType = renderer.getText();

            if (Project.ATLAS_RENDERER_STRING.equals(rendererType)) {
                if (sa.getRenderer() == null || !(sa.getRenderer() instanceof AtlasRenderer))
                    sa.setRenderer(new AtlasRenderer());
            } else if (Project.IMAGE_RENDERER_STRING.equals(rendererType)) {
                if (sa.getRenderer() == null || !(sa.getRenderer() instanceof ImageRenderer))
                    sa.setRenderer(new ImageRenderer());
            } else if (Project.S3D_RENDERER_STRING.equals(rendererType)) {
                Sprite3DRenderer r;

                if (sa.getRenderer() == null || !(sa.getRenderer() instanceof Sprite3DRenderer)) {
                    r = new Sprite3DRenderer();
                    sa.setRenderer(r);
                } else {
                    r = (Sprite3DRenderer) sa.getRenderer();
                }

                r.setCameraFOV(Float.parseFloat(fov.getText()));
                r.setCameraName(cameraName.getText());
                r.setSpriteSize(Param.parseVector2(spriteSize.getText()));
            } else if (Project.SPINE_RENDERER_STRING.equals(rendererType)) {
                if (sa.getRenderer() == null || !(sa.getRenderer() instanceof SpineRenderer))
                    sa.setRenderer(new SpineRenderer());
            }

            sa.setBboxFromRenderer(true);
            sa.setDepthType(DepthType.valueOf(depthType.getText()));
            sa.setScale(Float.parseFloat(scale.getText()));

            if (e instanceof CharacterActor) {
                CharacterActor ca = (CharacterActor) e;

                ca.setWalkingSpeed(Float.parseFloat(walkingSpeed.getText()));
                ca.setTextColor(Param.parseColor(textColor.getText()));
            }
        }
    }

    parent.addActor(e);

    if (isPlayer && !typeChanged)
        parent.setPlayer((CharacterActor) e);

    if (e instanceof InteractiveActor) {
        SceneLayer l = parent.getLayer(((InteractiveActor) e).getLayer());
        l.orderByZIndex();
    }

    if (e instanceof SpriteActor)
        ((SpriteActor) e).retrieveAssets();

    // TODO UNDO OP
    // UndoOp undoOp = new UndoAddElement(doc, e);
    // Ctx.project.getUndoStack().add(undoOp);

    Ctx.project.setModified();
}