Reduce actor orientation threshold
This commit is contained in:
@@ -33,6 +33,8 @@
|
|||||||
#define CHECK_EXECUTE_IN_EDITOR
|
#define CHECK_EXECUTE_IN_EDITOR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define ACTOR_ORIENTATION_EPSILON 0.000000001f
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
Actor* GetChildByPrefabObjectId(Actor* a, const Guid& prefabObjectId)
|
Actor* GetChildByPrefabObjectId(Actor* a, const Guid& prefabObjectId)
|
||||||
@@ -563,7 +565,7 @@ void Actor::SetStaticFlags(StaticFlags value)
|
|||||||
void Actor::SetTransform(const Transform& value)
|
void Actor::SetTransform(const Transform& value)
|
||||||
{
|
{
|
||||||
CHECK(!value.IsNanOrInfinity());
|
CHECK(!value.IsNanOrInfinity());
|
||||||
if (!Transform::NearEqual(_transform, value))
|
if (!(Vector3::NearEqual(_transform.Translation, value.Translation) && Quaternion::NearEqual(_transform.Orientation, value.Orientation, ACTOR_ORIENTATION_EPSILON) && Float3::NearEqual(_transform.Scale, value.Scale)))
|
||||||
{
|
{
|
||||||
if (_parent)
|
if (_parent)
|
||||||
_parent->GetTransform().WorldToLocal(value, _localTransform);
|
_parent->GetTransform().WorldToLocal(value, _localTransform);
|
||||||
@@ -589,7 +591,7 @@ void Actor::SetPosition(const Vector3& value)
|
|||||||
void Actor::SetOrientation(const Quaternion& value)
|
void Actor::SetOrientation(const Quaternion& value)
|
||||||
{
|
{
|
||||||
CHECK(!value.IsNanOrInfinity());
|
CHECK(!value.IsNanOrInfinity());
|
||||||
if (!Quaternion::NearEqual(_transform.Orientation, value))
|
if (!Quaternion::NearEqual(_transform.Orientation, value, ACTOR_ORIENTATION_EPSILON))
|
||||||
{
|
{
|
||||||
if (_parent)
|
if (_parent)
|
||||||
{
|
{
|
||||||
@@ -658,7 +660,7 @@ void Actor::ResetLocalTransform()
|
|||||||
void Actor::SetLocalTransform(const Transform& value)
|
void Actor::SetLocalTransform(const Transform& value)
|
||||||
{
|
{
|
||||||
CHECK(!value.IsNanOrInfinity());
|
CHECK(!value.IsNanOrInfinity());
|
||||||
if (!Transform::NearEqual(_localTransform, value))
|
if (!(Vector3::NearEqual(_localTransform.Translation, value.Translation) && Quaternion::NearEqual(_localTransform.Orientation, value.Orientation, ACTOR_ORIENTATION_EPSILON) && Float3::NearEqual(_localTransform.Scale, value.Scale)))
|
||||||
{
|
{
|
||||||
_localTransform = value;
|
_localTransform = value;
|
||||||
OnTransformChanged();
|
OnTransformChanged();
|
||||||
@@ -680,8 +682,7 @@ void Actor::SetLocalOrientation(const Quaternion& value)
|
|||||||
CHECK(!value.IsNanOrInfinity());
|
CHECK(!value.IsNanOrInfinity());
|
||||||
Quaternion v = value;
|
Quaternion v = value;
|
||||||
v.Normalize();
|
v.Normalize();
|
||||||
|
if (!Quaternion::NearEqual(_localTransform.Orientation, v, ACTOR_ORIENTATION_EPSILON))
|
||||||
if (!Quaternion::NearEqual(_localTransform.Orientation, v))
|
|
||||||
{
|
{
|
||||||
_localTransform.Orientation = v;
|
_localTransform.Orientation = v;
|
||||||
OnTransformChanged();
|
OnTransformChanged();
|
||||||
|
|||||||
Reference in New Issue
Block a user