Покажи где и как ты её создаёшь/заполняешь p.s. В GetPosition ты надел 2 презерватива
записываю в структуру, потом читаю сама структура на скрине
Пока не вижу, чтобы ты свой ActionArgument где-то прикопал, ты создаёшь переменную на стеке, а дальше с ней что?
обрати внимание каким конструктором ты создаешь
Задача состоит в нахождении пути, работает через ECS Flecs. Удивительно, что до недавнего времени всё работало, а логику я не правил. if (TargetPoint) { FActionMoveToArgument* ActionArgument = new FActionMoveToArgument(); ActionArgument->Initialize(SpawnInfo->Entity, new FMovingTarget(TargetPoint), 10.f); FActionMoveTo* Action = new FActionMoveTo(); Action->Initialize(ActionArgument); it.world().entity().set<CAddAction>({SpawnInfo->Entity, Action}); } Это записывается в ECS компонент, который по сути обычная структура с++ FLECS_COMPONENT(CAction) { FAction* Action; } Далее происходит вывод Action, где читается значение target. Вызывается функция выполнения Action virtual bool Execute_Internal() override { if (FActionMoveToArgument* ActionMoveToArgument = ConvertArgumentChecked<FActionMoveToArgument>()) { const auto EntityTarget = new CMoveTo(ActionMoveToArgument->MovingTarget, ActionMoveToArgument->DistanceSuccess); ActionMoveToArgument->Entity.set<CMoveTo>(*EntityTarget); return true; } return false; } CMoveTo тоже обычная структура с++ FLECS_COMPONENT(CMoveTo) { FMovingTarget* Target = nullptr; float DistanceSuccess = 10.f; CMoveTo() { Target = new FMovingTarget(); } CMoveTo(AActor* InitTarget) { Target = new FMovingTarget(InitTarget); } CMoveTo(FVector InitPosition) { Target = new FMovingTarget(InitPosition); } CMoveTo(FVector InitPosition, AActor* InitTarget) { Target = new FMovingTarget(InitPosition, InitTarget); } CMoveTo(FMovingTarget* InitTarget, const float InitDistanceSuccess = 10.f) { Target = InitTarget; DistanceSuccess = InitDistanceSuccess; } FVector GetPosition() const { return Target->GetPosition(); } }; И далее на следующем кадре читаю GetPosition()....
Обсуждают сегодня