mirror of
https://github.com/devZoGok/vb01.git
synced 2026-08-26 19:43:30 +00:00
functionality to compute subquad ids and corners
This commit is contained in:
@@ -85,4 +85,22 @@ namespace vb01{
|
|||||||
|
|
||||||
meshBase = MeshData(faceVertPos, nullptr, nullptr, nullptr, 6, norm, vertices, indices, numTris);
|
meshBase = MeshData(faceVertPos, nullptr, nullptr, nullptr, 6, norm, vertices, indices, numTris);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO improve functionality for GUI quads
|
||||||
|
Vector2 Quad::getSubquadIds(int numVertDiv, int numHorDiv, Vector3 pos, Vector3 size){
|
||||||
|
const int numHorQuads = numVertDiv + 1, numVertQuads = numHorDiv + 1;
|
||||||
|
Vector2 subQuadSize = Vector2(size.x / numHorQuads, size.z / numVertQuads);
|
||||||
|
|
||||||
|
return Vector2(int((.5 * size.x + pos.x) / subQuadSize.x), int((.5 * size.z + pos.z) / subQuadSize.y));
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3 Quad::getSubquadCorner(int xId, int yId, int numVertDiv, int numHorDiv, bool top, bool right){
|
||||||
|
const int numHorQuads = numVertDiv + 1, numVertQuads = numHorDiv + 1;
|
||||||
|
int vertPosId = 6 * xId * numVertQuads + 6 * yId;
|
||||||
|
|
||||||
|
if(top && !right) return meshBase.positions[vertPosId];
|
||||||
|
else if(top && right) return meshBase.positions[vertPosId + 4];
|
||||||
|
else if(!top && !right) return meshBase.positions[vertPosId + 1];
|
||||||
|
else if(!top && right) return meshBase.positions[vertPosId + 3];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,12 @@ namespace vb01{
|
|||||||
public:
|
public:
|
||||||
Quad(Vector3, bool = true, int numVertDiv = 0, int numHorDiv = 0);
|
Quad(Vector3, bool = true, int numVertDiv = 0, int numHorDiv = 0);
|
||||||
void setSize(Vector3);
|
void setSize(Vector3);
|
||||||
|
Vector3 getSubquadCorner(int, int, int, int, bool, bool);
|
||||||
|
Vector2 getSubquadIds(int, int, Vector3, Vector3);
|
||||||
inline Vector3 getSize(){return size;}
|
inline Vector3 getSize(){return size;}
|
||||||
|
inline Vector2 getSubquadSize(){return Vector2(size.x / (numHorDiv + 1), size.y / (numVertDiv + 1));}
|
||||||
|
inline int getNumHorSubquads(){return numHorDiv + 1;}
|
||||||
|
inline int getNumVertSubquads(){return numVertDiv + 1;}
|
||||||
private:
|
private:
|
||||||
Vector3 size;
|
Vector3 size;
|
||||||
bool spatial;
|
bool spatial;
|
||||||
|
|||||||
Reference in New Issue
Block a user