// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "GeometryCollection/ManagedArrayAccessor.h" #include "GeometryCollection/ManagedArrayCollection.h" #include "GeometryCollection/GeometryCollection.h" #include "GeometryCollection/Facades/CollectionUVFacade.h" namespace GeometryCollection::Facades { class FCollectionMeshFacade : public FCollectionUVFacade { public: CHAOS_API FCollectionMeshFacade(FManagedArrayCollection& InCollection); CHAOS_API FCollectionMeshFacade(const FManagedArrayCollection& InCollection); /** * returns true if all the necessary attributes are present * if not then the API can be used to create */ CHAOS_API bool IsValid() const; /** * Add the necessary attributes if they are missing */ CHAOS_API void DefineSchema(); /** * Returns the vertex indicies for the bone */ CHAOS_API const TArray GetVertexIndices(int32 BoneIdx) const; /** * Returns the vertex positions for the bone in bone space */ CHAOS_API const TArrayView GetVertexPositions(int32 BoneIdx) const; /** * Returns the face indices for the bone */ CHAOS_API const TArray GetFaceIndices(int32 BoneIdx) const; /** * Returns the vertex indices of the face for the bone */ // const TArrayView GetFaceVertexIndices(int32 BoneIdx) const; /** * Bakes the transforms into the vertex positions and sets the bone transforms to identity */ CHAOS_API void BakeTransform(int32 TransformIdx, const FTransform& InTransform); CHAOS_API const TArray GetGeometryGroupIndexArray() const; TManagedArrayAccessor TransformToGeometryIndexAttribute; TManagedArrayAccessor TransformIndexAttribute; TManagedArrayAccessor VertexAttribute; TManagedArrayAccessor TangentUAttribute; TManagedArrayAccessor TangentVAttribute; TManagedArrayAccessor NormalAttribute; TManagedArrayAccessor ColorAttribute; TManagedArrayAccessor BoneMapAttribute; TManagedArrayAccessor VertexStartAttribute; TManagedArrayAccessor VertexCountAttribute; TManagedArrayAccessor IndicesAttribute; TManagedArrayAccessor VisibleAttribute; TManagedArrayAccessor MaterialIndexAttribute; TManagedArrayAccessor MaterialIDAttribute; TManagedArrayAccessor InternalAttribute; TManagedArrayAccessor FaceStartAttribute; TManagedArrayAccessor FaceCountAttribute; }; }