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) { FString FAnimQueueDecoder::DebugString(std::string_view queue) {
// IMPLEMENT ME FString result;
return FString(); 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) { FString FAnimStepDecoder::DebugString(const FAnimStep& step) {
// IMPLEMENT ME FString result;
return FString(); 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;
} }

View File

@@ -4,10 +4,13 @@
#include "lpx-drvutil.hpp" #include "lpx-drvutil.hpp"
#include "DebugPrint.h" #include "DebugPrint.h"
#include "TangibleManager.h" #include "TangibleManager.h"
#include "CommonTypes.h"
#include "AnimQueue.h"
#include <string> #include <string>
#include <string_view> #include <string_view>
using namespace DebugPrint; using namespace DebugPrint;
using namespace CommonTypes;
AIntegrationGameModeBase::AIntegrationGameModeBase() AIntegrationGameModeBase::AIntegrationGameModeBase()
{ {
@@ -111,6 +114,11 @@ void AIntegrationGameModeBase::UpdateTangibles() {
for (int64 id : TangibleManager.GetNear()) { for (int64 id : TangibleManager.GetNear()) {
TangibleManager.MakeTangible(id); TangibleManager.MakeTangible(id);
} }
IdArray live = TangibleManager.GetLive();
StringViewVec aqueues = w.GetAnimationQueues(live);
for (int i = 0; i < aqueues.Num(); i++) {
FString debugq = FAnimQueueDecoder::DebugString(aqueues[i]);
}
} }
void AIntegrationGameModeBase::ConsoleSendInput(const FString& fs) void AIntegrationGameModeBase::ConsoleSendInput(const FString& fs)