added highlight/hover/select to nodes
This commit is contained in:
		@@ -14,6 +14,7 @@
 | 
			
		||||
import com.jme3.scene.control.AbstractControl;
 | 
			
		||||
import pp.mdga.client.board.NodeControl;
 | 
			
		||||
import pp.mdga.client.board.OutlineControl;
 | 
			
		||||
import pp.mdga.client.board.OutlineOEControl;
 | 
			
		||||
import pp.mdga.client.board.PieceControl;
 | 
			
		||||
import pp.mdga.client.gui.CardControl;
 | 
			
		||||
import pp.mdga.client.gui.DiceControl;
 | 
			
		||||
@@ -32,7 +33,7 @@ public class InputSynchronizer {
 | 
			
		||||
    private float rotationAngle = 180f;
 | 
			
		||||
    private int scrollValue = 0;
 | 
			
		||||
    private CardControl hoverCard;
 | 
			
		||||
    private PieceControl hoverPiece;
 | 
			
		||||
    private OutlineOEControl hoverPiece;
 | 
			
		||||
 | 
			
		||||
    private boolean clickAllowed = true;
 | 
			
		||||
 | 
			
		||||
@@ -113,7 +114,7 @@ public void onAction(String name, boolean isPressed, float tpf) {
 | 
			
		||||
                if (app.getView() instanceof GameView gameView) {
 | 
			
		||||
                    DiceControl diceSelect = checkHover(gameView.getGuiHandler().getCardLayerCamera(), gameView.getGuiHandler().getCardLayerRootNode(), DiceControl.class);
 | 
			
		||||
                    CardControl cardLayerSelect = checkHover(gameView.getGuiHandler().getCardLayerCamera(), gameView.getGuiHandler().getCardLayerRootNode(), CardControl.class);
 | 
			
		||||
                    OutlineControl boardSelect = checkHover(app.getCamera(), app.getRootNode(), OutlineControl.class);
 | 
			
		||||
                    OutlineOEControl boardSelect = checkHover(app.getCamera(), app.getRootNode(), OutlineOEControl.class);
 | 
			
		||||
 | 
			
		||||
                    if (diceSelect != null) {
 | 
			
		||||
                        app.getModelSynchronize().rolledDice();
 | 
			
		||||
@@ -122,12 +123,7 @@ public void onAction(String name, boolean isPressed, float tpf) {
 | 
			
		||||
                        if (cardLayerSelect.isSelectable()) gameView.getGuiHandler().selectCard(cardLayerSelect);
 | 
			
		||||
                    } else if (boardSelect != null) {
 | 
			
		||||
                        //boardSelect
 | 
			
		||||
                        if (boardSelect instanceof PieceControl pieceControl) {
 | 
			
		||||
                            if (pieceControl.isSelectable()) gameView.getBoardHandler().pieceSelect(pieceControl);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (boardSelect instanceof NodeControl nodeControl) {
 | 
			
		||||
//
 | 
			
		||||
                        }
 | 
			
		||||
                        gameView.getBoardHandler().pieceSelect(boardSelect);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        //both null
 | 
			
		||||
                    }
 | 
			
		||||
@@ -235,13 +231,12 @@ private <T extends AbstractControl> T checkHoverOrtho(Camera cam, Node root, Cla
 | 
			
		||||
     */
 | 
			
		||||
    private void hoverPiece() {
 | 
			
		||||
        if (app.getView() instanceof GameView gameView) {
 | 
			
		||||
            PieceControl control = checkPiece();
 | 
			
		||||
            OutlineOEControl control = checkPiece();
 | 
			
		||||
            if (control != null) {
 | 
			
		||||
                if (control != hoverPiece) {
 | 
			
		||||
                    pieceOff(gameView);
 | 
			
		||||
                    hoverPiece = control;
 | 
			
		||||
//                    hoverPiece.hover();
 | 
			
		||||
                    gameView.getBoardHandler().pieceHoverOn(hoverPiece);
 | 
			
		||||
                    if(hoverPiece.isHoverable()) gameView.getBoardHandler().hoverOn(hoverPiece);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                pieceOff(gameView);
 | 
			
		||||
@@ -260,7 +255,7 @@ private void hoverCard() {
 | 
			
		||||
                if (control != hoverCard) {
 | 
			
		||||
                    cardOff();
 | 
			
		||||
                    hoverCard = control;
 | 
			
		||||
                    hoverCard.hover();
 | 
			
		||||
                    hoverCard.hoverOn();
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                cardOff();
 | 
			
		||||
@@ -273,8 +268,8 @@ private void hoverCard() {
 | 
			
		||||
     *
 | 
			
		||||
     * @return The PieceControl of the hovered piece, or null if no piece is hovered.
 | 
			
		||||
     */
 | 
			
		||||
    private PieceControl checkPiece() {
 | 
			
		||||
        return checkHover(app.getCamera(), app.getRootNode(), PieceControl.class);
 | 
			
		||||
    private OutlineOEControl checkPiece() {
 | 
			
		||||
        return checkHover(app.getCamera(), app.getRootNode(), OutlineOEControl.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -296,8 +291,7 @@ private CardControl checkCard(GameView gameView) {
 | 
			
		||||
     */
 | 
			
		||||
    private void pieceOff(GameView gameView) {
 | 
			
		||||
        if (hoverPiece != null) {
 | 
			
		||||
            gameView.getBoardHandler().pieceHoverOff(hoverPiece);
 | 
			
		||||
//            hoverPiece.hoverOff();
 | 
			
		||||
            if(hoverPiece.isHoverable()) gameView.getBoardHandler().hoverOff(hoverPiece);
 | 
			
		||||
        }
 | 
			
		||||
        hoverPiece = null;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
import pp.mdga.client.animation.*;
 | 
			
		||||
import pp.mdga.client.gui.DiceControl;
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
import pp.mdga.game.Piece;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
@@ -603,10 +604,8 @@ public void outlineMove(List<UUID> pieces, List<Integer> moveIndexe, List<Boolea
 | 
			
		||||
            } else {
 | 
			
		||||
                nodeControl = infield.get(moveIndexe.get(i));
 | 
			
		||||
            }
 | 
			
		||||
            nodeControl.highlight();
 | 
			
		||||
            pieceControl.highlight(false);
 | 
			
		||||
            pieceControl.setHoverable(true);
 | 
			
		||||
            pieceControl.setSelectable(true);
 | 
			
		||||
            pieceControl.selectableOwn();
 | 
			
		||||
            nodeControl.selectableOwn();
 | 
			
		||||
            outlineNodes.add(nodeControl);
 | 
			
		||||
            selectableOwnPieces.add(pieceControl);
 | 
			
		||||
            selectedPieceNodeMap.put(pieceControl, nodeControl);
 | 
			
		||||
@@ -628,16 +627,12 @@ public void outlineSwap(List<UUID> ownPieces, List<UUID> enemyPieces) {
 | 
			
		||||
 | 
			
		||||
        for (UUID uuid : ownPieces) {
 | 
			
		||||
            PieceControl p = pieces.get(uuid);
 | 
			
		||||
            p.highlight(false);
 | 
			
		||||
            p.setHoverable(true);
 | 
			
		||||
            p.setSelectable(true);
 | 
			
		||||
            p.selectableOwn();
 | 
			
		||||
            selectableOwnPieces.add(p);
 | 
			
		||||
        }
 | 
			
		||||
        for (UUID uuid : enemyPieces) {
 | 
			
		||||
            PieceControl p = pieces.get(uuid);
 | 
			
		||||
            p.highlight(true);
 | 
			
		||||
            p.setHoverable(true);
 | 
			
		||||
            p.setSelectable(true);
 | 
			
		||||
            p.selectableOff();
 | 
			
		||||
            selectableEnemyPieces.add(p);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -655,9 +650,7 @@ public void outlineShield(List<UUID> pieces) {
 | 
			
		||||
 | 
			
		||||
        for (UUID uuid : pieces) {
 | 
			
		||||
            PieceControl p = this.pieces.get(uuid);
 | 
			
		||||
            p.highlight(false);
 | 
			
		||||
            p.setHoverable(true);
 | 
			
		||||
            p.setSelectable(true);
 | 
			
		||||
            p.selectableOwn();
 | 
			
		||||
            selectableOwnPieces.add(p);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -667,31 +660,35 @@ public void outlineShield(List<UUID> pieces) {
 | 
			
		||||
     *
 | 
			
		||||
     * @param pieceSelected the PieceControl instance representing the piece selected by the user
 | 
			
		||||
     */
 | 
			
		||||
    public void pieceSelect(PieceControl pieceSelected) {
 | 
			
		||||
        boolean isSelected = pieceSelected.isSelected();
 | 
			
		||||
        if (selectableOwnPieces.contains(pieceSelected)) {
 | 
			
		||||
    public void pieceSelect(OutlineOEControl selected) {
 | 
			
		||||
        PieceControl piece = getPieceByOE(selected);
 | 
			
		||||
        NodeControl node = selectedPieceNodeMap.get(piece);
 | 
			
		||||
 | 
			
		||||
        boolean isSelected = piece.isSelected();
 | 
			
		||||
        if (selectableOwnPieces.contains(piece)) {
 | 
			
		||||
            for (PieceControl p : selectableOwnPieces) {
 | 
			
		||||
                p.unSelect();
 | 
			
		||||
                if (selectedPieceNodeMap.get(p) != null) selectedPieceNodeMap.get(p).unSelect();
 | 
			
		||||
                p.selectOff();
 | 
			
		||||
                NodeControl n = selectedPieceNodeMap.get(p);
 | 
			
		||||
                if (n != null) n.selectOff();
 | 
			
		||||
            }
 | 
			
		||||
            if (!isSelected) {
 | 
			
		||||
                pieceSelected.select();
 | 
			
		||||
                if (selectedPieceNodeMap.get(pieceSelected) != null) selectedPieceNodeMap.get(pieceSelected).select();
 | 
			
		||||
                selectedOwnPiece = pieceSelected;
 | 
			
		||||
                piece.selectOn();
 | 
			
		||||
                if (node != null) node.selectOn();
 | 
			
		||||
                selectedOwnPiece = piece;
 | 
			
		||||
            } else {
 | 
			
		||||
                pieceSelected.unSelect();
 | 
			
		||||
                if (selectedPieceNodeMap.get(pieceSelected) != null) selectedPieceNodeMap.get(pieceSelected).unSelect();
 | 
			
		||||
                piece.selectOff();
 | 
			
		||||
                if (node != null) node.selectOff();;
 | 
			
		||||
                selectedOwnPiece = null;
 | 
			
		||||
            }
 | 
			
		||||
        } else if (selectableEnemyPieces.contains(pieceSelected)) {
 | 
			
		||||
        } else if (selectableEnemyPieces.contains(piece)) {
 | 
			
		||||
            for (PieceControl p : selectableEnemyPieces) {
 | 
			
		||||
                p.unSelect();
 | 
			
		||||
                p.selectOff();
 | 
			
		||||
            }
 | 
			
		||||
            if (!isSelected) {
 | 
			
		||||
                pieceSelected.select();
 | 
			
		||||
                selectedEnemyPiece = pieceSelected;
 | 
			
		||||
                piece.selectOn();
 | 
			
		||||
                selectedEnemyPiece = piece;
 | 
			
		||||
            } else {
 | 
			
		||||
                pieceSelected.unSelect();
 | 
			
		||||
                piece.selectOff();
 | 
			
		||||
                selectedEnemyPiece = null;
 | 
			
		||||
            }
 | 
			
		||||
        } else throw new RuntimeException("pieceSelected is not in own/enemySelectablePieces");
 | 
			
		||||
@@ -699,37 +696,47 @@ public void pieceSelect(PieceControl pieceSelected) {
 | 
			
		||||
        app.getModelSynchronize().select(getKeyByValue(pieces, selectedOwnPiece), getKeyByValue(pieces, selectedEnemyPiece));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void pieceHoverOn(PieceControl hoverPiece) {
 | 
			
		||||
        hoverPiece.hover();
 | 
			
		||||
        if (selectedPieceNodeMap.get(hoverPiece) != null) selectedPieceNodeMap.get(hoverPiece).hover();
 | 
			
		||||
    public void hoverOn(OutlineOEControl hover) {
 | 
			
		||||
        PieceControl piece = getPieceByOE(hover);
 | 
			
		||||
        NodeControl node = selectedPieceNodeMap.get(piece);
 | 
			
		||||
 | 
			
		||||
        piece.hoverOn();
 | 
			
		||||
        if(node != null) node.hoverOn();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void pieceHoverOff(PieceControl hoverPiece) {
 | 
			
		||||
        hoverPiece.hoverOff();
 | 
			
		||||
        if (selectedPieceNodeMap.get(hoverPiece) != null) selectedPieceNodeMap.get(hoverPiece).hoverOff();
 | 
			
		||||
    public void hoverOff(OutlineOEControl hover) {
 | 
			
		||||
        PieceControl piece = getPieceByOE(hover);
 | 
			
		||||
        NodeControl node = selectedPieceNodeMap.get(piece);
 | 
			
		||||
 | 
			
		||||
        piece.hoverOff();
 | 
			
		||||
        if(node != null) node.hoverOff();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private PieceControl getPieceByOE(OutlineOEControl control){
 | 
			
		||||
        PieceControl piece;
 | 
			
		||||
        if (control instanceof PieceControl p){
 | 
			
		||||
            piece = p;
 | 
			
		||||
        }
 | 
			
		||||
        else if (control instanceof NodeControl n){
 | 
			
		||||
            piece = getKeyByValue(selectedPieceNodeMap, n);
 | 
			
		||||
        }
 | 
			
		||||
        else throw new RuntimeException("selected is not instanceof piece or node");
 | 
			
		||||
        return piece;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Clears all highlighted, selectable, and selected pieces and nodes.
 | 
			
		||||
     */
 | 
			
		||||
    public void clearSelectable() {
 | 
			
		||||
        for (PieceControl p : selectableEnemyPieces) {
 | 
			
		||||
            p.unSelect();
 | 
			
		||||
            p.unHighlight();
 | 
			
		||||
            p.setSelectable(false);
 | 
			
		||||
            p.setHoverable(false);
 | 
			
		||||
        }
 | 
			
		||||
        for (PieceControl p : selectableOwnPieces) {
 | 
			
		||||
            p.unSelect();
 | 
			
		||||
            p.unHighlight();
 | 
			
		||||
            p.setSelectable(false);
 | 
			
		||||
            p.setHoverable(false);
 | 
			
		||||
            if (selectedPieceNodeMap.get(p) != null) selectedPieceNodeMap.get(p).unSelect();
 | 
			
		||||
            if (selectedPieceNodeMap.get(p) != null) selectedPieceNodeMap.get(p).unHighlight();
 | 
			
		||||
            p.selectableOff();
 | 
			
		||||
            NodeControl n = selectedPieceNodeMap.get(p);
 | 
			
		||||
            if(n != null) n.selectableOff();
 | 
			
		||||
        }
 | 
			
		||||
        for (NodeControl n : outlineNodes) {
 | 
			
		||||
            n.deOutline();
 | 
			
		||||
        for (PieceControl p : selectableEnemyPieces) {
 | 
			
		||||
            p.selectableOff();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        outlineNodes.clear();
 | 
			
		||||
        selectableEnemyPieces.clear();
 | 
			
		||||
        selectableOwnPieces.clear();
 | 
			
		||||
 
 | 
			
		||||
@@ -9,16 +9,7 @@
 | 
			
		||||
 * A control that adds highlighting functionality to a node in the game.
 | 
			
		||||
 * This class extends {@link OutlineControl} to add an outline effect when the node is highlighted.
 | 
			
		||||
 */
 | 
			
		||||
public class NodeControl extends OutlineControl {
 | 
			
		||||
 | 
			
		||||
    private static final ColorRGBA OUTLINE_HIGHLIGHT_COLOR = ColorRGBA.White;
 | 
			
		||||
    private static final int OUTLINE_HIGHLIGHT_WIDTH = 6;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_SELECT_COLOR = ColorRGBA.Cyan;
 | 
			
		||||
    private static final int OUTLINE_SELECT_WIDTH = 8;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_HOVER_COLOR = ColorRGBA.Yellow;
 | 
			
		||||
    private static final int OUTLINE_HOVER_WIDTH = 6;
 | 
			
		||||
    private boolean select = false;
 | 
			
		||||
    private boolean highlight = false;
 | 
			
		||||
public class NodeControl extends OutlineOEControl {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructs a {@link NodeControl} with the specified application and post processor.
 | 
			
		||||
@@ -28,7 +19,7 @@ public class NodeControl extends OutlineControl {
 | 
			
		||||
     * @param fpp The {@link FilterPostProcessor} to apply post-processing effects.
 | 
			
		||||
     */
 | 
			
		||||
    public NodeControl(MdgaApp app, FilterPostProcessor fpp) {
 | 
			
		||||
        super(app, fpp);
 | 
			
		||||
        super(app, fpp, app.getCamera());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -40,35 +31,4 @@ public NodeControl(MdgaApp app, FilterPostProcessor fpp) {
 | 
			
		||||
    public Vector3f getLocation() {
 | 
			
		||||
        return this.getSpatial().getLocalTranslation();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void highlight() {
 | 
			
		||||
        highlight = true;
 | 
			
		||||
        super.outline(OUTLINE_HIGHLIGHT_COLOR, OUTLINE_HIGHLIGHT_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void unHighlight() {
 | 
			
		||||
        highlight = false;
 | 
			
		||||
        deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void select() {
 | 
			
		||||
        select = true;
 | 
			
		||||
        super.outline(OUTLINE_SELECT_COLOR, OUTLINE_SELECT_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void unSelect() {
 | 
			
		||||
        select = false;
 | 
			
		||||
        if (highlight) highlight();
 | 
			
		||||
        else deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void hover() {
 | 
			
		||||
        super.outline(OUTLINE_HOVER_COLOR, OUTLINE_HOVER_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void hoverOff() {
 | 
			
		||||
        if (select) select();
 | 
			
		||||
        else if (highlight) highlight();
 | 
			
		||||
        else deOutline();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -16,9 +16,18 @@ public class OutlineControl extends InitControl {
 | 
			
		||||
    /**
 | 
			
		||||
     * The {@link SelectObjectOutliner} responsible for managing the outline effect.
 | 
			
		||||
     */
 | 
			
		||||
    private final SelectObjectOutliner outlineOwn;
 | 
			
		||||
    private static final int THICKNESS_DEFAULT = 6;
 | 
			
		||||
    private MdgaApp app;
 | 
			
		||||
    private final SelectObjectOutliner selectObjectOutliner;
 | 
			
		||||
    private final MdgaApp app;
 | 
			
		||||
    private boolean hoverable = false;
 | 
			
		||||
    private boolean highlight = false;
 | 
			
		||||
    private boolean selectable = false;
 | 
			
		||||
    private boolean select = false;
 | 
			
		||||
    private ColorRGBA highlightColor;
 | 
			
		||||
    private int highlightWidth;
 | 
			
		||||
    private ColorRGBA hoverColor;
 | 
			
		||||
    private int hoverWidth;
 | 
			
		||||
    private ColorRGBA selectColor;
 | 
			
		||||
    private int selectWidth;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructs an {@code OutlineControl} with default thickness for the object outline.
 | 
			
		||||
@@ -26,44 +35,30 @@ public class OutlineControl extends InitControl {
 | 
			
		||||
     * @param app The main application managing the outline control.
 | 
			
		||||
     * @param fpp The {@code FilterPostProcessor} used for post-processing effects.
 | 
			
		||||
     */
 | 
			
		||||
    public OutlineControl(MdgaApp app, FilterPostProcessor fpp) {
 | 
			
		||||
    public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam,
 | 
			
		||||
                          ColorRGBA highlightColor, int highlightWidth,
 | 
			
		||||
                          ColorRGBA hoverColor, int hoverWidth,
 | 
			
		||||
                          ColorRGBA selectColor, int selectWidth
 | 
			
		||||
    ) {
 | 
			
		||||
        this.app = app;
 | 
			
		||||
        outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), app.getCamera(), app);
 | 
			
		||||
        this.highlightColor = highlightColor;
 | 
			
		||||
        this.highlightWidth = highlightWidth;
 | 
			
		||||
        this.hoverColor = hoverColor;
 | 
			
		||||
        this.hoverWidth = hoverWidth;
 | 
			
		||||
        this.selectColor = selectColor;
 | 
			
		||||
        this.selectWidth = selectWidth;
 | 
			
		||||
        selectObjectOutliner = new SelectObjectOutliner(fpp, app.getRenderManager(), app.getAssetManager(), cam, app);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructs an {@code OutlineControl} with default thickness, allowing a custom camera to be specified.
 | 
			
		||||
     *
 | 
			
		||||
     * @param app The main application managing the outline control.
 | 
			
		||||
     * @param fpp The {@code FilterPostProcessor} used for post-processing effects.
 | 
			
		||||
     * @param cam The camera used for rendering the outlined objects.
 | 
			
		||||
     */
 | 
			
		||||
    public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam) {
 | 
			
		||||
        this.app = app;
 | 
			
		||||
        outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), cam, app);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructs an {@code OutlineControl} with a specified thickness and custom camera.
 | 
			
		||||
     *
 | 
			
		||||
     * @param app       The main application managing the outline control.
 | 
			
		||||
     * @param fpp       The {@code FilterPostProcessor} used for post-processing effects.
 | 
			
		||||
     * @param cam       The camera used for rendering the outlined objects.
 | 
			
		||||
     * @param thickness The thickness of the outline.
 | 
			
		||||
     */
 | 
			
		||||
    public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam, int thickness) {
 | 
			
		||||
        this.app = app;
 | 
			
		||||
        outlineOwn = new SelectObjectOutliner(thickness, fpp, app.getRenderManager(), app.getAssetManager(), cam, app);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Applies an outline to the spatial object with the given color.
 | 
			
		||||
     *
 | 
			
		||||
     * @param color The {@link ColorRGBA} representing the color of the outline.
 | 
			
		||||
     */
 | 
			
		||||
    public void outline(ColorRGBA color) {
 | 
			
		||||
        outlineOwn.select(spatial, color);
 | 
			
		||||
    }
 | 
			
		||||
//    public void outline(ColorRGBA color) {
 | 
			
		||||
//        selectObjectOutliner.select(spatial, color);
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Applies an outline to the spatial object with the given color and width.
 | 
			
		||||
@@ -72,15 +67,15 @@ public void outline(ColorRGBA color) {
 | 
			
		||||
     * @param width The width of the outline.
 | 
			
		||||
     */
 | 
			
		||||
    public void outline(ColorRGBA color, int width) {
 | 
			
		||||
        deOutline();
 | 
			
		||||
        outlineOwn.select(spatial, color, width);
 | 
			
		||||
        outlineOff();
 | 
			
		||||
        selectObjectOutliner.select(spatial, color, width);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Removes the outline effect from the spatial object.
 | 
			
		||||
     */
 | 
			
		||||
    public void deOutline() {
 | 
			
		||||
        outlineOwn.deselect(spatial);
 | 
			
		||||
    public void outlineOff() {
 | 
			
		||||
        selectObjectOutliner.deselect(spatial);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -91,4 +86,97 @@ public void deOutline() {
 | 
			
		||||
    public MdgaApp getApp() {
 | 
			
		||||
        return app;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void highlightOn() {
 | 
			
		||||
        highlight = true;
 | 
			
		||||
        outline(highlightColor, highlightWidth);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void highlightOff() {
 | 
			
		||||
        highlight = false;
 | 
			
		||||
        outlineOff();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void hoverOn() {
 | 
			
		||||
        if (!hoverable) return;
 | 
			
		||||
        outline(hoverColor, hoverWidth);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void hoverOff() {
 | 
			
		||||
        if (!hoverable) return;
 | 
			
		||||
 | 
			
		||||
        if (select) selectOn();
 | 
			
		||||
        else if (highlight) highlightOn();
 | 
			
		||||
        else outlineOff();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectOn() {
 | 
			
		||||
        if (!selectable) return;
 | 
			
		||||
        select = true;
 | 
			
		||||
        outline(selectColor, selectWidth);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectOff() {
 | 
			
		||||
        select = false;
 | 
			
		||||
        if (highlight) highlightOn();
 | 
			
		||||
        else outlineOff();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectableOn(){
 | 
			
		||||
        setSelectable(true);
 | 
			
		||||
        setHoverable(true);
 | 
			
		||||
        highlightOn();
 | 
			
		||||
        select = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectableOff(){
 | 
			
		||||
        setSelectable(false);
 | 
			
		||||
        setHoverable(false);
 | 
			
		||||
        highlightOff();
 | 
			
		||||
        select = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setSelectable(boolean selectable) {
 | 
			
		||||
        this.selectable = selectable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSelected() {
 | 
			
		||||
        return select;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSelectable() {
 | 
			
		||||
        return selectable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isHoverable() {
 | 
			
		||||
        return hoverable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setHoverable(boolean hoverable) {
 | 
			
		||||
        this.hoverable = hoverable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setHighlightColor(ColorRGBA color){
 | 
			
		||||
        highlightColor = color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setHighlightWidth(int width){
 | 
			
		||||
        highlightWidth = width;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setHoverColor(ColorRGBA color){
 | 
			
		||||
        hoverColor = color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setHoverWidth(int width){
 | 
			
		||||
        hoverWidth = width;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSelectColor(ColorRGBA color){
 | 
			
		||||
        selectColor = color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSelectWidth(int width){
 | 
			
		||||
        selectWidth = width;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,40 @@
 | 
			
		||||
package pp.mdga.client.board;
 | 
			
		||||
 | 
			
		||||
import com.jme3.math.ColorRGBA;
 | 
			
		||||
import com.jme3.post.FilterPostProcessor;
 | 
			
		||||
import com.jme3.renderer.Camera;
 | 
			
		||||
import pp.mdga.client.MdgaApp;
 | 
			
		||||
 | 
			
		||||
public class OutlineOEControl extends OutlineControl{
 | 
			
		||||
    private static final ColorRGBA OUTLINE_OWN_COLOR = ColorRGBA.White;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_ENEMY_COLOR = ColorRGBA.Red;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_OWN_HOVER_COLOR = ColorRGBA.Yellow;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_ENEMY_HOVER_COLOR = ColorRGBA.Green;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_OWN_SELECT_COLOR = ColorRGBA.Cyan;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_ENEMY_SELECT_COLOR = ColorRGBA.Orange;
 | 
			
		||||
    private static final int OUTLINE_HIGHLIGHT_WIDTH = 8;
 | 
			
		||||
    private static final int OUTLINE_HOVER_WIDTH = 8;
 | 
			
		||||
    private static final int OUTLINE_SELECT_WIDTH = 10;
 | 
			
		||||
 | 
			
		||||
    public OutlineOEControl(MdgaApp app, FilterPostProcessor fpp, Camera cam){
 | 
			
		||||
        super(app, fpp, cam,
 | 
			
		||||
          OUTLINE_OWN_COLOR, OUTLINE_HIGHLIGHT_WIDTH,
 | 
			
		||||
          OUTLINE_OWN_HOVER_COLOR, OUTLINE_HOVER_WIDTH,
 | 
			
		||||
          OUTLINE_OWN_SELECT_COLOR, OUTLINE_SELECT_WIDTH
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectableOwn(){
 | 
			
		||||
        setHighlightColor(OUTLINE_OWN_COLOR);
 | 
			
		||||
        setHoverColor(OUTLINE_OWN_HOVER_COLOR);
 | 
			
		||||
        setSelectColor(OUTLINE_OWN_SELECT_COLOR);
 | 
			
		||||
        selectableOn();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectableEnemy(){
 | 
			
		||||
        setHighlightColor(OUTLINE_ENEMY_COLOR);
 | 
			
		||||
        setHoverColor(OUTLINE_ENEMY_HOVER_COLOR);
 | 
			
		||||
        setSelectColor(OUTLINE_ENEMY_SELECT_COLOR);
 | 
			
		||||
        selectableOn();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
 * to provide outline functionality and includes additional features like shield effects,
 | 
			
		||||
 * hover states, and selection states.
 | 
			
		||||
 */
 | 
			
		||||
public class PieceControl extends OutlineControl {
 | 
			
		||||
public class PieceControl extends OutlineOEControl {
 | 
			
		||||
    private final float initRotation;
 | 
			
		||||
    private final AssetManager assetManager;
 | 
			
		||||
    private Spatial shieldRing;
 | 
			
		||||
@@ -32,16 +32,6 @@ public class PieceControl extends OutlineControl {
 | 
			
		||||
    private static final ColorRGBA SHIELD_SUPPRESSED_COLOR = new ColorRGBA(1f, 0.5f, 0, SHIELD_TRANSPARENCY);
 | 
			
		||||
    private static final float SHIELD_Z = 0f;
 | 
			
		||||
 | 
			
		||||
    private static final ColorRGBA OUTLINE_OWN_COLOR = ColorRGBA.White;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_ENEMY_COLOR = ColorRGBA.Red;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_OWN_HOVER_COLOR = ColorRGBA.Yellow;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_ENEMY_HOVER_COLOR = ColorRGBA.Green;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_OWN_SELECT_COLOR = ColorRGBA.Cyan;
 | 
			
		||||
    private static final ColorRGBA OUTLINE_ENEMY_SELECT_COLOR = ColorRGBA.Orange;
 | 
			
		||||
    private static final int OUTLINE_HIGHLIGHT_WIDTH = 8;
 | 
			
		||||
    private static final int OUTLINE_HOVER_WIDTH = 8;
 | 
			
		||||
    private static final int OUTLINE_SELECT_WIDTH = 10;
 | 
			
		||||
 | 
			
		||||
    private final Node parentNode;
 | 
			
		||||
    private boolean enemy;
 | 
			
		||||
    private boolean hoverable;
 | 
			
		||||
@@ -59,18 +49,13 @@ public class PieceControl extends OutlineControl {
 | 
			
		||||
     * @param fpp          The {@link FilterPostProcessor} to apply post-processing effects.
 | 
			
		||||
     */
 | 
			
		||||
    public PieceControl(float initRotation, AssetManager assetManager, MdgaApp app, FilterPostProcessor fpp) {
 | 
			
		||||
        super(app, fpp);
 | 
			
		||||
        super(app, fpp, app.getCamera());
 | 
			
		||||
        this.parentNode = new Node();
 | 
			
		||||
        this.initRotation = initRotation;
 | 
			
		||||
        this.assetManager = assetManager;
 | 
			
		||||
        this.shieldRing = null;
 | 
			
		||||
        this.shieldMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
 | 
			
		||||
        this.shieldMat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
 | 
			
		||||
        enemy = false;
 | 
			
		||||
        hoverable = false;
 | 
			
		||||
        highlight = false;
 | 
			
		||||
        selectable = false;
 | 
			
		||||
        select = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -190,99 +175,4 @@ public void setMaterial(Material mat) {
 | 
			
		||||
    public Material getMaterial() {
 | 
			
		||||
        return ((Geometry) getSpatial()).getMaterial();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Highlights the piece with the appropriate outline color based on whether it is an enemy or not.
 | 
			
		||||
     *
 | 
			
		||||
     * @param enemy True if the piece is an enemy, false if it is owned by the player.
 | 
			
		||||
     */
 | 
			
		||||
    public void highlight(boolean enemy) {
 | 
			
		||||
        this.enemy = enemy;
 | 
			
		||||
        highlight = true;
 | 
			
		||||
        super.outline(enemy ? OUTLINE_ENEMY_COLOR : OUTLINE_OWN_COLOR, OUTLINE_HIGHLIGHT_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Removes the highlight effect from the piece.
 | 
			
		||||
     */
 | 
			
		||||
    public void unHighlight() {
 | 
			
		||||
        highlight = false;
 | 
			
		||||
        deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Applies a hover effect on the piece if it is hoverable.
 | 
			
		||||
     */
 | 
			
		||||
    public void hover() {
 | 
			
		||||
        if (!hoverable) return;
 | 
			
		||||
        super.outline(enemy ? OUTLINE_ENEMY_HOVER_COLOR : OUTLINE_OWN_HOVER_COLOR, OUTLINE_HOVER_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Removes the hover effect from the piece.
 | 
			
		||||
     */
 | 
			
		||||
    public void hoverOff() {
 | 
			
		||||
        if (!hoverable) return;
 | 
			
		||||
 | 
			
		||||
        if (select) select();
 | 
			
		||||
        else if (highlight) highlight(enemy);
 | 
			
		||||
        else deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Deselects the piece and removes the selection outline. If the piece was highlighted,
 | 
			
		||||
     * it will be re-highlighted. Otherwise, the outline is removed.
 | 
			
		||||
     */
 | 
			
		||||
    public void unSelect() {
 | 
			
		||||
        select = false;
 | 
			
		||||
        if (highlight) highlight(enemy);
 | 
			
		||||
        else deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Selects the piece and applies the selection outline. If the piece is an enemy, it will
 | 
			
		||||
     * be outlined with the enemy selection color; otherwise, the own selection color will be used.
 | 
			
		||||
     */
 | 
			
		||||
    public void select() {
 | 
			
		||||
        if (!selectable) return;
 | 
			
		||||
        select = true;
 | 
			
		||||
        super.outline(enemy ? OUTLINE_ENEMY_SELECT_COLOR : OUTLINE_OWN_SELECT_COLOR, OUTLINE_SELECT_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets whether the piece is selectable.
 | 
			
		||||
     *
 | 
			
		||||
     * @param selectable True if the piece can be selected, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    public void setSelectable(boolean selectable) {
 | 
			
		||||
        this.selectable = selectable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Checks if the piece is selected.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if the piece is selected, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    public boolean isSelected() {
 | 
			
		||||
        return select;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Checks if the piece is selectable.
 | 
			
		||||
     *
 | 
			
		||||
     * @return True if the piece is selectable, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    public boolean isSelectable() {
 | 
			
		||||
        return selectable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets whether the piece is hoverable.
 | 
			
		||||
     *
 | 
			
		||||
     * @param hoverable True if the piece can be hovered over, false otherwise.
 | 
			
		||||
     */
 | 
			
		||||
    public void setHoverable(boolean hoverable) {
 | 
			
		||||
        this.hoverable = hoverable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -15,8 +15,6 @@
 | 
			
		||||
 | 
			
		||||
public class CardControl extends OutlineControl {
 | 
			
		||||
 | 
			
		||||
    private static final ColorRGBA OUTLINE_COLOR = ColorRGBA.Yellow;
 | 
			
		||||
 | 
			
		||||
    private static final ColorRGBA HIGHLIGHT_COLOR = ColorRGBA.Yellow;
 | 
			
		||||
    private static final int HIGHLIGHT_WIDTH = 9;
 | 
			
		||||
 | 
			
		||||
@@ -27,16 +25,16 @@ public class CardControl extends OutlineControl {
 | 
			
		||||
    private static final int SELECT_WIDTH = 13;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    private static final int OUTLINE_THICKNESS = 9;
 | 
			
		||||
    private boolean hoverable;
 | 
			
		||||
    private boolean highlight;
 | 
			
		||||
    private boolean selectable;
 | 
			
		||||
    private boolean select;
 | 
			
		||||
    private Node root;
 | 
			
		||||
    private BitmapText num;
 | 
			
		||||
 | 
			
		||||
    public CardControl(MdgaApp app, FilterPostProcessor fpp, Camera cam, Node root) {
 | 
			
		||||
        super(app, fpp, cam, OUTLINE_THICKNESS);
 | 
			
		||||
        super(app, fpp, cam,
 | 
			
		||||
            HIGHLIGHT_COLOR, HIGHLIGHT_WIDTH,
 | 
			
		||||
            HOVER_COLOR, HOVER_WIDTH,
 | 
			
		||||
            SELECT_COLOR, SELECT_WIDTH
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        this.root = root;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -77,67 +75,6 @@ public Node getRoot() {
 | 
			
		||||
    public void initSpatial() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void outline() {
 | 
			
		||||
        super.outline(OUTLINE_COLOR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private final static Vector3f HIGHLIGHT_Y = new Vector3f(0, 0.4f, 0);
 | 
			
		||||
 | 
			
		||||
    public void setHighlight() {
 | 
			
		||||
        this.highlight = true;
 | 
			
		||||
        root.setLocalTranslation(root.getLocalTranslation().add(HIGHLIGHT_Y));
 | 
			
		||||
        highlight();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void highlight() {
 | 
			
		||||
        super.outline(HIGHLIGHT_COLOR, HIGHLIGHT_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void unHighlight() {
 | 
			
		||||
        highlight = false;
 | 
			
		||||
        root.setLocalTranslation(root.getLocalTranslation().subtract(HIGHLIGHT_Y));
 | 
			
		||||
        deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void hover() {
 | 
			
		||||
        if (!hoverable) return;
 | 
			
		||||
        super.outline(HOVER_COLOR, HOVER_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void hoverOff() {
 | 
			
		||||
        if (!hoverable) return;
 | 
			
		||||
 | 
			
		||||
        if (select) select();
 | 
			
		||||
        else if (highlight) highlight();
 | 
			
		||||
        else deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void select() {
 | 
			
		||||
        if (!selectable) return;
 | 
			
		||||
        select = true;
 | 
			
		||||
        super.outline(SELECT_COLOR, SELECT_WIDTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void unSelect() {
 | 
			
		||||
        if (!selectable) return;
 | 
			
		||||
        select = false;
 | 
			
		||||
        if (highlight) highlight();
 | 
			
		||||
        else deOutline();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSelectable(boolean selectable) {
 | 
			
		||||
        this.selectable = selectable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSelected() {
 | 
			
		||||
        return select;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSelectable() {
 | 
			
		||||
        return selectable;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setHoverable(boolean hoverable) {
 | 
			
		||||
        this.hoverable = hoverable;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -104,10 +104,7 @@ public void removeCard(BonusCard card) {
 | 
			
		||||
 | 
			
		||||
    public void clearSelectableCards() {
 | 
			
		||||
        for (CardControl control : selectableCards) {
 | 
			
		||||
            control.setSelectable(false);
 | 
			
		||||
            control.setHoverable(false);
 | 
			
		||||
            control.unHighlight();
 | 
			
		||||
            control.unSelect();
 | 
			
		||||
            control.selectableOff();
 | 
			
		||||
        }
 | 
			
		||||
        selectableCards.clear();
 | 
			
		||||
        cardSelect = null;
 | 
			
		||||
@@ -134,21 +131,19 @@ public void setSelectableCards(List<BonusCard> select) {
 | 
			
		||||
            selectableCards.add(bonusCardControlMap.get(card));
 | 
			
		||||
        }
 | 
			
		||||
        for (CardControl control : selectableCards) {
 | 
			
		||||
            control.setSelectable(true);
 | 
			
		||||
            control.setHoverable(true);
 | 
			
		||||
            control.setHighlight();
 | 
			
		||||
            control.selectableOn();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectCard(CardControl cardControl) {
 | 
			
		||||
        if (cardControl.isSelected()) {
 | 
			
		||||
            cardControl.unSelect();
 | 
			
		||||
            cardControl.selectOff();
 | 
			
		||||
            cardSelect = null;
 | 
			
		||||
        } else {
 | 
			
		||||
            for (CardControl control : selectableCards) {
 | 
			
		||||
                control.unSelect();
 | 
			
		||||
                control.selectOff();
 | 
			
		||||
            }
 | 
			
		||||
            cardControl.select();
 | 
			
		||||
            cardControl.selectOn();
 | 
			
		||||
            cardSelect = getKeyByValue(bonusCardControlMap, cardControl);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,20 +15,18 @@ public class SelectObjectOutliner {
 | 
			
		||||
    private final RenderManager renderManager;
 | 
			
		||||
    private final AssetManager assetManager;
 | 
			
		||||
    private final Camera cam;
 | 
			
		||||
    private final int width;
 | 
			
		||||
    private boolean selected;
 | 
			
		||||
    private ViewPort outlineViewport = null;
 | 
			
		||||
    //    private OutlineFilter outlineFilter = null;
 | 
			
		||||
    private OutlineProFilter outlineFilter = null;
 | 
			
		||||
    private final MdgaApp app;
 | 
			
		||||
 | 
			
		||||
    public SelectObjectOutliner(int width, FilterPostProcessor fpp, RenderManager renderManager, AssetManager assetManager, Camera cam, MdgaApp app) {
 | 
			
		||||
    public SelectObjectOutliner(FilterPostProcessor fpp, RenderManager renderManager, AssetManager assetManager, Camera cam, MdgaApp app) {
 | 
			
		||||
        this.selected = false;
 | 
			
		||||
        this.fpp = fpp;
 | 
			
		||||
        this.renderManager = renderManager;
 | 
			
		||||
        this.assetManager = assetManager;
 | 
			
		||||
        this.cam = cam;
 | 
			
		||||
        this.width = width;
 | 
			
		||||
        this.app = app;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -39,12 +37,12 @@ public void deselect(Spatial model) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void select(Spatial model, ColorRGBA color) {
 | 
			
		||||
        if (!selected) {
 | 
			
		||||
            selected = true;
 | 
			
		||||
            showOutlineFilterEffect(model, width, color);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
//    public void select(Spatial model, ColorRGBA color) {
 | 
			
		||||
//        if (!selected) {
 | 
			
		||||
//            selected = true;
 | 
			
		||||
//            showOutlineFilterEffect(model, width, color);
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
    public void select(Spatial model, ColorRGBA color, int width) {
 | 
			
		||||
        if (!selected) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user