Tested animation queue parsing in Unreal

This commit is contained in:
2023-09-11 03:44:57 -04:00
parent dcaa916347
commit 350816afb1
2 changed files with 43 additions and 4 deletions

View File

@@ -43,12 +43,43 @@ FAnimField FAnimStepDecoder::ReadField() {
}
FString FAnimQueueDecoder::DebugString(std::string_view queue) {
// IMPLEMENT ME
return FString();
FString result;
FAnimQueueDecoder decoder(queue);
while (!decoder.AtEOF()) {
FAnimStep step = decoder.ReadStep();
FString stepdebug = FAnimStepDecoder::DebugString(step);
result.Appendf(TEXT("%s\n"), *stepdebug);
}
return result;
}
FString FAnimStepDecoder::DebugString(const FAnimStep& step) {
// IMPLEMENT ME
return FString();
FString result;
FAnimStepDecoder decoder(step);
bool first = true;
while (!decoder.AtEOF()) {
FAnimField field = decoder.ReadField();
if (!first) {
result.Append(TEXT(" "));
}
result.Append(FString(field.Name.size(), (const UTF8CHAR*)field.Name.data()));
result.Append(field.Persistent ? TEXT("=") : TEXT(":"));
switch (field.Type) {
case EAnimValueType::T_STRING:
result.Append(FString(field.S.size(), (const UTF8CHAR*)field.S.data()));
break;
case EAnimValueType::T_NUMBER:
result.Appendf(TEXT("%lf"), field.X);
break;
case EAnimValueType::T_BOOLEAN:
result.Append((field.X) == 1.0 ? TEXT("true") : TEXT("false"));
break;
case EAnimValueType::T_XYZ:
result.Appendf(TEXT("%lf,%lf,%lf"), field.X, field.Y, field.Z);
break;
}
first = false;
}
return result;
}