Working on look-at Widgets, not done yet.
This commit is contained in:
@@ -141,25 +141,32 @@ void UlxTangible::Destroy() {
|
||||
NearAccordingToUnreal = false;
|
||||
}
|
||||
|
||||
UlxTangible *UlxTangible::GetActorTangible(AActor *actor) {
|
||||
UlxTangible *UlxTangible::GetActorTangibleQuiet(AActor *actor) {
|
||||
UlxTangibleComponent* comp = actor->GetComponentByClass<UlxTangibleComponent>();
|
||||
check(comp != nullptr);
|
||||
UlxTangible *result = comp->Tangible.Get();
|
||||
check(result != nullptr);
|
||||
return result;
|
||||
if (comp == nullptr) return nullptr;
|
||||
return comp->Tangible.Get();
|
||||
}
|
||||
|
||||
UlxTangible *UlxTangible::GetActorTangibleOrLog(AActor *actor) {
|
||||
UlxTangible *tan = GetActorTangibleQuiet(actor);
|
||||
if (tan == nullptr) {
|
||||
UE_LOG(LogBlueprint, Error, TEXT("Not a luprex tangible: %s"), *actor->GetName());
|
||||
}
|
||||
return tan;
|
||||
}
|
||||
|
||||
void UlxTangible::GetCurrentAnimation(AActor *target, FlxAnimationStep &step) {
|
||||
step = GetActorTangible(target)->AnimTracker.GetCurrentAnimation();
|
||||
UlxTangible *tan = GetActorTangibleOrLog(target);
|
||||
if (tan == nullptr) {
|
||||
step = FlxAnimationStep();
|
||||
return;
|
||||
}
|
||||
step = tan->AnimTracker.GetCurrentAnimation();
|
||||
}
|
||||
|
||||
void UlxTangible::FinishedAnimation(AActor *target, const FlxAnimationStep &step, bool AutoUpdate) {
|
||||
if (target == nullptr)
|
||||
{
|
||||
UE_LOG(LogBlueprint, Error, TEXT("In FinishedAnimation, tangible cannot be null"));
|
||||
return;
|
||||
}
|
||||
UlxTangible *tan = GetActorTangible(target);
|
||||
UlxTangible *tan = GetActorTangibleOrLog(target);
|
||||
if (tan == nullptr) return;
|
||||
if (AutoUpdate)
|
||||
{
|
||||
step.AutoUpdateXYZ(target);
|
||||
@@ -172,21 +179,32 @@ void UlxTangible::FinishedAnimation(AActor *target, const FlxAnimationStep &step
|
||||
}
|
||||
|
||||
FString UlxTangible::GetTangiblePlane(AActor* target) {
|
||||
return GetActorTangible(target)->Plane.ToString();
|
||||
UlxTangible *tan = GetActorTangibleOrLog(target);
|
||||
if (tan == nullptr) return TEXT("");
|
||||
return tan->Plane.ToString();
|
||||
}
|
||||
|
||||
void UlxTangible::SetTangiblePlane(AActor* target, const FString& plane) {
|
||||
GetActorTangible(target)->Plane = FName(plane);
|
||||
UlxTangible *tan = GetActorTangibleOrLog(target);
|
||||
if (tan == nullptr) return;
|
||||
tan->Plane = FName(plane);
|
||||
}
|
||||
|
||||
bool UlxTangible::IsCurrentPlayer(AActor* target) {
|
||||
UlxTangible *tan = GetActorTangible(target);
|
||||
UlxTangible *tan = GetActorTangibleQuiet(target);
|
||||
if (tan == nullptr) return false;
|
||||
AIntegrationGameModeBase *gamemode = tan->Manager->GetGameMode();
|
||||
return (tan->TangibleId == gamemode->PlayerId);
|
||||
}
|
||||
|
||||
bool UlxTangible::IsLuprexTangible(AActor* target) {
|
||||
UlxTangible *tan = GetActorTangibleQuiet(target);
|
||||
return tan != nullptr;
|
||||
}
|
||||
|
||||
void UlxTangible::SetAutoFinish(AActor *target, const FString &action, const FVector &xyz) {
|
||||
UlxTangible *tan = GetActorTangible(target);
|
||||
UlxTangible *tan = GetActorTangibleOrLog(target);
|
||||
if (tan == nullptr) return;
|
||||
tan->AnimTracker.SetAutoFinish(action, xyz);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user