Index: trunk/src/engine/default_resource_manager.cc
===================================================================
--- trunk/src/engine/default_resource_manager.cc	(revision 511)
+++ trunk/src/engine/default_resource_manager.cc	(revision 512)
@@ -27,4 +27,5 @@
 	m_lua = lua;
 
+	int below_already_registered;
 	m_lua->register_enum( "RND_LINEAR",     static_cast<int>( random_dist::LINEAR ) );
 	m_lua->register_enum( "RND_GAUSSIAN",   static_cast<int>( random_dist::GAUSSIAN ) );
Index: trunk/src/engine/model_manager.cc
===================================================================
--- trunk/src/engine/model_manager.cc	(revision 511)
+++ trunk/src/engine/model_manager.cc	(revision 512)
@@ -8,4 +8,5 @@
 
 #include "nv/lua/lua_math.hh"
+#include "nv/lua/lua_flags.hh"
 
 using namespace nv;
@@ -16,4 +17,5 @@
 
 	model* gm = new model;
+	gm->flags  = table.get< flags<32> >( "flags" );
 	gm->attach = table.get_string_hash_64( "attach" );
 	gm->root.set_position( table.get<vec3>( "root_position", vec3() ) );
Index: trunk/src/lua/lua_math.cc
===================================================================
--- trunk/src/lua/lua_math.cc	(revision 511)
+++ trunk/src/lua/lua_math.cc	(revision 512)
@@ -154,11 +154,13 @@
 int nlua_vec_add( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) + to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) + to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) + static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) + to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) + static_cast<typename T::value_type>( lua_tonumber( L, 2 ) );
+		else
+			v = to_vec<T>( L, 1 ) + to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
@@ -167,11 +169,13 @@
 int nlua_vec_sub( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) - to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) - to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) - static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) - to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) - static_cast<typename T::value_type>(lua_tonumber( L, 2 ) );
+		else
+			v = to_vec<T>( L, 1 ) - to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
@@ -180,11 +184,13 @@
 int nlua_vec_mul( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) * to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) * to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) * static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) * to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) * static_cast<typename T::value_type>(lua_tonumber( L, 2 ));
+		else
+			v = to_vec<T>( L, 1 ) * to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
@@ -193,11 +199,13 @@
 int nlua_vec_div( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) / to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) / to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) / static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) / to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) / static_cast<typename T::value_type>(lua_tonumber( L, 2 ));
+		else
+			v = to_vec<T>( L, 1 ) / to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
