Can now specify bp= in the animation queue, and it works

This commit is contained in:
2024-01-24 14:51:21 -05:00
parent 0b5e4e60e5
commit 864ecf0015
6 changed files with 74 additions and 55 deletions

View File

@@ -76,9 +76,9 @@ public:
UPROPERTY()
TWeakObjectPtr<AActor> CurrentActor;
// The blueprint class of the actor.
// The name of the current blueprint.
UPROPERTY()
TSubclassOf<AActor> ActorBlueprint;
FString ActorBlueprintName;
// Animation tracker
FlxAnimTracker AnimTracker;
@@ -128,26 +128,6 @@ public:
//
FVector GetLocation() const;
// Check a blueprint class to see if it is valid as a Tangible.
//
// In order for a blueprint class to be used as a tangible,
// it must implement the interface IlxTangibleInterface.
// This function also returns true for nullptr.
//
static bool BlueprintIsTangible(TSubclassOf<AActor> bp);
// Change the blueprint class of the tangible.
//
// This requires the deletion and recreation of the Actor.
// The blueprint class must satisfy 'BlueprintIsTangible' above.
//
// It is legal to pass in nullptr for the blueprint class.
// Whenever the blueprint class is nullptr, the Actor is
// also nullptr. Ie, a tangible will have no Actor associated
// with it if its blueprint class is nullptr.
//
void SetActorBlueprintClass(TSubclassOf<AActor> bp);
// Update the animation queue from Luprex.
//
// This reads the animation queue, and then based on
@@ -155,13 +135,18 @@ public:
// the Actor's TangibleInterface, calling methods such
// as 'StartAnimation' and 'AbortAnimation' as necessary.
//
// If the animation queue specifies a blueprint change,
// this function will eventually implement that by calling
// SetActorBlueprintClass above. This is not implemented
// yet.
//
void UpdateAnimationQueue(std::string_view aq);
private:
// Set the actor's blueprint, and recreate the actor if necessary.
//
// If the blueprint is the empty string, deletes the actor.
// If the blueprint is not the empty string, creates an actor of the
// correct class. This is a no-op if the actor already exists and
// is already of the correct blueprint class.
//
void SetActorBlueprint(const FString &name);
public:
UFUNCTION(BlueprintCallable, Meta = (DefaultToSelf = "target"), Category = Luprex)
static void GetCurrentAnimation(AActor *target, FlxAnimationStep &step);