mirror of
https://github.com/lubosz/overte.git
synced 2025-08-08 04:08:13 +02:00
Fixing merging problem
This commit is contained in:
parent
3728a9c6f0
commit
40bf721ac5
1 changed files with 42 additions and 45 deletions
|
@ -43,50 +43,6 @@ glm::vec3 AABox::calcCenter() const {
|
||||||
return center;
|
return center;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AABox::rotate(const glm::quat& rotation) {
|
|
||||||
auto minimum = _corner;
|
|
||||||
auto maximum = _corner + _scale;
|
|
||||||
|
|
||||||
glm::vec3 bottomLeftNear(minimum.x, minimum.y, minimum.z);
|
|
||||||
glm::vec3 bottomRightNear(maximum.x, minimum.y, minimum.z);
|
|
||||||
glm::vec3 bottomLeftFar(minimum.x, minimum.y, maximum.z);
|
|
||||||
glm::vec3 bottomRightFar(maximum.x, minimum.y, maximum.z);
|
|
||||||
glm::vec3 topLeftNear(minimum.x, maximum.y, minimum.z);
|
|
||||||
glm::vec3 topRightNear(maximum.x, maximum.y, minimum.z);
|
|
||||||
glm::vec3 topLeftFar(minimum.x, maximum.y, maximum.z);
|
|
||||||
glm::vec3 topRightFar(maximum.x, maximum.y, maximum.z);
|
|
||||||
|
|
||||||
glm::vec3 bottomLeftNearRotated = rotation * bottomLeftNear;
|
|
||||||
glm::vec3 bottomRightNearRotated = rotation * bottomRightNear;
|
|
||||||
glm::vec3 bottomLeftFarRotated = rotation * bottomLeftFar;
|
|
||||||
glm::vec3 bottomRightFarRotated = rotation * bottomRightFar;
|
|
||||||
glm::vec3 topLeftNearRotated = rotation * topLeftNear;
|
|
||||||
glm::vec3 topRightNearRotated = rotation * topRightNear;
|
|
||||||
glm::vec3 topLeftFarRotated = rotation * topLeftFar;
|
|
||||||
glm::vec3 topRightFarRotated = rotation * topRightFar;
|
|
||||||
|
|
||||||
minimum = glm::min(bottomLeftNearRotated,
|
|
||||||
glm::min(bottomRightNearRotated,
|
|
||||||
glm::min(bottomLeftFarRotated,
|
|
||||||
glm::min(bottomRightFarRotated,
|
|
||||||
glm::min(topLeftNearRotated,
|
|
||||||
glm::min(topRightNearRotated,
|
|
||||||
glm::min(topLeftFarRotated,
|
|
||||||
topRightFarRotated)))))));
|
|
||||||
|
|
||||||
maximum = glm::max(bottomLeftNearRotated,
|
|
||||||
glm::max(bottomRightNearRotated,
|
|
||||||
glm::max(bottomLeftFarRotated,
|
|
||||||
glm::max(bottomRightFarRotated,
|
|
||||||
glm::max(topLeftNearRotated,
|
|
||||||
glm::max(topRightNearRotated,
|
|
||||||
glm::max(topLeftFarRotated,
|
|
||||||
topRightFarRotated)))))));
|
|
||||||
|
|
||||||
_corner = minimum;
|
|
||||||
_scale = maximum - minimum;
|
|
||||||
}
|
|
||||||
|
|
||||||
glm::vec3 AABox::getVertex(BoxVertex vertex) const {
|
glm::vec3 AABox::getVertex(BoxVertex vertex) const {
|
||||||
switch (vertex) {
|
switch (vertex) {
|
||||||
case BOTTOM_LEFT_NEAR:
|
case BOTTOM_LEFT_NEAR:
|
||||||
|
@ -532,8 +488,49 @@ void AABox::scale(const glm::vec3& scale) {
|
||||||
_scale *= scale;
|
_scale *= scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AABox::rotate(const glm::quat& rotation) {
|
|
||||||
|
|
||||||
|
void AABox::rotate(const glm::quat& rotation) {
|
||||||
|
auto minimum = _corner;
|
||||||
|
auto maximum = _corner + _scale;
|
||||||
|
|
||||||
|
glm::vec3 bottomLeftNear(minimum.x, minimum.y, minimum.z);
|
||||||
|
glm::vec3 bottomRightNear(maximum.x, minimum.y, minimum.z);
|
||||||
|
glm::vec3 bottomLeftFar(minimum.x, minimum.y, maximum.z);
|
||||||
|
glm::vec3 bottomRightFar(maximum.x, minimum.y, maximum.z);
|
||||||
|
glm::vec3 topLeftNear(minimum.x, maximum.y, minimum.z);
|
||||||
|
glm::vec3 topRightNear(maximum.x, maximum.y, minimum.z);
|
||||||
|
glm::vec3 topLeftFar(minimum.x, maximum.y, maximum.z);
|
||||||
|
glm::vec3 topRightFar(maximum.x, maximum.y, maximum.z);
|
||||||
|
|
||||||
|
glm::vec3 bottomLeftNearRotated = rotation * bottomLeftNear;
|
||||||
|
glm::vec3 bottomRightNearRotated = rotation * bottomRightNear;
|
||||||
|
glm::vec3 bottomLeftFarRotated = rotation * bottomLeftFar;
|
||||||
|
glm::vec3 bottomRightFarRotated = rotation * bottomRightFar;
|
||||||
|
glm::vec3 topLeftNearRotated = rotation * topLeftNear;
|
||||||
|
glm::vec3 topRightNearRotated = rotation * topRightNear;
|
||||||
|
glm::vec3 topLeftFarRotated = rotation * topLeftFar;
|
||||||
|
glm::vec3 topRightFarRotated = rotation * topRightFar;
|
||||||
|
|
||||||
|
minimum = glm::min(bottomLeftNearRotated,
|
||||||
|
glm::min(bottomRightNearRotated,
|
||||||
|
glm::min(bottomLeftFarRotated,
|
||||||
|
glm::min(bottomRightFarRotated,
|
||||||
|
glm::min(topLeftNearRotated,
|
||||||
|
glm::min(topRightNearRotated,
|
||||||
|
glm::min(topLeftFarRotated,
|
||||||
|
topRightFarRotated)))))));
|
||||||
|
|
||||||
|
maximum = glm::max(bottomLeftNearRotated,
|
||||||
|
glm::max(bottomRightNearRotated,
|
||||||
|
glm::max(bottomLeftFarRotated,
|
||||||
|
glm::max(bottomRightFarRotated,
|
||||||
|
glm::max(topLeftNearRotated,
|
||||||
|
glm::max(topRightNearRotated,
|
||||||
|
glm::max(topLeftFarRotated,
|
||||||
|
topRightFarRotated)))))));
|
||||||
|
|
||||||
|
_corner = minimum;
|
||||||
|
_scale = maximum - minimum;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AABox::transform(const Transform& transform) {
|
void AABox::transform(const Transform& transform) {
|
||||||
|
|
Loading…
Reference in a new issue