// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Math/UnrealMathSSE.h" #include "Math/Vector2D.h" #include "Math/Vector4.h" #include "MeshDescription.h" #include "MeshDescriptionBase.h" #include "MeshTypes.h" #include "StaticMeshAttributes.h" #include "Templates/UniquePtr.h" #include "UObject/NameTypes.h" #include "UObject/ObjectMacros.h" #include "UObject/UObjectGlobals.h" #include "StaticMeshDescription.generated.h" class UMaterial; class UObject; struct FFrame; PRAGMA_DISABLE_DEPRECATION_WARNINGS /** * A wrapper for MeshDescription, customized for static meshes */ UCLASS(BlueprintType, MinimalAPI) class UStaticMeshDescription : public UMeshDescriptionBase { public: GENERATED_BODY() /** Register attributes required by static mesh description */ STATICMESHDESCRIPTION_API virtual void RegisterAttributes() override; virtual FStaticMeshAttributes& GetRequiredAttributes() override { return static_cast(*RequiredAttributes); } virtual const FStaticMeshAttributes& GetRequiredAttributes() const override { return static_cast(*RequiredAttributes); } UFUNCTION(BlueprintPure, Category="MeshDescription") STATICMESHDESCRIPTION_API FVector2D GetVertexInstanceUV(FVertexInstanceID VertexInstanceID, int32 UVIndex = 0) const; UFUNCTION(BlueprintCallable, Category="MeshDescription") STATICMESHDESCRIPTION_API void SetVertexInstanceUV(FVertexInstanceID VertexInstanceID, FVector2D UV, int32 UVIndex = 0); UFUNCTION(BlueprintCallable, Category="MeshDescription") STATICMESHDESCRIPTION_API void CreateCube(FVector Center, FVector HalfExtents, FPolygonGroupID PolygonGroup, FPolygonID& PolygonID_PlusX, FPolygonID& PolygonID_MinusX, FPolygonID& PolygonID_PlusY, FPolygonID& PolygonID_MinusY, FPolygonID& PolygonID_PlusZ, FPolygonID& PolygonID_MinusZ); UFUNCTION(BlueprintCallable, Category="MeshDescription") STATICMESHDESCRIPTION_API void SetPolygonGroupMaterialSlotName(FPolygonGroupID PolygonGroupID, const FName& SlotName); public: UE_DEPRECATED(4.25, "This attribute is no longer supported, please remove code pertaining to it.") TVertexAttributesRef GetVertexCornerSharpnesses() { return GetRequiredAttributes().GetVertexCornerSharpnesses(); } UE_DEPRECATED(4.25, "This attribute is no longer supported, please remove code pertaining to it.") TVertexAttributesConstRef GetVertexCornerSharpnesses() const { return GetRequiredAttributes().GetVertexCornerSharpnesses(); } TVertexInstanceAttributesRef GetVertexInstanceUVs() { return GetRequiredAttributes().GetVertexInstanceUVs(); } TVertexInstanceAttributesConstRef GetVertexInstanceUVs() const { return GetRequiredAttributes().GetVertexInstanceUVs(); } TVertexInstanceAttributesRef GetVertexInstanceNormals() { return GetRequiredAttributes().GetVertexInstanceNormals(); } TVertexInstanceAttributesConstRef GetVertexInstanceNormals() const { return GetRequiredAttributes().GetVertexInstanceNormals(); } TVertexInstanceAttributesRef GetVertexInstanceTangents() { return GetRequiredAttributes().GetVertexInstanceTangents(); } TVertexInstanceAttributesConstRef GetVertexInstanceTangents() const { return GetRequiredAttributes().GetVertexInstanceTangents(); } TVertexInstanceAttributesRef GetVertexInstanceBinormalSigns() { return GetRequiredAttributes().GetVertexInstanceBinormalSigns(); } TVertexInstanceAttributesConstRef GetVertexInstanceBinormalSigns() const { return GetRequiredAttributes().GetVertexInstanceBinormalSigns(); } TVertexInstanceAttributesRef GetVertexInstanceColors() { return GetRequiredAttributes().GetVertexInstanceColors(); } TVertexInstanceAttributesConstRef GetVertexInstanceColors() const { return GetRequiredAttributes().GetVertexInstanceColors(); } TEdgeAttributesRef GetEdgeHardnesses() { return GetRequiredAttributes().GetEdgeHardnesses(); } TEdgeAttributesConstRef GetEdgeHardnesses() const { return GetRequiredAttributes().GetEdgeHardnesses(); } UE_DEPRECATED(4.25, "This attribute is no longer supported, please remove code pertaining to it.") TEdgeAttributesRef GetEdgeCreaseSharpnesses() { return GetRequiredAttributes().GetEdgeCreaseSharpnesses(); } UE_DEPRECATED(4.25, "This attribute is no longer supported, please remove code pertaining to it.") TEdgeAttributesConstRef GetEdgeCreaseSharpnesses() const { return GetRequiredAttributes().GetEdgeCreaseSharpnesses(); } TPolygonGroupAttributesRef GetPolygonGroupMaterialSlotNames() { return GetRequiredAttributes().GetPolygonGroupMaterialSlotNames(); } TPolygonGroupAttributesConstRef GetPolygonGroupMaterialSlotNames() const { return GetRequiredAttributes().GetPolygonGroupMaterialSlotNames(); } }; PRAGMA_ENABLE_DEPRECATION_WARNINGS