Merge remote-tracking branch 'upstream/development' into Atom/santorac/RemixableMaterialTypes4_FlatMaterialFiles
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
This commit is contained in:
+5
-5
@@ -242,7 +242,7 @@ Node Type: BoneData
|
||||
BasisX: < 1.000000, -0.000000, 0.000000>
|
||||
BasisY: < 0.000000, 1.000000, 0.000000>
|
||||
BasisZ: <-0.000000, -0.000000, 1.000000>
|
||||
Transl: < 0.152547, 0.043345, 0.090954>
|
||||
Transl: < 0.152547, 0.043345, 0.090955>
|
||||
|
||||
Node Name: animation
|
||||
Node Path: RootNode.jack_root.Bip01__pelvis.spine1.spine2.animation
|
||||
@@ -544,7 +544,7 @@ Node Type: BoneData
|
||||
Node Name: animation
|
||||
Node Path: RootNode.jack_root.Bip01__pelvis.spine1.spine2.spine3.l_shldr.l_upArm.l_upArmRoll.animation
|
||||
Node Type: AnimationData
|
||||
KeyFrames: Count 195. Hash: 8781707605519483934
|
||||
KeyFrames: Count 195. Hash: 15529789169672670472
|
||||
TimeStepBetweenFrames: 0.033333
|
||||
|
||||
Node Name: transform
|
||||
@@ -710,7 +710,7 @@ Node Type: BoneData
|
||||
BasisX: < 0.514369, 0.855813, 0.054857>
|
||||
BasisY: < 0.088153, 0.010863, -0.996047>
|
||||
BasisZ: <-0.853026, 0.517172, -0.069855>
|
||||
Transl: <-0.247306, -0.062325, 0.878372>
|
||||
Transl: <-0.247306, -0.062325, 0.878373>
|
||||
|
||||
Node Name: animation
|
||||
Node Path: RootNode.jack_root.Bip01__pelvis.spine1.spine2.spine3.r_shldr.r_upArm.r_loArm.r_loArmRoll.animation
|
||||
@@ -857,7 +857,7 @@ Node Type: BoneData
|
||||
BasisX: < 0.329257, 0.944038, -0.019538>
|
||||
BasisY: < 0.465563, -0.180309, -0.866452>
|
||||
BasisZ: <-0.821487, 0.276189, -0.498877>
|
||||
Transl: <-0.255124, -0.049696, 0.794466>
|
||||
Transl: <-0.255124, -0.049696, 0.794467>
|
||||
|
||||
Node Name: animation
|
||||
Node Path: RootNode.jack_root.Bip01__pelvis.spine1.spine2.spine3.l_shldr.l_upArm.l_loArm.l_hand.l_metacarpal.animation
|
||||
@@ -953,7 +953,7 @@ Node Type: BoneData
|
||||
BasisX: <-0.102387, -0.418082, -0.902621>
|
||||
BasisY: < 0.928150, 0.286271, -0.237880>
|
||||
BasisZ: < 0.357847, -0.862123, 0.358732>
|
||||
Transl: < 0.187367, 0.698323, 1.467209>
|
||||
Transl: < 0.187367, 0.698324, 1.467209>
|
||||
|
||||
Node Name: animation
|
||||
Node Path: RootNode.jack_root.Bip01__pelvis.spine1.spine2.spine3.r_shldr.r_upArm.r_loArm.r_hand.r_mid1.animation
|
||||
|
||||
+41
-41
@@ -114,7 +114,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9225030 0.3829492 -0.0483544 -0.3849890 0.9218784 -0.0438619 0.0277800 0.0590787 0.9978667 -0.0995240 0.0035963 0.9837443" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9225030 0.3829492 -0.0483544 -0.3849890 0.9218784 -0.0438619 0.0277800 0.0590787 0.9978667 -0.0995240 0.0035963 0.9837442" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -191,7 +191,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9225030 0.3829492 -0.0483544 -0.3849890 0.9218784 -0.0438619 0.0277800 0.0590787 0.9978667 -0.1057190 -0.0095780 0.7612199" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9225030 0.3829492 -0.0483544 -0.3849890 0.9218784 -0.0438619 0.0277800 0.0590787 0.9978667 -0.1057190 -0.0095780 0.7612200" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -204,7 +204,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9225030 0.3829492 -0.0483545 -0.3857441 0.9101822 -0.1508971 -0.0137745 0.1578555 0.9873661 -0.1119141 -0.0227522 0.5386958" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9225030 0.3829492 -0.0483545 -0.3857441 0.9101822 -0.1508971 -0.0137745 0.1578555 0.9873661 -0.1119141 -0.0227522 0.5386957" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -268,7 +268,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9918931 -0.1127676 0.0585800 0.1181807 0.9880368 -0.0990792 -0.0467063 0.1051989 0.9933537 0.1314755 0.0908038 0.5390974" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9918931 -0.1127676 0.0585800 0.1181807 0.9880368 -0.0990792 -0.0467063 0.1051989 0.9933537 0.1314754 0.0908038 0.5390974" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -319,7 +319,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9846771 -0.1743657 -0.0027636 -0.0040787 0.0071844 0.9999658 -0.1743399 0.9846547 -0.0077855 -0.0024987 0.0198645 1.2316585" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9846771 -0.1743657 -0.0027636 -0.0040787 0.0071844 0.9999658 -0.1743399 0.9846547 -0.0077855 -0.0024987 0.0198645 1.2316583" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -408,7 +408,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9636059 0.2673270 0.0000002 -0.2673270 0.9636059 0.0000004 -0.0000001 -0.0000005 0.9999999 -0.1057001 -0.0939669 0.0932542" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9636059 0.2673270 0.0000002 -0.2673270 0.9636059 0.0000004 -0.0000001 -0.0000005 0.9999999 -0.1057001 -0.0939668 0.0932542" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -497,7 +497,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="1.0000000 -0.0000001 0.0000001 0.0000001 1.0000000 0.0000005 -0.0000001 -0.0000005 1.0000000 0.1525467 0.0433452 0.0909544" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="1.0000000 -0.0000001 0.0000001 0.0000001 1.0000000 0.0000005 -0.0000001 -0.0000005 1.0000000 0.1525467 0.0433452 0.0909545" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -548,7 +548,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9795371 -0.2012138 -0.0044671 0.0088889 -0.0654249 0.9978178 -0.2010670 0.9773599 0.0658747 -0.0031105 0.0209422 1.3816533" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9795371 -0.2012138 -0.0044671 0.0088889 -0.0654249 0.9978178 -0.2010670 0.9773599 0.0658747 -0.0031105 0.0209422 1.3816534" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -650,7 +650,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="1.0000000 -0.0000001 0.0000001 0.0000001 1.0000000 0.0000005 -0.0000001 -0.0000005 1.0000000 0.1525467 0.1935186 0.0237662" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="1.0000000 -0.0000001 0.0000001 0.0000001 1.0000000 0.0000005 -0.0000001 -0.0000005 1.0000000 0.1525467 0.1935186 0.0237663" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -701,7 +701,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9948647 -0.0988443 0.0217715 0.0113319 0.1049736 0.9944103 -0.1005772 0.9895505 -0.1033145 -0.0014216 0.0085115 1.5712386" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9948647 -0.0988443 0.0217715 0.0113319 0.1049736 0.9944103 -0.1005772 0.9895505 -0.1033145 -0.0014216 0.0085115 1.5712385" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -727,7 +727,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3913002 -0.9108952 0.1309726 -0.9019646 -0.4078557 -0.1418229 0.1826037 -0.0626373 -0.9811893 0.0803188 0.0196155 1.4967986" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3913002 -0.9108952 0.1309726 -0.9019646 -0.4078557 -0.1418229 0.1826037 -0.0626373 -0.9811893 0.0803188 0.0196155 1.4967985" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -854,7 +854,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9994818 -0.0310398 -0.0085214 -0.0078972 -0.0201766 0.9997651 -0.0312043 0.9993144 0.0199210 -0.0020550 0.0351172 1.6630899" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.9994818 -0.0310398 -0.0085214 -0.0078972 -0.0201766 0.9997651 -0.0312043 0.9993144 0.0199210 -0.0020550 0.0351172 1.6630900" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -905,7 +905,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1350640 0.9784527 -0.1561655 0.9639030 0.0932519 -0.2493893 -0.2294530 -0.1842118 -0.9557285 -0.1881499 -0.0555908 1.4517218" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1350640 0.9784527 -0.1561655 0.9639030 0.0932519 -0.2493893 -0.2294530 -0.1842118 -0.9557285 -0.1881499 -0.0555909 1.4517218" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1109,7 +1109,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0534004 -0.3009000 -0.9521595 -0.9985610 0.0208024 0.0494289 0.0049341 0.9534288 -0.3015778 0.1978613 0.1747155 1.4348212" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0534004 -0.3009000 -0.9521595 -0.9985610 0.0208024 0.0494289 0.0049341 0.9534288 -0.3015778 0.1978613 0.1747155 1.4348211" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1141,7 +1141,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="KeyFrames - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="8781707605519483934" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="15529789169672670472" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -1415,7 +1415,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9665319 -0.0616776 0.2490221 0.2565261 0.2200654 -0.9411510 0.0032468 0.9735332 0.2285221 -0.2390312 -0.0175187 0.9024240" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9665319 -0.0616776 0.2490221 0.2565261 0.2200654 -0.9411510 0.0032468 0.9735332 0.2285221 -0.2390311 -0.0175187 0.9024240" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1441,7 +1441,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3292569 0.9440380 -0.0195383 0.1345730 -0.0673964 -0.9886089 -0.9346014 0.3228769 -0.1492327 -0.2613609 -0.0465721 0.8402831" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3292569 0.9440380 -0.0195383 0.1345730 -0.0673964 -0.9886089 -0.9346014 0.3228769 -0.1492327 -0.2613609 -0.0465721 0.8402832" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1454,7 +1454,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.5215136 0.8398412 -0.1506330 -0.0192358 -0.1649243 -0.9861184 -0.8530262 0.5171716 -0.0698552 -0.2693057 -0.0706829 0.8937123" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.5215136 0.8398412 -0.1506330 -0.0192358 -0.1649243 -0.9861184 -0.8530262 0.5171716 -0.0698552 -0.2693058 -0.0706829 0.8937123" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1467,7 +1467,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.5143689 0.8558125 0.0548569 0.0881534 0.0108630 -0.9960474 -0.8530262 0.5171716 -0.0698552 -0.2473062 -0.0623250 0.8783725" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.5143689 0.8558125 0.0548569 0.0881534 0.0108630 -0.9960474 -0.8530262 0.5171716 -0.0698552 -0.2473062 -0.0623250 0.8783726" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1569,7 +1569,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0802934 -0.4308499 -0.8988443 0.5990614 -0.7415851 0.3019556 -0.7966672 -0.5142179 0.3176499 0.2168119 0.6618763 1.4820503" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0802934 -0.4308499 -0.8988443 0.5990614 -0.7415851 0.3019556 -0.7966672 -0.5142179 0.3176499 0.2168119 0.6618764 1.4820503" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1582,7 +1582,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0260422 -0.4643564 -0.8852653 0.9706670 -0.2234796 0.0886692 -0.2390129 -0.8569889 0.4565554 0.2131762 0.6597862 1.4626874" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0260422 -0.4643564 -0.8852653 0.9706670 -0.2234796 0.0886692 -0.2390129 -0.8569889 0.4565554 0.2131762 0.6597863 1.4626874" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1608,7 +1608,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.0557957 -0.0005854 -0.9984418 -0.9981855 -0.0227144 -0.0557681 -0.0226463 0.9997417 -0.0018517 0.1809568 0.7018137 1.4945196" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.0557957 -0.0005854 -0.9984418 -0.9981855 -0.0227144 -0.0557681 -0.0226463 0.9997417 -0.0018517 0.1809568 0.7018138 1.4945196" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1659,7 +1659,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9665319 -0.0616776 0.2490221 0.2373489 -0.1534441 -0.9592289 0.0973740 0.9862305 -0.1336694 -0.2288372 -0.0087736 0.8650238" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9665319 -0.0616776 0.2490221 0.2373489 -0.1534441 -0.9592289 0.0973740 0.9862305 -0.1336694 -0.2288371 -0.0087736 0.8650237" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1710,7 +1710,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3615634 0.9298344 0.0684081 0.4901183 -0.1271389 -0.8623338 -0.7931304 0.3453165 -0.5016975 -0.2471175 -0.0273644 0.7929417" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3615634 0.9298344 0.0684081 0.4901183 -0.1271389 -0.8623338 -0.7931304 0.3453165 -0.5016975 -0.2471175 -0.0273644 0.7929418" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1761,7 +1761,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3292569 0.9440380 -0.0195383 0.4655626 -0.1803091 -0.8664525 -0.8214875 0.2761891 -0.4988768 -0.2551242 -0.0496955 0.7944664" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3292569 0.9440380 -0.0195383 0.4655626 -0.1803091 -0.8664525 -0.8214875 0.2761891 -0.4988768 -0.2551242 -0.0496955 0.7944666" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1812,7 +1812,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3559713 0.9329765 -0.0532857 0.1359657 -0.1081222 -0.9847956 -0.9245527 0.3433140 -0.1653412 -0.2679712 -0.0667890 0.8432873" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3559713 0.9329765 -0.0532857 0.1359657 -0.1081222 -0.9847956 -0.9245527 0.3433140 -0.1653412 -0.2679712 -0.0667891 0.8432874" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1825,7 +1825,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3169729 0.9297552 -0.1873048 0.2697999 -0.2777221 -0.9219966 -0.9092504 0.2417132 -0.3388780 -0.2744931 -0.0856099 0.8500432" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3169729 0.9297552 -0.1873048 0.2697999 -0.2777221 -0.9219966 -0.9092504 0.2417132 -0.3388780 -0.2744932 -0.0856099 0.8500431" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1914,7 +1914,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.0052020 0.3264090 0.9452143 0.5280435 -0.8035957 0.2745980 0.8492015 0.4976858 -0.1765385 0.1653490 0.6116705 1.5069345" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.0052020 0.3264090 0.9452143 0.5280435 -0.8035957 0.2745980 0.8492015 0.4976858 -0.1765385 0.1653489 0.6116704 1.5069345" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -1965,7 +1965,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1023873 -0.4180822 -0.9026206 0.9281499 0.2862708 -0.2378801 0.3578474 -0.8621231 0.3587325 0.1873666 0.6983235 1.4672089" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1023873 -0.4180822 -0.9026206 0.9281499 0.2862708 -0.2378801 0.3578474 -0.8621231 0.3587325 0.1873666 0.6983237 1.4672090" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2067,7 +2067,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0656088 -0.4626088 -0.8841316 0.9937954 -0.1100428 -0.0161683 -0.0898128 -0.8797066 0.4669581 0.1996420 0.6531383 1.4435714" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0656088 -0.4626088 -0.8841316 0.9937954 -0.1100428 -0.0161683 -0.0898128 -0.8797066 0.4669581 0.1996421 0.6531384 1.4435714" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2169,7 +2169,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9665319 -0.0616776 0.2490221 0.2373489 -0.1534441 -0.9592289 0.0973740 0.9862305 -0.1336694 -0.2218228 -0.0133082 0.8366759" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.9665319 -0.0616776 0.2490221 0.2373489 -0.1534441 -0.9592289 0.0973740 0.9862305 -0.1336694 -0.2218228 -0.0133083 0.8366759" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2220,7 +2220,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3615634 0.9298344 0.0684081 0.7452133 -0.2441212 -0.6205335 -0.5602937 0.2753409 -0.7811900 -0.2311346 -0.0315104 0.7648208" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3615634 0.9298344 0.0684081 0.7452133 -0.2441212 -0.6205335 -0.5602937 0.2753409 -0.7811900 -0.2311346 -0.0315104 0.7648209" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2271,7 +2271,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3292569 0.9440380 -0.0195383 0.7326652 -0.2684788 -0.6253964 -0.5956439 0.1916010 -0.7800621 -0.2399473 -0.0555735 0.7662210" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3292569 0.9440380 -0.0195383 0.7326652 -0.2684788 -0.6253964 -0.5956439 0.1916010 -0.7800621 -0.2399472 -0.0555734 0.7662212" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2322,7 +2322,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3559713 0.9329765 -0.0532857 0.5122607 -0.2425047 -0.8238812 -0.7815840 0.2659818 -0.5642518 -0.2625020 -0.0711384 0.8036732" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3559713 0.9329765 -0.0532857 0.5122607 -0.2425047 -0.8238812 -0.7815840 0.2659818 -0.5642518 -0.2625019 -0.0711384 0.8036732" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2373,7 +2373,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3169729 0.9297552 -0.1873048 0.6083978 -0.3508277 -0.7118790 -0.7275853 0.1116905 -0.6768638 -0.2653106 -0.0950621 0.8186633" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3169729 0.9297552 -0.1873048 0.6083978 -0.3508277 -0.7118790 -0.7275853 0.1116905 -0.6768638 -0.2653105 -0.0950620 0.8186634" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2475,7 +2475,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1023873 -0.4180822 -0.9026206 0.0986766 0.8986452 -0.4274341 0.9898382 -0.1328314 -0.0507549 0.1570989 0.6889878 1.4749659" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1023873 -0.4180822 -0.9026206 0.0986766 0.8986452 -0.4274341 0.9898382 -0.1328314 -0.0507549 0.1570989 0.6889879 1.4749659" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2526,7 +2526,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0260422 -0.4643564 -0.8852653 -0.5639869 0.7379948 -0.3705161 0.8253731 0.4896291 -0.2811100 0.1495006 0.6467174 1.4714146" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0260422 -0.4643564 -0.8852653 -0.5639869 0.7379948 -0.3705161 0.8253731 0.4896291 -0.2811100 0.1495006 0.6467175 1.4714146" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2628,7 +2628,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1100348 -0.4672045 -0.8772753 0.2567038 0.8393306 -0.4791943 0.9602060 -0.2779281 0.0275776 0.1585392 0.6416523 1.4316828" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.1100348 -0.4672045 -0.8772753 0.2567038 0.8393306 -0.4791943 0.9602060 -0.2779281 0.0275776 0.1585393 0.6416522 1.4316828" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2793,7 +2793,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3559713 0.9329765 -0.0532857 0.7935058 -0.3318905 -0.5100955 -0.4935922 0.1392968 -0.8584654 -0.2455191 -0.0791781 0.7763593" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3559713 0.9329765 -0.0532857 0.7935058 -0.3318905 -0.5100955 -0.4935922 0.1392968 -0.8584654 -0.2455190 -0.0791781 0.7763594" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -2844,7 +2844,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3169729 0.9297552 -0.1873048 0.8471319 -0.3663475 -0.3849116 -0.4264922 -0.0366653 -0.9037473 -0.2508485 -0.1034015 0.8017413" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="0.3169729 0.9297552 -0.1873048 0.8471319 -0.3663475 -0.3849116 -0.4264922 -0.0366653 -0.9037473 -0.2508485 -0.1034015 0.8017412" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
@@ -3009,7 +3009,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="WorldTransform" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0656088 -0.4626088 -0.8841316 -0.8307251 0.5161862 -0.2084411 0.5528033 0.7207946 -0.4181670 0.1489982 0.6300828 1.4593928" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
<Class name="Matrix3x4" field="m_data" value="-0.0656088 -0.4626088 -0.8841316 -0.8307251 0.5161862 -0.2084411 0.5528033 0.7207946 -0.4181670 0.1489982 0.6300829 1.4593928" type="{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
|
||||
+6
-6
@@ -90,7 +90,7 @@ Node Path: RootNode.lodtest_lod1.lodtest_lod1_1
|
||||
Node Type: MeshData
|
||||
Positions: Count 192. Hash: 1283526254311745349
|
||||
Normals: Count 192. Hash: 1873340970602844856
|
||||
FaceList: Count 124. Hash: 3728991722746136013
|
||||
FaceList: Count 124. Hash: 8546457964849634958
|
||||
FaceMaterialIds: Count 124. Hash: 2372486708814455910
|
||||
|
||||
Node Name: lodtest_lod1_2
|
||||
@@ -107,7 +107,7 @@ Node Path: RootNode.lodtest_lod1.lodtest_lod1_1_optimized
|
||||
Node Type: MeshData
|
||||
Positions: Count 192. Hash: 7921557352486854444
|
||||
Normals: Count 192. Hash: 1873340970602844856
|
||||
FaceList: Count 124. Hash: 18311637590974204568
|
||||
FaceList: Count 124. Hash: 7602933716150163115
|
||||
FaceMaterialIds: Count 124. Hash: 2372486708814455910
|
||||
|
||||
Node Name: transform
|
||||
@@ -641,14 +641,14 @@ Node Type: MaterialData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.lodtest_lod1.lodtest_lod1_1.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 192. Hash: 11165448242141781141
|
||||
Tangents: Count 192. Hash: 13347865366302598201
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.lodtest_lod1.lodtest_lod1_1.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 192. Hash: 7987814487334449536
|
||||
Bitangents: Count 192. Hash: 11177881960262055002
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
@@ -705,14 +705,14 @@ Node Type: MeshVertexUVData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.lodtest_lod1.lodtest_lod1_1_optimized.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 192. Hash: 7293001660047850407
|
||||
Tangents: Count 192. Hash: 13256424469303674766
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.lodtest_lod1.lodtest_lod1_1_optimized.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 192. Hash: 2874689498270494796
|
||||
Bitangents: Count 192. Hash: 12542581737782433115
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
|
||||
+6
-6
@@ -424,7 +424,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="3728991722746136013" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="8546457964849634958" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -492,7 +492,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="18311637590974204568" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="7602933716150163115" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -1729,7 +1729,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="11165448242141781141" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="13347865366302598201" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -1760,7 +1760,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="7987814487334449536" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="11177881960262055002" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -1891,7 +1891,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="7293001660047850407" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="13256424469303674766" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -1922,7 +1922,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="2874689498270494796" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="12542581737782433115" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
|
||||
+6
-6
@@ -15,7 +15,7 @@ Node Path: RootNode.Cone.Cone_1
|
||||
Node Type: MeshData
|
||||
Positions: Count 128. Hash: 7714223793259938211
|
||||
Normals: Count 128. Hash: 2352668179264002707
|
||||
FaceList: Count 62. Hash: 14563017593520122982
|
||||
FaceList: Count 62. Hash: 9996709738915796379
|
||||
FaceMaterialIds: Count 62. Hash: 12234218120113875284
|
||||
|
||||
Node Name: Cone_2
|
||||
@@ -32,7 +32,7 @@ Node Path: RootNode.Cone.Cone_1_optimized
|
||||
Node Type: MeshData
|
||||
Positions: Count 128. Hash: 10174710861731544050
|
||||
Normals: Count 128. Hash: 2352668179264002707
|
||||
FaceList: Count 62. Hash: 11332459830831720586
|
||||
FaceList: Count 62. Hash: 16809217014760075539
|
||||
FaceMaterialIds: Count 62. Hash: 12234218120113875284
|
||||
|
||||
Node Name: Cube_phys_1
|
||||
@@ -100,14 +100,14 @@ Node Type: MaterialData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 128. Hash: 14351734474754285313
|
||||
Tangents: Count 128. Hash: 913385441694195840
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 128. Hash: 15997251922861304891
|
||||
Bitangents: Count 128. Hash: 16763868708150748964
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
@@ -164,14 +164,14 @@ Node Type: MeshVertexUVData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1_optimized.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 128. Hash: 12937806066914201637
|
||||
Tangents: Count 128. Hash: 11496565252852403390
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1_optimized.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 128. Hash: 873786942732834087
|
||||
Bitangents: Count 128. Hash: 6810649909977646014
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
|
||||
+6
-6
@@ -55,7 +55,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="14563017593520122982" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="9996709738915796379" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -123,7 +123,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="11332459830831720586" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="16809217014760075539" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -309,7 +309,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="14351734474754285313" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="913385441694195840" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -340,7 +340,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="15997251922861304891" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="16763868708150748964" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -471,7 +471,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="12937806066914201637" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="11496565252852403390" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -502,7 +502,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="873786942732834087" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="6810649909977646014" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
|
||||
+6
-6
@@ -40,7 +40,7 @@ Node Path: RootNode.Cone.Cone_1
|
||||
Node Type: MeshData
|
||||
Positions: Count 128. Hash: 12506421592104186200
|
||||
Normals: Count 128. Hash: 367461522682321485
|
||||
FaceList: Count 62. Hash: 13208951979626973193
|
||||
FaceList: Count 62. Hash: 5910399941817424750
|
||||
FaceMaterialIds: Count 62. Hash: 15454348664434923102
|
||||
|
||||
Node Name: Cone_2
|
||||
@@ -57,7 +57,7 @@ Node Path: RootNode.Cone.Cone_1_optimized
|
||||
Node Type: MeshData
|
||||
Positions: Count 128. Hash: 14946490408303214595
|
||||
Normals: Count 128. Hash: 367461522682321485
|
||||
FaceList: Count 62. Hash: 11102693598481718079
|
||||
FaceList: Count 62. Hash: 17210030509394354449
|
||||
FaceMaterialIds: Count 62. Hash: 15454348664434923102
|
||||
|
||||
Node Name: transform
|
||||
@@ -389,14 +389,14 @@ Node Type: MaterialData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 128. Hash: 12695232913942738512
|
||||
Tangents: Count 128. Hash: 11574815809363656385
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 128. Hash: 9034210764777745751
|
||||
Bitangents: Count 128. Hash: 1026129762512670051
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
@@ -483,14 +483,14 @@ Node Type: MeshVertexUVData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1_optimized.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 128. Hash: 10740776669168782230
|
||||
Tangents: Count 128. Hash: 5198081677141836233
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cone.Cone_1_optimized.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 128. Hash: 6990068477421150065
|
||||
Bitangents: Count 128. Hash: 6948605204859680167
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
|
||||
+6
-6
@@ -178,7 +178,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="13208951979626973193" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="5910399941817424750" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -246,7 +246,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="11102693598481718079" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="17210030509394354449" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -957,7 +957,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="12695232913942738512" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="11574815809363656385" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -988,7 +988,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="9034210764777745751" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="1026129762512670051" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -1174,7 +1174,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="10740776669168782230" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="5198081677141836233" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -1205,7 +1205,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="6990068477421150065" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="6948605204859680167" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
|
||||
+6
-6
@@ -40,7 +40,7 @@ Node Path: RootNode.Cylinder.Cylinder_1
|
||||
Node Type: MeshData
|
||||
Positions: Count 192. Hash: 1283526254311745349
|
||||
Normals: Count 192. Hash: 1873340970602844856
|
||||
FaceList: Count 124. Hash: 3728991722746136013
|
||||
FaceList: Count 124. Hash: 8546457964849634958
|
||||
FaceMaterialIds: Count 124. Hash: 2372486708814455910
|
||||
|
||||
Node Name: Cylinder_2
|
||||
@@ -57,7 +57,7 @@ Node Path: RootNode.Cylinder.Cylinder_1_optimized
|
||||
Node Type: MeshData
|
||||
Positions: Count 192. Hash: 7921557352486854444
|
||||
Normals: Count 192. Hash: 1873340970602844856
|
||||
FaceList: Count 124. Hash: 18311637590974204568
|
||||
FaceList: Count 124. Hash: 7602933716150163115
|
||||
FaceMaterialIds: Count 124. Hash: 2372486708814455910
|
||||
|
||||
Node Name: transform
|
||||
@@ -269,14 +269,14 @@ Node Type: MaterialData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 192. Hash: 11165448242141781141
|
||||
Tangents: Count 192. Hash: 13347865366302598201
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 192. Hash: 7987814487334449536
|
||||
Bitangents: Count 192. Hash: 11177881960262055002
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
@@ -333,14 +333,14 @@ Node Type: MeshVertexUVData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1_optimized.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 192. Hash: 7293001660047850407
|
||||
Tangents: Count 192. Hash: 13256424469303674766
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1_optimized.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 192. Hash: 2874689498270494796
|
||||
Bitangents: Count 192. Hash: 12542581737782433115
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
|
||||
+6
-6
@@ -178,7 +178,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="3728991722746136013" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="8546457964849634958" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -246,7 +246,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="18311637590974204568" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="7602933716150163115" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -737,7 +737,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="11165448242141781141" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="13347865366302598201" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -768,7 +768,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="7987814487334449536" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="11177881960262055002" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -899,7 +899,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="7293001660047850407" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="13256424469303674766" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -930,7 +930,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="2874689498270494796" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="12542581737782433115" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
|
||||
+6
-6
@@ -40,7 +40,7 @@ Node Path: RootNode.Cylinder.Cylinder_1
|
||||
Node Type: MeshData
|
||||
Positions: Count 192. Hash: 1283526254311745349
|
||||
Normals: Count 192. Hash: 1873340970602844856
|
||||
FaceList: Count 124. Hash: 3728991722746136013
|
||||
FaceList: Count 124. Hash: 8546457964849634958
|
||||
FaceMaterialIds: Count 124. Hash: 2372486708814455910
|
||||
|
||||
Node Name: Cylinder_2
|
||||
@@ -57,7 +57,7 @@ Node Path: RootNode.Cylinder.Cylinder_1_optimized
|
||||
Node Type: MeshData
|
||||
Positions: Count 192. Hash: 7921557352486854444
|
||||
Normals: Count 192. Hash: 1873340970602844856
|
||||
FaceList: Count 124. Hash: 18311637590974204568
|
||||
FaceList: Count 124. Hash: 7602933716150163115
|
||||
FaceMaterialIds: Count 124. Hash: 2372486708814455910
|
||||
|
||||
Node Name: transform
|
||||
@@ -269,14 +269,14 @@ Node Type: MaterialData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 192. Hash: 11165448242141781141
|
||||
Tangents: Count 192. Hash: 13347865366302598201
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 192. Hash: 7987814487334449536
|
||||
Bitangents: Count 192. Hash: 11177881960262055002
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
@@ -333,14 +333,14 @@ Node Type: MeshVertexUVData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1_optimized.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 192. Hash: 7293001660047850407
|
||||
Tangents: Count 192. Hash: 13256424469303674766
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1_optimized.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 192. Hash: 2874689498270494796
|
||||
Bitangents: Count 192. Hash: 12542581737782433115
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
|
||||
+6
-6
@@ -178,7 +178,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="3728991722746136013" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="8546457964849634958" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -246,7 +246,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="18311637590974204568" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="7602933716150163115" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -737,7 +737,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="11165448242141781141" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="13347865366302598201" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -768,7 +768,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="7987814487334449536" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="11177881960262055002" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -899,7 +899,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="7293001660047850407" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="13256424469303674766" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -930,7 +930,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="2874689498270494796" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="12542581737782433115" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
|
||||
+3
-3
@@ -40,7 +40,7 @@ Node Path: RootNode.Cylinder.Cylinder_1
|
||||
Node Type: MeshData
|
||||
Positions: Count 192. Hash: 1283526254311745349
|
||||
Normals: Count 192. Hash: 1873340970602844856
|
||||
FaceList: Count 124. Hash: 3728991722746136013
|
||||
FaceList: Count 124. Hash: 8546457964849634958
|
||||
FaceMaterialIds: Count 124. Hash: 2372486708814455910
|
||||
|
||||
Node Name: Cylinder_2
|
||||
@@ -261,14 +261,14 @@ Node Type: MaterialData
|
||||
Node Name: TangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1.TangentSet_0
|
||||
Node Type: MeshVertexTangentData
|
||||
Tangents: Count 192. Hash: 11165448242141781141
|
||||
Tangents: Count 192. Hash: 13347865366302598201
|
||||
GenerationMethod: 1
|
||||
SetIndex: 0
|
||||
|
||||
Node Name: BitangentSet_0
|
||||
Node Path: RootNode.Cylinder.Cylinder_1.BitangentSet_0
|
||||
Node Type: MeshVertexBitangentData
|
||||
Bitangents: Count 192. Hash: 7987814487334449536
|
||||
Bitangents: Count 192. Hash: 11177881960262055002
|
||||
GenerationMethod: 1
|
||||
|
||||
Node Name: transform
|
||||
|
||||
+3
-3
@@ -178,7 +178,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="FaceList - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="3728991722746136013" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="8546457964849634958" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -682,7 +682,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Tangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="11165448242141781141" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="13347865366302598201" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
@@ -713,7 +713,7 @@
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
<Class name="AZStd::string" field="value1" value="Bitangents - Hash" type="{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}"/>
|
||||
<Class name="any" field="value2" type="{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}">
|
||||
<Class name="AZ::u64" field="m_data" value="7987814487334449536" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
<Class name="AZ::u64" field="m_data" value="11177881960262055002" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class name="AZStd::pair" field="element" type="{48BF1FCF-92A6-52E1-A543-F0B96702B0E2}">
|
||||
|
||||
@@ -143,7 +143,8 @@ bool CImageUtil::LoadPGM(const QString& fileName, CImageEx& image)
|
||||
fseek(file, 0, SEEK_SET);
|
||||
|
||||
char* str = new char[fileSize];
|
||||
fread(str, fileSize, 1, file);
|
||||
|
||||
[[maybe_unused]] auto bytesRead = fread(str, fileSize, 1, file);
|
||||
|
||||
[[maybe_unused]] char* nextToken = nullptr;
|
||||
token = azstrtok(str, 0, seps, &nextToken);
|
||||
|
||||
@@ -136,7 +136,7 @@ namespace AZ::CommonOnDemandReflections
|
||||
->template Constructor<typename ContainerType::value_type*>()
|
||||
->Attribute(AZ::Script::Attributes::ConstructorOverride, &OnDemandLuaFunctions::ConstructStringView<ContainerType::value_type, ContainerType::traits_type>)
|
||||
->Attribute(AZ::Script::Attributes::ReaderWriterOverride, ScriptContext::CustomReaderWriter(&OnDemandLuaFunctions::StringTypeToLua<ContainerType>, &OnDemandLuaFunctions::StringTypeFromLua<ContainerType>))
|
||||
->Method("ToString", [](const ContainerType& stringView) { return static_cast<AZStd::string>(stringView).c_str(); }, { { { "Reference", "String view object being converted to string" } } })
|
||||
->Method("ToString", [](const ContainerType& stringView) { return stringView.data(); }, { { { "Reference", "String view object being converted to string" } } })
|
||||
->Attribute(AZ::Script::Attributes::ToolTip, "Converts string_view to string")
|
||||
->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString)
|
||||
->template WrappingMember<const char*>(&ContainerType::data)
|
||||
|
||||
@@ -69,9 +69,11 @@ namespace UnitTest
|
||||
// Note that ConvertToAbsolutePath will perform a realpath on the result. The result of AZ::Utils::GetExecutableDirectory
|
||||
// uses AZ::Android::AndroidEnv::Get()->GetAppPrivateStoragePath() which will retrieve the storage path, but that path could
|
||||
// be symlinked, so we need to perform a real path on it before comparison
|
||||
char realExecutableDirectory[AZ::IO::MaxPathLength];
|
||||
ASSERT_TRUE(realpath(executableDirectory, realExecutableDirectory));
|
||||
|
||||
char* realExecutableDirectory = realpath(executableDirectory, nullptr);
|
||||
ASSERT_NE(realExecutableDirectory, nullptr);
|
||||
|
||||
EXPECT_STRCASEEQ(realExecutableDirectory, absolutePath->c_str());
|
||||
|
||||
free(realExecutableDirectory);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -383,7 +383,7 @@ namespace AZ::IO::ZipDir
|
||||
if (!AZ::IO::FileIOBase::GetDirectInstance()->Write(m_fileHandle, ptr, sizeToWrite))
|
||||
{
|
||||
char error[1024];
|
||||
azstrerror_s(error, AZ_ARRAY_SIZE(error), errno);
|
||||
[[maybe_unused]] auto azStrErrorResult = azstrerror_s(error, AZ_ARRAY_SIZE(error), errno);
|
||||
AZ_Warning("Archive", false, "Cannot write to zip file!! error = (%d): %s", errno, error);
|
||||
return ZD_ERROR_IO_FAILED;
|
||||
}
|
||||
@@ -531,7 +531,7 @@ namespace AZ::IO::ZipDir
|
||||
if (!WriteCompressedData((uint8_t*)pUncompressed, nSegmentSize, encrypt))
|
||||
{
|
||||
char error[1024];
|
||||
azstrerror_s(error, AZ_ARRAY_SIZE(error), errno);
|
||||
[[maybe_unused]] auto azStrErrorResult = azstrerror_s(error, AZ_ARRAY_SIZE(error), errno);
|
||||
AZ_Warning("Archive", false, "Cannot write to zip file!! error = (%d): %s", errno, error);
|
||||
return ZD_ERROR_IO_FAILED;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,19 @@ namespace AzFramework::SurfaceData
|
||||
{
|
||||
}
|
||||
|
||||
//! Equality comparison operator for SurfaceTagWeight.
|
||||
bool operator==(const SurfaceTagWeight& rhs) const
|
||||
{
|
||||
return (m_surfaceType == rhs.m_surfaceType) && (m_weight == rhs.m_weight);
|
||||
}
|
||||
|
||||
//! Inequality comparison operator for SurfaceTagWeight.
|
||||
bool operator!=(const SurfaceTagWeight& rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
|
||||
AZ::Crc32 m_surfaceType = AZ::Crc32(Constants::s_unassignedTagName);
|
||||
float m_weight = 0.0f; //! A Value in the range [0.0f .. 1.0f]
|
||||
|
||||
|
||||
+9
-5
@@ -120,7 +120,7 @@ namespace AzFramework
|
||||
int res = chdir(processLaunchInfo.m_workingDirectory.c_str());
|
||||
if (res != 0)
|
||||
{
|
||||
write(errorPipe[1], &errno, sizeof(int));
|
||||
[[maybe_unused]] auto writeResult = write(errorPipe[1], &errno, sizeof(int));
|
||||
// We *have* to _exit as we are the child process and simply
|
||||
// returning at this point would mean we would start running
|
||||
// the code from our parent process and that will just wreck
|
||||
@@ -132,15 +132,19 @@ namespace AzFramework
|
||||
switch (processLaunchInfo.m_processPriority)
|
||||
{
|
||||
case PROCESSPRIORITY_BELOWNORMAL:
|
||||
nice(1);
|
||||
{
|
||||
[[maybe_unused]] auto niceResult = nice(1);
|
||||
// also reduce disk impact:
|
||||
// setiopolicy_np(IOPOL_TYPE_DISK, IOPOL_SCOPE_PROCESS, IOPOL_UTILITY);
|
||||
break;
|
||||
}
|
||||
case PROCESSPRIORITY_IDLE:
|
||||
nice(20);
|
||||
{
|
||||
[[maybe_unused]] auto niceResult = nice(20);
|
||||
// also reduce disk impact:
|
||||
// setiopolicy_np(IOPOL_TYPE_DISK, IOPOL_SCOPE_PROCESS, IOPOL_THROTTLE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
startupInfo.SetupHandlesForChildProcess();
|
||||
@@ -153,7 +157,7 @@ namespace AzFramework
|
||||
// to stop it from continuing to run as a clone of the parent.
|
||||
// Communicate the error code back to the parent via a pipe for the
|
||||
// parent to read.
|
||||
write(errorPipe[1], &errval, sizeof(errval));
|
||||
[[maybe_unused]] auto writeResult = write(errorPipe[1], &errval, sizeof(errval));
|
||||
|
||||
_exit(0);
|
||||
}
|
||||
@@ -317,7 +321,7 @@ namespace AzFramework
|
||||
|
||||
// Set up a pipe to communicate the error code from the subprocess's execvpe call
|
||||
AZStd::array<int, 2> childErrorPipeFds{};
|
||||
pipe(childErrorPipeFds.data());
|
||||
[[maybe_unused]] auto pipeResult = pipe(childErrorPipeFds.data());
|
||||
|
||||
// This configures the write end of the pipe to close on calls to `exec`
|
||||
fcntl(childErrorPipeFds[1], F_SETFD, fcntl(childErrorPipeFds[1], F_GETFD) | FD_CLOEXEC);
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ namespace AzNetworking
|
||||
const char* GetNetworkErrorDesc(int32_t errorCode)
|
||||
{
|
||||
static AZ_THREAD_LOCAL char buffer[1024];
|
||||
strerror_r(errorCode, buffer, sizeof(buffer));
|
||||
[[maybe_unused]] auto strErrorResult = strerror_r(errorCode, buffer, sizeof(buffer));
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ namespace AzToolsFramework::Prefab
|
||||
SetInstanceContainersOpenState(m_rootAliasFocusPath, false);
|
||||
|
||||
const RootAliasPath previousContainerRootAliasPath = m_rootAliasFocusPath;
|
||||
const InstanceOptionalConstReference previousFocusedInstance = GetInstanceReference(previousContainerRootAliasPath);
|
||||
const InstanceOptionalReference previousFocusedInstance = GetInstanceReference(previousContainerRootAliasPath);
|
||||
|
||||
m_rootAliasFocusPath = focusedInstance->get().GetAbsoluteInstanceAliasPath();
|
||||
m_focusedTemplateId = focusedInstance->get().GetTemplateId();
|
||||
@@ -277,7 +277,7 @@ namespace AzToolsFramework::Prefab
|
||||
|
||||
AZ::EntityId PrefabFocusHandler::GetFocusedPrefabContainerEntityId([[maybe_unused]] AzFramework::EntityContextId entityContextId) const
|
||||
{
|
||||
if (const InstanceOptionalConstReference instance = GetInstanceReference(m_rootAliasFocusPath); instance.has_value())
|
||||
if (const InstanceOptionalReference instance = GetInstanceReference(m_rootAliasFocusPath); instance.has_value())
|
||||
{
|
||||
return instance->get().GetContainerEntityId();
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace AzTestRunner
|
||||
{
|
||||
void set_quiet_mode()
|
||||
{
|
||||
freopen("/dev/null", "a", stdout);
|
||||
[[maybe_unused]] auto freopenResult = freopen("/dev/null", "a", stdout);
|
||||
}
|
||||
|
||||
const char* get_current_working_directory()
|
||||
@@ -24,7 +24,7 @@ namespace AzTestRunner
|
||||
|
||||
void pause_on_completion()
|
||||
{
|
||||
system("pause");
|
||||
[[maybe_unused]] auto systemResult = system("pause");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -115,22 +115,22 @@ namespace AZ
|
||||
const aiMesh* mesh = scene->mMeshes[currentNode->mMeshes[sdkMeshIndex]];
|
||||
if(mesh->mTextureCoords[texCoordIndex])
|
||||
{
|
||||
if (mesh->mTextureCoordsNames[texCoordIndex].length > 0)
|
||||
if (mesh->HasTextureCoordsName(texCoordIndex))
|
||||
{
|
||||
if (!customNameFound)
|
||||
{
|
||||
name = mesh->mTextureCoordsNames[texCoordIndex].C_Str();
|
||||
name = mesh->GetTextureCoordsName(texCoordIndex)->C_Str();
|
||||
customNameFound = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
AZ_Warning(Utilities::WarningWindow,
|
||||
strcmp(name.c_str(), mesh->mTextureCoordsNames[texCoordIndex].C_Str()) == 0,
|
||||
strcmp(name.c_str(), mesh->GetTextureCoordsName(texCoordIndex)->C_Str()) == 0,
|
||||
"Node %s has conflicting mesh coordinate names at index %d, %s and %s. Using %s.",
|
||||
currentNode->mName.C_Str(),
|
||||
texCoordIndex,
|
||||
name.c_str(),
|
||||
mesh->mTextureCoordsNames[texCoordIndex].C_Str(),
|
||||
mesh->GetTextureCoordsName(texCoordIndex)->C_Str(),
|
||||
name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,33 +8,41 @@
|
||||
"Name": "UserInterface_Compressed",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "R8G8B8A8",
|
||||
"SourceColor": "Linear",
|
||||
"DestColor": "Linear"
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"PlatformsPresets": {
|
||||
"android": {
|
||||
"UUID": "{2828FBFE-BDF9-45A7-9370-F93822719CCF}",
|
||||
"Name": "UserInterface_Compressed",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "ASTC_4x4"
|
||||
"PixelFormat": "ASTC_4x4",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"ios": {
|
||||
"UUID": "{2828FBFE-BDF9-45A7-9370-F93822719CCF}",
|
||||
"Name": "UserInterface_Compressed",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "ASTC_6x6"
|
||||
"PixelFormat": "ASTC_6x6",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"mac": {
|
||||
"UUID": "{2828FBFE-BDF9-45A7-9370-F93822719CCF}",
|
||||
"Name": "UserInterface_Compressed",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "BC1"
|
||||
"PixelFormat": "BC1",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"provo": {
|
||||
"UUID": "{2828FBFE-BDF9-45A7-9370-F93822719CCF}",
|
||||
"Name": "UserInterface_Compressed",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "BC1"
|
||||
"PixelFormat": "BC1",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,33 +8,41 @@
|
||||
"Name": "UserInterface_Lossless",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "R8G8B8A8",
|
||||
"SourceColor": "Linear",
|
||||
"DestColor": "Linear"
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"PlatformsPresets": {
|
||||
"android": {
|
||||
"UUID": "{83003128-F63E-422B-AEC2-68F0A947225F}",
|
||||
"Name": "UserInterface_Lossless",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "R8G8B8A8"
|
||||
"PixelFormat": "R8G8B8A8",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"ios": {
|
||||
"UUID": "{83003128-F63E-422B-AEC2-68F0A947225F}",
|
||||
"Name": "UserInterface_Lossless",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "R8G8B8A8"
|
||||
"PixelFormat": "R8G8B8A8",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"mac": {
|
||||
"UUID": "{83003128-F63E-422B-AEC2-68F0A947225F}",
|
||||
"Name": "UserInterface_Lossless",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "R8G8B8A8"
|
||||
"PixelFormat": "R8G8B8A8",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
},
|
||||
"provo": {
|
||||
"UUID": "{83003128-F63E-422B-AEC2-68F0A947225F}",
|
||||
"Name": "UserInterface_Lossless",
|
||||
"SuppressEngineReduce": true,
|
||||
"PixelFormat": "R8G8B8A8"
|
||||
"PixelFormat": "R8G8B8A8",
|
||||
"SourceColor": "sRGB",
|
||||
"DestColor": "sRGB"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,8 +50,7 @@
|
||||
"FilePath": "Shaders/PostProcessing/SsaoCompute.shader"
|
||||
},
|
||||
"Make Fullscreen Pass": true,
|
||||
"PipelineViewTag": "MainCamera",
|
||||
"Use Async Compute": true
|
||||
"PipelineViewTag": "MainCamera"
|
||||
},
|
||||
"FallbackConnections": [
|
||||
{
|
||||
|
||||
@@ -177,10 +177,19 @@ namespace EMStudio
|
||||
m_rotateManipulators.ConfigureView(
|
||||
AzToolsFramework::RotationManipulatorRadius(), AzFramework::ViewportColors::XAxisColor, AzFramework::ViewportColors::YAxisColor,
|
||||
AzFramework::ViewportColors::ZAxisColor);
|
||||
m_rotateManipulators.InstallLeftMouseDownCallback(
|
||||
[this]([[maybe_unused]]const AzToolsFramework::AngularManipulator::Action& action)
|
||||
{
|
||||
const AZ::EntityId entityId = m_animViewportWidget->GetAnimViewportRenderer()->GetEntityId();
|
||||
AZ::TransformBus::EventResult(m_mouseDownStartTransform, entityId, &AZ::TransformBus::Events::GetLocalTM);
|
||||
});
|
||||
|
||||
m_rotateManipulators.InstallMouseMoveCallback(
|
||||
[this](const AzToolsFramework::AngularManipulator::Action& action)
|
||||
{
|
||||
OnManipulatorRotated(action.LocalOrientation());
|
||||
const AZ::EntityId entityId = m_animViewportWidget->GetAnimViewportRenderer()->GetEntityId();
|
||||
AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalRotationQuaternion,
|
||||
m_mouseDownStartTransform.GetRotation() * action.m_current.m_delta);
|
||||
});
|
||||
|
||||
// Setup the scale manipulator
|
||||
@@ -189,10 +198,21 @@ namespace EMStudio
|
||||
m_scaleManipulators.ConfigureView(
|
||||
AzToolsFramework::LinearManipulatorAxisLength(), AzFramework::ViewportColors::XAxisColor,
|
||||
AzFramework::ViewportColors::YAxisColor, AzFramework::ViewportColors::ZAxisColor);
|
||||
m_scaleManipulators.InstallAxisLeftMouseDownCallback(
|
||||
[this]([[maybe_unused]] const AzToolsFramework::LinearManipulator::Action& action)
|
||||
{
|
||||
const AZ::EntityId entityId = m_animViewportWidget->GetAnimViewportRenderer()->GetEntityId();
|
||||
AZ::TransformBus::EventResult(m_mouseDownStartTransform, entityId, &AZ::TransformBus::Events::GetLocalTM);
|
||||
});
|
||||
m_scaleManipulators.InstallAxisMouseMoveCallback(
|
||||
[this](const AzToolsFramework::LinearManipulator::Action& action)
|
||||
{
|
||||
OnManipulatorScaled(action.LocalScale(), action.LocalScaleOffset());
|
||||
// Since we are compulting a uniform scale, the delta scale should be the none-zero value from one of the three axis.
|
||||
const float deltaScale = action.m_current.m_localPositionOffset.GetMaxElement()
|
||||
+ action.m_current.m_localPositionOffset.GetMinElement();
|
||||
const AZ::EntityId entityId = m_animViewportWidget->GetAnimViewportRenderer()->GetEntityId();
|
||||
AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalUniformScale,
|
||||
m_mouseDownStartTransform.GetUniformScale() + deltaScale);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -259,33 +279,6 @@ namespace EMStudio
|
||||
AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalTranslation, position);
|
||||
}
|
||||
|
||||
void AtomRenderPlugin::OnManipulatorRotated(const AZ::Quaternion& rotation)
|
||||
{
|
||||
const AZ::EntityId entityId = m_animViewportWidget->GetAnimViewportRenderer()->GetEntityId();
|
||||
AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalRotationQuaternion, rotation);
|
||||
}
|
||||
|
||||
void AtomRenderPlugin::OnManipulatorScaled(
|
||||
const AZ::Vector3& scale, const AZ::Vector3& scaleOffset)
|
||||
{
|
||||
// Use the scaleOffset to determine which axis to use on the uniform scale.
|
||||
float localScale = 1.0f;
|
||||
if (scaleOffset.GetX() != 0.0f)
|
||||
{
|
||||
localScale = scale.GetX();
|
||||
}
|
||||
else if (scaleOffset.GetY() != 0.0f)
|
||||
{
|
||||
localScale = scale.GetY();
|
||||
}
|
||||
else if (scaleOffset.GetZ() != 0.0f)
|
||||
{
|
||||
localScale = scale.GetZ();
|
||||
}
|
||||
const AZ::EntityId entityId = m_animViewportWidget->GetAnimViewportRenderer()->GetEntityId();
|
||||
AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetLocalUniformScale, localScale);
|
||||
}
|
||||
|
||||
void AtomRenderPlugin::LoadRenderOptions()
|
||||
{
|
||||
AZStd::string renderOptionsFilename(GetManager()->GetAppDataFolder());
|
||||
|
||||
@@ -70,8 +70,6 @@ namespace EMStudio
|
||||
|
||||
void SetupManipulators();
|
||||
void OnManipulatorMoved(const AZ::Vector3& position);
|
||||
void OnManipulatorRotated(const AZ::Quaternion& rotation);
|
||||
void OnManipulatorScaled(const AZ::Vector3& scale, const AZ::Vector3& scaleOffset);
|
||||
|
||||
QWidget* m_innerWidget = nullptr;
|
||||
AnimViewportWidget* m_animViewportWidget = nullptr;
|
||||
@@ -82,6 +80,7 @@ namespace EMStudio
|
||||
AzToolsFramework::RotationManipulators m_rotateManipulators;
|
||||
AzToolsFramework::ScaleManipulators m_scaleManipulators;
|
||||
AZStd::shared_ptr<AzToolsFramework::ManipulatorManager> m_manipulatorManager;
|
||||
AZ::Transform m_mouseDownStartTransform;
|
||||
|
||||
MCORE_DEFINECOMMANDCALLBACK(ImportActorCallback);
|
||||
MCORE_DEFINECOMMANDCALLBACK(RemoveActorCallback);
|
||||
|
||||
+20
-21
@@ -282,8 +282,8 @@ namespace AMD
|
||||
TressFXTFXFileHeader header = {};
|
||||
|
||||
// read the header
|
||||
EI_Seek(ioObject, 0); // make sure the stream pos is at the beginning.
|
||||
EI_Read((void*)&header, sizeof(TressFXTFXFileHeader), ioObject);
|
||||
[[maybe_unused]] auto eiSeekResult = EI_Seek(ioObject, 0); // make sure the stream pos is at the beginning.
|
||||
[[maybe_unused]] auto eiReadResult = EI_Read((void*)&header, sizeof(TressFXTFXFileHeader), ioObject);
|
||||
|
||||
// If the tfx version is lower than the current major version, exit.
|
||||
if (header.version < AMD_TRESSFX_VERSION_MAJOR)
|
||||
@@ -317,8 +317,8 @@ namespace AMD
|
||||
m_positions.resize(m_numTotalVertices); // size of m_positions = number of total vertices * sizeo of each position vector.
|
||||
|
||||
// Read position data from the io stream.
|
||||
EI_Seek(ioObject, header.offsetVertexPosition);
|
||||
EI_Read((void*)m_positions.data(), numStrandsInFile * m_numVerticesPerStrand * sizeof(AMD::float4), ioObject); // note that the position data in io stream contains only guide hairs. If we call GenerateFollowHairs
|
||||
eiSeekResult = EI_Seek(ioObject, header.offsetVertexPosition);
|
||||
eiReadResult = EI_Read((void*)m_positions.data(), numStrandsInFile * m_numVerticesPerStrand * sizeof(AMD::float4), ioObject); // note that the position data in io stream contains only guide hairs. If we call GenerateFollowHairs
|
||||
// to generate follow hairs, m_positions will be re-allocated.
|
||||
|
||||
// We need to make up some strands to fill up the buffer because the number of strands from stream is not necessarily multile of thread size.
|
||||
@@ -335,11 +335,11 @@ namespace AMD
|
||||
}
|
||||
|
||||
// Read strand UVs
|
||||
EI_Seek(ioObject, header.offsetStrandUV);
|
||||
eiSeekResult = EI_Seek(ioObject, header.offsetStrandUV);
|
||||
m_strandUV.resize(m_numTotalStrands); // If we call GenerateFollowHairs to generate follow hairs,
|
||||
// m_strandUV will be re-allocated.
|
||||
|
||||
EI_Read((void*)m_strandUV.data(), numStrandsInFile * sizeof(AMD::float2), ioObject);
|
||||
eiReadResult = EI_Read((void*)m_strandUV.data(), numStrandsInFile * sizeof(AMD::float2), ioObject);
|
||||
|
||||
// Fill up the last empty space
|
||||
AMD::int32 indexLastStrand = (numStrandsInFile - 1);
|
||||
@@ -683,21 +683,21 @@ namespace AMD
|
||||
void TressFXAsset::GetBonesNames(FILE* ioObject, std::vector<std::string>& boneNames)
|
||||
{
|
||||
AMD::int32 numOfBones = 0;
|
||||
EI_Seek(ioObject, 0);
|
||||
EI_Read((void*)&numOfBones, sizeof(AMD::int32), ioObject);
|
||||
[[maybe_unused]] auto eiSeekResult = EI_Seek(ioObject, 0);
|
||||
[[maybe_unused]] auto eiReadResult = EI_Read((void*)&numOfBones, sizeof(AMD::int32), ioObject);
|
||||
|
||||
// boneNames.reserve(numOfBones);
|
||||
boneNames.resize(numOfBones);
|
||||
for (int i = 0; i < numOfBones; i++)
|
||||
{
|
||||
int boneIndex;
|
||||
EI_Read((char*)&boneIndex, sizeof(AMD::int32), ioObject);
|
||||
eiReadResult = EI_Read((char*)&boneIndex, sizeof(AMD::int32), ioObject);
|
||||
|
||||
AMD::int32 charLen = 0;
|
||||
EI_Read((char*)&charLen, sizeof(AMD::int32), ioObject); // character length includes null termination already.
|
||||
eiReadResult = EI_Read((char*)&charLen, sizeof(AMD::int32), ioObject); // character length includes null termination already.
|
||||
|
||||
char boneName[128];
|
||||
EI_Read(boneName, sizeof(char) * charLen, ioObject);
|
||||
eiReadResult = EI_Read(boneName, sizeof(char) * charLen, ioObject);
|
||||
boneName[charLen] = '\0'; // adding 0 termination to be on the safe side.
|
||||
boneNames[i] = std::string(boneName);
|
||||
}
|
||||
@@ -730,8 +730,8 @@ namespace AMD
|
||||
m_boneSkinningData.resize(0);
|
||||
|
||||
AMD::int32 numOfBones = 0;
|
||||
EI_Seek(ioObject, 0);
|
||||
EI_Read((void*)&numOfBones, sizeof(AMD::int32), ioObject);
|
||||
[[maybe_unused]] auto eiSeekResult = EI_Seek(ioObject, 0);
|
||||
[[maybe_unused]] auto eiReadResult = EI_Read((void*)&numOfBones, sizeof(AMD::int32), ioObject);
|
||||
|
||||
if (skeletonBoneIndices.size() != numOfBones)
|
||||
{
|
||||
@@ -742,18 +742,18 @@ namespace AMD
|
||||
for (int i = 0; i < numOfBones; i++)
|
||||
{
|
||||
int boneIndex;
|
||||
EI_Read((char*)&boneIndex, sizeof(AMD::int32), ioObject);
|
||||
eiReadResult = EI_Read((char*)&boneIndex, sizeof(AMD::int32), ioObject);
|
||||
|
||||
AMD::int32 charLen = 0;
|
||||
EI_Read((char*)&charLen, sizeof(AMD::int32), ioObject); // character length includes null termination already.
|
||||
eiReadResult = EI_Read((char*)&charLen, sizeof(AMD::int32), ioObject); // character length includes null termination already.
|
||||
|
||||
char boneName[128];
|
||||
EI_Read(boneName, sizeof(char) * charLen, ioObject);
|
||||
eiReadResult = EI_Read(boneName, sizeof(char) * charLen, ioObject);
|
||||
}
|
||||
|
||||
// Reading the number of strands
|
||||
AMD::int32 numOfStrandsInStream = 0;
|
||||
EI_Read((char*)&numOfStrandsInStream, sizeof(AMD::int32), ioObject);
|
||||
eiReadResult = EI_Read((char*)&numOfStrandsInStream, sizeof(AMD::int32), ioObject);
|
||||
|
||||
//If the number of strands from the input stream (tfxbone) is bigger than what we already know from tfx, something is wrong.
|
||||
if (m_numGuideStrands < numOfStrandsInStream)
|
||||
@@ -765,15 +765,15 @@ namespace AMD
|
||||
for (int i = 0; i < numOfStrandsInStream; ++i)
|
||||
{
|
||||
AMD::int32 index = 0; // Well, we don't really use this here.
|
||||
EI_Read((char*)&index, sizeof(AMD::int32), ioObject);
|
||||
eiReadResult = EI_Read((char*)&index, sizeof(AMD::int32), ioObject);
|
||||
|
||||
for (AMD::int32 j = 0; j < TRESSFX_MAX_INFLUENTIAL_BONE_COUNT; ++j)
|
||||
{
|
||||
AMD::int32 boneIndex;
|
||||
EI_Read((char*)&boneIndex, sizeof(AMD::int32), ioObject);
|
||||
eiReadResult = EI_Read((char*)&boneIndex, sizeof(AMD::int32), ioObject);
|
||||
assert(boneIndex >= 0);
|
||||
skinData.boneIndex[j] = (float)skeletonBoneIndices[boneIndex]; // Change the joint index to be what the engine wants
|
||||
EI_Read((char*)&skinData.weight[j], sizeof(AMD::real32), ioObject);
|
||||
eiReadResult = EI_Read((char*)&skinData.weight[j], sizeof(AMD::real32), ioObject);
|
||||
}
|
||||
|
||||
#if defined(AZ_ENABLE_TRACING)
|
||||
@@ -987,4 +987,3 @@ namespace AMD
|
||||
return true;
|
||||
}
|
||||
} // namespace AMD
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ namespace GradientSignal
|
||||
const float value = m_gradientSampler.GetValue(sampleParams);
|
||||
if (value >= m_configuration.m_thresholdMin && value <= m_configuration.m_thresholdMax)
|
||||
{
|
||||
weights.AddSurfaceWeightsIfGreater(m_configuration.m_modifierTags, value);
|
||||
weights.AddSurfaceTagWeights(m_configuration.m_modifierTags, value);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+397
-1141
File diff suppressed because it is too large
Load Diff
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f974fa29f3542311ee6a4b6fbb92047186c3124b3bd6f88b728646bf9d686c45
|
||||
size 39099
|
||||
@@ -99,57 +99,49 @@ endif()
|
||||
################################################################################
|
||||
# See if globally, tests are supported
|
||||
if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
# We globally support tests, see if we support tests on this platform for MotionMatching.Static
|
||||
if(PAL_TRAIT_MOTIONMATCHING_TEST_SUPPORTED)
|
||||
# We support MotionMatching.Tests on this platform, add MotionMatching.Tests target which depends on MotionMatching.Static
|
||||
ly_add_target(
|
||||
NAME MotionMatching.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
motionmatching_files.cmake
|
||||
motionmatching_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
Source
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzTest
|
||||
AZ::AzFramework
|
||||
Gem::EMotionFX.Tests.Static
|
||||
Gem::MotionMatching.Static
|
||||
)
|
||||
ly_add_target(
|
||||
NAME MotionMatching.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
motionmatching_files.cmake
|
||||
motionmatching_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
Source
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzTest
|
||||
AZ::AzFramework
|
||||
Gem::EMotionFX.Tests.Static
|
||||
Gem::MotionMatching.Static
|
||||
)
|
||||
|
||||
# Add MotionMatching.Tests to googletest
|
||||
ly_add_googletest(
|
||||
NAME Gem::MotionMatching.Tests
|
||||
)
|
||||
endif()
|
||||
|
||||
# If we are a host platform we want to add tools test like editor tests here
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
# We are a host platform, see if Editor tests are supported on this platform
|
||||
if(PAL_TRAIT_MOTIONMATCHING_EDITOR_TEST_SUPPORTED)
|
||||
# We support MotionMatching.Editor.Tests on this platform, add MotionMatching.Editor.Tests target which depends on MotionMatching.Editor
|
||||
ly_add_target(
|
||||
NAME MotionMatching.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
motionmatching_editor_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
Source
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzTest
|
||||
Gem::MotionMatching.Editor
|
||||
)
|
||||
|
||||
# Add MotionMatching.Editor.Tests to googletest
|
||||
ly_add_googletest(
|
||||
NAME Gem::MotionMatching.Editor.Tests
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
# Add MotionMatching.Tests to googletest
|
||||
ly_add_googletest(
|
||||
NAME Gem::MotionMatching.Tests
|
||||
)
|
||||
endif()
|
||||
|
||||
# If we are a host platform we want to add tools test like editor tests here
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME MotionMatching.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
motionmatching_editor_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Tests
|
||||
Source
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzTest
|
||||
Gem::MotionMatching.Editor
|
||||
)
|
||||
|
||||
# Add MotionMatching.Editor.Tests to googletest
|
||||
ly_add_googletest(
|
||||
NAME Gem::MotionMatching.Editor.Tests
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -11,8 +11,20 @@
|
||||
#include <AzCore/EBus/EBus.h>
|
||||
#include <AzCore/Interface/Interface.h>
|
||||
|
||||
#include <AzFramework/Entity/EntityDebugDisplayBus.h>
|
||||
|
||||
namespace EMotionFX::MotionMatching
|
||||
{
|
||||
class DebugDrawRequests
|
||||
: public AZ::EBusTraits
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(DebugDrawRequests, "{7BBA4249-EC00-445C-8A0C-4472841049C3}");
|
||||
|
||||
virtual void DebugDraw(AzFramework::DebugDisplayRequests& debugDisplay) = 0;
|
||||
};
|
||||
using DebugDrawRequestBus = AZ::EBus<DebugDrawRequests>;
|
||||
|
||||
class MotionMatchingRequests
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -297,8 +297,6 @@ namespace EMotionFX::MotionMatching
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::PushPerformanceHistogramValue, "Output", m_outputTimeInMs);
|
||||
#endif
|
||||
}
|
||||
|
||||
instance->DebugDraw();
|
||||
}
|
||||
|
||||
AZ::Crc32 BlendTreeMotionMatchNode::GetTrajectoryPathSettingsVisibility() const
|
||||
|
||||
@@ -16,10 +16,11 @@ namespace EMotionFX::MotionMatching
|
||||
|
||||
ImGuiMonitor::ImGuiMonitor()
|
||||
{
|
||||
m_performanceStats.m_name = "Performance Statistics";
|
||||
m_performanceStats.SetName("Performance Statistics");
|
||||
m_performanceStats.SetHistogramBinCount(500);
|
||||
|
||||
m_featureCosts.m_name = "Feature Costs";
|
||||
m_featureCosts.m_histogramContainerCount = 100;
|
||||
m_featureCosts.SetName("Feature Costs");
|
||||
m_featureCosts.SetHistogramBinCount(100);
|
||||
|
||||
ImGui::ImGuiUpdateListenerBus::Handler::BusConnect();
|
||||
ImGuiMonitorRequestBus::Handler::BusConnect();
|
||||
@@ -40,18 +41,40 @@ namespace EMotionFX::MotionMatching
|
||||
|
||||
if (ImGui::Begin("Motion Matching"))
|
||||
{
|
||||
if (ImGui::CollapsingHeader("Motion Database", ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed))
|
||||
{
|
||||
if (ImGui::BeginTable("MDB", 2))
|
||||
{
|
||||
ImGui::TableNextColumn(); ImGui::Text("Memory Usage: %.2f MB", m_frameDatabaseInfo.m_memoryUsedInBytes / 1024.0f / 1024.0f);
|
||||
ImGui::TableNextColumn(); ImGui::Text("Motion Data: %.0f minutes", m_frameDatabaseInfo.m_motionDataInSeconds / 60.0f);
|
||||
ImGui::TableNextColumn(); ImGui::Text("Num Frames: %zu", m_frameDatabaseInfo.m_numFrames);
|
||||
ImGui::TableNextColumn(); ImGui::Text("Num Motions: %zu", m_frameDatabaseInfo.m_numMotions);
|
||||
ImGui::EndTable();
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::CollapsingHeader("Feature Matrix", ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed))
|
||||
{
|
||||
ImGui::Text("Memory Usage: %.2f MB", m_featureMatrixMemoryUsageInBytes / 1024.0f / 1024.0f);
|
||||
ImGui::Text("Num Frames: %zu", m_featureMatrixNumFrames);
|
||||
ImGui::Text("Num Feature Components: %zu", m_featureMatrixNumComponents);
|
||||
if (ImGui::BeginTable("FM", 2))
|
||||
{
|
||||
ImGui::TableNextColumn(); ImGui::Text("Memory Usage: %.2f MB", m_featurMatrixInfo.m_memoryUsedInBytes / 1024.0f / 1024.0f);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TableNextColumn(); ImGui::Text("Num Frames: %zu", m_featurMatrixInfo.m_numFrames);
|
||||
ImGui::TableNextColumn(); ImGui::Text("Num Feature Components: %zu", m_featurMatrixInfo.m_numDimensions);
|
||||
ImGui::EndTable();
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::CollapsingHeader("Kd-Tree", ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed))
|
||||
{
|
||||
ImGui::Text("Memory Usage: %.2f MB", m_kdTreeMemoryUsageInBytes / 1024.0f / 1024.0f);
|
||||
ImGui::Text("Num Nodes: %zu", m_kdTreeNumNodes);
|
||||
ImGui::Text("Num Dimensions: %zu", m_kdTreeNumDimensions);
|
||||
if (ImGui::BeginTable("KDT", 2))
|
||||
{
|
||||
ImGui::TableNextColumn(); ImGui::Text("Memory Usage: %.2f MB", m_kdTreeInfo.m_memoryUsedInBytes / 1024.0f / 1024.0f);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TableNextColumn(); ImGui::Text("Num Nodes: %zu", m_kdTreeInfo.m_numNodes);
|
||||
ImGui::TableNextColumn(); ImGui::Text("Num Dimensions: %zu", m_kdTreeInfo.m_numDimensions);
|
||||
ImGui::EndTable();
|
||||
}
|
||||
}
|
||||
|
||||
m_performanceStats.OnImGuiUpdate();
|
||||
@@ -63,8 +86,8 @@ namespace EMotionFX::MotionMatching
|
||||
{
|
||||
if (ImGui::BeginMenu("Motion Matching"))
|
||||
{
|
||||
ImGui::MenuItem(m_performanceStats.m_name.c_str(), "", &m_performanceStats.m_show);
|
||||
ImGui::MenuItem(m_featureCosts.m_name.c_str(), "", &m_featureCosts.m_show);
|
||||
ImGui::MenuItem(m_performanceStats.GetName(), "", &m_performanceStats.m_show);
|
||||
ImGui::MenuItem(m_featureCosts.GetName(), "", &m_featureCosts.m_show);
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
}
|
||||
@@ -78,67 +101,6 @@ namespace EMotionFX::MotionMatching
|
||||
{
|
||||
m_featureCosts.PushHistogramValue(costName, value, color);
|
||||
}
|
||||
|
||||
void ImGuiMonitor::HistogramGroup::PushHistogramValue(const char* valueName, float value, const AZ::Color& color)
|
||||
{
|
||||
auto iterator = m_histogramIndexByName.find(valueName);
|
||||
if (iterator != m_histogramIndexByName.end())
|
||||
{
|
||||
ImGui::LYImGuiUtils::HistogramContainer& histogramContiner = m_histograms[iterator->second];
|
||||
histogramContiner.PushValue(value);
|
||||
histogramContiner.SetBarLineColor(ImColor(color.GetR(), color.GetG(), color.GetB(), color.GetA()));
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui::LYImGuiUtils::HistogramContainer newHistogram;
|
||||
newHistogram.Init(/*histogramName=*/valueName,
|
||||
/*containerCount=*/m_histogramContainerCount,
|
||||
/*viewType=*/ImGui::LYImGuiUtils::HistogramContainer::ViewType::Histogram,
|
||||
/*displayOverlays=*/true,
|
||||
/*min=*/0.0f,
|
||||
/*max=*/0.0f);
|
||||
|
||||
newHistogram.SetMoveDirection(ImGui::LYImGuiUtils::HistogramContainer::PushRightMoveLeft);
|
||||
newHistogram.PushValue(value);
|
||||
|
||||
m_histogramIndexByName[valueName] = m_histograms.size();
|
||||
m_histograms.push_back(newHistogram);
|
||||
}
|
||||
}
|
||||
|
||||
void ImGuiMonitor::HistogramGroup::OnImGuiUpdate()
|
||||
{
|
||||
if (!m_show)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (ImGui::CollapsingHeader(m_name.c_str(), ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed))
|
||||
{
|
||||
for (auto& histogram : m_histograms)
|
||||
{
|
||||
ImGui::BeginGroup();
|
||||
{
|
||||
histogram.Draw(ImGui::GetColumnWidth() - 70, s_histogramHeight);
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, IM_COL32(0,0,0,255));
|
||||
{
|
||||
const ImColor color = histogram.GetBarLineColor();
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, color.Value);
|
||||
{
|
||||
const AZStd::string valueString = AZStd::string::format("%.2f", histogram.GetLastValue());
|
||||
ImGui::Button(valueString.c_str());
|
||||
}
|
||||
ImGui::PopStyleColor();
|
||||
}
|
||||
ImGui::PopStyleColor();
|
||||
}
|
||||
ImGui::EndGroup();
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace EMotionFX::MotionMatching
|
||||
|
||||
#endif // IMGUI_ENABLED
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#include <imgui/imgui.h>
|
||||
#include <ImGuiBus.h>
|
||||
#include <ImGuiMonitorBus.h>
|
||||
#include <LYImGuiUtils/HistogramContainer.h>
|
||||
#include <LYImGuiUtils/HistogramGroup.h>
|
||||
|
||||
namespace EMotionFX::MotionMatching
|
||||
{
|
||||
@@ -43,41 +43,17 @@ namespace EMotionFX::MotionMatching
|
||||
void PushPerformanceHistogramValue(const char* performanceMetricName, float value) override;
|
||||
void PushCostHistogramValue(const char* costName, float value, const AZ::Color& color) override;
|
||||
|
||||
void SetFeatureMatrixMemoryUsage(size_t sizeInBytes) override { m_featureMatrixMemoryUsageInBytes = sizeInBytes; }
|
||||
void SetFeatureMatrixNumFrames(size_t numFrames) override { m_featureMatrixNumFrames = numFrames; }
|
||||
void SetFeatureMatrixNumComponents(size_t numFeatureComponents) override { m_featureMatrixNumComponents = numFeatureComponents; }
|
||||
|
||||
void SetKdTreeMemoryUsage(size_t sizeInBytes) override { m_kdTreeMemoryUsageInBytes = sizeInBytes; }
|
||||
void SetKdTreeNumNodes(size_t numNodes) override { m_kdTreeNumNodes = numNodes; }
|
||||
void SetKdTreeNumDimensions(size_t numDimensions) override { m_kdTreeNumDimensions = numDimensions; }
|
||||
void SetFrameDatabaseInfo(const ImGuiMonitorRequests::FrameDatabaseInfo& info) override { m_frameDatabaseInfo = info; }
|
||||
void SetFeatureMatrixInfo(const ImGuiMonitorRequests::FeatureMatrixInfo& info) override { m_featurMatrixInfo = info; }
|
||||
void SetKdTreeInfo(const ImGuiMonitorRequests::KdTreeInfo& info) override { m_kdTreeInfo = info; }
|
||||
|
||||
private:
|
||||
//! Named and sub-divided group containing several histograms.
|
||||
struct HistogramGroup
|
||||
{
|
||||
void OnImGuiUpdate();
|
||||
void PushHistogramValue(const char* valueName, float value, const AZ::Color& color);
|
||||
ImGui::LYImGuiUtils::HistogramGroup m_performanceStats;
|
||||
ImGui::LYImGuiUtils::HistogramGroup m_featureCosts;
|
||||
|
||||
bool m_show = true;
|
||||
AZStd::string m_name;
|
||||
using HistogramIndexByNames = AZStd::unordered_map<const char*, size_t>;
|
||||
HistogramIndexByNames m_histogramIndexByName;
|
||||
AZStd::vector<ImGui::LYImGuiUtils::HistogramContainer> m_histograms;
|
||||
int m_histogramContainerCount = 500;
|
||||
|
||||
static constexpr float s_histogramHeight = 95.0f;
|
||||
};
|
||||
|
||||
HistogramGroup m_performanceStats;
|
||||
HistogramGroup m_featureCosts;
|
||||
|
||||
size_t m_featureMatrixMemoryUsageInBytes = 0;
|
||||
size_t m_featureMatrixNumFrames = 0;
|
||||
size_t m_featureMatrixNumComponents = 0;
|
||||
|
||||
size_t m_kdTreeMemoryUsageInBytes = 0;
|
||||
size_t m_kdTreeNumNodes = 0;
|
||||
size_t m_kdTreeNumDimensions = 0;
|
||||
ImGuiMonitorRequests::FrameDatabaseInfo m_frameDatabaseInfo;
|
||||
ImGuiMonitorRequests::FeatureMatrixInfo m_featurMatrixInfo;
|
||||
ImGuiMonitorRequests::KdTreeInfo m_kdTreeInfo;
|
||||
};
|
||||
} // namespace EMotionFX::MotionMatching
|
||||
|
||||
|
||||
@@ -25,13 +25,30 @@ namespace EMotionFX::MotionMatching
|
||||
virtual void PushPerformanceHistogramValue(const char* performanceMetricName, float value) = 0;
|
||||
virtual void PushCostHistogramValue(const char* costName, float value, const AZ::Color& color) = 0;
|
||||
|
||||
virtual void SetFeatureMatrixMemoryUsage(size_t sizeInBytes) = 0;
|
||||
virtual void SetFeatureMatrixNumFrames(size_t numFrames) = 0;
|
||||
virtual void SetFeatureMatrixNumComponents(size_t numFeatureComponents) = 0;
|
||||
struct FrameDatabaseInfo
|
||||
{
|
||||
size_t m_memoryUsedInBytes = 0;
|
||||
size_t m_numFrames;
|
||||
size_t m_numMotions;
|
||||
float m_motionDataInSeconds;
|
||||
};
|
||||
virtual void SetFrameDatabaseInfo(const FrameDatabaseInfo& info) = 0;
|
||||
|
||||
virtual void SetKdTreeMemoryUsage(size_t sizeInBytes) = 0;
|
||||
virtual void SetKdTreeNumNodes(size_t numNodes) = 0;
|
||||
virtual void SetKdTreeNumDimensions(size_t numDimensions) = 0;
|
||||
struct FeatureMatrixInfo
|
||||
{
|
||||
size_t m_memoryUsedInBytes = 0;
|
||||
size_t m_numFrames = 0;
|
||||
size_t m_numDimensions = 0;
|
||||
};
|
||||
virtual void SetFeatureMatrixInfo(const FeatureMatrixInfo& info) = 0;
|
||||
|
||||
struct KdTreeInfo
|
||||
{
|
||||
size_t m_memoryUsedInBytes = 0;
|
||||
size_t m_numNodes = 0;
|
||||
size_t m_numDimensions = 0;
|
||||
};
|
||||
virtual void SetKdTreeInfo(const KdTreeInfo& info) = 0;
|
||||
};
|
||||
using ImGuiMonitorRequestBus = AZ::EBus<ImGuiMonitorRequests>;
|
||||
} // namespace EMotionFX::MotionMatching
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
#include <EMotionFX/Source/TransformData.h>
|
||||
#include <PoseDataJointVelocities.h>
|
||||
|
||||
#include <EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/RenderPlugin/ViewportPluginBus.h>
|
||||
|
||||
namespace EMotionFX::MotionMatching
|
||||
{
|
||||
AZ_CLASS_ALLOCATOR_IMPL(MotionMatchingInstance, MotionMatchAllocator, 0)
|
||||
|
||||
MotionMatchingInstance::~MotionMatchingInstance()
|
||||
{
|
||||
DebugDrawRequestBus::Handler::BusDisconnect();
|
||||
|
||||
if (m_motionInstance)
|
||||
{
|
||||
GetMotionInstancePool().Free(m_motionInstance);
|
||||
@@ -58,6 +58,8 @@ namespace EMotionFX::MotionMatching
|
||||
AZ_Assert(settings.m_actorInstance, "The actor instance cannot be a nullptr.");
|
||||
AZ_Assert(settings.m_data, "The motion match data cannot be nullptr.");
|
||||
|
||||
DebugDrawRequestBus::Handler::BusConnect();
|
||||
|
||||
// Update the cached pointer to the trajectory feature.
|
||||
const FeatureSchema& featureSchema = settings.m_data->GetFeatureSchema();
|
||||
for (Feature* feature : featureSchema.GetFeatures())
|
||||
@@ -69,29 +71,6 @@ namespace EMotionFX::MotionMatching
|
||||
}
|
||||
}
|
||||
|
||||
// Debug display initialization.
|
||||
const auto AddDebugDisplay = [=](AZ::s32 debugDisplayId)
|
||||
{
|
||||
if (debugDisplayId == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AzFramework::DebugDisplayRequestBus::BusPtr debugDisplayBus;
|
||||
AzFramework::DebugDisplayRequestBus::Bind(debugDisplayBus, debugDisplayId);
|
||||
|
||||
AzFramework::DebugDisplayRequests* debugDisplay = AzFramework::DebugDisplayRequestBus::FindFirstHandler(debugDisplayBus);
|
||||
if (debugDisplay)
|
||||
{
|
||||
m_debugDisplays.emplace_back(debugDisplay);
|
||||
}
|
||||
};
|
||||
// Draw the debug visualizations to the Animation Editor as well as the LY Editor viewport.
|
||||
AZ::s32 animationEditorViewportId = -1;
|
||||
EMStudio::ViewportPluginRequestBus::BroadcastResult(animationEditorViewportId, &EMStudio::ViewportPluginRequestBus::Events::GetViewportId);
|
||||
AddDebugDisplay(animationEditorViewportId);
|
||||
AddDebugDisplay(AzFramework::g_defaultSceneEntityDebugDisplayId);
|
||||
|
||||
m_actorInstance = settings.m_actorInstance;
|
||||
m_data = settings.m_data;
|
||||
if (settings.m_data->GetFrameDatabase().GetNumFrames() == 0)
|
||||
@@ -123,30 +102,17 @@ namespace EMotionFX::MotionMatching
|
||||
m_queryFeatureValues.resize(numValuesInKdTree);
|
||||
|
||||
// Initialize the trajectory history.
|
||||
size_t rootJointIndex = m_actorInstance->GetActor()->GetMotionExtractionNodeIndex();
|
||||
if (rootJointIndex == InvalidIndex32)
|
||||
if (m_cachedTrajectoryFeature)
|
||||
{
|
||||
rootJointIndex = 0;
|
||||
}
|
||||
m_trajectoryHistory.Init(*m_actorInstance->GetTransformData()->GetCurrentPose(),
|
||||
rootJointIndex,
|
||||
m_cachedTrajectoryFeature->GetFacingAxisDir(),
|
||||
m_trajectorySecsToTrack);
|
||||
}
|
||||
|
||||
void MotionMatchingInstance::DebugDraw()
|
||||
{
|
||||
if (m_data && !m_debugDisplays.empty())
|
||||
{
|
||||
for (AzFramework::DebugDisplayRequests* debugDisplay : m_debugDisplays)
|
||||
size_t rootJointIndex = m_actorInstance->GetActor()->GetMotionExtractionNodeIndex();
|
||||
if (rootJointIndex == InvalidIndex32)
|
||||
{
|
||||
if (debugDisplay)
|
||||
{
|
||||
const AZ::u32 prevState = debugDisplay->GetState();
|
||||
DebugDraw(*debugDisplay);
|
||||
debugDisplay->SetState(prevState);
|
||||
}
|
||||
rootJointIndex = 0;
|
||||
}
|
||||
m_trajectoryHistory.Init(*m_actorInstance->GetTransformData()->GetCurrentPose(),
|
||||
rootJointIndex,
|
||||
m_cachedTrajectoryFeature->GetFacingAxisDir(),
|
||||
m_trajectorySecsToTrack);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,7 +272,7 @@ namespace EMotionFX::MotionMatching
|
||||
{
|
||||
AZ_PROFILE_SCOPE(Animation, "MotionMatchingInstance::Update");
|
||||
|
||||
if (!m_data)
|
||||
if (!m_data || !m_motionInstance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -322,7 +288,7 @@ namespace EMotionFX::MotionMatching
|
||||
// Update the time. After this there is no sample for the updated time in the history as we're about to prepare this with the current update.
|
||||
m_trajectoryHistory.Update(timePassedInSeconds);
|
||||
|
||||
// Register the current actor instance position to the history data of the spline.
|
||||
// Update the trajectory query control points.
|
||||
m_trajectoryQuery.Update(m_actorInstance,
|
||||
m_cachedTrajectoryFeature,
|
||||
m_trajectoryHistory,
|
||||
@@ -371,8 +337,7 @@ namespace EMotionFX::MotionMatching
|
||||
SamplePose(m_motionInstance->GetMotion(), m_queryPose, newMotionTime);
|
||||
|
||||
// Copy over the motion extraction joint transform from the current pose to the newly sampled pose.
|
||||
// When sampling a motion, the motion extraction joint is in animation space, while we need the query pose to be in
|
||||
// world space.
|
||||
// When sampling a motion, the motion extraction joint is in animation space, while we need the query pose to be in world space.
|
||||
// Note: This does not yet take the extraction delta from the current tick into account.
|
||||
if (m_actorInstance->GetActor()->GetMotionExtractionNode())
|
||||
{
|
||||
@@ -433,16 +398,17 @@ namespace EMotionFX::MotionMatching
|
||||
// ImGui monitor
|
||||
{
|
||||
#ifdef IMGUI_ENABLED
|
||||
const KdTree& kdTree = m_data->GetKdTree();
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetKdTreeMemoryUsage, kdTree.CalcMemoryUsageInBytes());
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetKdTreeNumNodes, kdTree.GetNumNodes());
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetKdTreeNumDimensions, kdTree.GetNumDimensions());
|
||||
// TODO: add memory usage for frame database
|
||||
const FrameDatabase& frameDatabase = m_data->GetFrameDatabase();
|
||||
ImGuiMonitorRequests::FrameDatabaseInfo frameDatabaseInfo{frameDatabase.CalcMemoryUsageInBytes(), frameDatabase.GetNumFrames(), frameDatabase.GetNumUsedMotions(), frameDatabase.GetNumFrames() / (float)frameDatabase.GetSampleRate()};
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetFrameDatabaseInfo, frameDatabaseInfo);
|
||||
|
||||
const KdTree& kdTree = m_data->GetKdTree();
|
||||
ImGuiMonitorRequests::KdTreeInfo kdTreeInfo{kdTree.CalcMemoryUsageInBytes(), kdTree.GetNumNodes(), kdTree.GetNumDimensions()};
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetKdTreeInfo, kdTreeInfo);
|
||||
|
||||
const FeatureMatrix& featureMatrix = m_data->GetFeatureMatrix();
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetFeatureMatrixMemoryUsage, featureMatrix.CalcMemoryUsageInBytes());
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetFeatureMatrixNumFrames, featureMatrix.rows());
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetFeatureMatrixNumComponents, featureMatrix.cols());
|
||||
ImGuiMonitorRequests::FeatureMatrixInfo featureMatrixInfo{featureMatrix.CalcMemoryUsageInBytes(), static_cast<size_t>(featureMatrix.rows()), static_cast<size_t>(featureMatrix.cols())};
|
||||
ImGuiMonitorRequestBus::Broadcast(&ImGuiMonitorRequests::SetFeatureMatrixInfo, featureMatrixInfo);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <TrajectoryHistory.h>
|
||||
#include <TrajectoryQuery.h>
|
||||
|
||||
#include <MotionMatching/MotionMatchingBus.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
class ReflectContext;
|
||||
@@ -34,12 +36,17 @@ namespace EMotionFX::MotionMatching
|
||||
{
|
||||
class MotionMatchingData;
|
||||
|
||||
//! The instance is where everything comes together. It stores the trajectory history, the trajectory query along with the query vector, knows about the
|
||||
//! last lowest cost frame frame index and stores the time of the animation that the instance is currently playing. It is responsible for motion extraction,
|
||||
//! blending towards a new frame in the motion capture database in case the algorithm found a better matching frame and executes the actual search.
|
||||
class EMFX_API MotionMatchingInstance
|
||||
: public DebugDrawRequestBus::Handler
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(MotionMatchingInstance, "{1ED03AD8-0FB2-431B-AF01-02F7E930EB73}")
|
||||
AZ_CLASS_ALLOCATOR_DECL
|
||||
|
||||
MotionMatchingInstance() = default;
|
||||
virtual ~MotionMatchingInstance();
|
||||
|
||||
struct EMFX_API InitSettings
|
||||
@@ -49,8 +56,8 @@ namespace EMotionFX::MotionMatching
|
||||
};
|
||||
void Init(const InitSettings& settings);
|
||||
|
||||
void DebugDraw();
|
||||
void DebugDraw(AzFramework::DebugDisplayRequests& debugDisplay);
|
||||
// DebugDrawRequestBus::Handler overrides
|
||||
void DebugDraw(AzFramework::DebugDisplayRequests& debugDisplay) override;
|
||||
|
||||
void Update(float timePassedInSeconds, const AZ::Vector3& targetPos, const AZ::Vector3& targetFacingDir, TrajectoryQuery::EMode mode, float pathRadius, float pathSpeed);
|
||||
void PostUpdate(float timeDelta);
|
||||
@@ -64,10 +71,8 @@ namespace EMotionFX::MotionMatching
|
||||
void SetLowestCostSearchFrequency(float frequency) { m_lowestCostSearchFrequency = frequency; }
|
||||
float GetNewMotionTime() const { return m_newMotionTime; }
|
||||
|
||||
/**
|
||||
* Get the cached trajectory feature.
|
||||
* The trajectory feature is searched in the feature schema used in the current instance at init time.
|
||||
*/
|
||||
//! Get the cached trajectory feature.
|
||||
//! The trajectory feature is searched in the feature schema used in the current instance at init time.
|
||||
FeatureTrajectory* GetTrajectoryFeature() const { return m_cachedTrajectoryFeature; }
|
||||
const TrajectoryQuery& GetTrajectoryQuery() const { return m_trajectoryQuery; }
|
||||
const TrajectoryHistory& GetTrajectoryHistory() const { return m_trajectoryHistory; }
|
||||
@@ -90,10 +95,10 @@ namespace EMotionFX::MotionMatching
|
||||
Transform m_motionExtractionDelta = Transform::CreateIdentity();
|
||||
|
||||
/// Buffers used for the broad-phase KD-tree search.
|
||||
AZStd::vector<float> m_queryFeatureValues; /** The input query features to be compared to every entry/row in the feature matrix with the motion matching search. */
|
||||
AZStd::vector<size_t> m_nearestFrames; /** Stores the nearest matching frames / search result from the KD-tree. */
|
||||
AZStd::vector<float> m_queryFeatureValues; //< The input query features to be compared to every entry/row in the feature matrix with the motion matching search.
|
||||
AZStd::vector<size_t> m_nearestFrames; //< Stores the nearest matching frames / search result from the KD-tree.
|
||||
|
||||
FeatureTrajectory* m_cachedTrajectoryFeature = nullptr; /** Cached pointer to the trajectory feature in the feature schema. */
|
||||
FeatureTrajectory* m_cachedTrajectoryFeature = nullptr; //< Cached pointer to the trajectory feature in the feature schema.
|
||||
TrajectoryQuery m_trajectoryQuery;
|
||||
TrajectoryHistory m_trajectoryHistory;
|
||||
static constexpr float m_trajectorySecsToTrack = 5.0f;
|
||||
@@ -105,7 +110,7 @@ namespace EMotionFX::MotionMatching
|
||||
|
||||
bool m_blending = false;
|
||||
float m_blendWeight = 1.0f;
|
||||
float m_blendProgressTime = 0.0f; // How long are we already blending? In seconds.
|
||||
float m_blendProgressTime = 0.0f; //< How long are we already blending? In seconds.
|
||||
|
||||
/// Buffers used for FindLowestCostFrameIndex().
|
||||
AZStd::vector<float> m_tempCosts;
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
#include <Integration/EMotionFXBus.h>
|
||||
|
||||
#include <EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/RenderPlugin/ViewportPluginBus.h>
|
||||
|
||||
#include <BlendTreeMotionMatchNode.h>
|
||||
#include <Feature.h>
|
||||
#include <FeaturePosition.h>
|
||||
@@ -39,7 +41,7 @@ namespace EMotionFX::MotionMatching
|
||||
{
|
||||
ec->Class<MotionMatchingSystemComponent>("MotionMatching", "[Description of functionality provided by this System Component]")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System"))
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC_CE("System"))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
;
|
||||
}
|
||||
@@ -69,9 +71,9 @@ namespace EMotionFX::MotionMatching
|
||||
incompatible.push_back(AZ_CRC_CE("MotionMatchingService"));
|
||||
}
|
||||
|
||||
void MotionMatchingSystemComponent::GetRequiredServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& required)
|
||||
void MotionMatchingSystemComponent::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required)
|
||||
{
|
||||
required.push_back(AZ_CRC("EMotionFXAnimationService", 0x3f8a6369));
|
||||
required.push_back(AZ_CRC_CE("EMotionFXAnimationService"));
|
||||
}
|
||||
|
||||
void MotionMatchingSystemComponent::GetDependentServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& dependent)
|
||||
@@ -122,7 +124,33 @@ namespace EMotionFX::MotionMatching
|
||||
MotionMatchingRequestBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
void MotionMatchingSystemComponent::DebugDraw(AZ::s32 debugDisplayId)
|
||||
{
|
||||
AZ_PROFILE_SCOPE(Animation, "MotionMatchingSystemComponent::DebugDraw");
|
||||
|
||||
if (debugDisplayId == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AzFramework::DebugDisplayRequestBus::BusPtr debugDisplayBus;
|
||||
AzFramework::DebugDisplayRequestBus::Bind(debugDisplayBus, debugDisplayId);
|
||||
|
||||
AzFramework::DebugDisplayRequests* debugDisplay = AzFramework::DebugDisplayRequestBus::FindFirstHandler(debugDisplayBus);
|
||||
if (debugDisplay)
|
||||
{
|
||||
const AZ::u32 prevState = debugDisplay->GetState();
|
||||
EMotionFX::MotionMatching::DebugDrawRequestBus::Broadcast(&EMotionFX::MotionMatching::DebugDrawRequests::DebugDraw, *debugDisplay);
|
||||
debugDisplay->SetState(prevState);
|
||||
}
|
||||
}
|
||||
|
||||
void MotionMatchingSystemComponent::OnTick([[maybe_unused]] float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time)
|
||||
{
|
||||
// Draw the debug visualizations to the Animation Editor as well as the LY Editor viewport.
|
||||
AZ::s32 animationEditorViewportId = -1;
|
||||
EMStudio::ViewportPluginRequestBus::BroadcastResult(animationEditorViewportId, &EMStudio::ViewportPluginRequestBus::Events::GetViewportId);
|
||||
DebugDraw(animationEditorViewportId);
|
||||
DebugDraw(AzFramework::g_defaultSceneEntityDebugDisplayId);
|
||||
}
|
||||
} // namespace EMotionFX::MotionMatching
|
||||
|
||||
@@ -33,8 +33,7 @@ namespace EMotionFX::MotionMatching
|
||||
~MotionMatchingSystemComponent();
|
||||
|
||||
protected:
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// MotionMatchingRequestBus interface implementation
|
||||
void DebugDraw(AZ::s32 debugDisplayId);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// AZ::Component interface implementation
|
||||
@@ -45,6 +44,10 @@ namespace EMotionFX::MotionMatching
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// AZTickBus interface implementation
|
||||
int GetTickOrder() override
|
||||
{
|
||||
return AZ::TICK_PRE_RENDER;
|
||||
}
|
||||
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
};
|
||||
|
||||
@@ -24,9 +24,17 @@ namespace SurfaceData
|
||||
using SurfaceTagVector = AZStd::vector<SurfaceTag>;
|
||||
|
||||
//! SurfaceTagWeights stores a collection of surface tags and weights.
|
||||
//! A surface tag can only appear once in the collection. Attempting to add it multiple times will always preserve the
|
||||
//! highest weight value.
|
||||
class SurfaceTagWeights
|
||||
{
|
||||
public:
|
||||
//! The maximum number of surface weights that we can store.
|
||||
//! For performance reasons, we want to limit this so that we can preallocate the max size in advance.
|
||||
//! The current number is chosen to be higher than expected needs, but small enough to avoid being excessively wasteful.
|
||||
//! (Dynamic structures would end up taking more memory than what we're preallocating)
|
||||
static inline constexpr size_t MaxSurfaceWeights = 16;
|
||||
|
||||
SurfaceTagWeights() = default;
|
||||
|
||||
//! Construct a collection of SurfaceTagWeights from the given SurfaceTagWeightList.
|
||||
@@ -45,42 +53,68 @@ namespace SurfaceData
|
||||
//! @param weight - The weight to assign to each tag.
|
||||
void AssignSurfaceTagWeights(const SurfaceTagVector& tags, float weight);
|
||||
|
||||
//! Add a surface tag weight to this collection.
|
||||
//! @param tag - The surface tag.
|
||||
//! @param weight - The surface tag weight.
|
||||
void AddSurfaceTagWeight(const AZ::Crc32 tag, const float weight);
|
||||
|
||||
//! Replace the surface tag weight with the new one if it's higher, or add it if the tag isn't found.
|
||||
//! Add a surface tag weight to this collection. If the tag already exists, the higher weight will be preserved.
|
||||
//! (This method is intentionally inlined for its performance impact)
|
||||
//! @param tag - The surface tag.
|
||||
//! @param weight - The surface tag weight.
|
||||
void AddSurfaceWeightIfGreater(const AZ::Crc32 tag, const float weight)
|
||||
void AddSurfaceTagWeight(const AZ::Crc32 tag, const float weight)
|
||||
{
|
||||
const auto maskItr = m_weights.find(tag);
|
||||
const float previousValue = maskItr != m_weights.end() ? maskItr->second : 0.0f;
|
||||
m_weights[tag] = AZ::GetMax(weight, previousValue);
|
||||
}
|
||||
|
||||
//! Replace the surface tag weight with the new one if it's higher, or add it if the tag isn't found.
|
||||
//! (This method is intentionally inlined for its performance impact)
|
||||
//! @param tags - The surface tags to replace/add.
|
||||
//! @param weight - The surface tag weight to use for each tag.
|
||||
void AddSurfaceWeightsIfGreater(const SurfaceTagVector& tags, const float weight)
|
||||
{
|
||||
for (const auto& tag : tags)
|
||||
for (auto weightItr = m_weights.begin(); weightItr != m_weights.end(); ++weightItr)
|
||||
{
|
||||
AddSurfaceWeightIfGreater(tag, weight);
|
||||
// Since we need to scan for duplicate surface types, store the entries sorted by surface type so that we can
|
||||
// early-out once we pass the location for the entry instead of always searching every entry.
|
||||
if (weightItr->m_surfaceType > tag)
|
||||
{
|
||||
if (m_weights.size() != MaxSurfaceWeights)
|
||||
{
|
||||
// We didn't find the surface type, so add the new entry in sorted order.
|
||||
m_weights.insert(weightItr, { tag, weight });
|
||||
}
|
||||
else
|
||||
{
|
||||
AZ_Assert(false, "SurfaceTagWeights has reached max capacity, it cannot add a new tag / weight.");
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (weightItr->m_surfaceType == tag)
|
||||
{
|
||||
// We found the surface type, so just keep the higher of the two weights.
|
||||
weightItr->m_weight = AZ::GetMax(weight, weightItr->m_weight);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// We didn't find the surface weight, and the sort order for it is at the end, so add it to the back of the list.
|
||||
if (m_weights.size() != MaxSurfaceWeights)
|
||||
{
|
||||
m_weights.emplace_back(tag, weight);
|
||||
}
|
||||
else
|
||||
{
|
||||
AZ_Assert(false, "SurfaceTagWeights has reached max capacity, it cannot add a new tag / weight.");
|
||||
}
|
||||
}
|
||||
|
||||
//! Replace the surface tag weight with the new one if it's higher, or add it if the tag isn't found.
|
||||
//! Add surface tags and weights to this collection. If a tag already exists, the higher weight will be preserved.
|
||||
//! (This method is intentionally inlined for its performance impact)
|
||||
//! @param tags - The surface tags to replace/add.
|
||||
//! @param weight - The surface tag weight to use for each tag.
|
||||
void AddSurfaceTagWeights(const SurfaceTagVector& tags, const float weight)
|
||||
{
|
||||
for (const auto& tag : tags)
|
||||
{
|
||||
AddSurfaceTagWeight(tag, weight);
|
||||
}
|
||||
}
|
||||
|
||||
//! Add surface tags and weights to this collection. If a tag already exists, the higher weight will be preserved.
|
||||
//! (This method is intentionally inlined for its performance impact)
|
||||
//! @param weights - The surface tags and weights to replace/add.
|
||||
void AddSurfaceWeightsIfGreater(const SurfaceTagWeights& weights)
|
||||
void AddSurfaceTagWeights(const SurfaceTagWeights& weights)
|
||||
{
|
||||
for (const auto& [tag, weight] : weights.m_weights)
|
||||
{
|
||||
AddSurfaceWeightIfGreater(tag, weight);
|
||||
AddSurfaceTagWeight(tag, weight);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +159,7 @@ namespace SurfaceData
|
||||
//! Check to see if the collection contains the given tag.
|
||||
//! @param sampleTag - The tag to look for.
|
||||
//! @return True if the tag is found, false if it isn't.
|
||||
bool HasMatchingTag(const AZ::Crc32& sampleTag) const;
|
||||
bool HasMatchingTag(AZ::Crc32 sampleTag) const;
|
||||
|
||||
//! Check to see if the collection contains the given tag with the given weight range.
|
||||
//! The range check is inclusive on both sides of the range: [weightMin, weightMax]
|
||||
@@ -133,7 +167,7 @@ namespace SurfaceData
|
||||
//! @param weightMin - The minimum weight for this tag.
|
||||
//! @param weightMax - The maximum weight for this tag.
|
||||
//! @return True if the tag is found, false if it isn't.
|
||||
bool HasMatchingTag(const AZ::Crc32& sampleTag, float weightMin, float weightMax) const;
|
||||
bool HasMatchingTag(AZ::Crc32 sampleTag, float weightMin, float weightMax) const;
|
||||
|
||||
//! Check to see if the collection contains any of the given tags.
|
||||
//! @param sampleTags - The tags to look for.
|
||||
@@ -149,7 +183,12 @@ namespace SurfaceData
|
||||
bool HasAnyMatchingTags(const SurfaceTagVector& sampleTags, float weightMin, float weightMax) const;
|
||||
|
||||
private:
|
||||
AZStd::unordered_map<AZ::Crc32, float> m_weights;
|
||||
//! Search for the given tag entry.
|
||||
//! @param tag - The tag to search for.
|
||||
//! @return The pointer to the tag that's found, or end() if it wasn't found.
|
||||
const AzFramework::SurfaceData::SurfaceTagWeight* FindTag(AZ::Crc32 tag) const;
|
||||
|
||||
AZStd::fixed_vector<AzFramework::SurfaceData::SurfaceTagWeight, MaxSurfaceWeights> m_weights;
|
||||
};
|
||||
|
||||
//! SurfacePointList stores a collection of surface point data, which consists of positions, normals, and surface tag weights.
|
||||
|
||||
@@ -259,7 +259,7 @@ namespace SurfaceData
|
||||
if (DoRayTrace(position, queryPointOnly, hitPosition, hitNormal))
|
||||
{
|
||||
// If the query point collides with the volume, add all our modifier tags with a weight of 1.0f.
|
||||
weights.AddSurfaceWeightsIfGreater(m_configuration.m_modifierTags, 1.0f);
|
||||
weights.AddSurfaceTagWeights(m_configuration.m_modifierTags, 1.0f);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -179,7 +179,7 @@ namespace SurfaceData
|
||||
if (m_shapeBounds.Contains(position) && shape->IsPointInside(position))
|
||||
{
|
||||
// If the point is inside our shape, add all our modifier tags with a weight of 1.0f.
|
||||
weights.AddSurfaceWeightsIfGreater(m_configuration.m_modifierTags, 1.0f);
|
||||
weights.AddSurfaceTagWeights(m_configuration.m_modifierTags, 1.0f);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -14,28 +14,21 @@ namespace SurfaceData
|
||||
void SurfaceTagWeights::AssignSurfaceTagWeights(const AzFramework::SurfaceData::SurfaceTagWeightList& weights)
|
||||
{
|
||||
m_weights.clear();
|
||||
m_weights.reserve(weights.size());
|
||||
for (auto& weight : weights)
|
||||
{
|
||||
m_weights.emplace(weight.m_surfaceType, weight.m_weight);
|
||||
AddSurfaceTagWeight(weight.m_surfaceType, weight.m_weight);
|
||||
}
|
||||
}
|
||||
|
||||
void SurfaceTagWeights::AssignSurfaceTagWeights(const SurfaceTagVector& tags, float weight)
|
||||
{
|
||||
m_weights.clear();
|
||||
m_weights.reserve(tags.size());
|
||||
for (auto& tag : tags)
|
||||
{
|
||||
m_weights[tag] = weight;
|
||||
AddSurfaceTagWeight(tag.operator AZ::Crc32(), weight);
|
||||
}
|
||||
}
|
||||
|
||||
void SurfaceTagWeights::AddSurfaceTagWeight(const AZ::Crc32 tag, const float value)
|
||||
{
|
||||
m_weights[tag] = value;
|
||||
}
|
||||
|
||||
void SurfaceTagWeights::Clear()
|
||||
{
|
||||
m_weights.clear();
|
||||
@@ -52,7 +45,7 @@ namespace SurfaceData
|
||||
weights.reserve(m_weights.size());
|
||||
for (auto& weight : m_weights)
|
||||
{
|
||||
weights.emplace_back(weight.first, weight.second);
|
||||
weights.emplace_back(weight);
|
||||
}
|
||||
return weights;
|
||||
}
|
||||
@@ -65,17 +58,8 @@ namespace SurfaceData
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto& weight : m_weights)
|
||||
{
|
||||
auto rhsWeight = rhs.m_weights.find(weight.first);
|
||||
if ((rhsWeight == rhs.m_weights.end()) || (rhsWeight->second != weight.second))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// All the entries matched, and the lists are the same size, so they're equal.
|
||||
return true;
|
||||
// The lists are stored in sorted order, so we can compare every entry in order for equivalence.
|
||||
return (m_weights == rhs.m_weights);
|
||||
}
|
||||
|
||||
bool SurfaceTagWeights::SurfaceWeightsAreEqual(const AzFramework::SurfaceData::SurfaceTagWeightList& compareWeights) const
|
||||
@@ -92,7 +76,7 @@ namespace SurfaceData
|
||||
compareWeights.begin(), compareWeights.end(),
|
||||
[weight](const AzFramework::SurfaceData::SurfaceTagWeight& compareWeight) -> bool
|
||||
{
|
||||
return (weight.first == compareWeight.m_surfaceType) && (weight.second == compareWeight.m_weight);
|
||||
return (weight == compareWeight);
|
||||
});
|
||||
|
||||
// If we didn't find a match, they're not equal.
|
||||
@@ -119,9 +103,9 @@ namespace SurfaceData
|
||||
|
||||
bool SurfaceTagWeights::HasValidTags() const
|
||||
{
|
||||
for (const auto& sourceTag : m_weights)
|
||||
for (const auto& weight : m_weights)
|
||||
{
|
||||
if (sourceTag.first != Constants::s_unassignedTagCrc)
|
||||
if (weight.m_surfaceType != Constants::s_unassignedTagCrc)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -129,9 +113,9 @@ namespace SurfaceData
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SurfaceTagWeights::HasMatchingTag(const AZ::Crc32& sampleTag) const
|
||||
bool SurfaceTagWeights::HasMatchingTag(AZ::Crc32 sampleTag) const
|
||||
{
|
||||
return m_weights.find(sampleTag) != m_weights.end();
|
||||
return FindTag(sampleTag) != m_weights.end();
|
||||
}
|
||||
|
||||
bool SurfaceTagWeights::HasAnyMatchingTags(const SurfaceTagVector& sampleTags) const
|
||||
@@ -147,10 +131,10 @@ namespace SurfaceData
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SurfaceTagWeights::HasMatchingTag(const AZ::Crc32& sampleTag, float weightMin, float weightMax) const
|
||||
bool SurfaceTagWeights::HasMatchingTag(AZ::Crc32 sampleTag, float weightMin, float weightMax) const
|
||||
{
|
||||
auto maskItr = m_weights.find(sampleTag);
|
||||
return maskItr != m_weights.end() && weightMin <= maskItr->second && weightMax >= maskItr->second;
|
||||
auto weightEntry = FindTag(sampleTag);
|
||||
return weightEntry != m_weights.end() && weightMin <= weightEntry->m_weight && weightMax >= weightEntry->m_weight;
|
||||
}
|
||||
|
||||
bool SurfaceTagWeights::HasAnyMatchingTags(const SurfaceTagVector& sampleTags, float weightMin, float weightMax) const
|
||||
@@ -166,7 +150,25 @@ namespace SurfaceData
|
||||
return false;
|
||||
}
|
||||
|
||||
const AzFramework::SurfaceData::SurfaceTagWeight* SurfaceTagWeights::FindTag(AZ::Crc32 tag) const
|
||||
{
|
||||
for (auto weightItr = m_weights.begin(); weightItr != m_weights.end(); ++weightItr)
|
||||
{
|
||||
if (weightItr->m_surfaceType == tag)
|
||||
{
|
||||
// Found the tag, return a pointer to the entry.
|
||||
return weightItr;
|
||||
}
|
||||
else if (weightItr->m_surfaceType > tag)
|
||||
{
|
||||
// Our list is stored in sorted order by surfaceType, so early-out if our values get too high.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// The tag wasn't found, so return end().
|
||||
return m_weights.end();
|
||||
}
|
||||
|
||||
|
||||
SurfacePointList::SurfacePointList(AZStd::initializer_list<const AzFramework::SurfaceData::SurfacePoint> surfacePoints)
|
||||
@@ -192,7 +194,7 @@ namespace SurfaceData
|
||||
if (m_surfacePositionList[index].IsClose(position) && m_surfaceNormalList[index].IsClose(normal))
|
||||
{
|
||||
// consolidate points with similar attributes by adding masks/weights to the similar point instead of adding a new one.
|
||||
m_surfaceWeightsList[index].AddSurfaceWeightsIfGreater(masks);
|
||||
m_surfaceWeightsList[index].AddSurfaceTagWeights(masks);
|
||||
return;
|
||||
}
|
||||
else if (m_surfacePositionList[index].GetZ() < position.GetZ())
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <AzCore/Component/Entity.h>
|
||||
#include <AzCore/Debug/Profiler.h>
|
||||
#include <AzCore/Memory/PoolAllocator.h>
|
||||
#include <AzCore/Math/Random.h>
|
||||
#include <AzCore/Math/Vector2.h>
|
||||
#include <AzCore/std/containers/array.h>
|
||||
#include <AzCore/std/containers/span.h>
|
||||
@@ -270,6 +271,88 @@ namespace UnitTest
|
||||
->Arg( 2048 )
|
||||
->Unit(::benchmark::kMillisecond);
|
||||
|
||||
BENCHMARK_DEFINE_F(SurfaceDataBenchmark, BM_AddSurfaceTagWeight)(benchmark::State& state)
|
||||
{
|
||||
AZ_PROFILE_FUNCTION(Entity);
|
||||
|
||||
AZ::Crc32 tags[SurfaceData::SurfaceTagWeights::MaxSurfaceWeights];
|
||||
AZ::SimpleLcgRandom randomGenerator(1234567);
|
||||
|
||||
// Declare this outside the loop so that we aren't benchmarking creation and destruction.
|
||||
SurfaceData::SurfaceTagWeights weights;
|
||||
|
||||
bool clearEachTime = state.range(0) > 0;
|
||||
|
||||
// Create a list of randomly-generated tag values.
|
||||
for (auto& tag : tags)
|
||||
{
|
||||
tag = randomGenerator.GetRandom();
|
||||
}
|
||||
|
||||
for (auto _ : state)
|
||||
{
|
||||
// We'll benchmark this two ways:
|
||||
// 1. We clear each time, which means each AddSurfaceWeightIfGreater call will search the whole list then add.
|
||||
// 2. We don't clear, which means that after the first run, AddSurfaceWeightIfGreater will always try to replace values.
|
||||
if (clearEachTime)
|
||||
{
|
||||
weights.Clear();
|
||||
}
|
||||
|
||||
// For each tag, try to add it with a random weight.
|
||||
for (auto& tag : tags)
|
||||
{
|
||||
weights.AddSurfaceTagWeight(tag, randomGenerator.GetRandomFloat());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BENCHMARK_REGISTER_F(SurfaceDataBenchmark, BM_AddSurfaceTagWeight)
|
||||
->Arg(false)
|
||||
->Arg(true)
|
||||
->ArgName("ClearEachTime");
|
||||
|
||||
BENCHMARK_DEFINE_F(SurfaceDataBenchmark, BM_HasAnyMatchingTags_NoMatches)(benchmark::State& state)
|
||||
{
|
||||
AZ_PROFILE_FUNCTION(Entity);
|
||||
|
||||
AZ::Crc32 tags[SurfaceData::SurfaceTagWeights::MaxSurfaceWeights];
|
||||
AZ::SimpleLcgRandom randomGenerator(1234567);
|
||||
|
||||
// Declare this outside the loop so that we aren't benchmarking creation and destruction.
|
||||
SurfaceData::SurfaceTagWeights weights;
|
||||
|
||||
// Create a list of randomly-generated tag values.
|
||||
for (auto& tag : tags)
|
||||
{
|
||||
// Specifically always set the last bit so that we can create comparison tags that won't match.
|
||||
tag = randomGenerator.GetRandom() | 0x01;
|
||||
|
||||
// Add the tag to our weights list with a random weight.
|
||||
weights.AddSurfaceTagWeight(tag, randomGenerator.GetRandomFloat());
|
||||
}
|
||||
|
||||
// Create a set of similar comparison tags that won't match. We still want a random distribution of values though,
|
||||
// because the SurfaceTagWeights might behave differently with ordered lists.
|
||||
SurfaceData::SurfaceTagVector comparisonTags;
|
||||
for (auto& tag : tags)
|
||||
{
|
||||
comparisonTags.emplace_back(tag ^ 0x01);
|
||||
}
|
||||
|
||||
for (auto _ : state)
|
||||
{
|
||||
// Test to see if any of our tags match.
|
||||
// All of comparison tags should get compared against all of the added tags.
|
||||
bool result = weights.HasAnyMatchingTags(comparisonTags);
|
||||
benchmark::DoNotOptimize(result);
|
||||
}
|
||||
}
|
||||
|
||||
BENCHMARK_REGISTER_F(SurfaceDataBenchmark, BM_HasAnyMatchingTags_NoMatches);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ class MockSurfaceProvider
|
||||
|
||||
if (surfacePoints != m_GetSurfacePoints.end())
|
||||
{
|
||||
weights.AddSurfaceWeightsIfGreater(m_tags, 1.0f);
|
||||
weights.AddSurfaceTagWeights(m_tags, 1.0f);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1137,7 +1137,7 @@ namespace Vegetation
|
||||
claimPoint.m_position = position;
|
||||
claimPoint.m_normal = normal;
|
||||
claimPoint.m_masks = masks;
|
||||
sectorInfo.m_baseContext.m_masks.AddSurfaceWeightsIfGreater(masks);
|
||||
sectorInfo.m_baseContext.m_masks.AddSurfaceTagWeights(masks);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ ly_associate_package(PACKAGE_NAME glad-2.0.0-beta-rev2-multiplatform
|
||||
ly_associate_package(PACKAGE_NAME xxhash-0.7.4-rev1-multiplatform TARGETS xxhash PACKAGE_HASH e81f3e6c4065975833996dd1fcffe46c3cf0f9e3a4207ec5f4a1b564ba75861e)
|
||||
|
||||
# platform-specific:
|
||||
ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev12-linux TARGETS assimplib PACKAGE_HASH 49d32e11c594e58a9079972ad63570dd895ac61e6148e428b9c39a62feb676ee)
|
||||
ly_associate_package(PACKAGE_NAME assimp-5.1.6-rev1-linux TARGETS assimplib PACKAGE_HASH 40d64242d5d32a69af3a25690b76f051f3c1a573c1bafba0782cb771a53dfab7)
|
||||
ly_associate_package(PACKAGE_NAME AWSGameLiftServerSDK-3.4.1-rev1-linux TARGETS AWSGameLiftServerSDK PACKAGE_HASH a8149a95bd100384af6ade97e2b21a56173740d921e6c3da8188cd51554d39af)
|
||||
ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-rev3-linux TARGETS TIFF PACKAGE_HASH 2377f48b2ebc2d1628d9f65186c881544c92891312abe478a20d10b85877409a)
|
||||
ly_associate_package(PACKAGE_NAME freetype-2.10.4.16-linux TARGETS freetype PACKAGE_HASH 3f10c703d9001ecd2bb51a3bd003d3237c02d8f947ad0161c0252fdc54cbcf97)
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ ly_associate_package(PACKAGE_NAME glad-2.0.0-beta-rev2-multiplatform
|
||||
ly_associate_package(PACKAGE_NAME xxhash-0.7.4-rev1-multiplatform TARGETS xxhash PACKAGE_HASH e81f3e6c4065975833996dd1fcffe46c3cf0f9e3a4207ec5f4a1b564ba75861e)
|
||||
|
||||
# platform-specific:
|
||||
ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev12-mac TARGETS assimplib PACKAGE_HASH 12db03817553f607bee0d65b690bcaae748014f3ed9266b70384f463bc98c9d1)
|
||||
ly_associate_package(PACKAGE_NAME assimp-5.1.6-rev1-mac TARGETS assimplib PACKAGE_HASH ad35c2e0efd0852021c84b9a454fdcba2fc8af8b7117e9a0dd7ea0a1915932e0)
|
||||
ly_associate_package(PACKAGE_NAME DirectXShaderCompilerDxc-1.6.2104-o3de-rev3-mac TARGETS DirectXShaderCompilerDxc PACKAGE_HASH 3f77367dbb0342136ec4ebbd44bc1fedf7198089a0f83c5631248530769b2be6)
|
||||
ly_associate_package(PACKAGE_NAME SPIRVCross-2021.04.29-rev1-mac TARGETS SPIRVCross PACKAGE_HASH 78c6376ed2fd195b9b1f5fb2b56e5267a32c3aa21fb399e905308de470eb4515)
|
||||
ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-rev3-mac TARGETS TIFF PACKAGE_HASH c2615ccdadcc0e1d6c5ed61e5965c4d3a82193d206591b79b805c3b3ff35a4bf)
|
||||
|
||||
@@ -19,7 +19,7 @@ ly_associate_package(PACKAGE_NAME glad-2.0.0-beta-rev2-multiplatform
|
||||
ly_associate_package(PACKAGE_NAME xxhash-0.7.4-rev1-multiplatform TARGETS xxhash PACKAGE_HASH e81f3e6c4065975833996dd1fcffe46c3cf0f9e3a4207ec5f4a1b564ba75861e)
|
||||
|
||||
# platform-specific:
|
||||
ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev12-windows TARGETS assimplib PACKAGE_HASH 5273b7661a7a247bb18e8bc928d25c9cd1bd8ce9dfcc56c50742bac8fa02f0f2)
|
||||
ly_associate_package(PACKAGE_NAME assimp-5.1.6-rev1-windows TARGETS assimplib PACKAGE_HASH 299d8a3c70657d74af8841650538e9d083fda9356f6782416edbec0ef5a0493e)
|
||||
ly_associate_package(PACKAGE_NAME AWSGameLiftServerSDK-3.4.1-rev1-windows TARGETS AWSGameLiftServerSDK PACKAGE_HASH a0586b006e4def65cc25f388de17dc475e417dc1e6f9d96749777c88aa8271b0)
|
||||
ly_associate_package(PACKAGE_NAME DirectXShaderCompilerDxc-1.6.2104-o3de-rev3-windows TARGETS DirectXShaderCompilerDxc PACKAGE_HASH 803e10b94006b834cbbdd30f562a8ddf04174c2cb6956c8399ec164ef8418d1f)
|
||||
ly_associate_package(PACKAGE_NAME SPIRVCross-2021.04.29-rev1-windows TARGETS SPIRVCross PACKAGE_HASH 7d601ea9d625b1d509d38bd132a1f433d7e895b16adab76bac6103567a7a6817)
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
include(cmake/Platform/Common/Configurations_common.cmake)
|
||||
|
||||
ly_append_configurations_options(
|
||||
DEFINES
|
||||
_FORTIFY_SOURCE=2
|
||||
COMPILATION
|
||||
-fno-exceptions
|
||||
-fvisibility=hidden
|
||||
@@ -16,6 +18,8 @@ ly_append_configurations_options(
|
||||
-Wall
|
||||
-Werror
|
||||
|
||||
-fpie # Position-Independent Executables
|
||||
|
||||
###################
|
||||
# Disabled warnings (please do not disable any others without first consulting sig-build)
|
||||
###################
|
||||
@@ -35,17 +39,22 @@ ly_append_configurations_options(
|
||||
###################
|
||||
|
||||
COMPILATION_DEBUG
|
||||
-O0 # No optimization
|
||||
-g # debug symbols
|
||||
-fno-inline # don't inline functions
|
||||
-fstack-protector # Add additional checks to catch stack corruption issues
|
||||
-O0 # No optimization
|
||||
-g # debug symbols
|
||||
-fno-inline # don't inline functions
|
||||
|
||||
-fstack-protector-all # Enable stack protectors for all functions
|
||||
-fstack-check
|
||||
|
||||
COMPILATION_PROFILE
|
||||
-O2
|
||||
-g # debug symbols
|
||||
-g # debug symbols
|
||||
|
||||
-fstack-protector-all # Enable stack protectors for all functions
|
||||
-fstack-check
|
||||
|
||||
COMPILATION_RELEASE
|
||||
-O2
|
||||
LINK_NON_STATIC
|
||||
-Wl,-undefined,error
|
||||
)
|
||||
|
||||
include(cmake/Platform/Common/TargetIncludeSystemDirectories_supported.cmake)
|
||||
|
||||
@@ -20,6 +20,8 @@ endif()
|
||||
|
||||
|
||||
ly_append_configurations_options(
|
||||
DEFINES
|
||||
_FORTIFY_SOURCE=2
|
||||
|
||||
COMPILATION_C
|
||||
-fno-exceptions
|
||||
@@ -27,6 +29,9 @@ ly_append_configurations_options(
|
||||
-Wall
|
||||
-Werror
|
||||
|
||||
-fpie # Position-Independent Executables
|
||||
-fstack-protector-all # Enable stack protectors for all functions
|
||||
|
||||
${LY_GCC_GCOV_FLAGS}
|
||||
${LY_GCC_GPROF_FLAGS}
|
||||
|
||||
@@ -37,6 +42,9 @@ ly_append_configurations_options(
|
||||
-Wall
|
||||
-Werror
|
||||
|
||||
-fpie # Position-Independent Executables
|
||||
-fstack-protector-all # Enable stack protectors for all functions
|
||||
|
||||
${LY_GCC_GCOV_FLAGS}
|
||||
${LY_GCC_GPROF_FLAGS}
|
||||
|
||||
@@ -55,7 +63,6 @@ ly_append_configurations_options(
|
||||
-Wno-parentheses
|
||||
-Wno-reorder
|
||||
-Wno-restrict
|
||||
-Wno-return-local-addr
|
||||
-Wno-sequence-point
|
||||
-Wno-sign-compare
|
||||
-Wno-strict-aliasing
|
||||
@@ -72,12 +79,23 @@ ly_append_configurations_options(
|
||||
-O0 # No optimization
|
||||
-g # debug symbols
|
||||
-fno-inline # don't inline functions
|
||||
-fstack-protector # Add additional checks to catch stack corruption issues
|
||||
COMPILATION_PROFILE
|
||||
-O2
|
||||
-g # debug symbols
|
||||
COMPILATION_RELEASE
|
||||
-O2
|
||||
|
||||
LINK_NON_STATIC
|
||||
-Wl,-undefined,error
|
||||
-fpie
|
||||
-Wl,-z,relro,-z,now
|
||||
-Wl,-z,noexecstack
|
||||
LINK_EXE
|
||||
-pie
|
||||
-fpie
|
||||
-Wl,-z,relro,-z,now
|
||||
-Wl,-z,noexecstack
|
||||
|
||||
)
|
||||
|
||||
include(cmake/Platform/Common/TargetIncludeSystemDirectories_supported.cmake)
|
||||
|
||||
@@ -18,7 +18,18 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
COMPILATION
|
||||
-fPIC
|
||||
-msse4.1
|
||||
LINK_NON_STATIC
|
||||
-Wl,-undefined,error
|
||||
-fpie
|
||||
-Wl,-z,relro,-z,now
|
||||
-Wl,-z,noexecstack
|
||||
LINK_EXE
|
||||
-pie
|
||||
-fpie
|
||||
-Wl,-z,relro,-z,now
|
||||
-Wl,-z,noexecstack
|
||||
)
|
||||
|
||||
ly_set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user