public Grid(Context context) { super(context); setEGLContextClientVersion(2); setRenderer(this); setRenderMode(RENDERMODE_CONTINUOUSLY); quadVertices = GeometryHelper.createScreenQuad(); float[] line_data = new float[LINE_COUNT * 3]; int line = 0; final float k = 1.0f; for (int x = 0; x <= GRID_DIM; ++x) { for (int y = 0; y <= GRID_DIM; ++y) { line_data[6 * line + 0] = (((float) x / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 1] = -1.0f * k; line_data[6 * line + 2] = (((float) y / GRID_DIM)); line_data[6 * line + 3] = (((float) x / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 4] = 1.0f * k; line_data[6 * line + 5] = (((float) y / GRID_DIM)); ++line; line_data[6 * line + 0] = -1.0f * k; line_data[6 * line + 1] = (((float) x / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 2] = (((float) y / GRID_DIM)); line_data[6 * line + 3] = 1.0f * k; line_data[6 * line + 4] = (((float) x / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 5] = (((float) y / GRID_DIM)); ++line; } } for (int x = 0; x <= GRID_DIM; ++x) { for (int y = 0; y <= GRID_DIM; ++y) { line_data[6 * line + 0] = (((float) x / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 1] = (((float) y / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 2] = 0.0f; line_data[6 * line + 3] = (((float) x / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 4] = (((float) y / GRID_DIM) * 2 - 1) * k; line_data[6 * line + 5] = 1.0f; ++line; } } lineVertices = new VertexBuffer(line_data, new short[0], false); }
public static Integer findDockSide( int x0, int y0, int dx, int dy, double docX, double docY, Vector mousePos) { if (GeometryHelper.containsInRectangle( Vector.valueOf(x0 + docX, y0 + docY), Vector.valueOf(dx - 2 * docX, dy - 2 * docY), mousePos)) return Side.CENTER; else if (GeometryHelper.containsInRectangle( Vector.valueOf(x0 + docX, y0 + dy - docY), Vector.valueOf(dx - 2 * docX, docY), mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0 + docX, y0 + dy), -docX, -docY, mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0 + dx - docX, y0 + dy), docX, -docY, mousePos)) { return Side.BOTTOM; } else if (GeometryHelper.containsInRectangle( Vector.valueOf(x0, y0 + docY), new Vector(docX, dy - 2 * docY), mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0, y0 + docY), docX, -docY, mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0, y0 + dy - docY), docX, docY, mousePos)) { return Side.LEFT; } else if (GeometryHelper.containsInRectangle( Vector.valueOf(x0 + dx - docX, y0 + docY), new Vector(docX, dy - 2 * docY), mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0 + dx, y0 + docY), -docX, -docY, mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0 + dx, y0 + dy - docY), -docX, docY, mousePos)) { return Side.RIGHT; } else if (GeometryHelper.containsInRectangle( Vector.valueOf(x0 + docX, y0), new Vector(dy - 2 * docY, docY), mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0 + docX, y0), -docX, docY, mousePos) || GeometryHelper.containsInRightTriangle( Vector.valueOf(x0 + dx - docX, y0), docX, docY, mousePos)) { return Side.TOP; } else return null; }