1
0
KF2-Dev-Scripts/UnrealEd/Classes/PlayerMovementVisualizer.uc

106 lines
3.5 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*
* Visualizes the movement of players through the map as a series of lines
*/
class PlayerMovementVisualizer extends GameStatsVisualizer
native(GameStats)
config(Editor);
/** Array of drawing properties per stat type setup in .ini */
struct native PlayerMovementStatDrawingProperties
{
var string PawnClassName; //Name of the pawn type (checked as a substring so CogMarcus works for CogMarcusMP as well)
var string SpriteName; //Name of the sprite resource
var Texture2D StatSprite; //Actual sprite texture
};
/** Atomic position/rotation entry at a given time */
struct native PosEntry
{
var float Time;
var vector Position;
var rotator Rotation;
};
/** String of player positions defining a contiguous movement in game */
struct native MovementSegment
{
var array<PosEntry> Positions;
};
/** A given player's movement throughout the entire data set */
struct native PlayerMovement
{
var int PlayerIndex;
var string PlayerName;
var array<MovementSegment> Segments;
var Texture2D StatSprite; //sprite assigned to head of movement
//Held for sorting at the end then emptied
var array<PosEntry> TempPositions;
};
cpptext
{
/** Given a chance to initialize */
virtual void Init();
/** Reset the visualizer to initial state */
virtual void Reset();
/**
* Draws all players with unique color within the given time period
* taking into account time/space jumps
* @param View - the view being drawn in
* @param PDI - draw interface for primitives
* @param ViewportType - type of viewport being draw (perspective, ortho)
*/
virtual void Visualize(const FSceneView* View, class FPrimitiveDrawInterface* PDI, ELevelViewportType ViewportType);
/** Called before any database entries are given to the visualizer */
virtual void BeginVisiting();
/** Called at the end of database entry traversal, returns success or failure */
virtual UBOOL EndVisiting();
/** Returns the number of data points the visualizer is actively working with */
virtual INT GetVisualizationSetCount() const;
/**
* Retrieve some metadata about an event
* @param EventIndex - some visualizer relative index about the data to get metadata about
* @param MetadataString - return string containing information about the event requested
*/
virtual void GetMetadata(INT EventIndex, FString& MetadataString);
/**
* Return the drawing properties defined for the given player
* @param PawnClassName - Name of the pawn spawned
*/
const FPlayerMovementStatDrawingProperties& GetDrawingProperties(const FString& PawnClassName);
/** Called when a hitproxy belonging to this visualizer is triggered */
virtual void HandleHitProxy(struct HGameStatsHitProxy* HitProxy);
/** Player locations during the game are stored as PlayerIntEntries */
virtual void Visit(class PlayerIntEntry* Entry);
/** Player spawns reveal the pawn class in use so we can choose a sprite */
virtual void Visit(class PlayerSpawnEntry* Entry);
/** Create or find a given player entry by index */
FPlayerMovement& CreateOrFindPlayerEntry(INT PlayerIndex, const FString& PlayerName);
}
/** All data to be drawn by this visualizer */
var array<PlayerMovement> Players;
/** Metadata to help draw the statistics */
var const config array<PlayerMovementStatDrawingProperties> DrawingProperties;
defaultproperties
{
FriendlyName="Player Movement Visualizer"
}