Jump to content

3D to 2D source code.


PolishCivil

Recommended Posts

Ye, osbot's api is f closed source but that doesnt mean i can't decompile it and release.
 

 public static short[][] getScreenCoordinates(Client client, int gridX, int gridY, int gridZ, Model model) {

        int cameraX = client.getCameraX();
        int cameraY = client.getCameraY();
        int cameraZ = client.getCameraZ();
        int sinP = Utilities.CAMERA_SIN[client.getCameraPitch()];
        int cosP = Utilities.CAMERA_COS[client.getCameraPitch()];
        int sinY = Utilities.CAMERA_SIN[client.getCameraYaw()];
        int cosY = Utilities.CAMERA_COS[client.getCameraYaw()];
        if (model.getTriangleCount() < 0) {
            return new short[0][];
        }
        short[][] screenCoords = new short[model.getVerticeCount()][];
        for (int n = 0; n < model.getVerticeCount(); n++) {
            int x0 = model.getVerticesX()[n] + gridX;
            int z0 = model.getVerticesZ()[n] + gridY;
            int y0 = model.getVerticesY()[n] + Utilities.getTileHeight(client.getBot(), x0, z0, gridZ) - cameraZ;

            int n15 = (z0 -= cameraY) * sinY + (x0 -= cameraX) * cosY >> 16;
            z0 = z0 * cosY - x0 * sinY >> 16;
            x0 = n15;
            n15 = y0 * cosP - z0 * sinP >> 16;
            z0 = y0 * sinP + z0 * cosP >> 16;
            y0 = n15;
            if (z0 >= 50) {
                x0 = 260 + (x0 << 9) / z0;
                y0 = 171 + (y0 << 9) / z0;
                if (x0 >= 0 && y0 >= 0) {
                    screenCoords[n] = new short[2];
                    screenCoords[n][0] = (short) x0;
                    screenCoords[n][1] = (short) y0;
                }
            }
        }

        return screenCoords;
    }

Its just exact copy of Utilities.getScreenCoordinates
It could be used in faster model debugging (u need add some edits ofc, thats why its snippet) for new scripters.

Yeah, if you want anything more (not engine) pm me, and i will see what i can do.

  • Like 4
Link to comment
Share on other sites

You don't even need to decompile osbot for this lol >_>

 

Ye, lol. But this is decompiled, not my version. You get it or not?

 

Sweet. So basically, the short[][] that it's reurning is a 2d grid system of all the co-ords of all the model's vertices. rite? biggrin.png

http://freespace.virgin.net/hugo.elias/routines/3d_to_2d.htm

http://en.wikipedia.org/wiki/Fixed-point_arithmetic

 

Rite.

Edited by PolishCivil
Link to comment
Share on other sites

   
    public static final int minimapX = 545;
    public static final int minimapY = 4;

    public static Point getMinimapScreenCoordinate(Client client, int localX, int localY, boolean clipOval) {
 
        int minimapX = localX * 4 + 2 - client.getMyPlayer().getGridX() / 32;
        int minimapY = localY * 4 + 2 - client.getMyPlayer().getGridY() / 32;
        if (clipOval && (minimapX < -73 || minimapX >= 73 || minimapY < -75 || minimapY > 75))
            return new Point(-1, -1);
        int rotation = client.getMinimapX() + client.getMinimapRotation() & 2047;
        int minimapZoom = 256 + client.getMinimapZoom();

        int sine = 256 * Utilities.CAMERA_SIN[rotation] / minimapZoom;
        int cosine = 256 * Utilities.CAMERA_COS[rotation] / minimapZoom;

        int i1 = -minimapX * sine + minimapY * cosine >> 16;
        int i2 = minimapX * cosine + minimapY * sine >> 16;

        int posX = Calculations.minimapX + 98 + i2;
        int posY = Calculations.minimapY + 80 - i1;

        return new Point(posX, posY);
    }

Old:

 

2014-05-03_16-32-15.png

Mine: 

2014-05-03_17-12-37.png

 

Why?

client.getInterface(548).getChild(71);

Edited by PolishCivil
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...