Browse Source

- Renaming a few defined. Adding the ANKI prefix
- Adding a file that determines a few info about the compiler, arch, platform
etc

Panagiotis Christopoulos Charitos 14 năm trước cách đây
mục cha
commit
86869c2ee9

+ 3 - 3
CMakeLists.txt

@@ -11,12 +11,12 @@ ENDIF()
 FIND_PACKAGE(Subversion)
 IF(Subversion_FOUND)
 	Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} ER)
-	ADD_DEFINITIONS("-DREVISION=${ER_WC_REVISION}")
+	ADD_DEFINITIONS("-DANKI_REVISION=${ER_WC_REVISION}")
 ELSE()
-	ADD_DEFINITIONS("-DREVISION=???")
+	ADD_DEFINITIONS("-DANKI_REVISION=???")
 ENDIF()
 
-ADD_DEFINITIONS("-DMATH_INTEL_SIMD -DGLEW_MX -pedantic-errors -pedantic -ansi -Wall -Winline -W -Wwrite-strings -Wno-unused -Wno-long-long -msse4")
+ADD_DEFINITIONS("-DANKI_MATH_INTEL_SIMD -DGLEW_MX -pedantic-errors -pedantic -ansi -Wall -Winline -W -Wwrite-strings -Wno-unused -Wno-long-long -msse4")
 
 # Add a few compiler specific stuff 
 IF(${CMAKE_CXX_COMPILER} MATCHES ".*clang\\+\\+$")	

+ 6 - 11
anki/core/App.cpp

@@ -2,6 +2,7 @@
 #include "anki/core/Logger.h"
 #include "anki/core/Globals.h"
 #include "anki/util/Exception.h"
+#include "anki/util/Platform.h"
 #include <GL/glew.h>
 #include <sstream>
 #include <SDL/SDL.h>
@@ -214,8 +215,8 @@ void App::quit(int code)
 //==============================================================================
 // printAppInfo                                                                =
 //==============================================================================
-#if !defined(REVISION)
-#	define REVISION "unknown"
+#if !defined(ANKI_REVISION)
+#	define ANKI_REVISION "unknown"
 #endif
 
 void App::printAppInfo()
@@ -228,19 +229,13 @@ void App::printAppInfo()
 	msg << "Debug";
 #endif
 	msg << " build, ";
-	msg << "platform ";
-#if defined(PLATFORM_LINUX)
-	msg << "Linux, ";
-#elif defined(PLATFORM_WIN)
-	msg << "Windows, ";
-#else
-#	error "See file"
-#endif
+	msg << "platform ID " << ANKI_PLATFORM << ", ";
+	msg << "compiler ID " << ANKI_COMPILER << ", ";
 	msg << "GLEW " << glewGetString(GLEW_VERSION) << ", ";
 	const SDL_version* v = SDL_Linked_Version();
 	msg << "SDL " << int(v->major) << '.' << int(v->minor) << '.' <<
 		int(v->patch) << ", " << "build date " __DATE__ << ", " <<
-		"rev " << REVISION;
+		"rev " << ANKI_REVISION;
 
 	ANKI_INFO(msg.str());
 }

+ 2 - 2
anki/math/Mat4.h

@@ -41,7 +41,7 @@ class Mat4
 		const float& operator()(const size_t i, const size_t j) const;
 		float& operator[](const size_t i);
 		const float& operator[](const size_t i) const;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 		__m128& getMm(const size_t i);
 		const __m128& getMm(const size_t i) const;
 #endif
@@ -125,7 +125,7 @@ class Mat4
 		{
 			boost::array<float, 16> arr1;
 			boost::array<boost::array<float, 4>, 4> arr2;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 			boost::array<__m128, 4> arrMm;
 #endif
 		};

+ 23 - 23
anki/math/Mat4.inl.h

@@ -11,7 +11,7 @@ namespace anki {
 // Copy
 inline Mat4::Mat4(const Mat4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	for(int i = 0; i < 4; i++)
 	{
 		arrMm[i] = b.arrMm[i];
@@ -28,7 +28,7 @@ inline Mat4::Mat4(const Mat4& b)
 // float
 inline Mat4::Mat4(const float f)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	for(int i = 0; i < 4; i++)
 	{
 		arrMm[i] = _mm_set1_ps(f);
@@ -205,7 +205,7 @@ inline const float& Mat4::operator[](const size_t i) const
 }
 
 
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 inline const __m128& Mat4::getMm(const size_t i) const
 {
 	return arrMm[i];
@@ -224,7 +224,7 @@ inline __m128& Mat4::getMm(const size_t i)
 // =
 inline Mat4& Mat4::operator=(const Mat4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	for(int i = 0; i < 4; i++)
 	{
 		arrMm[i] = b.arrMm[i];
@@ -243,7 +243,7 @@ inline Mat4& Mat4::operator=(const Mat4& b)
 inline Mat4 Mat4::operator+(const Mat4& b) const
 {
 	Mat4 c;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	for(int i = 0; i < 4; i++)
 	{
 		c.arrMm[i] = _mm_add_ps(arrMm[i], b.arrMm[i]);
@@ -261,7 +261,7 @@ inline Mat4 Mat4::operator+(const Mat4& b) const
 // +=
 inline Mat4& Mat4::operator+=(const Mat4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	for(int i = 0; i < 4; i++)
 	{
 		arrMm[i] = _mm_add_ps(arrMm[i], b.arrMm[i]);
@@ -280,7 +280,7 @@ inline Mat4& Mat4::operator+=(const Mat4& b)
 inline Mat4 Mat4::operator-(const Mat4& b) const
 {
 	Mat4 c;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	for(int i = 0; i < 4; i++)
 	{
 		c.arrMm[i] = _mm_sub_ps(arrMm[i], b.arrMm[i]);
@@ -298,7 +298,7 @@ inline Mat4 Mat4::operator-(const Mat4& b) const
 // -=
 inline Mat4& Mat4::operator-=(const Mat4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	for(int i = 0; i < 4; i++)
 	{
 		arrMm[i] = _mm_sub_ps(arrMm[i], b.arrMm[i]);
@@ -317,7 +317,7 @@ inline Mat4& Mat4::operator-=(const Mat4& b)
 inline Mat4 Mat4::operator*(const Mat4& b) const
 {
 	Mat4 c;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	Mat4 t(b);
 	t.transpose();
 	for(int i = 0; i < 4; i++)
@@ -385,7 +385,7 @@ inline bool Mat4::operator!=(const Mat4& b) const
 inline Mat4 Mat4::operator+(const float f) const
 {
 	Mat4 c;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -405,7 +405,7 @@ inline Mat4 Mat4::operator+(const float f) const
 // 4x4 += float
 inline Mat4& Mat4::operator+=(const float f)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -426,7 +426,7 @@ inline Mat4& Mat4::operator+=(const float f)
 inline Mat4 Mat4::operator-(const float f) const
 {
 	Mat4 r;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -446,7 +446,7 @@ inline Mat4 Mat4::operator-(const float f) const
 // 4x4 -= float
 inline Mat4& Mat4::operator-=(const float f)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -467,7 +467,7 @@ inline Mat4& Mat4::operator-=(const float f)
 inline Mat4 Mat4::operator*(const float f) const
 {
 	Mat4 r;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -487,7 +487,7 @@ inline Mat4 Mat4::operator*(const float f) const
 // 4x4 *= float
 inline Mat4& Mat4::operator*=(const float f)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -508,7 +508,7 @@ inline Mat4& Mat4::operator*=(const float f)
 inline Mat4 Mat4::operator/(const float f) const
 {
 	Mat4 r;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -528,7 +528,7 @@ inline Mat4 Mat4::operator/(const float f) const
 // 4x4 /= float
 inline Mat4& Mat4::operator/=(const float f)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -552,7 +552,7 @@ inline Mat4& Mat4::operator/=(const float f)
 // Mat4 * Vec4
 inline Vec4 Mat4::operator*(const Vec4& b) const
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	Vec4 v;
 	for(int i = 0; i < 4; i++)
 	{
@@ -580,7 +580,7 @@ inline Vec4 Mat4::operator*(const Vec4& b) const
 inline void Mat4::setRows(const Vec4& a, const Vec4& b, const Vec4& c,
 	const Vec4& d)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	arrMm[0] = a.getMm();
 	arrMm[1] = b.getMm();
 	arrMm[2] = c.getMm();
@@ -609,7 +609,7 @@ inline void Mat4::setRows(const Vec4& a, const Vec4& b, const Vec4& c,
 // setRow
 inline void Mat4::setRow(const size_t i, const Vec4& v)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	arrMm[i] = v.getMm();
 #else
 	(*this)(i, 0) = v.x();
@@ -656,7 +656,7 @@ inline void Mat4::setColumn(const size_t i, const Vec4& v)
 // transpose
 inline void Mat4::transpose()
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	_MM_TRANSPOSE4_PS(arrMm[0], arrMm[1], arrMm[2], arrMm[3]);
 #else
 	float tmp = (*this)(0, 1);
@@ -980,7 +980,7 @@ inline Mat4 operator+(const float f, const Mat4& m4)
 inline Mat4 operator-(const float f, const Mat4& m4)
 {
 	Mat4 r;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)
@@ -1008,7 +1008,7 @@ inline Mat4 operator*(const float f, const Mat4& m4)
 inline Mat4 operator/(const float f, const Mat4& m4)
 {
 	Mat4 r;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm;
 	mm = _mm_set1_ps(f);
 	for(int i = 0; i < 4; i++)

+ 1 - 1
anki/math/Math.inl.h

@@ -6,7 +6,7 @@ namespace anki {
 
 inline float Math::sqrt(const float f)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	__m128 mm = _mm_set_ss(f);
 	mm = _mm_sqrt_ss(mm);
 	float o;

+ 1 - 1
anki/math/MathSimd.h

@@ -1,7 +1,7 @@
 #ifndef ANKI_MATH_MATH_SIMD_H
 #define ANKI_MATH_MATH_SIMD_H
 
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 #	include <smmintrin.h>
 #endif
 

+ 1 - 1
anki/math/Vec3.inl.h

@@ -473,7 +473,7 @@ inline void Vec3::transform(const Vec3& translate, const Quat& rotate,
 // Mat4
 inline Vec3 Vec3::getTransformed(const Mat4& transform) const
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	Vec3 out;
 	Vec4 v4((*this), 1.0);
 	for(int i = 0; i < 3; i++)

+ 3 - 3
anki/math/Vec4.h

@@ -25,7 +25,7 @@ class Vec4
 		explicit Vec4(const Vec3& v3, const float w);
 		         Vec4(const Vec4& b);
 		explicit Vec4(const Quat& q);
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 		explicit Vec4(const __m128& mm);
 #endif
 		/// @}
@@ -42,7 +42,7 @@ class Vec4
 		float w() const;
 		float& operator[](const size_t i);
 		float operator[](const size_t i) const;
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 		__m128& getMm();
 		const __m128& getMm() const;
 #endif
@@ -114,7 +114,7 @@ class Vec4
 
 			boost::array<float, 4> arr;
 
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 			__m128 mm;
 #endif
 		};

+ 17 - 17
anki/math/Vec4.inl.h

@@ -11,7 +11,7 @@ namespace anki {
 // default
 inline Vec4::Vec4()
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_setzero_ps();
 #else
 	arr[0] = arr[1] = arr[2] = arr[3] = 0.0;
@@ -22,7 +22,7 @@ inline Vec4::Vec4()
 // float
 inline Vec4::Vec4(float f)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_set1_ps(f);
 #else
 	arr[0] = arr[1] = arr[2] = arr[3] = f;
@@ -33,7 +33,7 @@ inline Vec4::Vec4(float f)
 // float[]
 inline Vec4::Vec4(const float arr_[])
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_load_ps(arr_);
 #else
 	arr[0] = arr_[0];
@@ -48,7 +48,7 @@ inline Vec4::Vec4(const float arr_[])
 inline Vec4::Vec4(const float x_, const float y_, const float z_,
 	const float w_)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_set_ps(w_, z_, y_, x_);
 #else
 	x() = x_;
@@ -82,7 +82,7 @@ inline Vec4::Vec4(const Vec3& v3, const float w_)
 // Copy
 inline Vec4::Vec4(const Vec4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = b.mm;
 #else
 	x() = b.x();
@@ -104,7 +104,7 @@ inline Vec4::Vec4(const Quat& q)
 
 
 // __m128
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 inline Vec4::Vec4(const __m128& mm_)
 {
 	mm = mm_;
@@ -176,7 +176,7 @@ inline float Vec4::w() const
 }
 
 
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 inline __m128& Vec4::getMm()
 {
 	return mm;
@@ -197,7 +197,7 @@ inline const __m128& Vec4::getMm() const
 // =
 inline Vec4& Vec4::operator=(const Vec4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = b.mm;
 #else
 	x() = b.x();
@@ -212,7 +212,7 @@ inline Vec4& Vec4::operator=(const Vec4& b)
 // +
 inline Vec4 Vec4::operator+(const Vec4& b) const
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	return Vec4(_mm_add_ps(mm, b.mm));
 #else
 	return Vec4(x() + b.x(), y() + b.y(), z() + b.z(), w() + b.w());
@@ -223,7 +223,7 @@ inline Vec4 Vec4::operator+(const Vec4& b) const
 // +=
 inline Vec4& Vec4::operator+=(const Vec4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_add_ps(mm, b.mm);
 #else
 	x() += b.x();
@@ -238,7 +238,7 @@ inline Vec4& Vec4::operator+=(const Vec4& b)
 // -
 inline Vec4 Vec4::operator-(const Vec4& b) const
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	return Vec4(_mm_sub_ps(mm, b.mm));
 #else
 	return Vec4(x() - b.x(), y() - b.y(), z() - b.z(), w() - b.w());
@@ -249,7 +249,7 @@ inline Vec4 Vec4::operator-(const Vec4& b) const
 // -=
 inline Vec4& Vec4::operator-=(const Vec4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_sub_ps(mm, b.mm);
 #else
 	x() -= b.x();
@@ -264,7 +264,7 @@ inline Vec4& Vec4::operator-=(const Vec4& b)
 // *
 inline Vec4 Vec4::operator*(const Vec4& b) const
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	return Vec4(_mm_mul_ps(mm, b.mm));
 #else
 	return Vec4(x() * b.x(), y() * b.y(), z() * b.z(), w() * b.w());
@@ -275,7 +275,7 @@ inline Vec4 Vec4::operator*(const Vec4& b) const
 // *=
 inline Vec4& Vec4::operator*=(const Vec4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_mul_ps(mm, b.mm);
 #else
 	x() *= b.x();
@@ -290,7 +290,7 @@ inline Vec4& Vec4::operator*=(const Vec4& b)
 // /
 inline Vec4 Vec4::operator/(const Vec4& b) const
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	return Vec4(_mm_div_ps(mm, b.mm));
 #else
 	return Vec4(x() / b.x(), y() / b.y(), z() / b.z(), w() / b.w());
@@ -301,7 +301,7 @@ inline Vec4 Vec4::operator/(const Vec4& b) const
 // /=
 inline Vec4& Vec4::operator/=(const Vec4& b)
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	mm = _mm_div_ps(mm, b.mm);
 #else
 	x() /= b.x();
@@ -429,7 +429,7 @@ inline Vec4 Vec4::operator*(const Mat4& m4) const
 // dot
 inline float Vec4::dot(const Vec4& b) const
 {
-#if defined(MATH_INTEL_SIMD)
+#if defined(ANKI_MATH_INTEL_SIMD)
 	float o;
 	_mm_store_ss(&o, _mm_dp_ps(mm, b.mm, 0xF1));
 	return o;

+ 2 - 2
anki/script/Common.h

@@ -1,5 +1,5 @@
-#ifndef SCRIPT_COMMON_H
-#define SCRIPT_COMMON_H
+#ifndef ANKI_SCRIPT_COMMON_H
+#define ANKI_SCRIPT_COMMON_H
 
 /// @file
 /// This file is included by all the *.bpi.cpp files

+ 58 - 0
anki/util/Platform.h

@@ -0,0 +1,58 @@
+#ifndef ANKI_UTIL_PLATFORM_H
+#define ANKI_UTIL_PLATFORM_H
+
+
+//
+// Compiler
+//
+
+#define ANKI_COMPILER_UNKNOWN 0
+#define ANKI_COMPILER_GCC 1
+#define ANKI_COMPILER_CLANG 2
+#define ANKI_COMPILER_INTEL 3
+#define ANKI_COMPILER_OPEN64 4
+#define ANKI_COMPILER_MICROSOFT 5
+
+
+#if defined(__GNUC__)
+#	if defined(__clang__)
+#		define ANKI_COMPILER ANKI_COMPILER_CLANG
+#	else
+#		define ANKI_COMPILER ANKI_COMPILER_GCC
+#	endif
+#else
+#	define ANKI_COMPILER ANKI_COMPILER_UNKNOWN
+#endif
+
+//
+// Platform
+//
+
+#define ANKI_PLATFORM_UNKNOWN 0
+#define ANKI_PLATFORM_LINUX 1
+#define ANKI_PLATFORM_WINDOWS 2
+#define ANKI_PLATFORM_APPLE 3
+
+
+#if defined(__gnu_linux__)
+#	define ANKI_PLATFORM ANKI_PLATFORM_LINUX
+#elif defined(__WIN32__) || defined(_WIN32)
+#	define ANKI_PLATFORM ANKI_PLATFORM_WINDOWS
+#elif defined(__APPLE_CC__)
+#	define ANKI_PLATFORM ANKI_PLATFORM_APPLE
+#else
+#	define ANKI_PLATFORM ANKI_PLATFORM_UNKNOWN
+#endif
+
+//
+// Arch
+//
+
+#define ANKI_ARCH_UNKNOWN 0
+#define ANKI_ARCH_X86_32 1
+#define ANKI_ARCH_X86_64 2
+
+/// XXX
+
+
+#endif

+ 18 - 7
docs/drafts/scene-abstraction.txt

@@ -185,20 +185,29 @@ ToDo
 xxx
 ===
 
-SceneObject
-	- Static
-	- Moving
+Scene
+	- N x SceneNode
+	- 1 x Octree
 	
-	- Frustum
-	- Renderable
+	- Update transforms
+	- Call move updates if moved
+
+SceneObject
+
+StaticObject: SceneObject
+
+SceneNode: SceneObject
+	- static | moving
+	- TRF
+	- parent & children
 	
 Renderable
-	- stage? MS | BS | LS
+	- stage? MS | BS | LS | DBG
 	- material
 	- world transform [for moving]
 	- collision shape [for moving]
 	
-Frustum:
+Frustum
 	- N x renderables
 
 
@@ -213,3 +222,5 @@ Frustum:
 
 
 
+
+