// Copyright (C) 2012 Jérôme Leclercq // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_CUBE_HPP #define NAZARA_CUBE_HPP #include #include #include template class NzCube { public: NzCube(); NzCube(T X, T Y, T Z, T Width, T Height, T Depth); NzCube(T cube[6]); NzCube(const NzRect& rect); template explicit NzCube(const NzCube& rect); NzCube(const NzCube& rect) = default; ~NzCube() = default; bool Contains(T X, T Y, T Z) const; bool Contains(const NzVector3& point) const; bool Contains(const NzCube& rect) const; void ExtendTo(const NzVector3& point); void ExtendTo(const NzCube& rect); NzVector3 GetCenter() const; bool Intersect(const NzCube& rect) const; bool Intersect(const NzCube& rect, NzCube& intersection) const; bool IsValid() const; NzString ToString() const; operator NzString() const; T& operator[](unsigned int i); T operator[](unsigned int i) const; T x, y, z, width, height, depth; }; template std::ostream& operator<<(std::ostream& out, const NzCube& vec); typedef NzCube NzCubed; typedef NzCube NzCubef; typedef NzCube NzCubei; typedef NzCube NzCubeui; #include #endif // NAZARA_CUBE_HPP