You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Includes following engine changes:
Getting display metrics only once at construct time when using SSafeZone. GetDisplayMetrics is expensive in Windows so it is impractical to call it every frame.
- Some AI API improvements, mostly switchig pointer function parameters to references.
- minor refactor of UCrowdFollowingComponent's queryinf functions:
- IsCrowd*Enabled functions refactored to IsCrowd*Active
- implemented IsCrowd*Enabled that return acrual values of relevant properties
- Added a function to CrowdManager to query for location of agents neighbouring given agent
Added support for PS4 touchpad-based cursor
You can now choose to skip synchronously scanning for asset data in object libraries and just use the data that is currently in the asset registry. The data will be refereshed automatically later once the global scan completes. The only applies to non-commandlet editor instances.
Crash fixes for trying to access NULL Metal surfaces on IOS
Slate: Cleaned up some atlas code related to padding and corrected some comments
[CL 2347323 by Ben Zeigler in Main branch]
151 lines
4.2 KiB
C++
151 lines
4.2 KiB
C++
// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "AITypes.h"
|
|
#include "GameFramework/Pawn.h"
|
|
#include "GenericTeamAgentInterface.h"
|
|
#include "FunctionalAITest.generated.h"
|
|
|
|
class AFunctionalAITest;
|
|
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FFunctionalTestAISpawned, AAIController*, Controller, APawn*, Pawn);
|
|
|
|
USTRUCT()
|
|
struct FAITestSpawnInfo
|
|
{
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
/** Determines AI to be spawned */
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
TSubclassOf<class APawn> PawnClass;
|
|
|
|
/** class to override default pawn's controller class. If None the default will be used*/
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
TSubclassOf<class AAIController> ControllerClass;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
FGenericTeamId TeamID;
|
|
|
|
/** if set will be applied to spawned AI */
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
class UBehaviorTree* BehaviorTree;
|
|
|
|
/** Where should AI be spawned */
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
AActor* SpawnLocation;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn, meta=(UIMin=1, ClampMin=1))
|
|
int32 NumberToSpawn;
|
|
|
|
/** delay between consecutive spawn attempts */
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AISpawn, meta = (UIMin = 0, ClampMin = 0))
|
|
float SpawnDelay;
|
|
|
|
/** Gets filled owning spawn set upon game start */
|
|
FName SpawnSetName;
|
|
|
|
FAITestSpawnInfo() : NumberToSpawn(1)
|
|
{}
|
|
|
|
FORCEINLINE bool IsValid() const { return PawnClass != NULL && SpawnLocation != NULL; }
|
|
|
|
bool Spawn(AFunctionalAITest* AITest) const;
|
|
};
|
|
|
|
USTRUCT()
|
|
struct FPendingDelayedSpawn : public FAITestSpawnInfo
|
|
{
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
uint32 NumberToSpawnLeft;
|
|
float TimeToNextSpawn;
|
|
bool bFinished;
|
|
|
|
FPendingDelayedSpawn()
|
|
: NumberToSpawnLeft(uint32(-1)), TimeToNextSpawn(FLT_MAX), bFinished(true)
|
|
{}
|
|
FPendingDelayedSpawn(const FAITestSpawnInfo& Source);
|
|
|
|
void Tick(float TimeDelta, AFunctionalAITest* AITest);
|
|
};
|
|
|
|
USTRUCT()
|
|
struct FAITestSpawnSet
|
|
{
|
|
GENERATED_USTRUCT_BODY()
|
|
|
|
/** what to spawn */
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
TArray<FAITestSpawnInfo> SpawnInfoContainer;
|
|
|
|
/** give the set a name to help identify it if need be */
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
FName Name;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AISpawn)
|
|
uint32 bEnabled:1;
|
|
|
|
/** location used for spawning if spawn info doesn't define one */
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AISpawn)
|
|
AActor* FallbackSpawnLocation;
|
|
|
|
FAITestSpawnSet() : bEnabled(true)
|
|
{}
|
|
};
|
|
|
|
UCLASS(Blueprintable, MinimalAPI)
|
|
class AFunctionalAITest : public AFunctionalTest
|
|
{
|
|
GENERATED_UCLASS_BODY()
|
|
|
|
protected:
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=AITest)
|
|
TArray<FAITestSpawnSet> SpawnSets;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = AITest, meta = (UIMin = "0.0"))
|
|
float SpawnLocationRandomizationRange;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category=AITest)
|
|
TArray<APawn*> SpawnedPawns;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = AITest)
|
|
TArray<FPendingDelayedSpawn> PendingDelayedSpawns;
|
|
|
|
int32 CurrentSpawnSetIndex;
|
|
FString CurrentSpawnSetName;
|
|
|
|
/** Called when a single AI finished spawning */
|
|
UPROPERTY(BlueprintAssignable)
|
|
FFunctionalTestAISpawned OnAISpawned;
|
|
|
|
/** Called when a all AI finished spawning */
|
|
UPROPERTY(BlueprintAssignable)
|
|
FFunctionalTestEventSignature OnAllAISPawned;
|
|
|
|
uint32 bSingleSetRun:1;
|
|
|
|
public:
|
|
UFUNCTION(BlueprintCallable, Category = "Development")
|
|
virtual bool IsOneOfSpawnedPawns(AActor* Actor);
|
|
|
|
// AActor interface begin
|
|
virtual void BeginPlay() override;
|
|
virtual void Tick(float DeltaSeconds) override;
|
|
// AActor interface end
|
|
|
|
virtual bool StartTest(const TArray<FString>& Params = TArray<FString>()) override;
|
|
virtual bool WantsToRunAgain() const override;
|
|
virtual void CleanUp() override;
|
|
virtual FString GetAdditionalTestFinishedMessage(EFunctionalTestResult::Type TestResult) const override;
|
|
virtual FString GetReproString() const override;
|
|
|
|
void AddSpawnedPawn(APawn& SpawnedPawn);
|
|
|
|
FVector GetRandomizedLocation(const FVector& Location) const;
|
|
|
|
protected:
|
|
|
|
void KillOffSpawnedPawns();
|
|
void ClearPendingDelayedSpawns();
|
|
}; |