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/particle_manager.cc

    r520 r539  
    6161        data->emitter_count   = 0;
    6262        data->affector_count  = 0;
    63         data->orientation     = particle_orientation( table.get_unsigned("orientation", 0) );
    64         data->origin          = particle_origin( table.get_unsigned( "origin",0  ) );
     63        data->orientation     = particle_orientation( table["orientation"].get_uint32() );
     64        data->origin          = particle_origin( table["origin"].get_uint32() );
    6565
    66         data->common_up  = math::normalize( table.get<vec3>("common_up", vec3(1,0,0) ) );
    67         data->common_dir = math::normalize( table.get<vec3>("common_dir", vec3(0,1,0) ) );
     66        data->common_up  = math::normalize( table["common_up"].as( vec3(1,0,0) ) );
     67        data->common_dir = math::normalize( table["common_dir"].as( vec3(0,1,0) ) );
    6868
    6969        vec2 def_size        = table.get<vec2>("size", vec2(0.1,0.1) );
     
    7272        {
    7373                lua::table_guard element( table, i+1 );
    74                 const_string type     = element.get_string( "type" );
    75                 const_string sub_type = element.get_string( "sub_type" );
     74                const_string type     = element["type"].get_string();
     75                const_string sub_type = element["sub_type"].get_string();
    7676                if ( type == "emitter" )
    7777                {
     
    8686                                }
    8787
    88                                 edata.position     = element.get<vec3>("position", vec3() );
    89                                 edata.extents      = element.get<vec3>("extents", vec3(1,1,1) );
    90                                 edata.extents[0]   = element.get<float>("width", edata.extents[0] );
    91                                 edata.extents[1]   = element.get<float>("depth", edata.extents[1] );
    92                                 edata.extents[2]   = element.get<float>("height", edata.extents[2] );
    93                                 edata.extents[0]   = element.get<float>("radius", edata.extents[0] );
    94                                 edata.iextents     = element.get<vec3>("inner_extents", vec3() );
    95                                 edata.iextents[0]  = element.get<float>("inner_width", edata.iextents[0] );
    96                                 edata.iextents[1]  = element.get<float>("inner_depth", edata.iextents[1] );
    97                                 edata.iextents[2]  = element.get<float>("inner_height", edata.iextents[2] );
    98                                 edata.iextents[0]  = element.get<float>("inner_radius", edata.iextents[0] );
     88                                edata.position     = element["position"].as( vec3() );
     89                                edata.extents      = element["extents"].as( vec3(1,1,1) );
     90                                edata.extents[0]   = element["width"].as( edata.extents[0] );
     91                                edata.extents[1]   = element["depth"].as( edata.extents[1] );
     92                                edata.extents[2]   = element["height"].as( edata.extents[2] );
     93                                edata.extents[0]   = element["radius"].as( edata.extents[0] );
     94                                edata.iextents     = element["inner_extents"].as( vec3() );
     95                                edata.iextents[0]  = element["inner_width"].as( edata.iextents[0] );
     96                                edata.iextents[1]  = element["inner_depth"].as( edata.iextents[1] );
     97                                edata.iextents[2]  = element["inner_height"].as( edata.iextents[2] );
     98                                edata.iextents[0]  = element["inner_radius"].as( edata.iextents[0] );
    9999                                edata.hextents     = 0.5f * edata.extents;
    100100                                edata.ihextents    = 0.5f * edata.iextents;
    101                                 edata.precise      = element.get<bool>("precise", false );
    102                                 edata.square       = element.get<bool>("square", true );
    103                                 vec4 color         = element.get<vec4>("color", vec4(1,1,1,1) );
    104                                 edata.color_min    = element.get<vec4>("color_min", color );
    105                                 edata.color_max    = element.get<vec4>("color_max", color );
    106                                 vec2 size          = element.get<vec2>("size", def_size );
    107                                 edata.size_min     = element.get<vec2>("size_min", size );
    108                                 edata.size_max     = element.get<vec2>("size_max", size );
    109                                 edata.angle        = element.get<float>("angle", 0.0f );
    110                                 float velocity     = element.get<float>("velocity", 0.0f );
    111                                 edata.velocity_min = element.get<float>("velocity_min", velocity );
    112                                 edata.velocity_max = element.get<float>("velocity_max", velocity );
    113                                 float lifetime     = element.get<float>("lifetime", 1.0f );
    114                                 edata.lifetime_min = element.get<float>("lifetime_min", lifetime );
    115                                 edata.lifetime_max = element.get<float>("lifetime_max", lifetime );
    116                                 float duration     = element.get<float>("duration", 0.0f );
    117                                 edata.duration_min = element.get<float>("duration_min", duration );
    118                                 edata.duration_max = element.get<float>("duration_max", duration );
    119                                 float repeat       = element.get<float>("repeat_delay", 0.0f );
    120                                 edata.repeat_min   = element.get<float>("repeat_delay_min", repeat );
    121                                 edata.repeat_max   = element.get<float>("repeat_delay_max", repeat );
     101                                edata.precise      = element["precise"].as( false );
     102                                edata.square       = element["square"].as( true );
     103                                vec4 color         = element["color"].as( vec4(1,1,1,1) );
     104                                edata.color_min    = element["color_min"].as( color );
     105                                edata.color_max    = element["color_max"].as( color );
     106                                vec2 size          = element["size"].as( def_size );
     107                                edata.size_min     = element["size_min"].as( size );
     108                                edata.size_max     = element["size_max"].as( size );
     109                                edata.angle        = element["angle"].as( 0.0f );
     110                                float velocity     = element["velocity"].as( 0.0f );
     111                                edata.velocity_min = element["velocity_min"].as( velocity );
     112                                edata.velocity_max = element["velocity_max"].as( velocity );
     113                                float lifetime     = element["lifetime"].as( 1.0f );
     114                                edata.lifetime_min = element["lifetime_min"].as( lifetime );
     115                                edata.lifetime_max = element["lifetime_max"].as( lifetime );
     116                                float duration     = element["duration"].as( 0.0f );
     117                                edata.duration_min = element["duration_min"].as( duration );
     118                                edata.duration_max = element["duration_max"].as( duration );
     119                                float repeat       = element["repeat_delay"].as( 0.0f );
     120                                edata.repeat_min   = element["repeat_delay_min"].as( repeat );
     121                                edata.repeat_max   = element["repeat_delay_max"].as( repeat );
    122122
    123                                 edata.rate         = element.get<float>("rate", 1.0f );
    124                                 edata.dir          = math::normalize( element.get<vec3>("direction", vec3(0,1,0) ) );
     123                                edata.rate         = element["rate"].as( 1.0f );
     124                                edata.dir          = math::normalize( element["direction"].as( vec3(0,1,0) ) );
    125125                               
    126126                                edata.odir = vec3( 0, 0, 1 );
Note: See TracChangeset for help on using the changeset viewer.