PolishCivil Posted May 2, 2014 Share Posted May 2, 2014 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.getScreenCoordinatesIt 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. 4 Link to comment Share on other sites More sharing options...
Booch Posted May 2, 2014 Share Posted May 2, 2014 So this is the maths that I've been studying for years is applied to, holy shit this is cool 2 Link to comment Share on other sites More sharing options...
Dog_ Posted May 3, 2014 Share Posted May 3, 2014 You don't even need to decompile osbot for this lol >_> 1 Link to comment Share on other sites More sharing options...
Deffiliate Posted May 3, 2014 Share Posted May 3, 2014 (edited) 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? Edited May 3, 2014 by Deffiliate 1 Link to comment Share on other sites More sharing options...
PolishCivil Posted May 3, 2014 Author Share Posted May 3, 2014 (edited) 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? http://freespace.virgin.net/hugo.elias/routines/3d_to_2d.htm http://en.wikipedia.org/wiki/Fixed-point_arithmetic Rite. Edited May 3, 2014 by PolishCivil Link to comment Share on other sites More sharing options...
PolishCivil Posted May 3, 2014 Author Share Posted May 3, 2014 (edited) 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: Mine: Why? client.getInterface(548).getChild(71); Edited May 7, 2014 by PolishCivil Link to comment Share on other sites More sharing options...