pork Posted June 6, 2014 Share Posted June 6, 2014 Hi, what is the method for checking if an RS2Object is on screen? I previously used isVisible() but it is no longer in the OSBot 2 API. Thanks! 1 Link to comment Share on other sites More sharing options...
PolishCivil Posted June 6, 2014 Share Posted June 6, 2014 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; } 1 Link to comment Share on other sites More sharing options...
Joseph Posted June 7, 2014 Share Posted June 7, 2014 Or get the position of an entity and check to see if it's visible Link to comment Share on other sites More sharing options...
Freak Posted June 7, 2014 Share Posted June 7, 2014 (edited) I have only been scripting a few hours but here is what I used for my door. Entity Door = objects.closest("Door"); if(Door != null && Door.exists()) { camera.toEntity(Door); } Edited June 7, 2014 by Freak Link to comment Share on other sites More sharing options...
Precise Posted June 7, 2014 Share Posted June 7, 2014 I have only been scripting a few hours but here is what I used for my door. Entity Door = objects.closest("Door"); if(Door != null && Door.exists()) { camera.toEntity(Door); } this doesn't check if it is visible ^_^ Link to comment Share on other sites More sharing options...