1 /*********************************
2 ** Tsunagari Tile Engine **
4 ** Copyright 2011-2012 OmegaSDG **
5 *********************************/
11 * Virtual integer coordinate.
13 * x and y are the same as a physical integer coordinate.
14 * z is a virtual layer depth within an Area.
19 vicoord(int x
, int y
, double z
): x(x
), y(y
), z(z
) {}
26 icube(int x1
, int y1
, int z1
, int x2
, int y2
, int z2
)
27 : x1(x1
), y1(y1
), z1(z1
), x2(x2
), y2(y2
), z2(z2
) {}
43 vec2(const vec2
<T
>& other
)
44 : x(other
.x
), y(other
.y
)
53 vec2
<T
>& operator +=(const vec2
<T
>& other
)
60 vec2
<T
>& operator -=(const vec2
<T
>& other
)
67 vec2
<T
>& operator *=(const vec2
<T
>& other
)
74 vec2
<T
>& operator *=(T coefficient
)
81 vec2
<T
>& operator /=(const vec2
<T
>& other
)
88 vec2
<T
>& operator /=(T coefficient
)
112 vec3(const vec3
<T
>& other
)
113 : x(other
.x
), y(other
.y
), z(other
.z
)
122 vec3
<T
>& operator +=(const vec3
<T
>& other
)
130 vec3
<T
>& operator -=(const vec3
<T
>& other
)
138 vec3
<T
>& operator *=(const vec3
<T
>& other
)
146 vec3
<T
>& operator *=(T coefficient
)
154 vec3
<T
>& operator /=(const vec3
<T
>& other
)
162 vec3
<T
>& operator /=(T coefficient
)
177 vec2
<T
> operator+(const vec2
<T
>& a
, const vec2
<T
>& b
)
186 vec3
<T
> operator+(const vec3
<T
>& a
, const vec3
<T
>& b
)
196 vec2
<T
> operator-(const vec2
<T
>& a
, const vec2
<T
>& b
)
205 vec3
<T
> operator-(const vec3
<T
>& a
, const vec3
<T
>& b
)
215 vec2
<T
> operator*(const vec2
<T
>& a
, const vec2
<T
>& b
)
224 vec3
<T
> operator*(const vec3
<T
>& a
, const vec3
<T
>& b
)
233 template<class T
, class CO
>
234 vec2
<T
> operator*(const vec2
<T
>& a
, CO co
)
242 template<class T
, class CO
>
243 vec3
<T
> operator*(const vec3
<T
>& a
, CO co
)
252 template<class T
, class CO
>
253 vec2
<T
> operator*(CO co
, const vec2
<T
>& a
)
258 template<class T
, class CO
>
259 vec3
<T
> operator*(CO co
, const vec3
<T
>& a
)
265 vec2
<T
> operator/(const vec2
<T
>& a
, const vec2
<T
>& b
)
274 vec3
<T
> operator/(const vec3
<T
>& a
, const vec3
<T
>& b
)
283 template<class T
, class CO
>
284 vec2
<T
> operator/(const vec2
<T
>& a
, CO co
)
292 template<class T
, class CO
>
293 vec3
<T
> operator/(const vec3
<T
>& a
, CO co
)
302 template<class T
, class CO
>
303 vec2
<T
> operator/(CO co
, const vec2
<T
>& a
)
311 template<class T
, class CO
>
312 vec3
<T
> operator/(CO co
, const vec3
<T
>& a
)
322 bool operator==(const vec2
<T
>& a
, const vec2
<T
>& b
)
324 return a
.x
== b
.x
&& a
.y
== b
.y
;
328 bool operator==(const vec3
<T
>& a
, const vec3
<T
>& b
)
330 return a
.x
== b
.x
&& a
.y
== b
.y
&& a
.z
== b
.z
;
334 typedef vec2
<int> ivec2
;
335 typedef vec3
<int> ivec3
;
338 typedef vec2
<double> rvec2
;
339 typedef vec3
<double> rvec3
;
342 typedef ivec3 icoord
;
343 typedef rvec3 rcoord
;