kick
|
00001 // 00002 // Created by morten on 05/07/14. 00003 // 00004 00005 00006 #pragma once 00007 00008 #include "glm/glm.hpp" 00009 #include <iostream> 00010 #include "glm/gtx/string_cast.hpp" 00011 00012 namespace kick { 00013 struct Bounds2 { 00014 public: 00015 glm::vec2 min = glm::vec2{ std::numeric_limits<float>::max() }; 00016 glm::vec2 max = glm::vec2{ std::numeric_limits<float>::lowest() }; 00017 00018 Bounds2(); 00019 00020 Bounds2(glm::vec2 const &min, glm::vec2 const &max); 00021 00022 glm::vec2 dimension(); 00023 00024 glm::vec2 center(); 00025 00026 glm::vec2 diagonal(); 00027 00028 void expand(glm::vec2 p); 00029 00030 void expand(Bounds2 b); 00031 00032 void reset(); 00033 00034 glm::vec2 lowLeft(); 00035 00036 glm::vec2 upperLeft(); 00037 00038 glm::vec2 lowRight(); 00039 00040 glm::vec2 upperRight(); 00041 00042 Bounds2 lerp(float f, Bounds2 b); 00043 00044 bool contains(glm::vec2 point); 00045 }; 00046 00047 inline std::ostream& operator<<(std::ostream& out, const Bounds2 & f){ 00048 return out << "bounds{"<<glm::to_string(f.min) << ',' << glm::to_string(f.max) <<"}"; 00049 } 00050 } 00051 00052