Changeset 483


Ignore:
Timestamp:
11/17/15 20:25:58 (10 years ago)
Author:
epyon
Message:
  • skeleton updates
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/gfx/skeleton_instance.hh

    r482 r483  
    8484                const transform* transforms() const { return m_transforms.data(); }
    8585                size_t size() const { return m_transforms.size(); }
     86                void assign( const data_node_list* node_data );
     87                void assign( const skeleton_transforms& other );
     88                void interpolate( const skeleton_transforms& a, const skeleton_transforms& b, float t );
    8689                void animate_local( const mesh_nodes_data* node_data, const skeleton_binding& binding, float frame );
    8790                void animate( const mesh_nodes_data* node_data, const skeleton_binding& binding, float frame, bool local = false )
  • trunk/nv/interface/scene_node.hh

    r395 r483  
    8181                list::const_iterator begin() { return m_children.cbegin(); }
    8282                list::const_iterator end()   { return m_children.cend(); }
     83                list& children() { return m_children; }
    8384
    8485                virtual ~scene_node()
  • trunk/src/gfx/skeleton_instance.cc

    r482 r483  
    6060        if ( bones.size() != m_matrix.size() )
    6161                m_matrix.resize( bones.size() );
     62}
     63
     64void nv::skeleton_transforms::assign( const data_node_list* node_data )
     65{
     66        NV_ASSERT( node_data, "!!!" );
     67        if ( m_transforms.size() != node_data->size() )
     68                m_transforms.resize( node_data->size() );
     69        for ( uint32 n = 0; n < node_data->size(); ++n )
     70        {
     71                const data_node_info& info = (*node_data)[ n ];
     72                m_transforms[n] = transform( info.transform );
     73        }
     74}
     75
     76void nv::skeleton_transforms::interpolate( const skeleton_transforms& a, const skeleton_transforms& b, float t )
     77{
     78        NV_ASSERT( a.size() == b.size(), "!!!" );
     79        if ( m_transforms.size() != a.size() )
     80                m_transforms.resize( a.size() );
     81        for ( uint32 n = 0; n < a.size(); ++n )
     82        {
     83                m_transforms[n] = nv::interpolate( a.m_transforms[n], b.m_transforms[n], t );
     84        }
     85}
     86
     87void nv::skeleton_transforms::assign( const skeleton_transforms& other )
     88{
     89        m_transforms.assign( other.m_transforms );
    6290}
    6391
Note: See TracChangeset for help on using the changeset viewer.