Files
DedicatedServerCourse/Content/Functions/Rotation/FindQuatBetween.uasset

99 lines
31 KiB
Plaintext
Raw Normal View History

<EFBFBD><EFBFBD>*<2A><><EFBFBD><EFBFBD><EFBFBD>`
<00>a<>h<EFBFBD><68>9,BN<42><4E><EFBFBD><EFBFBD><EFBFBD>ipv&<00><>}i<>AO<41><4F>QJ<51>(<28><><EFBFBD>y"<22>T<EFBFBD><54>O&<26>F!<21>Ђ<EFBFBD>a,<00>2ذ O<><1F><>J<EFBFBD>6
b'<27>
#<23>6<EFBFBD>˫_'q?t<>πD<CF80>C<EFBFBD><14><>s %B^<5E><>FM<46>$<24><><12>yd<>=<00>h<EFBFBD><68><EFBFBD>B<EFBFBD><42> <0B>1<EFBFBD>A<EFBFBD>F.(<00>z<EFBFBD><7A><EFBFBD>BvPX橹2-<2D><>])/Game/Functions/Rotation/FindQuatBetween<00><00>!2EAF5BA64FCBE7B2D44BF7BEAE042FA3uU#U#<00>U#Y$Y$<00><>e<EFBFBD>:<3A>'K<>K<EFBFBD>u<EFBFBD>p6)<00><6F>]$Qz<00><><EFBFBD><EFBFBD>v&<00>Uz/Script/CoreUObject<00>I->/Script/DataHierarchyEditor<00>h<>/Script/Niagara<00>GZ`/Script/NiagaraCore<00><><EFBFBD>F/Script/NiagaraEditor<00>p<EFBFBD>oAdd<00>(<28><>AdditionalDefines<1D><><EFBFBD>AdditionalVariables<00>{<7B>4ArrayPropertyI<><49>iBaseIdK<1D><>BaseScriptCompileHash<15>)<29>bCanBeUsedForTypeConversions;<1F><>bCommentBubblePinnedq.%LbCommentBubbleVisibleQ$<<%bCommentBubbleVisible_InDetailsPanelt:q bDeprecated<00><>PbDisableDebugSwitchesA<>ҖBelow Threshold+%<25>SbExperimentalu<1F><>"bHasValidLastBuiltScriptVersionId<00><>A<EFBFBD>bIsVisibleInVersionSelectortD<74><44> BoolProperty<04><>bRequiresPersistentIDs<00><1D>d bSuggestedI<14>bUsePythonScriptConversion%HM\bUsesRapidIterationParams<00>³<EFBFBD>bVersioningEnabledq2<71><32> ByteProperty<00>N-<2D>CachedChangeIde<><65>oCachedUsageInfo*ث!CallSortPriority<00><>ԥ Category<00>~<7E><> ChangeId<00>7T<37>ClassStructOrEnum3g<14>CollapsedViewFormat
<EFBFBD>4<EFBFBD> CompileHash<00><>dCompileHashFromGraphv<>j<EFBFBD>CompilerVersionID]<5D><><EFBFBD>ConversionScriptAsset<07>r<EFBFBD>ConversionScriptExecutionE<><13>ConversionUtility<00>G<EFBFBD>y CustomHlslz<>0<EFBFBD> DataHash}Fe<46>DebugDrawMessage<00><><EFBFBD>ADeprecationMessage<00><> <20>DeprecationRecommendation􄶕 Description*<2A>
DirectionEr.DynamicAddPin<00>`eEENiagaraInterpolatedSpawnMode<00>M<1D>/ENiagaraInterpolatedSpawnMode::NoInterpolation<00><>+<2B>'ENiagaraNumericOutputTypeSelectionMode<00><>`k0ENiagaraNumericOutputTypeSelectionMode::Largest<00>RC<52>$ENiagaraPythonUpdateScriptReference<00><><EFBFBD><EFBFBD>*ENiagaraPythonUpdateScriptReference::NoneV<15><>1ENiagaraPythonUpdateScriptReference::ScriptAssetn<>~ ENiagaraScriptLibraryVisibility<00><><EFBFBD>)ENiagaraScriptLibraryVisibility::Library<00>9<EFBFBD><39>ENiagaraScriptUsage<00> <0B>mENiagaraScriptUsage::Function<00>Қ9 EnumPropertyQם@
ErrorTypet0<>ExperimentalMessage<00>U<EFBFBD>`ExposedVersion<00><><12> Fallback<00><><EFBFBD><EFBFBD>Fallback Length=<3D><>' FilePath+<2B><>&FlagsA<><41>~From<00><><EFBFBD>VFunctionDisplayName<00>?<3F>EFunctionScript݄
GraphGuid<00><><EFBFBD>vGuidCP<43>hGuids <20><>HierarchyElementIdentity<00><0F>P Identity<00><><EFBFBD>RInlineExpressionFormat<00>ܡ<EFBFBD>InlineGraphFormatM+<2B>InlineOverviewDisplayNameM<><4D>Input|<7C><><EFBFBD>Inputs<00><><EFBFBD>InterpolatedSpawnMode>A; IntProperty<00><>6J KeywordsC-N<>LastBuiltScriptVersionId]<1E>LastBuiltTraversalDataChangeId<17>R<EFBFBD>LastGeneratedVMId<00><><EFBFBD>yLengthI[ LibraryVisibilityQ<16>K MajorVersion<00><1A><> MapProperty5<><35><EFBFBD> MinorVersion<00><> IMisc<00> <0B>gModuleUsageBitmaskl4]? NameProperty<00><>J
NewOutput <0C>nbNiagaraAssetVersion<1B><>MNiagaraCompileHash<00>~o<>NiagaraFunctionSignature<00>)<1F>NiagaraGraphScriptUsageInfoy<>9%NiagaraInlineDynamicInputFormatToken J<>NiagaraModuleDependency<00>r#<23>NiagaraParameterStoreQ<>NiagaraVariablej<>'NiagaraVariableBase<00>=<3D>/NiagaraVMExecutableDataId<00>Ź<EFBFBD> NodeComment`$_<>
NodeGraphT<16> NodeGuidѬ<04> NodeHeight<00>S<EFBFBD><53> NodePosX<00>[<5B> NodePosYrF<72>eNodes<00><><EFBFBD>l
NodeWidthlni<6E>None<00><03> NoteMessageU<>ͿNumericOutputTypeSelectionModek<>ObjectProperty<41>Outputs<03><1C>PackageLocalizationNamespacety<74>!ParameterDefinitionsSubscriptionDP<44><50>"ParameterDefinitionsSubscriptions%'Z>ParameterHierarchyRootZProvidedDependenciesX<>N<EFBFBD>PythonConversionScript \<5C><>PythonUpdateScript<00><07>RapidIterationParameters~G1[ReferencedCompileHashes<00>J<EFBFBD>bReferenceHashFromGraph<00><>`<60>RequiredDependencies<00><><1E>Result<00>s<EFBFBD><73> ScriptAssetlv<6C>tScriptMetaData+<2B><>}ScriptUsageType<<3C><><EFBFBD>ScriptUsageTypeID<00><>]uScriptVersionID<05><> SelectedScriptVersion<00><>A<EFBFBD>
Signature<00>fbWSourceV9<56><39> StrProperty;<3B>r$StructProperty0<00><> TextProperty<00>:t<>
Threshold<00>I<EFBFBD>MTo<00><><00>
Traversal<00><><EFBFBD>5Type<00>Fr<46>UInt16Property<00>O`0UnderlyingType<00>
<EFBFBD>UpdateScriptExecution<00>4<EFBFBD><34>UsageId<00><><EFBFBD>&
UsageTypes`9zV<00><>b<EFBFBD>Version|<7C>a^VersionChangeDescriptionA<><41> VersionData<00><14><>VersionedNiagaraScriptData<17><><EFBFBD> VersionGuid<00> 8{'/Game/Functions/DirectionAndLengthSafe<00><><EFBFBD>)/Game/Functions/Rotation/FindQuatBetweenփ<>-/Script/UnrealEd,<04>Classtwx<77>Default__NiagaraGraph<00>SP<53>DirectionAndLengthSafewEdGraphNode_Comment<00><>:FindQuatBetweenN⸴HierarchyRootU<><55>* NiagaraBool֛D NiagaraFloat5<><35>Y NiagaraGraphy7<>NiagaraNodeCustomHlsls<><73>JNiagaraNodeFunctionCall<00>JNiagaraNodeInput<00><07><>NiagaraNodeOutput'<27><><EFBFBD>NiagaraScript<00><><EFBFBD>NiagaraScriptSourceP[-PackagesG<73>Quat4f<00>Jm<4A> ScriptStructK<15><> Vector3f]Gn Rotation!CBBC74764C7BE62D4E4CAA9B5964773B]/Game/Functions/Rotation/FindQuatBetween.FindQuatBetween.VersionData(0).VersionData.Category!CBBC74764C7BE62D4E4CAA9B5964773B]/Game/Functions/Rotation/FindQuatBetween.FindQuatBetween.VersionData(1).VersionData.CategoryAlign Quat Quaternion!4B643F7B43686635EF3449A9DEB65E40]/Game/Functions/Rotation/FindQuatBetween.FindQuatBetween.VersionData(0).VersionData.Keywords!4B643F7B43686635EF3449A9DEB65E40]/Game/Functions/Rotation/FindQuatBetween.FindQuatBetween.VersionData(1).VersionData.KeywordsoRemoves hidden fallback variables, instead invalid inputs will result in an identity quaternion being returned!23D2AB094A8550151896A1B2CB7D6A38m/Game/Functions/Rotation/FindQuatBetween.FindQuatBetween.VersionData(1).VersionData.VersionChangeDescriptionw!2EAF5BA64FCBE7B2D44BF7BEAE042FA3<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD>zr<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00>r<00>r<00>r<00>r<00>r<00><00>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><00><><EFBFBD><EFBFBD><EFBFBD>r<00><><EFBFBD><EFBFBD><00><00>v&<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD>z<00>!(<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD>z<00><00>(<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00>?O)<00><><EFBFBD><EFBFBD>;<00><><EFBFBD><EFBFBD><00>+<00>-<00><><EFBFBD><EFBFBD>'<00><><EFBFBD><EFBFBD><00>
<00>1<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00>
<00>;<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00><00><00>E<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00><00>\M<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00><00>i<00>T<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00><00>icW<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00><00>i<00>Y<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00><00>i5\<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00>}<00>^<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00>}a<00><><EFBFBD><EFBFBD><00><00><><EFBFBD><EFBFBD><00>e<00>c<00><><EFBFBD><EFBFBD>a<00><><EFBFBD><EFBFBD><00>*<00>y<00><><EFBFBD><EFBFBD>&<00><><EFBFBD><EFBFBD><00>*'z<00><><EFBFBD><EFBFBD>&<00><><EFBFBD><EFBFBD><00><><EFBFBD><EFBFBD>
    <00><><EFBFBD><EFBFBD>
<00><><EFBFBD><EFBFBD> 
   f&FindQuatBetween/Script/Niagara.NiagaraScript
bDeprecated0 bSuggested0 Category RotationClassUsageList<00>/Script/NiagaraEditor.NiagaraNodeCustomHlsl
/Script/NiagaraEditor.NiagaraNodeFunctionCall
/Script/NiagaraEditor.NiagaraNodeInput
/Script/NiagaraEditor.NiagaraNodeOutput KeywordsAlign Quat QuaternionLibraryVisibilityLibraryModuleUsageBitmask8191NiagaraCustomVersion70PreviewMoviePathNoneUsage FunctionnR<03><><EFBFBD>oR<19><><EFBFBD>qR<00>mR0  j<00><00>}These blocks are here strictly for backwards compatibility. They provide hidden default values which should be discouraged.l<00>H<08>\<5C>`<60>h<EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>=<3D>^rK<00>JYI<00>H<00><>Y<EFBFBD>E6}<7D>Z<0E><>30JrrK<00>JYI<00>H<16><>(B8G <09>eJ<65><4A>rr <00>H<08>C<EFBFBD>>Dg+J<><4A><EFBFBD>q8<71><0E>U<00>H<08>C<EFBFBD>>Dg+J<><4A><EFBFBD>q8<71><0E>T<00>HT<><54>٘<EFBFBD><D998><EFBFBD>(TҠ<54>e<EFBFBD><65><00>cv <00>H<08><08>r<EFBFBD>\<5C>I<EFBFBD>zB+z~F<><46><:;<00><00>H#<00>aE*<00>D<EFBFBD><44><71><DD99><13>6<EFBFBD><T<>onr$<00>aE*0m4P<34><50>A;<3B>K<EFBFBD><4B>_<EFBFBD><5F>Є 9<>r<00><00>aE*<00>9<EFBFBD><39>^kK 2U<32><55><EFBFBD>`<18><><EFBFBD> r<00>u
 rzupu 
 G<00>H<08>Px<50><78>3<EFBFBD>M<EFBFBD><4D><EFBFBD><1A><><1A>r <00>H.<2E>{(<>@<40><><EFBFBD>32<33>l^U<00>H.<2E>{(<>@<40><><EFBFBD>32<33>l^T<00>HT<><54>٘<EFBFBD><D998><EFBFBD>(TҠ<54>e<EFBFBD><65><00>cn <00>H<08>TAu<41><75>x@<40><><EFBFBD>><3E>g<EFBFBD><67><EFBFBD><:;<00><00>H#<00>aE*M<>F<EFBFBD>x<><7F><1F><><EFBFBD><EFBFBD>ڭ<EFBFBD><DAAD><EFBFBD>r$<00>aE*0<>`<60><>l}<7D><>A z<>6<EFBFBD> <0C>'r<00><00>aE*<00>9<EFBFBD><39>^kK 2U<32><55><EFBFBD>`<18><><EFBFBD> r<00>u rzupu G<00>H<08>Px<50><78>3<EFBFBD>M<EFBFBD><4D><EFBFBD><1A><><1A>r)<00><00><00>// From UE::Math::FindBetween_Helper()
const float NormAB = sqrt(dot(From, From) * dot(To, To));
float W = NormAB + dot(From, To);
float4 ValidResult = float4(cross(From, To), W);
float4 FallbackX = float4(-From.z, 0.0f, From.x, 0.0f);
float4 FallbackY = float4(0.0f, -From.z, From.y, 0.0f);
float4 Identity = float4(0.0f, 0.0f, 0.0f, 1.0f);
const float Epsilon = 1e-6f;
if (abs(From.x) > abs(From.y))
{
Result = FallbackX;
}
else
{
Result = FallbackY;
}
if (W >= 1e-6f * NormAB)
{
Result = ValidResult;
}
if (NormAB < Epsilon)
{
Result = Identity;
}
else
{
// normalize the quat before returning
Result = normalize(Result);
}<00><00>b<00>P<00>g<00>D!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr v<00>hf<00>!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Crr <00>Hat8<74>N3<4E>E<EFBFBD>Ϭ<EFBFBD><CFAC><EFBFBD>-hnR<00><><EFBFBD><EFBFBD>oR<10><><EFBFBD>l<00>H<08><>%Zi<^E<>"3-<><7F>Tr<00>0g+\<5C>I<EFBFBD>J<00>h<EFBFBD><68>a<00>0g+\<5C>I<EFBFBD>J<00>h<EFBFBD><68>aD<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r0.000,0.000,0.0000.000,0.000,0.000<00><00><>Cu<43>N<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>7<><37>v<08><>D<EFBFBD><44><EFBFBD>F<EFBFBD>$k7<><37>v<08><>D<EFBFBD><44><EFBFBD>F<EFBFBD>$k<10><00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r0.000,0.000,0.0000.000,0.000,0.000<00> <00><>T<EFBFBD>H<EFBFBD>>E<><45>MWB͞<42><00><>KT8L<38><4C>]<5D>f<EFBFBD>ƨ<00><>KT8L<38><4C>]<5D>f<EFBFBD>ƨ<EFBFBD><00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00>6<05><><EFBFBD><EFBFBD><EFBFBD>@<40><>e<03><15><>Tx0ӥ{A<><41>yt#-<2D>Tx0ӥ{A<><41>yt#-<2D><00><00><><EFBFBD><EFBFBD>\0r<00><00>=:u<><75>N<><<3C>d<EFBFBD>]<5D><><00>=:u<><75>N<><<3C>d<EFBFBD>]<5D><><00><00><><EFBFBD><EFBFBD>\0r<00>)<00><00><00>// From UE::Math::FindBetween_Helper()
const float NormAB = sqrt(dot(From, From) * dot(To, To));
float W = NormAB + dot(From, To);
float4 ValidResult = float4(cross(From, To), W);
float4 FallbackX = float4(-From.z, 0.0f, From.x, 0.0f);
float4 FallbackY = float4(0.0f, -From.z, From.y, 0.0f);
float4 Identity = float4(0.0f, 0.0f, 0.0f, 1.0f);
const float Epsilon = 1e-6f;
if (abs(From.x) > abs(From.y))
{
Result = FallbackX;
}
else
{
Result = FallbackY;
}
if (W >= 1e-6f * NormAB)
{
Result = ValidResult;
}
if (NormAB < Epsilon)
{
Result = Identity;
}
else
{
// normalize the quat before returning
Result = normalize(Result);
}<00><00>b<00>P<00>g<00>D!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr v<00>hf<00>!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Crr <00>HR<>(<28><>K C<><43>1>ʤ<>nR<00><><EFBFBD><EFBFBD>oR<10><><EFBFBD>l<00>H<08><>%Zi<^E<>"3-<><7F>Tr<00>0g+\<5C>I<EFBFBD>J<00>h<EFBFBD><68>a<00>0g+\<5C>I<EFBFBD>J<00>h<EFBFBD><68>aD<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r0.000,0.000,0.0000.000,0.000,0.000<00> <00>" <20>N<EFBFBD>M<><4D>KY<4B>D<44>7<><37>v<08><>D<EFBFBD><44><EFBFBD>F<EFBFBD>$k7<><37>v<08><>D<EFBFBD><44><EFBFBD>F<EFBFBD>$k<10><00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r0.000,0.000,0.0000.000,0.000,0.000<00> <00>ߴ<EFBFBD><DFB4>kFJ<46>&<26>."2LW<00><>KT8L<38><4C>]<5D>f<EFBFBD>ƨ<00><>KT8L<38><4C>]<5D>f<EFBFBD>ƨ<EFBFBD><00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00>6<05><><EFBFBD><EFBFBD><EFBFBD>@<40><>e<03><15><>Tx0ӥ{A<><41>yt#-<2D>Tx0ӥ{A<><41>yt#-<2D><00><00><><EFBFBD><EFBFBD>\0r<00><00>=:u<><75>N<><<3C>d<EFBFBD>]<5D><><00>=:u<><75>N<><<3C>d<EFBFBD>]<5D><><00><00><><EFBFBD><EFBFBD>\0r<00>Fu<00><><EFBFBD><EFBFBD><EFBFBD><00>Ho><3E>%'<27>C<> <0B><>+n<><00>HpYQ&fGO<><14><>$<24>FbE<00>DirectionAndLengthSafe001 <00>H<08><><10>j<EFBFBD><6A>D<EFBFBD> 1<><31>Պ<EFBFBD>nR0<><30><EFBFBD>oR<00><><EFBFBD><EFBFBD>l<00>HL8<4C>~<1B>E<EFBFBD>I<EFBFBD><49>W-x<>rZ<>a<>I<><49><EFBFBD><EFBFBD>a <0A>Z<>a<>I<><49><EFBFBD><EFBFBD>a ŗ<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r0.000,0.000,0.0000.000,0.000,0.000<00>
<00>" <20>N<EFBFBD>M<><4D>KY<4B>D<44>߇<>l'<27>pC<70><43><EFBFBD>ycHW߇<>l'<27>pC<70><43><EFBFBD>ycHW@<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r1.000000,0.000,0.0000000.000,0.000,1.000<00>F<>:<3A>ᗁM<E19781><06>t<EFBFBD><19>F<>:<3A>ᗁM<E19781><06>t<EFBFBD><19><1D><00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r 0.000010 0.000010<00><00><>s<EFBFBD><73>D<EFBFBD>L<EFBFBD>L<>β{<7B><00><>s<EFBFBD><73>D<EFBFBD>L<EFBFBD>L<>β{<7B>A<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r 1.000000 1.000000<00><00><>Cu<43>N<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><00><>Cu<43>N<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>/<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00><00>0g+\<5C>I<EFBFBD>J<00>h<EFBFBD><68>a}B<>2<EFBFBD>rGO<47><4F>|<7C><><EFBFBD>7<EFBFBD>}B<>2<EFBFBD>rGO<47><4F>|<7C><><EFBFBD>7<EFBFBD>W<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00><00>P<EFBFBD><1A><>I<EFBFBD><49><<3C>-=u<00>P<EFBFBD><1A><>I<EFBFBD><49><<3C>-=u<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00>Fu<00><><EFBFBD><EFBFBD><EFBFBD><00>Ho><3E>%'<27>C<> <0B><>+n<><00>HpYQ&fGO<><14><>$<24>FbE<00>DirectionAndLengthSafe <00>H<08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><49>B<EFBFBD><42><EFBFBD>\<5C>nR0<><30><EFBFBD>oRp<><70><EFBFBD>l<00>H<08>W<EFBFBD>=<3D>$<24>C<EFBFBD>qe@<40><><EFBFBD>r <00>m<EFBFBD>k<EFBFBD><6B>_C<5F><43>|RP<52> <00>m<EFBFBD>k<EFBFBD><6B>_C<5F><43>|RP<52><50><00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r0.000,0.000,0.0000.000,0.000,0.000<00> <00>ߴ<EFBFBD><DFB4>kFJ<46>&<26>."2LW Z<>=G5<47>C<><43><EFBFBD><EFBFBD>Q<EFBFBD>R<EFBFBD> Z<>=G5<47>C<><43><EFBFBD><EFBFBD>Q<EFBFBD>R<EFBFBD>@<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r1.000000,0.000,0.0000000.000,0.000,1.000<00> ;<3B><><EFBFBD>I<EFBFBD>A<EFBFBD>b <0C> ;<3B><><EFBFBD>I<EFBFBD>A<EFBFBD>b <0C><1E><00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r 0.000010 0.000010<00> <00>.Q<>)RH<52>Ȏ1<C88E>e<EFBFBD>' <00>.Q<>)RH<52>Ȏ1<C88E>e<EFBFBD>'A<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r 1.000000 1.000000<00> <00><>T<EFBFBD>H<EFBFBD>>E<><45>MWB͞<42> <00><>T<EFBFBD>H<EFBFBD>>E<><45>MWB͞<42>/<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00>7<><37>v<08><>D<EFBFBD><44><EFBFBD>F<EFBFBD>$k <00><>V<EFBFBD>ǁC<>-<2D>[2<>Z<EFBFBD> <00><>V<EFBFBD>ǁC<>-<2D>[2<>Z<EFBFBD>W<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00> <0F><> ";WM<57>vM<76>^<5E><04> <0F><> ";WM<57>vM<76>^<5E><04><00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00>O<00>grD!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>?R <00>H<08><><EFBFBD><EFBFBD>N0N<30><4E><EFBFBD>}<7D>ҁnRP<><50><EFBFBD>oR<10><><EFBFBD>l<00>H<08>"<22>)<29>J<>6{<7B><>_<EFBFBD>r
<00>" <20>N<EFBFBD>M<><4D>KY<4B>D<44>
<00>" <20>N<EFBFBD>M<><4D>KY<4B>D<44>O<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00>Z<>a<>I<><49><EFBFBD><EFBFBD>a <0A>O<00>gr<08>!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>?R <00>H<08><>e<1E>IO<49>f<EFBFBD><66>QE<>nR`<60><><EFBFBD>oR`<60><><EFBFBD>l<00>H<08><>o<EFBFBD><6F><EFBFBD>K<>S<EFBFBD><53><EFBFBD>&<26>r <00>ߴ<EFBFBD><DFB4>kFJ<46>&<26>."2LW <00>ߴ<EFBFBD><DFB4>kFJ<46>&<26>."2LWO<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00> <00>m<EFBFBD>k<EFBFBD><6B>_C<5F><43>|RP<52>O<00>grD!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>?R <00>H<08><><EFBFBD><EFBFBD><EFBFBD>N@<40>x<EFBFBD>?QfnRP<><50><EFBFBD>oR<10><><EFBFBD>l<00>H<08>"<22>)<29>J<>6{<7B><>_<EFBFBD>r <00>" <20>N<EFBFBD>M<><4D>KY<4B>D<44> <00>" <20>N<EFBFBD>M<><4D>KY<4B>D<44>O<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00><00>0g+\<5C>I<EFBFBD>J<00>h<EFBFBD><68>aO<00>gr<08>!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>?R <00>H<08>y<EFBFBD>Q0zF<7A>^ɩ<> ?nR`<60><><EFBFBD>oR`<60><><EFBFBD>l<00>H<08><>o<EFBFBD><6F><EFBFBD>K<>S<EFBFBD><53><EFBFBD>&<26>r <00>ߴ<EFBFBD><DFB4>kFJ<46>&<26>."2LW <00>ߴ<EFBFBD><DFB4>kFJ<46>&<26>."2LWO<00><00><><EFBFBD><EFBFBD><01>r<00><><EFBFBD><EFBFBD>r<00>7<><37>v<08><>D<EFBFBD><44><EFBFBD>F<EFBFBD>$kv<00>gz_!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>H<08>]GIB<>kKVhĝ<68>nR<00>oR<10><><EFBFBD>=Rl<00>H<08><><0E>ʮ^G<>cr<63>=/`r6<05><><EFBFBD><EFBFBD><EFBFBD>@<40><>e<03><15><>6<05><><EFBFBD><EFBFBD><EFBFBD>@<40><>e<03><15><>_<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r<00><00><>KT8L<38><4C>]<5D>f<EFBFBD>ƨv<00>gz_!u<00><><EFBFBD><EFBFBD><EFBFBD><00>Cr <00>H<08>]GIB<>kKVhĝ<68>nR<00>oR<10><><EFBFBD>=Rl<00>H<08><><0E>ʮ^G<>cr<63>=/`r6<05><><EFBFBD><EFBFBD><EFBFBD>@<40><>e<03><15><>6<05><><EFBFBD><EFBFBD><EFBFBD>@<40><>e<03><15><>_<00><00><><EFBFBD><EFBFBD><00>r<00><><EFBFBD><EFBFBD>r<00><00><>KT8L<38><4C>]<5D>f<EFBFBD>ƨ?<00>H9<>4}L_mH<6D><48><EFBFBD>W<EFBFBD>6<EFBFBD><36><10><00><00><00><00><00>`<00>YR[R<00><00>H#J801beM<65>ӈ<EFBFBD><05><><EFBFBD>r<00><00> <00>]R<00><00><!CBBC74764C7BE62D4E4CAA9B5964773B RotationN<00> <00>{^<00><00>e,<00> <00>-u
<00>aE*<00> <0C><>AE<41>_<><5F>R<03>ݒ<EFBFBD><DD92>3<EFBFBD>r<00>a*K<>Aj<41><6A>Ŷ<17>#]o'S<>r*<1C><76><DD86>L<EFBFBD>Z;<3B>r
<EFBFBD>4%<25>ڄr*<00><><EFBFBD>D<EFBFBD>Iylo<6C>e<EFBFBD>W<EFBFBD><57>KN<4B><4E><EFBFBD>r*<00><>-<2D> )ɑu;i<><69><EFBFBD>vn?<3F><>r<00><00>H#J801beM<65>ӈ<EFBFBD><05><><EFBFBD>r<00><56}<00><00><00>B%B<00>ry<00>x<00>ur<00><00>`<00>YR[R<00><00>H9<>4}L_mH<6D><48><EFBFBD>W<EFBFBD>6<EFBFBD><36>r<00><00><00>#[2EAF5BA64FCBE7B2D44BF7BEAE042FA3]!23D2AB094A8550151896A1B2CB7D6A38oRemoves hidden fallback variables, instead invalid inputs will result in an identity quaternion being returned]R<00><00><!CBBC74764C7BE62D4E4CAA9B5964773B RotationN<00> <00>{^<00><00>e,<00> <00>-u'<57|<00>&<00>B%B<00>r(u><00> <00>s<00> <00>+<00> <00>X<89t<34.<00> <00>S<00>I!4B643F7B43686635EF3449A9DEB65E40Align Quat Quaternion"<00> <00>L<00>dM<00>d <00>Z^<00>V<00>i<00>%<00>HQ<12<00><00>H<00><:;<00><00>h
<00>a1*r<00>a<00><00>Hr<00><56}<00><00><00>B%B<00>ry<00>x<00>ur~<00>frrkurkur<00><>*<2A><><EFBFBD><EFBFBD><EFBFBD>.;<3B><>v<>8Qʿ)0<00><>*<2A>