- Timestamp:
- 01/25/17 20:20:45 (8 years ago)
- Location:
- trunk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/core/types.cc
r505 r540 28 28 db->create_type<ivec4>(); 29 29 db->create_type<quat>(); 30 db->create_type<shash32>(); 31 db->create_type<shash64>(); 30 32 db->create_type<string32>(); 31 33 db->create_type<string64>(); -
trunk/src/engine/animation.cc
r539 r540 27 27 nv::resource< animator_data > nv::animator_manager::load_animator( nv::lua::table_guard& table, nv::shash64 id, nv::pose_data_set* poses /*= nullptr */ ) 28 28 { 29 uint32 count = table. get_size();29 uint32 count = table.size(); 30 30 if ( count == 0 ) 31 31 { … … 73 73 { 74 74 nv::lua::table_guard states_table( layer_table, "states" ); 75 uint32 state_count = states_table. get_size();75 uint32 state_count = states_table.size(); 76 76 if ( state_count > 0 ) 77 77 { … … 119 119 { 120 120 nv::lua::table_guard transitions_table( state_table, "transitions" ); 121 uint32 transition_count = transitions_table. get_size();121 uint32 transition_count = transitions_table.size(); 122 122 if ( transition_count > 0 ) 123 123 { … … 167 167 result.in = table["ease_in"].get_enum( result.in ); 168 168 result.out = table["ease_out"].get_enum( nv::easing_type::NONE ); 169 if ( table .has_field( "ease_in_out" ))169 if ( table[ "ease_in_out" ] ) 170 170 { 171 171 result.in = result.out = table["ease_in_out"].get_enum( nv::easing_type::NONE ); -
trunk/src/engine/model_manager.cc
r539 r540 30 30 gm->ragdoll_id = table["ragdoll"].get_string32(); 31 31 32 if ( table .has_field( "animator" ))32 if ( table["animator"] ) 33 33 { 34 34 gm->animator = m_rm->get< animator_data >( table["animator"].get_string() ); … … 40 40 } 41 41 42 if ( table .has_field( "phx_mesh" ))42 if ( table[ "phx_mesh" ] ) 43 43 { 44 44 nv::string128 cpath( table["phx_mesh"].get_string128() ); … … 77 77 node->tag = table["tag"].get_string32(); 78 78 79 if ( table .has_field( "path" ))79 if ( table[ "path" ] ) 80 80 { 81 81 nv::string128 cpath( table["path"].get_string128() ); … … 85 85 } 86 86 87 if ( table .has_field( "phx_hextents" ))87 if ( table[ "phx_hextents"] ) 88 88 node->phx_hextents = table["phx_hextents"].as<vec3>(); 89 if ( table .has_field( "phx_offset" ))89 if ( table[ "phx_offset"] ) 90 90 node->phx_offset = table["phx_offset"].as<vec3>(); 91 if ( table .has_field( "phx_mass" ))91 if ( table[ "phx_mass"] ) 92 92 node->phx_mass = table["phx_mass"].as<float>( 0.0f ); 93 if ( table .has_field( "phx_mass" ))93 if ( table["phx_mass"] ) 94 94 node->phx_shape = nv::phx_shape( table["phx_shape"].as<int>( 0 ) ); 95 95 96 if ( table .has_field( "local_position" ))96 if ( table["local_position"] ) 97 97 node->local.set_position( table["local_position"].as<vec3>() ); 98 if ( table .has_field( "local_orientation" ))98 if ( table["local_orientation"] ) 99 99 node->local.set_orientation( vec4_to_quat( table["local_orientation"].as<vec4>( vec4( 0.0f, 0.0f, 0.0f, 1.0f ) ) ) ); 100 100 101 if ( table .has_field( "position" ))101 if ( table["position"] ) 102 102 { 103 103 node->position.min = table["position"].as<vec3>(); 104 104 node->position.max = node->position.min; 105 105 } 106 if ( table .has_field( "rotation" ))106 if ( table["rotation"] ) 107 107 { 108 108 node->rotation.min = table["rotation"].as<vec3>(); 109 109 node->rotation.max = node->rotation.min; 110 110 } 111 if ( table .has_field( "position_min" )) node->position.min = table["position_min"].as<vec3>();112 if ( table .has_field( "position_max" )) node->position.max = table["position_max"].as<vec3>();113 if ( table .has_field( "position_dist" )) node->position.dist = random_dist( table["position_dist"].get_uint32() );114 if ( table .has_field( "rotation_min" )) node->rotation.min = table["rotation_min"].as<vec3>();115 if ( table .has_field( "rotation_max" )) node->rotation.max = table["rotation_max"].as<vec3>();116 if ( table .has_field( "rotation_dist" )) node->rotation.dist = random_dist( table["rotation_dist"].get_uint32() );111 if ( table["position_min"] ) node->position.min = table["position_min"].as<vec3>(); 112 if ( table["position_max"] ) node->position.max = table["position_max"].as<vec3>(); 113 if ( table["position_dist"] ) node->position.dist = random_dist( table["position_dist"].get_uint32() ); 114 if ( table["rotation_min"] ) node->rotation.min = table["rotation_min"].as<vec3>(); 115 if ( table["rotation_max"] ) node->rotation.max = table["rotation_max"].as<vec3>(); 116 if ( table["rotation_dist"] ) node->rotation.dist = random_dist( table["rotation_dist"].get_uint32() ); 117 117 118 if ( table .has_field( "attach" ))118 if ( table["attach"] ) 119 119 { 120 120 if ( table["attach"].is_number() ) … … 140 140 node->material = cmaterial; 141 141 142 for ( uint32 i = 1; i <= table. get_size(); ++i )142 for ( uint32 i = 1; i <= table.size(); ++i ) 143 143 { 144 144 lua::table_guard child_table( table, i ); -
trunk/src/engine/particle_manager.cc
r539 r540 68 68 69 69 vec2 def_size = table.get<vec2>("size", vec2(0.1,0.1) ); 70 uint32 elements = table. get_size();70 uint32 elements = table.size(); 71 71 for ( uint32 i = 0; i < elements; ++i ) 72 72 { -
trunk/src/engine/program_manager.cc
r539 r540 68 68 { 69 69 lua::table_guard inctable( table, "files" ); 70 uint32 count = inctable. get_size();70 uint32 count = inctable.size(); 71 71 for ( uint32 i = 1; i <= count; ++i ) 72 72 { -
trunk/src/engine/ragdoll_manager.cc
r539 r540 75 75 float radius = table["radius"].get_f32(); 76 76 float length = 0.0f; 77 if ( table .has_field( "target" ))77 if ( table[ "target" ] ) 78 78 { 79 79 const auto& of = bind_data->get_bone_transforms().m_offsets; … … 97 97 part.limits = table["limits"].as< vec3 >(); 98 98 } 99 uint32 child_count = table. get_size();99 uint32 child_count = table.size(); 100 100 bool result = true; 101 101 if ( child_count > 0 ) -
trunk/src/lua/lua_proxy.cc
r539 r540 9 9 #include "nv/lua/lua_raw.hh" 10 10 #include "nv/lua/lua_state.hh" 11 #include "nv/lua/lua_types.hh" 11 12 12 13 using namespace nv; … … 58 59 } 59 60 61 bool nv::lua::stack_proxy::is_valid() const 62 { 63 return !( lua_isnil( *m_state, m_index ) ); 64 } 65 66 bool nv::lua::stack_proxy::read( const type_entry* entry, void* object ) const 67 { 68 NV_ASSERT_ALWAYS( m_state->get_type_data()->get_type_database() == entry->type_db, "Type database mismatch between Lua and entry!" ); 69 if ( lua_type( *m_state, m_index ) != LUA_TTABLE ) return false; 70 return nv::lua::read_rtti_type( m_state, entry, object, m_index ); 71 } 72 60 73 bool nv::lua::stack_proxy::is_table() const 61 74 { -
trunk/src/lua/lua_state.cc
r539 r540 153 153 // TODO : error handling 154 154 } 155 m_index = -1; 155 156 } 156 157 … … 165 166 // TODO : error handling 166 167 } 168 m_index = -1; 167 169 } 168 170 169 171 lua::table_guard::~table_guard() 170 172 { 171 lua_settop( m_state, m_level );172 } 173 174 nv::uint32 lua::table_guard::get_size() 175 { 176 return nlua_rawlen( m_state, -1 ); 177 } 178 179 bool lua::table_guard::has_field( string_view element ) 180 { 181 lua_getfield( m_state, -1, element.data() );182 bool result = !( lua_isnil( m_state, -1 ) ); 183 lua_pop( m_state, 1);184 return result;173 if ( m_index == -1 ) 174 lua_settop( m_state, m_level ); 175 } 176 177 nv::uint32 lua::table_guard::size() 178 { 179 return nlua_rawlen( m_state, m_index ); 180 } 181 182 nv::lua::table_guard::table_guard( stack_proxy& proxy ) 183 : state_wrapper( *proxy.m_state, proxy.m_state->m_lua_types, false ), m_parent( proxy.m_state ), m_level( 0 ) 184 { 185 m_level = lua_gettop( m_state ); 186 m_index = proxy.m_index; 185 187 } 186 188 187 189 const nv::lua::temporary_proxy nv::lua::table_guard::operator[]( const string_view& key ) const 188 190 { 189 lua_getfield( m_state, -1, key.data() );191 lua_getfield( m_state, m_index, key.data() ); 190 192 return temporary_proxy( m_parent ); 191 193 } … … 193 195 const nv::lua::temporary_proxy nv::lua::table_guard::operator[]( sint32 key ) const 194 196 { 195 lua_rawgeti( m_state, -1, key );197 lua_rawgeti( m_state, m_index, key ); 196 198 return temporary_proxy( m_parent ); 197 }198 199 bool nv::lua::table_guard::read( const string_view& element, const type_entry* entry, void* object )200 {201 NV_ASSERT_ALWAYS( m_lua_types->get_type_database() == entry->type_db, "Type database mismatch between Lua and entry!" );202 lua_getfield( m_state, -1, element.data() );203 if ( lua_type( m_state, -1 ) != LUA_TTABLE )204 {205 lua_pop( m_state, 1 );206 return false;207 }208 if ( !nv::lua::read_rtti_type( m_parent, entry, object, -1 ) )209 {210 lua_pop( m_state, 1 );211 return false;212 }213 lua_pop( m_state, 1 );214 return true;215 199 } 216 200 … … 590 574 } 591 575 576 template < typename T > 577 bool nlua_rtti_string_read( nv::lua::state* state, const type_entry*, void* object, int index ) 578 { 579 T* value = reinterpret_cast<T*>( object ); 580 if ( lua_type( state->get_raw(), index ) == LUA_TSTRING ) 581 { 582 *value = T( nlua_tostringview( state->get_raw(), index ) ); 583 return true; 584 } 585 return false; 586 } 587 592 588 593 589 void nv::lua::type_data::insert( thash64 tid, lua_rtti_push_function p, lua_rtti_read_function r ) … … 608 604 insert<nv::f32> ( nlua_rtti_floating_push<nv::f32>, nlua_rtti_floating_read<nv::f32> ); 609 605 insert<nv::f64> ( nlua_rtti_floating_push<nv::f64>, nlua_rtti_floating_read<nv::f64> ); 610 // insert<nv::sint64>( nlua_rtti_floating_push<nv::sint64>, nlua_rtti_floating_read<nv::sint64> ); 606 insert<nv::shash32> ( nullptr, nlua_rtti_string_read<nv::shash32> ); 607 insert<nv::shash64> ( nullptr, nlua_rtti_string_read<nv::shash64> ); 608 insert<nv::string32> ( nullptr, nlua_rtti_string_read<nv::string32> ); 609 insert<nv::string64> ( nullptr, nlua_rtti_string_read<nv::string64> ); 610 insert<nv::string128>( nullptr, nlua_rtti_string_read<nv::string128> ); 611 // insert<nv::sint64>( nlua_rtti_floating_push<nv::sint64>, nlua_rtti_floating_read<nv::sint64> ); 611 612 // insert<nv::uint64>( nlua_rtti_floating_push<nv::uint64>, nlua_rtti_floating_read<nv::uint64> ); 612 613 }
Note: See TracChangeset
for help on using the changeset viewer.