Ignore:
Timestamp:
01/24/17 17:55:00 (8 years ago)
Author:
epyon
Message:
  • temporary_proxy implemented
  • table_guard now uses temporary_proxy as main read functionality
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/engine/animation.cc

    r509 r539  
    3434
    3535        nv::animator_data* animator = new nv::animator_data;
    36         animator->id = table.get_string64( "id" );
     36        animator->id = table["id"].get_string64();
    3737        animator->poses = poses;
    3838        if ( poses == nullptr )
    3939        {
    40                 string128 poses_path = table.get_string128( "poses" );
     40                string128 poses_path = table["poses"].get_string128();
    4141                if ( !poses_path.empty() )
    4242                {
     
    5959                nv::lua::table_guard layer_table( table, layer_idx );
    6060                nv::animator_layer_data& layer = animator->layers[layer_idx - 1];
    61                 layer.name = layer_table.get_string( "name", m_strings, 0 );
    62                 layer.mask = layer_table.get_integer( "mask", -1 );
     61                layer.name = layer_table["name"].get_string( m_strings );
     62                layer.mask = layer_table["mask"].get_sint32( -1 );
    6363                layer.def_state = -1;
    6464
     
    7070                }
    7171
    72                 if ( layer_table.is_table( "states" ) )
     72                if ( layer_table["states"].is_table() )
    7373                {
    7474                        nv::lua::table_guard states_table( layer_table, "states" );
     
    8484                                        nv::animator_state_data& state = layer.states[state_idx - 1];
    8585
    86                                         state.name = state_table.get_string( "name", m_strings, 0 );
     86                                        state.name = state_table["name"].get_string( m_strings );
    8787                                        NV_ASSERT( state.name, "Animation state without name is invalid!" );
    8888                                        state_names[state.name] = state_idx - 1;
    89                                         state.loop = state_table.get_boolean( "loop", true );
    90                                         state.duration = state_table.get_float( "duration", 0.0f );
    91                                         state.interp = nv::interpolation( state_table.get_unsigned( "interpolation", uint32( nv::interpolation::SPHERICAL ) ) );
     89                                        state.loop = state_table["loop"].get_bool( true );
     90                                        state.duration = state_table["duration"].get_f32();
     91                                        state.interp = state_table["interpolation"].get_enum( nv::interpolation::SPHERICAL );
    9292
    93                                         shash64 pose_set = state_table.get_string_hash_64( "pose_set" );
     93                                        shash64 pose_set = state_table["pose_set"].get_shash64();
    9494                                        if ( pose_set )
    9595                                        {
     
    9898                                                uint32 pid = it->second.start;
    9999                                                uint32 pose_count = it->second.count;
    100                                                 uint32 start = state_table.get_unsigned( "start", 0 );
    101                                                 uint32 stop = state_table.get_unsigned( "stop", pose_count - 1 );
     100                                                uint32 start = state_table["start"].get_uint32();
     101                                                uint32 stop = state_table["stop"].get_uint32( pose_count - 1 );
    102102                                                for ( nv::uint32 i = pid + start; i < pid + stop + 1; ++i )
    103103                                                {
     
    116116                                        nv::lua::table_guard state_table( states_table, state_idx );
    117117
    118                                         if ( state_table.is_table( "transitions" ) )
     118                                        if ( state_table["transitions"].is_table() )
    119119                                        {
    120120                                                nv::lua::table_guard transitions_table( state_table, "transitions" );
     
    125125                                                        {
    126126                                                                nv::lua::table_guard transition_table( transitions_table, transition_idx );
    127                                                                 shash64 name = transition_table.get_string( "name", m_strings, 0 );
    128                                                                 shash64 target_name = transition_table.get_string_hash_64( "target", 0 );
     127                                                                shash64 name = transition_table["name"].get_string( m_strings );
     128                                                                shash64 target_name = transition_table["target"].get_shash64();
    129129                                                                NV_ASSERT( name, "Transition state without name is invalid!" );
    130130                                                                NV_ASSERT( target_name, "Transition state without name is invalid!" );
     
    134134                                                                nv::animator_transition_data tr_data;
    135135                                                                tr_data.target = it->second;
    136                                                                 tr_data.duration = transition_table.get_float( "duration", 0.0f );
    137                                                                 tr_data.interp = nv::interpolation( transition_table.get_unsigned( "interpolation", uint32( nv::interpolation::SPHERICAL ) ) );
     136                                                                tr_data.duration = transition_table["duration"].get_f32();
     137                                                                tr_data.interp = transition_table["interpolation"].get_enum( nv::interpolation::SPHERICAL );
    138138                                                                tr_data.easing = read_easing( transition_table );
    139139
     
    149149
    150150
    151                 shash64 def_state_name = layer_table.get_string_hash_64( "default", 0 );
     151                shash64 def_state_name = layer_table["default"].get_shash64();
    152152                if ( def_state_name )
    153153                {
     
    164164{
    165165        nv::easing result;
    166         result.in = nv::easing_type( table.get_integer( "easing", int( nv::easing_type::NONE ) ) );
    167         result.in = nv::easing_type( table.get_integer( "ease_in", int( result.in ) ) );
    168         result.out = nv::easing_type( table.get_integer( "ease_out", int( nv::easing_type::NONE ) ) );
     166        result.in = table["easing"].get_enum( nv::easing_type::NONE );
     167        result.in = table["ease_in"].get_enum( result.in );
     168        result.out = table["ease_out"].get_enum( nv::easing_type::NONE );
    169169        if ( table.has_field( "ease_in_out" ) )
    170170        {
    171                 result.in = result.out = nv::easing_type( table.get_integer( "ease_in_out", int( nv::easing_type::NONE ) ) );
     171                result.in = result.out = table["ease_in_out"].get_enum( nv::easing_type::NONE );
    172172        }
    173173        if ( result.in == nv::easing_type::NONE && result.out == nv::easing_type::NONE )
Note: See TracChangeset for help on using the changeset viewer.