UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovingWindowAverageFast.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3#include "CoreMinimal.h"
5
11template <typename T, int32 ArraySize>
13{
14public:
16 : TotalValues(static_cast<T>(0))
17 , AverageValue(static_cast<T>(0))
18 , RemoveNextIdx(0)
19 , NumValuesUsed(0)
20 {
21 static_assert(ArraySize > 0, "ArraySize must be greater than zero");
22 }
23
25 {
26 T ValueRemoved = static_cast<T>(0);
27
28 const T NumItemsPrev = static_cast<T>(NumValuesUsed);
29
30 if (ArraySize == NumValuesUsed)
31 {
32 ValueRemoved = ValuesArray[RemoveNextIdx];
33 ValuesArray[RemoveNextIdx] = Value;
34 RemoveNextIdx = (RemoveNextIdx + 1) % ArraySize;
35 }
36 else
37 {
38 ValuesArray[NumValuesUsed] = Value;
39 ++NumValuesUsed;
40 }
41
42 const T MovingWindowItemsNumCur = static_cast<T>(NumValuesUsed);
43 TotalValues = TotalValues - ValueRemoved + Value;
44 AverageValue = TotalValues / MovingWindowItemsNumCur;
45 }
46
47 [[nodiscard]] T GetAverage() const
48 {
49 return AverageValue;
50 }
51
52private:
54
55 T TotalValues;
56 T AverageValue;
57
59 int32 RemoveNextIdx;
60 int32 NumValuesUsed;
61};
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition MovingWindowAverageFast.h:13
T GetAverage() const
Definition MovingWindowAverageFast.h:47
void PushValue(T Value)
Definition MovingWindowAverageFast.h:24
FMovingWindowAverageFast()
Definition MovingWindowAverageFast.h:15
Definition StaticArray.h:26