|
| UE_FORCEINLINE_HINT void | DiagnosticCheckNaN_Translate () const |
| |
| UE_FORCEINLINE_HINT void | DiagnosticCheckNaN_Rotate () const |
| |
| UE_FORCEINLINE_HINT void | DiagnosticCheckNaN_Scale3D () const |
| |
| UE_FORCEINLINE_HINT void | DiagnosticCheckNaN_All () const |
| |
| UE_FORCEINLINE_HINT void | DiagnosticCheck_IsValid () const |
| |
| | TTransform () |
| |
| | TTransform (const TVector< T > &InTranslation) |
| |
| | TTransform (ENoInit) |
| |
| | TTransform (const TQuat< T > &InRotation) |
| |
| | TTransform (const TRotator< T > &InRotation) |
| |
| | TTransform (const TQuat< T > &InRotation, const TVector< T > &InTranslation, const TVector< T > &InScale3D=TVector< T >::OneVector) |
| |
| | TTransform (const TRotator< T > &InRotation, const TVector< T > &InTranslation, const TVector< T > &InScale3D=TVector< T >::OneVector) |
| |
| | TTransform (const TMatrix< T > &InMatrix) |
| |
| | TTransform (const TVector< T > &InX, const TVector< T > &InY, const TVector< T > &InZ, const TVector< T > &InTranslation) |
| |
| CORE_API void | DebugPrint () const |
| |
| bool | DebugEqualMatrix (const TMatrix< T > &Matrix) const |
| |
| CORE_API FString | ToHumanReadableString () const |
| |
| CORE_API FString | ToString () const |
| |
| CORE_API bool | InitFromString (const FString &InSourceString) |
| |
| TMatrix< T > | ToMatrixWithScale () const |
| |
| UE_FORCEINLINE_HINT TMatrix< T > | ToInverseMatrixWithScale () const |
| |
| TTransform< T > | Inverse () const |
| |
| TMatrix< T > | ToMatrixNoScale () const |
| |
| void | Blend (const TTransform< T > &Atom1, const TTransform< T > &Atom2, float Alpha) |
| |
| void | BlendWith (const TTransform< T > &OtherAtom, float Alpha) |
| |
| UE_FORCEINLINE_HINT TTransform< T > | operator+ (const TTransform< T > &Atom) const |
| |
| TTransform< T > & | operator+= (const TTransform< T > &Atom) |
| |
| UE_FORCEINLINE_HINT TTransform< T > | operator* (T Mult) const |
| |
| TTransform< T > & | operator*= (T Mult) |
| |
| TTransform< T > | operator* (const TTransform< T > &Other) const |
| |
| UE_FORCEINLINE_HINT void | operator*= (const TTransform< T > &Other) |
| |
| TTransform< T > | operator* (const TQuat< T > &Other) const |
| |
| void | operator*= (const TQuat< T > &Other) |
| |
| void | ScaleTranslation (const TVector< T > &InScale3D) |
| |
| void | ScaleTranslation (const FReal &Scale) |
| |
| void | RemoveScaling (FReal Tolerance=UE_SMALL_NUMBER) |
| |
| T | GetMaximumAxisScale () const |
| |
| T | GetMinimumAxisScale () const |
| |
| CORE_API TTransform< T > | GetRelativeTransform (const TTransform< T > &Other) const |
| |
| CORE_API TTransform< T > | GetRelativeTransformReverse (const TTransform< T > &Other) const |
| |
| CORE_API void | SetToRelativeTransform (const TTransform< T > &ParentTransform) |
| |
| TVector4< T > | TransformFVector4 (const TVector4< T > &V) const |
| |
| TVector4< T > | TransformFVector4NoScale (const TVector4< T > &V) const |
| |
| UE_FORCEINLINE_HINT TVector< T > | TransformPosition (const TVector< T > &V) const |
| |
| TVector< T > | TransformPositionNoScale (const TVector< T > &V) const |
| |
| TVector< T > | InverseTransformPosition (const TVector< T > &V) const |
| |
| TVector< T > | InverseTransformPositionNoScale (const TVector< T > &V) const |
| |
| UE_FORCEINLINE_HINT TVector< T > | TransformVector (const TVector< T > &V) const |
| |
| TVector< T > | TransformVectorNoScale (const TVector< T > &V) const |
| |
| TVector< T > | InverseTransformVector (const TVector< T > &V) const |
| |
| TVector< T > | InverseTransformVectorNoScale (const TVector< T > &V) const |
| |
| UE_FORCEINLINE_HINT TQuat< T > | TransformRotation (const TQuat< T > &Q) const |
| |
| UE_FORCEINLINE_HINT TQuat< T > | InverseTransformRotation (const TQuat< T > &Q) const |
| |
| TTransform< T > | GetScaled (T Scale) const |
| |
| TTransform< T > | GetScaled (TVector< T > Scale) const |
| |
| TVector< T > | GetScaledAxis (EAxis::Type InAxis) const |
| |
| TVector< T > | GetUnitAxis (EAxis::Type InAxis) const |
| |
| void | Mirror (EAxis::Type MirrorAxis, EAxis::Type FlipAxis) |
| |
| UE_FORCEINLINE_HINT TVector< T > | GetLocation () const |
| |
| UE_FORCEINLINE_HINT TRotator< T > | Rotator () const |
| |
| UE_FORCEINLINE_HINT FReal | GetDeterminant () const |
| |
| void | SetLocation (const TVector< T > &Origin) |
| |
| bool | ContainsNaN () const |
| |
| bool | IsValid () const |
| |
| bool | Serialize (FArchive &Ar) |
| |
| bool | SerializeFromMismatchedTag (FName StructTag, FArchive &Ar) |
| |
| UE_FORCEINLINE_HINT bool | RotationEquals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const |
| |
| UE_FORCEINLINE_HINT bool | TranslationEquals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const |
| |
| UE_FORCEINLINE_HINT bool | Scale3DEquals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const |
| |
| UE_FORCEINLINE_HINT bool | Equals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const |
| |
| UE_FORCEINLINE_HINT bool | Identical (const TTransform< T > *Other, uint32 PortFlags) const |
| |
| UE_FORCEINLINE_HINT bool | EqualsNoScale (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const |
| |
| void | SetComponents (const TQuat< T > &InRotation, const TVector< T > &InTranslation, const TVector< T > &InScale3D) |
| |
| void | SetIdentity () |
| |
| void | SetIdentityZeroScale () |
| |
| void | MultiplyScale3D (const TVector< T > &Scale3DMultiplier) |
| |
| void | SetTranslation (const TVector< T > &NewTranslation) |
| |
| UE_FORCEINLINE_HINT void | CopyTranslation (const TTransform< T > &Other) |
| |
| void | ConcatenateRotation (const TQuat< T > &DeltaRotation) |
| |
| void | AddToTranslation (const TVector< T > &DeltaTranslation) |
| |
| void | SetRotation (const TQuat< T > &NewRotation) |
| |
| UE_FORCEINLINE_HINT void | CopyRotation (const TTransform< T > &Other) |
| |
| void | SetScale3D (const TVector< T > &NewScale3D) |
| |
| UE_FORCEINLINE_HINT void | CopyScale3D (const TTransform< T > &Other) |
| |
| void | SetTranslationAndScale3D (const TVector< T > &NewTranslation, const TVector< T > &NewScale3D) |
| |
| TransformVectorRegister | GetTranslationRegister () const |
| |
| TransformVectorRegister | GetRotationRegister () const |
| |
| void | SetTranslationRegister (TransformVectorRegister InTranslation) |
| |
| void | SetRotationRegister (TransformVectorRegister InRotation) |
| |
| void | Accumulate (const TTransform< T > &SourceAtom) |
| |
| void | Accumulate (const TTransform< T > &Atom, FReal BlendWeight) |
| |
| void | AccumulateWithShortestRotation (const TTransform< T > &DeltaAtom, FReal BlendWeight) |
| |
| void | AccumulateWithAdditiveScale (const TTransform< T > &Atom, T BlendWeight) |
| |
| void | LerpTranslationScale3D (const TTransform< T > &SourceAtom1, const TTransform< T > &SourceAtom2, ScalarRegister Alpha) |
| |
| void | NormalizeRotation () |
| |
| UE_FORCEINLINE_HINT bool | IsRotationNormalized () const |
| |
| TQuat< T > | GetRotation () const |
| |
| TVector< T > | GetTranslation () const |
| |
| TVector< T > | GetScale3D () const |
| |
| void | CopyRotationPart (const TTransform< T > &SrcBA) |
| |
| void | CopyTranslationAndScale3D (const TTransform< T > &SrcBA) |
| |
| void | SetFromMatrix (const TMatrix< T > &InMatrix) |
| |
| template<typename FArg UE_REQUIRES> |
| | TTransform (const TTransform< FArg > &From) |
| |
Accumulates another transform with this one, with a blending weight
Let SourceAtom = Atom * BlendWeight Rotation is accumulated multiplicatively (Rotation = SourceAtom.Rotation * Rotation). Translation is accumulated additively (Translation += SourceAtom.Translation) Scale3D is accumulated assuming incoming scale is additive scale (Scale3D *= (1 + SourceAtom.Scale3D))
When we create additive, we create additive scale based on [TargetScale/SourceScale -1] because that way when you apply weight of 0.3, you don't shrink. We only saves the % of grow/shrink when we apply that back to it, we add back the 1, so that it goes back to it. This solves issue where you blend two additives with 0.3, you don't come back to 0.6 scale, but 1 scale at the end because [1 + [1-1]*0.3 + [1-1]*0.3] becomes 1, so you don't shrink by applying additive scale
Note: Rotation will not be normalized! Will have to be done manually.
- Parameters
-
| Atom | The other transform to accumulate into this one |
| BlendWeight | The weight to multiply Atom by before it is accumulated. |