Jump to content

OSBot 2: isVisible?


pork

Recommended Posts

Purr purr, i've seen this thread many times.


GraphicUtilities.MAIN_SCREEN_CLIP.contains(Calculations.getBoundingBox(this, npc.getModel(), npc.getGridX(), npc.getGridY()).getBounds())

 /**
     * Gets bounding box of model.
     *
     * @param methodProvider - the ATMethodProvider instance.
     * @param model          - the model.
     * @param gridX          - the map grid 'x' position.
     * @param gridY          - the map grid 'y' position.
     * @return the bounding box of model.
     */
    public static Polygon getBoundingBox(ATMethodProvider methodProvider, Model model, int gridX, int gridY) {
        if (model == null) {
            return new Polygon();
        }
        short[][] screenCoordinates = GraphicUtilities.getScreenCoordinates(methodProvider.bot, gridX, gridY, methodProvider.client.accessor.getPlane(), model);
        Polygon temp = new Polygon();

        int minX = Integer.MAX_VALUE;
        int minY = Integer.MAX_VALUE;
        int maxX = 0;
        int maxY = 0;
        for (int triangleId = 0; triangleId < model.getTriangleCount(); triangleId++) {
            int triangleA = model.getVertexXIndices()[triangleId];
            int triangleB = model.getVertexYIndices()[triangleId];
            int triangleC = model.getVertexZIndices()[triangleId];

            short[] pointA = screenCoordinates[triangleA];
            short[] pointB = screenCoordinates[triangleB];
            short[] pointC = screenCoordinates[triangleC];
            if (pointA != null && pointB != null && pointC != null) {
                int aX = pointA[0];
                int aY = pointA[1];

                int bX = pointB[0];
                int bY = pointB[1];

                int cX = pointB[0];
                int cY = pointB[1];

                if (aX < minX) {
                    minX = aX;
                }
                if (bX < minX) {
                    minX = bX;
                }
                if (cX < minX) {
                    minX = cX;
                }

                if (aY < minY) {
                    minY = aY;
                }
                if (bY < minY) {
                    minY = bY;
                }
                if (cY < minY) {
                    minY = cY;
                }
                //maxes

                if (aX > maxX) {
                    maxX = aX;
                }
                if (bX > maxX) {
                    maxX = bX;
                }
                if (cX > maxX) {
                    maxX = cX;
                }

                if (aY > maxY) {
                    maxY = aY;
                }
                if (bY > maxY) {
                    maxY = bY;
                }
                if (cY > maxY) {
                    maxY = cY;
                }

            }
        }
        temp.addPoint(minX, minY);
        temp.addPoint(minX + (maxX - minX), minY);
        temp.addPoint(maxX, maxY);
        temp.addPoint(minX, maxY);
        return temp;
    }
  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...