* Added new helper functions to get the shortest equivalent of the rotation. In case the w component of the quaternion is negative the rotation is > 180° and taking the longer path. The quaternion will be inverted in that case to take the shortest path of rotation.
* Added unit test.
* Renamed the angle parameter of the CreateRotationX/Y/Z() functions into angleInRadians.
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
Sleeping in tests and attempting to rely on fine-grained measurements to
check code validity is intrinsically brittle. Wall-clock time is
unreliable in an environment where tests are run under a hypervisor that
may choose to suspend your VM at any point, or in situations where the
OS cannot schedule your thread in time. The correct way to reintroduce
these tests in the future is provide an override for the timestamp
queries that can be injected in the test environment to control the wall
time deterministically.
Signed-off-by: Jeremy Ong <jcong@amazon.com>
In some cases, the interface being queried may be persistently nullptr
(e.g. a gem isn't active, or a feature was disabled by a cvar). In this
case, querying the interface would always enter the writer-lock branch
with existing code because nullptr was synonmous with "we haven't
queried for this variable yet."
This PR adds an additional state variable that is set when s_instance is
assigned to, so that after the variable is queried and found to be null,
future queries can enter the read-lock branch.
Signed-off-by: Jeremy Ong <jcong@amazon.com>
- Use a vector for shared string storage (to avoid the double heap allocation for AZStd::string)
- Use a shared heap allocated any for opaque types (instead of an unsafe ref)
- Add a string comparison key lookup benchmark to measure the impact of Name
Signed-off-by: Nicholas Van Sickle <nvsickle@amazon.com>
Direct conversion helpers for quaternion to the scaled axis-angle representation and back without the need to convert them first to the axis-angle format and manually scale (or normalize on the way back). This also avoids having to deal with the special case of an identity representation which is 0,0,0 in the scaled axis-angle format while our convention for axis-angle is 0,1,0 for the axis and 0 for the angle.
Added unit tests that check the conversion round-trips from quaternion -> (scaled) axis-angle -> quaternion as well as comparing the scaled axis-angle representations from the direct helper functions as well as the axis-angle while manually scaling/normalizing.
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
* Prefab hotloading - load and maintain asset references
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Working hotloading
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Clean up code, add comments
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Add missing includes
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Add event for template removal.
Clear ProceduralPrefabSystemComponent lookup when templates are removed.
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Add unit test.
Fix missing include, make sure source name is set
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix missing include
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix missing include
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Update comments to make ebus event behavior more clear
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix missing include
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix missing includes
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix missing include
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix temp directory usage which doesn't work on linux
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix temp directory usage which doesn't work on linux
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Use AZ::IO::Path for comparison. Print paths on failure
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
* Fix unit test - register asset with catalog so it can be looked up later
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>