Merging latest development

Signed-off-by: kberg-amzn <karlberg@amazon.com>
This commit is contained in:
kberg-amzn
2021-10-04 16:59:57 -07:00
383 changed files with 125811 additions and 1674 deletions
@@ -14,7 +14,7 @@
namespace Multiplayer
{
void NetworkTransformComponent::NetworkTransformComponent::Reflect(AZ::ReflectContext* context)
void NetworkTransformComponent::Reflect(AZ::ReflectContext* context)
{
AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(context);
if (serializeContext)
@@ -43,6 +43,11 @@ namespace Multiplayer
GetNetBindComponent()->AddEntityPreRenderEventHandler(m_entityPreRenderEventHandler);
GetNetBindComponent()->AddEntityCorrectionEventHandler(m_entityCorrectionEventHandler);
ParentEntityIdAddEvent(m_parentChangedEventHandler);
if (!HasController())
{
OnParentChanged(GetParentEntityId());
}
}
void NetworkTransformComponent::OnDeactivate([[maybe_unused]] Multiplayer::EntityIsMigrating entityIsMigrating)
@@ -77,9 +82,20 @@ namespace Multiplayer
}
}
if (!GetTransformComponent()->GetWorldTM().IsClose(blendTransform))
AzFramework::TransformComponent* transformComponent = GetTransformComponent();
if (GetParentEntityId() == InvalidNetEntityId)
{
GetTransformComponent()->SetWorldTM(blendTransform);
if (!transformComponent->GetWorldTM().IsClose(blendTransform))
{
transformComponent->SetWorldTM(blendTransform);
}
}
else
{
if (!transformComponent->GetLocalTM().IsClose(blendTransform))
{
transformComponent->SetLocalTM(blendTransform);
}
}
}
}
@@ -93,31 +109,45 @@ namespace Multiplayer
targetTransform.SetUniformScale(GetScale());
// Hard set the entities transform
if (!GetTransformComponent()->GetWorldTM().IsClose(targetTransform))
AzFramework::TransformComponent* transformComponent = GetTransformComponent();
if (GetParentEntityId() == InvalidNetEntityId)
{
GetTransformComponent()->SetWorldTM(targetTransform);
if (!transformComponent->GetWorldTM().IsClose(targetTransform))
{
transformComponent->SetWorldTM(targetTransform);
}
}
else
{
if (!transformComponent->GetLocalTM().IsClose(targetTransform))
{
transformComponent->SetLocalTM(targetTransform);
}
}
}
void NetworkTransformComponent::OnParentChanged(NetEntityId parentId)
{
const ConstNetworkEntityHandle parentEntityHandle = GetNetworkEntityManager()->GetEntity(parentId);
if (parentEntityHandle.Exists())
if (AZ::TransformInterface* transformComponent = GetEntity()->GetTransform())
{
if (const AZ::Entity* parentEntity = parentEntityHandle.GetEntity())
const ConstNetworkEntityHandle parentEntityHandle = GetNetworkEntityManager()->GetEntity(parentId);
if (parentEntityHandle.Exists())
{
GetEntity()->GetTransform()->SetParent(parentEntity->GetId());
if (const AZ::Entity* parentEntity = parentEntityHandle.GetEntity())
{
transformComponent->SetParent(parentEntity->GetId());
}
}
else
{
transformComponent->SetParent(AZ::EntityId());
}
}
else
{
GetEntity()->GetTransform()->SetParent(AZ::EntityId());
}
}
NetworkTransformComponentController::NetworkTransformComponentController(NetworkTransformComponent& parent)
: NetworkTransformComponentControllerBase(parent)
, m_transformChangedHandler([this](const AZ::Transform&, const AZ::Transform& worldTm) { OnTransformChangedEvent(worldTm); })
, m_transformChangedHandler([this](const AZ::Transform& localTm, const AZ::Transform& worldTm) { OnTransformChangedEvent(localTm, worldTm); })
, m_parentIdChangedHandler([this](AZ::EntityId oldParent, AZ::EntityId newParent) { OnParentIdChangedEvent(oldParent, newParent); })
{
;
@@ -125,11 +155,14 @@ namespace Multiplayer
void NetworkTransformComponentController::OnActivate([[maybe_unused]] Multiplayer::EntityIsMigrating entityIsMigrating)
{
GetParent().GetTransformComponent()->BindTransformChangedEventHandler(m_transformChangedHandler);
OnTransformChangedEvent(GetParent().GetTransformComponent()->GetWorldTM());
if (AzFramework::TransformComponent* parentTransform = GetParent().GetTransformComponent())
{
parentTransform->BindTransformChangedEventHandler(m_transformChangedHandler);
OnTransformChangedEvent(parentTransform->GetLocalTM(), parentTransform->GetWorldTM());
GetParent().GetTransformComponent()->BindParentChangedEventHandler(m_parentIdChangedHandler);
OnParentIdChangedEvent(AZ::EntityId(), GetParent().GetTransformComponent()->GetParentId());
parentTransform->BindParentChangedEventHandler(m_parentIdChangedHandler);
OnParentIdChangedEvent(AZ::EntityId(), parentTransform->GetParentId());
}
}
void NetworkTransformComponentController::OnDeactivate([[maybe_unused]] Multiplayer::EntityIsMigrating entityIsMigrating)
@@ -137,11 +170,12 @@ namespace Multiplayer
;
}
void NetworkTransformComponentController::OnTransformChangedEvent(const AZ::Transform& worldTm)
void NetworkTransformComponentController::OnTransformChangedEvent(const AZ::Transform& localTm, const AZ::Transform& worldTm)
{
SetRotation(worldTm.GetRotation());
SetTranslation(worldTm.GetTranslation());
SetScale(worldTm.GetUniformScale());
const AZ::Transform& localOrWorld = GetParentEntityId() == InvalidNetEntityId ? worldTm : localTm;
SetRotation(localOrWorld.GetRotation());
SetTranslation(localOrWorld.GetTranslation());
SetScale(localOrWorld.GetUniformScale());
}
void NetworkTransformComponentController::OnParentIdChangedEvent([[maybe_unused]] AZ::EntityId oldParent, AZ::EntityId newParent)
@@ -150,7 +184,10 @@ namespace Multiplayer
if (parentEntity)
{
const ConstNetworkEntityHandle parentHandle(parentEntity, GetNetworkEntityTracker());
SetParentEntityId(parentHandle.GetNetEntityId());
if (parentHandle.Exists())
{
SetParentEntityId(parentHandle.GetNetEntityId());
}
}
}
}