UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
StaticMeshVertexData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
8
10template<typename VertexDataType>
13{
16public:
17
26
34 {
35 if ((uint32)Data.Num() < NumVertices)
36 {
37 // Enlarge the array.
39 {
40 Data.Reserve(NumVertices);
41 }
42
43 Data.AddUninitialized(NumVertices - Data.Num());
44 }
45 else if ((uint32)Data.Num() > NumVertices)
46 {
47 // Shrink the array.
49 Data.RemoveAt(NumVertices, Data.Num() - NumVertices, AllowShinking);
50 }
51 }
52
53 void Empty(uint32 NumVertices) override
54 {
55 Data.Empty(NumVertices);
56 }
57
58 bool IsValidIndex(uint32 Index) override
59 {
60 return Data.IsValidIndex(Index);
61 }
62
66 uint32 GetStride() const override
67 {
68 return sizeof(VertexDataType);
69 }
74 {
75 return (uint8*)Data.GetData();
76 }
77
82 {
83 return &Data;
84 }
85
87 {
88 return &Data;
89 }
90
97 void Serialize(FArchive& Ar, bool bForcePerElementSerialization = false) override
98 {
99 Data.FVertexResourceArray::BulkSerialize(Ar, bForcePerElementSerialization);
100 }
106 {
107 ResizeBuffer(Other.Num());
108 if (Other.Num())
109 {
110 memcpy(GetDataPointer(), &Other[0], Other.Num() * sizeof(VertexDataType));
111 }
112 }
113
120 SIZE_T GetResourceSize() const override
121 {
122 return Data.GetAllocatedSize();
123 }
124
131 virtual int32 Num() const override
132 {
133 return Data.Num();
134 }
135
136 bool GetAllowCPUAccess() const override
137 {
138 return Data.GetAllowCPUAccess();
139 }
140
141 void OverrideFreezeSizeAndAlignment(int64& Size, int32& Alignment) const override
142 {
143 Size = sizeof(*this);
144 }
145};
EAllowShrinking
Definition AllowShrinking.h:10
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
EResizeBufferFlags
Definition StaticMeshVertexDataInterface.h:12
uint32 Size
Definition VulkanMemory.cpp:4034
memcpy(InputBufferBase, BinkBlocksData, BinkBlocksSize)
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition ResourceArray.h:77
Definition StaticMeshVertexDataInterface.h:22
Definition Array.h:670
Definition StaticMeshVertexData.h:13
SIZE_T GetResourceSize() const override
Definition StaticMeshVertexData.h:120
TStaticMeshVertexData(bool InNeedsCPUAccess=false)
Definition StaticMeshVertexData.h:22
void Empty(uint32 NumVertices) override
Definition StaticMeshVertexData.h:53
const FResourceArrayInterface * GetResourceArray() const
Definition StaticMeshVertexData.h:86
bool IsValidIndex(uint32 Index) override
Definition StaticMeshVertexData.h:58
void Assign(const TArray< VertexDataType > &Other)
Definition StaticMeshVertexData.h:105
void OverrideFreezeSizeAndAlignment(int64 &Size, int32 &Alignment) const override
Definition StaticMeshVertexData.h:141
void ResizeBuffer(uint32 NumVertices, EResizeBufferFlags BufferFlags=EResizeBufferFlags::None) override
Definition StaticMeshVertexData.h:33
bool GetAllowCPUAccess() const override
Definition StaticMeshVertexData.h:136
virtual int32 Num() const override
Definition StaticMeshVertexData.h:131
void Serialize(FArchive &Ar, bool bForcePerElementSerialization=false) override
Definition StaticMeshVertexData.h:97
uint32 GetStride() const override
Definition StaticMeshVertexData.h:66
FResourceArrayInterface * GetResourceArray() override
Definition StaticMeshVertexData.h:81
uint8 * GetDataPointer() override
Definition StaticMeshVertexData.h:73
U16 Index
Definition radfft.cpp:71