Changeset 287 for trunk/nv/gfx/animation.hh
- Timestamp:
- 07/23/14 15:24:03 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/nv/gfx/animation.hh
r286 r287 73 73 74 74 uint32 slot = 0; 75 int index = -1; 75 int index0 = -1; 76 int index1 = -1; 76 77 float factor = 1.0f; 77 78 if ( desc.slots[0].vslot == animation_slot::TIME ) 78 79 { 80 NV_ASSERT( desc.slots[0].offset == 0, "time offset not zero!" ); 79 81 slot++; 80 82 keyfresult--; … … 84 86 return keyfresult; 85 87 } 86 uint32 toffset = desc.slots[0].offset / 4; 87 for ( int i = 0 ; i < (int)count - 1 ; i++ ) 88 for ( int i = 1 ; i < (int)count ; i++ ) 88 89 { 89 if ( time < fdata[ i * keyfsize + keyfsize + toffset ] ) { index = i; break; }90 if ( time < fdata[ i * keyfsize ] ) { index0 = i - 1; break; } 90 91 } 91 NV_ASSERT( index >= 0, "animation time fail!"); 92 float time0 = fdata[ index * keyfsize + toffset ]; 93 float time1 = fdata[ index * keyfsize + keyfsize + toffset ]; 92 NV_ASSERT( index0 >= 0, "animation time fail!"); 93 index1 = index0 + 1; 94 float time0 = fdata[ index0 * keyfsize ]; 95 float time1 = fdata[ index1 * keyfsize ]; 94 96 float delta = time1 - time0; 95 97 factor = glm::clamp( (time - time0) / delta, 0.0f, 1.0f ); … … 102 104 return keyfresult; 103 105 } 104 index = glm::clamp<int>( int( time ), 0, count - 2 ); 105 factor = glm::clamp<float> ( time - index, 0.0f, 1.0f ); 106 index0 = glm::clamp<int>( int( time ), 0, count - 2 ); 107 index1 = index0 + 1; 108 factor = glm::clamp<float> ( time - index0, 0.0f, 1.0f ); 106 109 } 107 110 uint32 ret = 0; … … 110 113 ret += nv::interpolate_raw( 111 114 desc.slots[slot], factor, 112 fdata + index * keyfsize + desc.slots[slot].offset / 4,113 fdata + index * keyfsize +keyfsize + desc.slots[slot].offset / 4,115 fdata + index0 * keyfsize + desc.slots[slot].offset / 4, 116 fdata + index1 * keyfsize + desc.slots[slot].offset / 4, 114 117 result + ret ); 115 118 }
Note: See TracChangeset
for help on using the changeset viewer.