calculateWorldAABB method

  1. @override
void calculateWorldAABB(
  1. Vector3 pos,
  2. Quaternion quat,
  3. Vector3 min,
  4. Vector3 max,
)
override

@todo use abstract for these kind of methods

Implementation

@override
void calculateWorldAABB(Vector3 pos, Quaternion quat, Vector3 min, Vector3 max) {
  // The plane AABB is infinite, except if the normal is pointing along any axis
  _tempNormal.setValues(0, 0, 1); // Default plane normal is z
  quat.vmult(_tempNormal, _tempNormal);
  const maxVal = double.infinity;
  min.setValues(-maxVal, -maxVal, -maxVal);
  max.setValues(maxVal, maxVal, maxVal);

  if (_tempNormal.x == 1) {
    max.x = pos.x;
  } else if (_tempNormal.x == -1) {
    min.x = pos.x;
  }

  if (_tempNormal.y == 1) {
    max.y = pos.y;
  } else if (_tempNormal.y == -1) {
    min.y = pos.y;
  }

  if (_tempNormal.z == 1) {
    max.z = pos.z;
  } else if (_tempNormal.z == -1) {
    min.z = pos.z;
  }
}