UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GizmoElementTorus.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"
7#include "InputState.h"
9#include "GizmoElementTorus.generated.h"
10
13
21UCLASS(Transient, MinimalAPI)
23{
25
26public:
27
28 //~ Begin UGizmoElementBase Interface.
30
31 // LineTrace approximates ray-torus intersection by intersecting the ray with the plane in which the torus
32 // lies, then determining a hit point closest to the linear circle defined by torus center and torus outer radius.
33 // If the torus lies at a glancing angle, the ray-torus intersection is performed against cylinders approximating
34 // the shape of the torus.
36 //~ End UGizmoElementBase Interface.
37
38 // Inner circles radius.
39 INTERACTIVETOOLSFRAMEWORK_API virtual void SetInnerRadius(double InInnerRadius);
40 INTERACTIVETOOLSFRAMEWORK_API virtual double GetInnerRadius() const;
41
42 // Multiplier applied to the inner radius when hovering
43 INTERACTIVETOOLSFRAMEWORK_API virtual void SetHoverInnerRadiusMultiplier(double InHoverInnerRadiusMultiplier);
44 INTERACTIVETOOLSFRAMEWORK_API virtual double GetHoverInnerRadiusMultiplier() const;
45
46 // Multiplier applied to the inner radius when interacting
47 INTERACTIVETOOLSFRAMEWORK_API virtual void SetInteractInnerRadiusMultiplier(double InInteractInnerRadiusMultiplier);
48 INTERACTIVETOOLSFRAMEWORK_API virtual double GetInteractInnerRadiusMultiplier() const;
49
50 // Multiplier applied to the inner radius when selected
51 INTERACTIVETOOLSFRAMEWORK_API virtual void SetSelectInnerRadiusMultiplier(double InSelectInnerRadiusMultiplier);
52 INTERACTIVETOOLSFRAMEWORK_API virtual double GetSelectInnerRadiusMultiplier() const;
53
54 // Multiplier applied to the inner radius when subdued
55 INTERACTIVETOOLSFRAMEWORK_API virtual void SetSubdueInnerRadiusMultiplier(double InSubdueInnerRadiusMultiplier);
56 INTERACTIVETOOLSFRAMEWORK_API virtual double GetSubdueInnerRadiusMultiplier() const;
57
58 // Number of inner slices for rendering torus.
59 INTERACTIVETOOLSFRAMEWORK_API virtual void SetNumInnerSlices(int32 InNumInnerSlices);
60 INTERACTIVETOOLSFRAMEWORK_API virtual int32 GetNumInnerSlices() const;
61
62 // If partial, renders end caps when true.
63 INTERACTIVETOOLSFRAMEWORK_API virtual void SetEndCaps(bool InEndCaps);
64 INTERACTIVETOOLSFRAMEWORK_API virtual bool GetEndCaps() const;
65
66protected:
67
68 // Torus inner radius.
69 UPROPERTY()
70 double InnerRadius = 5.0;
71
72 // Optional inner radius multipliers to apply when hovering, interacting, selected or subdued.
73 UPROPERTY()
74 FGizmoPerStateValueDouble InnerRadiusMultiplier;
75
76 // Number of slices to render in each torus segment.
77 UPROPERTY()
78 int32 NumInnerSlices = 8;
79
80 // Whether to render end caps on a partial torus.
81 UPROPERTY()
82 bool bEndCaps = false;
83
85
86 // Returns the current inner radius based on the current interaction state.
87 INTERACTIVETOOLSFRAMEWORK_API double GetCurrentInnerRadius() const;
88
89 INTERACTIVETOOLSFRAMEWORK_API bool IsGlancingAngle(const UGizmoViewContext* View, const FVector& InWorldCenter, const FVector& InWorldNormal);
90
91};
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
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition MaterialRenderProxy.h:102
Definition PrimitiveDrawInterface.h:19
Definition ToolContextInterfaces.h:427
Definition GizmoElementCircleBase.h:19
Definition GizmoElementTorus.h:23
Definition GizmoViewContext.h:20
@ false
Definition radaudio_common.h:23
Definition InputState.h:52
Definition GizmoElementBase.h:125
Definition GizmoElementBase.h:96
Definition GizmoElementBase.h:52