MCPcopy Create free account
hub / github.com/assimp/assimp / insertMorphTimeValue

Function insertMorphTimeValue

code/AssetLib/Collada/ColladaLoader.cpp:1054–1084  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1052};
1053
1054void insertMorphTimeValue(std::vector<MorphTimeValues> &values, float time, float weight, unsigned int value) {
1055 MorphTimeValues::key k{};
1056 k.mValue = value;
1057 k.mWeight = weight;
1058 if (values.empty() || time < values[0].mTime) {
1059 MorphTimeValues val;
1060 val.mTime = time;
1061 val.mKeys.push_back(k);
1062 values.insert(values.begin(), val);
1063 return;
1064 }
1065 if (time > values.back().mTime) {
1066 MorphTimeValues val;
1067 val.mTime = time;
1068 val.mKeys.push_back(k);
1069 values.insert(values.end(), val);
1070 return;
1071 }
1072 for (unsigned int i = 0; i < values.size(); i++) {
1073 if (std::abs(time - values[i].mTime) < ai_epsilon) {
1074 values[i].mKeys.push_back(k);
1075 return;
1076 } else if (time > values[i].mTime && time < values[i + 1].mTime) {
1077 MorphTimeValues val;
1078 val.mTime = time;
1079 val.mKeys.push_back(k);
1080 values.insert(values.begin() + i, val);
1081 return;
1082 }
1083 }
1084}
1085
1086static float getWeightAtKey(const std::vector<MorphTimeValues> &values, int key, unsigned int value) {
1087 for (auto mKey : values[key].mKeys) {

Callers 1

CreateAnimationMethod · 0.85

Calls 5

emptyMethod · 0.45
push_backMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected