Merge branch 'development' into cmake/linux_fix_warn_unused
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> # Conflicts: # Code/Editor/Objects/TrackGizmo.cpp
This commit is contained in:
@@ -54,6 +54,8 @@
|
||||
|
||||
// CryCommon
|
||||
#include <CryCommon/HMDBus.h>
|
||||
#include <CryCommon/IRenderAuxGeom.h>
|
||||
#include <CryCommon/physinterface.h>
|
||||
|
||||
// AzFramework
|
||||
#include <AzFramework/Render/IntersectorInterface.h>
|
||||
@@ -739,9 +741,13 @@ void EditorViewportWidget::OnBeginPrepareRender()
|
||||
RenderAll();
|
||||
|
||||
// Draw 2D helpers.
|
||||
#ifdef LYSHINE_ATOM_TODO
|
||||
TransformationMatrices backupSceneMatrices;
|
||||
#endif
|
||||
m_debugDisplay->DepthTestOff();
|
||||
//m_renderer->Set2DMode(m_rcClient.right(), m_rcClient.bottom(), backupSceneMatrices);
|
||||
#ifdef LYSHINE_ATOM_TODO
|
||||
m_renderer->Set2DMode(m_rcClient.right(), m_rcClient.bottom(), backupSceneMatrices);
|
||||
#endif
|
||||
auto prevState = m_debugDisplay->GetState();
|
||||
m_debugDisplay->SetState(e_Mode3D | e_AlphaBlended | e_FillModeSolid | e_CullModeBack | e_DepthWriteOn | e_DepthTestOn);
|
||||
|
||||
@@ -1283,7 +1289,7 @@ void EditorViewportWidget::SetViewportId(int id)
|
||||
m_renderViewport->GetControllerList()->Add(AZStd::make_shared<SandboxEditor::ViewportManipulatorController>());
|
||||
|
||||
m_renderViewport->GetControllerList()->Add(CreateModularViewportCameraController(AzFramework::ViewportId(id)));
|
||||
|
||||
|
||||
m_renderViewport->SetViewportSettings(&g_EditorViewportSettings);
|
||||
|
||||
UpdateScene();
|
||||
@@ -1643,7 +1649,7 @@ void EditorViewportWidget::SetViewTM(const Matrix34& camMatrix, bool bMoveOnly)
|
||||
{
|
||||
// Should be impossible anyways
|
||||
AZ_Assert(false, "Internal logic error - view entity Id and view source type out of sync. Please report this as a bug");
|
||||
return ShouldUpdateObject::No;
|
||||
return ShouldUpdateObject::No;
|
||||
}
|
||||
|
||||
// Check that the current view is the same view as the view entity view
|
||||
@@ -2008,73 +2014,6 @@ Vec3 EditorViewportWidget::ViewToWorldNormal(const QPoint& vp, bool onlyTerrain,
|
||||
return Vec3(0, 0, 1);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool EditorViewportWidget::AdjustObjectPosition(const ray_hit& hit, Vec3& outNormal, Vec3& outPos) const
|
||||
{
|
||||
Matrix34A objMat, objMatInv;
|
||||
Matrix33 objRot, objRotInv;
|
||||
|
||||
if (hit.pCollider->GetiForeignData() != PHYS_FOREIGN_ID_STATIC)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IRenderNode* pNode = (IRenderNode*) hit.pCollider->GetForeignData(PHYS_FOREIGN_ID_STATIC);
|
||||
if (!pNode || !pNode->GetEntityStatObj())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IStatObj* pEntObject = pNode->GetEntityStatObj(hit.partid, 0, &objMat, false);
|
||||
if (!pEntObject || !pEntObject->GetRenderMesh())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
objRot = Matrix33(objMat);
|
||||
objRot.NoScale(); // No scale.
|
||||
objRotInv = objRot;
|
||||
objRotInv.Invert();
|
||||
|
||||
float fWorldScale = objMat.GetColumn(0).GetLength(); // GetScale
|
||||
float fWorldScaleInv = 1.0f / fWorldScale;
|
||||
|
||||
// transform decal into object space
|
||||
objMatInv = objMat;
|
||||
objMatInv.Invert();
|
||||
|
||||
// put into normal object space hit direction of projection
|
||||
Vec3 invhitn = -(hit.n);
|
||||
Vec3 vOS_HitDir = objRotInv.TransformVector(invhitn).GetNormalized();
|
||||
|
||||
// put into position object space hit position
|
||||
Vec3 vOS_HitPos = objMatInv.TransformPoint(hit.pt);
|
||||
vOS_HitPos -= vOS_HitDir * RENDER_MESH_TEST_DISTANCE * fWorldScaleInv;
|
||||
|
||||
IRenderMesh* pRM = pEntObject->GetRenderMesh();
|
||||
|
||||
AABB aabbRNode;
|
||||
pRM->GetBBox(aabbRNode.min, aabbRNode.max);
|
||||
Vec3 vOut(0, 0, 0);
|
||||
if (!Intersect::Ray_AABB(Ray(vOS_HitPos, vOS_HitDir), aabbRNode, vOut))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!pRM || !pRM->GetVerticesCount())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (RayRenderMeshIntersection(pRM, vOS_HitPos, vOS_HitDir, outPos, outNormal))
|
||||
{
|
||||
outNormal = objRot.TransformVector(outNormal).GetNormalized();
|
||||
outPos = objMat.TransformPoint(outPos);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool EditorViewportWidget::RayRenderMeshIntersection(IRenderMesh* pRenderMesh, const Vec3& vInPos, const Vec3& vInDir, Vec3& vOutPos, Vec3& vOutNormal) const
|
||||
{
|
||||
@@ -2507,7 +2446,7 @@ void EditorViewportWidget::SetViewFromEntityPerspective(const AZ::EntityId& enti
|
||||
void EditorViewportWidget::SetViewAndMovementLockFromEntityPerspective(const AZ::EntityId& entityId, [[maybe_unused]] bool lockCameraMovement)
|
||||
{
|
||||
// This is an editor event, so is only serviced during edit mode, not play game mode
|
||||
//
|
||||
//
|
||||
if (m_playInEditorState != PlayInEditorState::Editor)
|
||||
{
|
||||
AZ_Warning("EditorViewportWidget", false,
|
||||
|
||||
Reference in New Issue
Block a user