Merge branch 'development' into redcode/crythread-2nd-pass
Signed-off-by: AMZN-ScottR <24445312+AMZN-ScottR@users.noreply.github.com>
This commit is contained in:
@@ -952,7 +952,8 @@ void Q2DViewport::DrawViewerMarker(DisplayContext& dc)
|
||||
dc.SetColor(QColor(0, 0, 255)); // blue
|
||||
dc.DrawWireBox(-dim * noScale, dim * noScale);
|
||||
|
||||
float fov = GetIEditor()->GetSystem()->GetViewCamera().GetFov();
|
||||
constexpr float DefaultFov = 60.f;
|
||||
float fov = DefaultFov;
|
||||
|
||||
Vec3 q[4];
|
||||
float dist = 30;
|
||||
|
||||
@@ -25,7 +25,7 @@ AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
#include <ui_AboutDialog.h>
|
||||
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
|
||||
CAboutDialog::CAboutDialog(QString versionText, QString richTextCopyrightNotice, QWidget* pParent /*=NULL*/)
|
||||
CAboutDialog::CAboutDialog(QString versionText, QString richTextCopyrightNotice, QWidget* pParent /*=nullptr*/)
|
||||
: QDialog(pParent)
|
||||
, m_ui(new Ui::CAboutDialog)
|
||||
{
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "EditorDefs.h"
|
||||
#include "SkeletonHierarchy.h"
|
||||
|
||||
using namespace Skeleton;
|
||||
|
||||
/*
|
||||
|
||||
CHierarchy
|
||||
|
||||
*/
|
||||
|
||||
CHierarchy::CHierarchy()
|
||||
{
|
||||
}
|
||||
|
||||
CHierarchy::~CHierarchy()
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
uint32 CHierarchy::AddNode(const char* name, const QuatT& pose, int32 parent)
|
||||
{
|
||||
int32 index = FindNodeIndexByName(name);
|
||||
|
||||
if (index < 0)
|
||||
{
|
||||
m_nodes.push_back(SNode());
|
||||
index = int32(m_nodes.size() - 1);
|
||||
}
|
||||
|
||||
m_nodes[index].name = name;
|
||||
m_nodes[index].pose = pose;
|
||||
m_nodes[index].parent = parent;
|
||||
return uint32(index);
|
||||
}
|
||||
|
||||
int32 CHierarchy::FindNodeIndexByName(const char* name) const
|
||||
{
|
||||
uint32 count = uint32(m_nodes.size());
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
{
|
||||
if (::_stricmp(m_nodes[i].name, name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
const CHierarchy::SNode* CHierarchy::FindNode(const char* name) const
|
||||
{
|
||||
int32 index = FindNodeIndexByName(name);
|
||||
return index < 0 ? nullptr : &m_nodes[index];
|
||||
}
|
||||
|
||||
void CHierarchy::CreateFrom(IDefaultSkeleton* pIDefaultSkeleton)
|
||||
{
|
||||
const uint32 jointCount = pIDefaultSkeleton->GetJointCount();
|
||||
|
||||
m_nodes.clear();
|
||||
m_nodes.reserve(jointCount);
|
||||
for (uint32 i = 0; i < jointCount; ++i)
|
||||
{
|
||||
m_nodes.push_back(SNode());
|
||||
|
||||
m_nodes.back().name = pIDefaultSkeleton->GetJointNameByID(int32(i));
|
||||
m_nodes.back().pose = pIDefaultSkeleton->GetDefaultAbsJointByID(int32(i));
|
||||
|
||||
m_nodes.back().parent = pIDefaultSkeleton->GetJointParentIDByID(int32(i));
|
||||
}
|
||||
|
||||
ValidateReferences();
|
||||
}
|
||||
|
||||
void CHierarchy::ValidateReferences()
|
||||
{
|
||||
uint32 nodeCount = m_nodes.size();
|
||||
if (!nodeCount)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (uint32 i = 0; i < nodeCount; ++i)
|
||||
{
|
||||
if (m_nodes[i].parent < nodeCount)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
m_nodes[i].parent = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void CHierarchy::AbsoluteToRelative(const QuatT* pSource, QuatT* pDestination)
|
||||
{
|
||||
uint32 count = uint32(m_nodes.size());
|
||||
std::vector<QuatT> absolutes(count);
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
{
|
||||
absolutes[i] = pSource[i];
|
||||
}
|
||||
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
{
|
||||
int32 parent = m_nodes[i].parent;
|
||||
if (parent < 0)
|
||||
{
|
||||
pDestination[i] = absolutes[i];
|
||||
continue;
|
||||
}
|
||||
|
||||
pDestination[i].t = (absolutes[i].t - absolutes[parent].t) * absolutes[parent].q;
|
||||
pDestination[i].q = absolutes[parent].q.GetInverted() * absolutes[i].q;
|
||||
}
|
||||
}
|
||||
|
||||
bool CHierarchy::SerializeTo(XmlNodeRef& node)
|
||||
{
|
||||
XmlNodeRef hierarchy = node->newChild("Hierarchy");
|
||||
|
||||
uint32 nodeCount = uint32(m_nodes.size());
|
||||
std::vector<IXmlNode*> nodes(nodeCount);
|
||||
for (uint32 i = 0; i < nodeCount; ++i)
|
||||
{
|
||||
XmlNodeRef parent = hierarchy;
|
||||
if (m_nodes[i].parent > -1)
|
||||
{
|
||||
parent = nodes[m_nodes[i].parent];
|
||||
}
|
||||
|
||||
nodes[i] = parent->newChild("Node");
|
||||
nodes[i]->setAttr("name", m_nodes[i].name);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CRYINCLUDE_EDITOR_ANIMATION_SKELETONHIERARCHY_H
|
||||
#define CRYINCLUDE_EDITOR_ANIMATION_SKELETONHIERARCHY_H
|
||||
#pragma once
|
||||
|
||||
namespace Skeleton {
|
||||
class CHierarchy
|
||||
: public _reference_target_t
|
||||
{
|
||||
public:
|
||||
struct SNode
|
||||
{
|
||||
string name;
|
||||
QuatT pose;
|
||||
|
||||
int32 parent;
|
||||
|
||||
/* TODO: Implement
|
||||
uint32 childrenIndex;
|
||||
uint32 childrenCount;
|
||||
*/
|
||||
};
|
||||
|
||||
public:
|
||||
CHierarchy();
|
||||
~CHierarchy();
|
||||
|
||||
public:
|
||||
uint32 AddNode(const char* name, const QuatT& pose, int32 parent = -1);
|
||||
uint32 GetNodeCount() const { return uint32(m_nodes.size()); }
|
||||
SNode* GetNode(uint32 index) { return &m_nodes[index]; }
|
||||
const SNode* GetNode(uint32 index) const { return &m_nodes[index]; }
|
||||
int32 FindNodeIndexByName(const char* name) const;
|
||||
const SNode* FindNode(const char* name) const;
|
||||
void ClearNodes() { m_nodes.clear(); }
|
||||
|
||||
void CreateFrom(IDefaultSkeleton* rIDefaultSkeleton);
|
||||
void ValidateReferences();
|
||||
|
||||
void AbsoluteToRelative(const QuatT* pSource, QuatT* pDestination);
|
||||
|
||||
bool SerializeTo(XmlNodeRef& node);
|
||||
|
||||
private:
|
||||
std::vector<SNode> m_nodes;
|
||||
};
|
||||
} // namespace Skeleton
|
||||
|
||||
#endif // CRYINCLUDE_EDITOR_ANIMATION_SKELETONHIERARCHY_H
|
||||
@@ -1,368 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "EditorDefs.h"
|
||||
|
||||
#include "SkeletonMapper.h"
|
||||
|
||||
using namespace Skeleton;
|
||||
|
||||
/*
|
||||
|
||||
CMapper
|
||||
|
||||
*/
|
||||
|
||||
CMapper::CMapper()
|
||||
{
|
||||
}
|
||||
|
||||
CMapper::~CMapper()
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
void CMapper::CreateFromHierarchy()
|
||||
{
|
||||
m_nodes.clear();
|
||||
|
||||
uint32 nodeCount = m_hierarchy.GetNodeCount();
|
||||
m_nodes.resize(nodeCount);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
uint32 CMapper::CreateLocation(const char* name)
|
||||
{
|
||||
int32 index = FindLocation(name);
|
||||
if (index < 1)
|
||||
{
|
||||
CMapperLocation* pLocation = new CMapperLocation();
|
||||
pLocation->SetName(name);
|
||||
m_locations.push_back(pLocation);
|
||||
}
|
||||
return uint32(m_locations.size() - 1);
|
||||
}
|
||||
|
||||
void CMapper::ClearLocations()
|
||||
{
|
||||
uint32 count = uint32(m_nodes.size());
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
{
|
||||
m_nodes[i].position = nullptr;
|
||||
m_nodes[i].orientation = nullptr;
|
||||
}
|
||||
|
||||
m_locations.clear();
|
||||
}
|
||||
|
||||
int32 CMapper::FindLocation(const char* name) const
|
||||
{
|
||||
uint32 count = uint32(m_locations.size());
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
{
|
||||
if (::_stricmp(m_locations[i]->GetName(), name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return int32(i);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void CMapper::SetLocation(CMapperLocation& location)
|
||||
{
|
||||
int32 index = FindLocation(location.GetName());
|
||||
if (index < 0)
|
||||
{
|
||||
m_locations.push_back(&location);
|
||||
return;
|
||||
}
|
||||
|
||||
m_locations[index] = &location;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
bool CMapper::CreateLocationsHierarchy(uint32 index, CHierarchy& hierarchy, int32 hierarchyParent)
|
||||
{
|
||||
if (NodeHasLocation(index))
|
||||
{
|
||||
const CHierarchy::SNode* pNode = m_hierarchy.GetNode(index);
|
||||
uint32 nodeIndex = hierarchy.AddNode(pNode->name, pNode->pose, hierarchyParent);
|
||||
hierarchyParent = uint32(nodeIndex);
|
||||
}
|
||||
|
||||
std::vector<uint32> children;
|
||||
GetChildrenIndices(index, children);
|
||||
uint32 childCount = uint32(children.size());
|
||||
for (uint32 i = 0; i < childCount; ++i)
|
||||
{
|
||||
CreateLocationsHierarchy(children[i], hierarchy, hierarchyParent);
|
||||
}
|
||||
|
||||
return hierarchy.GetNodeCount() != 0;
|
||||
}
|
||||
|
||||
bool CMapper::CreateLocationsHierarchy(CHierarchy& hierarchy)
|
||||
{
|
||||
hierarchy.ClearNodes();
|
||||
if (!CreateLocationsHierarchy(0, hierarchy, -1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
hierarchy.ValidateReferences();
|
||||
return true;
|
||||
}
|
||||
|
||||
void CMapper::Map(QuatT* pResult)
|
||||
{
|
||||
uint32 outputCount = m_hierarchy.GetNodeCount();
|
||||
std::vector<Quat> absolutes(outputCount);
|
||||
for (uint32 i = 0; i < outputCount; ++i)
|
||||
{
|
||||
pResult[i].SetIdentity();
|
||||
absolutes[i].SetIdentity();
|
||||
|
||||
CHierarchy::SNode* pNode = m_hierarchy.GetNode(i);
|
||||
if (!pNode)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
CHierarchy::SNode* pParent = pNode->parent < 0 ?
|
||||
nullptr : m_hierarchy.GetNode(pNode->parent);
|
||||
if (pParent)
|
||||
{
|
||||
pResult[i].t =
|
||||
(pNode->pose.t - pParent->pose.t) * pParent->pose.q;
|
||||
}
|
||||
|
||||
if (m_nodes[i].position)
|
||||
{
|
||||
pResult[i].t = m_nodes[i].position->Compute().t;
|
||||
}
|
||||
|
||||
if (m_nodes[i].orientation)
|
||||
{
|
||||
absolutes[i] = m_nodes[i].orientation->Compute().q;
|
||||
}
|
||||
else if (pParent)
|
||||
{
|
||||
Quat relative = pParent->pose.q.GetInverted() * pNode->pose.q;
|
||||
absolutes[i] = absolutes[pNode->parent] * relative;
|
||||
}
|
||||
}
|
||||
|
||||
for (uint32 i = 0; i < outputCount; ++i)
|
||||
{
|
||||
CHierarchy::SNode* pNode = m_hierarchy.GetNode(i);
|
||||
if (!pNode)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
CHierarchy::SNode* pParent = pNode->parent < 0 ?
|
||||
nullptr : m_hierarchy.GetNode(pNode->parent);
|
||||
if (!pParent)
|
||||
{
|
||||
pResult[i].q = absolutes[i];
|
||||
continue;
|
||||
}
|
||||
|
||||
pResult[i].q = absolutes[i];
|
||||
if (!m_nodes[i].position)
|
||||
{
|
||||
pResult[i].t = pResult[pNode->parent].t +
|
||||
pResult[i].t * absolutes[pNode->parent].GetInverted();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
bool CMapper::NodeHasLocation(uint32 index)
|
||||
{
|
||||
if (CMapperOperator* pOperator = m_nodes[index].position)
|
||||
{
|
||||
if (pOperator->IsOfClass("Location"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (pOperator->HasLinksOfClass("Location"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (CMapperOperator* pOperator = m_nodes[index].orientation)
|
||||
{
|
||||
if (pOperator->IsOfClass("Location"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (pOperator->HasLinksOfClass("Location"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void CMapper::GetChildrenIndices(uint32 parent, std::vector<uint32>& children)
|
||||
{
|
||||
uint32 nodeCount = m_hierarchy.GetNodeCount();
|
||||
for (uint32 i = 0; i < nodeCount; ++i)
|
||||
{
|
||||
if (m_hierarchy.GetNode(i)->parent != parent)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
children.push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
bool CMapper::ChildrenHaveLocation(uint32 index)
|
||||
{
|
||||
std::vector<uint32> children;
|
||||
GetChildrenIndices(index, children);
|
||||
|
||||
uint32 childrenCount = uint32(children.size());
|
||||
for (uint32 i = 0; i < childrenCount; ++i)
|
||||
{
|
||||
if (ChildrenHaveLocation(children[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CMapper::NodeOrChildrenHaveLocation(uint32 index)
|
||||
{
|
||||
if (NodeHasLocation(index))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
std::vector<uint32> children;
|
||||
GetChildrenIndices(index, children);
|
||||
|
||||
uint32 childrenCount = uint32(children.size());
|
||||
for (uint32 i = 0; i < childrenCount; ++i)
|
||||
{
|
||||
if (NodeOrChildrenHaveLocation(children[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CMapper::SerializeTo(XmlNodeRef& node)
|
||||
{
|
||||
XmlNodeRef hierarchy = node->newChild("Hierarchy");
|
||||
|
||||
uint32 nodeCount = GetNodeCount();
|
||||
std::vector<IXmlNode*> nodes(nodeCount);
|
||||
for (uint32 i = 0; i < nodeCount; ++i)
|
||||
{
|
||||
if (!NodeOrChildrenHaveLocation(i))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
CHierarchy::SNode* pNode = m_hierarchy.GetNode(i);
|
||||
if (!pNode)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
XmlNodeRef xmlParent = hierarchy;
|
||||
int32 parent = pNode->parent;
|
||||
if (parent > -1)
|
||||
{
|
||||
xmlParent = nodes[parent];
|
||||
}
|
||||
|
||||
nodes[i] = xmlParent->newChild("Node");
|
||||
nodes[i]->setAttr("name", pNode->name);
|
||||
|
||||
if (CMapperOperator* pOperator = m_nodes[i].position)
|
||||
{
|
||||
XmlNodeRef position = nodes[i]->newChild("Position");
|
||||
XmlNodeRef child = position->newChild("Operator");
|
||||
if (!pOperator->SerializeWithLinksTo(child))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (CMapperOperator* pOperator = m_nodes[i].orientation)
|
||||
{
|
||||
XmlNodeRef orientation = nodes[i]->newChild("Orientation");
|
||||
XmlNodeRef child = orientation->newChild("Operator");
|
||||
if (!pOperator->SerializeWithLinksTo(child))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CMapper::SerializeFrom(XmlNodeRef& node, int32 parent)
|
||||
{
|
||||
int childCount = uint32(node->getChildCount());
|
||||
for (int i = 0; i < childCount; ++i)
|
||||
{
|
||||
XmlNodeRef child = node->getChild(i);
|
||||
if (::_stricmp(child->getTag(), "Node"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
uint32 index = m_hierarchy.AddNode(child->getAttr("name"), QuatT(IDENTITY), parent);
|
||||
if (!SerializeFrom(child, int32(index)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CMapper::SerializeFrom(XmlNodeRef& node)
|
||||
{
|
||||
XmlNodeRef hierarchy = node->findChild("Hierarchy");
|
||||
if (!hierarchy)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
m_hierarchy.ClearNodes();
|
||||
|
||||
if (!SerializeFrom(hierarchy, -1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
m_nodes.resize(m_hierarchy.GetNodeCount());
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CRYINCLUDE_EDITOR_ANIMATION_SKELETONMAPPER_H
|
||||
#define CRYINCLUDE_EDITOR_ANIMATION_SKELETONMAPPER_H
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "SkeletonHierarchy.h"
|
||||
#include "SkeletonMapperOperator.h"
|
||||
|
||||
namespace Skeleton {
|
||||
class CMapper
|
||||
{
|
||||
public:
|
||||
struct SNode
|
||||
{
|
||||
_smart_ptr<CMapperOperator> position;
|
||||
_smart_ptr<CMapperOperator> orientation;
|
||||
};
|
||||
|
||||
public:
|
||||
CMapper();
|
||||
~CMapper();
|
||||
|
||||
public:
|
||||
CHierarchy& GetHierarchy() { return m_hierarchy; }
|
||||
void CreateFromHierarchy();
|
||||
|
||||
uint32 GetNodeCount() const { return uint32(m_nodes.size()); }
|
||||
SNode* GetNode(uint32 index) { return &m_nodes[index]; }
|
||||
const SNode* GetNode(uint32 index) const { return &m_nodes[index]; }
|
||||
|
||||
uint32 CreateLocation(const char* name);
|
||||
void ClearLocations();
|
||||
int32 FindLocation(const char* name) const;
|
||||
|
||||
uint32 GetLocationCount() const { return uint32(m_locations.size()); }
|
||||
void SetLocation(CMapperLocation& location);
|
||||
CMapperLocation* GetLocation(uint32 index) { return m_locations[index]; }
|
||||
const CMapperLocation* GetLocation(uint32 index) const { return m_locations[index]; }
|
||||
|
||||
bool CreateLocationsHierarchy(CHierarchy& hierarchy);
|
||||
|
||||
void Map(QuatT* pResult);
|
||||
|
||||
bool SerializeTo(XmlNodeRef& node);
|
||||
bool SerializeFrom(XmlNodeRef& node);
|
||||
|
||||
private:
|
||||
bool NodeHasLocation(uint32 index);
|
||||
bool ChildrenHaveLocation(uint32 index);
|
||||
bool NodeOrChildrenHaveLocation(uint32 index);
|
||||
|
||||
bool SerializeFrom(XmlNodeRef& node, int32 parent);
|
||||
|
||||
bool CreateLocationsHierarchy(uint32 index, CHierarchy& hierarchy, int32 hierarchyParent = -1);
|
||||
|
||||
// TEMP
|
||||
void GetChildrenIndices(uint32 parent, std::vector<uint32>& children);
|
||||
|
||||
private:
|
||||
CHierarchy m_hierarchy;
|
||||
std::vector<_smart_ptr<CMapperLocation> > m_locations;
|
||||
|
||||
std::vector<SNode> m_nodes;
|
||||
};
|
||||
} // namespace Skeleton
|
||||
|
||||
#endif // CRYINCLUDE_EDITOR_ANIMATION_SKELETONMAPPER_H
|
||||
@@ -1,284 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "EditorDefs.h"
|
||||
|
||||
#include "SkeletonMapperOperator.h"
|
||||
|
||||
using namespace Skeleton;
|
||||
|
||||
/*
|
||||
|
||||
CMapperOperatorDesc
|
||||
|
||||
*/
|
||||
|
||||
std::vector<CMapperOperatorDesc*> CMapperOperatorDesc::s_descs;
|
||||
|
||||
//
|
||||
|
||||
CMapperOperatorDesc::CMapperOperatorDesc(const char* name)
|
||||
{
|
||||
s_descs.push_back(this);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
CMapperOperator
|
||||
|
||||
*/
|
||||
|
||||
CMapperOperator::CMapperOperator(const char* className, uint32 positionCount, uint32 orientationCount)
|
||||
{
|
||||
m_className = className;
|
||||
m_position.resize(positionCount, nullptr);
|
||||
m_orientation.resize(orientationCount, nullptr);
|
||||
}
|
||||
|
||||
CMapperOperator::~CMapperOperator()
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
bool CMapperOperator::IsOfClass(const char* className)
|
||||
{
|
||||
if (::_stricmp(m_className, className))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32 CMapperOperator::HasLinksOfClass(const char* className)
|
||||
{
|
||||
uint32 count = 0;
|
||||
|
||||
uint32 positionCount = m_position.size();
|
||||
for (uint32 i = 0; i < positionCount; ++i)
|
||||
{
|
||||
CMapperOperator* pOperator = m_position[i];
|
||||
if (!pOperator)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (pOperator->IsOfClass(className))
|
||||
{
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 orientationCount = m_orientation.size();
|
||||
for (uint32 i = 0; i < orientationCount; ++i)
|
||||
{
|
||||
CMapperOperator* pOperator = m_orientation[i];
|
||||
if (!pOperator)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (pOperator->IsOfClass(className))
|
||||
{
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
bool CMapperOperator::SerializeTo(XmlNodeRef& node)
|
||||
{
|
||||
node->setAttr("class", m_className);
|
||||
|
||||
uint32 parameterCount = uint32(m_parameters.size());
|
||||
for (uint32 i = 0; i < parameterCount; ++i)
|
||||
{
|
||||
m_parameters[i]->Serialize(node, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CMapperOperator::SerializeFrom(XmlNodeRef& node)
|
||||
{
|
||||
uint32 parameterCount = uint32(m_parameters.size());
|
||||
for (uint32 i = 0; i < parameterCount; ++i)
|
||||
{
|
||||
m_parameters[i]->Serialize(node, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CMapperOperator::SerializeWithLinksTo(XmlNodeRef& node)
|
||||
{
|
||||
if (!SerializeTo(node))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 positionCount = uint32(m_position.size());
|
||||
for (uint32 i = 0; i < positionCount; ++i)
|
||||
{
|
||||
CMapperOperator* pOperator = m_position[i];
|
||||
if (!pOperator)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
XmlNodeRef position = node->newChild("Position");
|
||||
position->setAttr("index", i);
|
||||
|
||||
XmlNodeRef child = position->newChild("Operator");
|
||||
if (!pOperator->SerializeWithLinksTo(child))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 orientationCount = uint32(m_orientation.size());
|
||||
for (uint32 i = 0; i < orientationCount; ++i)
|
||||
{
|
||||
CMapperOperator* pOperator = m_orientation[i];
|
||||
if (!pOperator)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
XmlNodeRef orientation = node->newChild("Orientation");
|
||||
orientation->setAttr("index", i);
|
||||
|
||||
XmlNodeRef child = orientation->newChild("Operator");
|
||||
if (!pOperator->SerializeWithLinksTo(child))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CMapperOperator::SerializeWithLinksFrom(XmlNodeRef& node)
|
||||
{
|
||||
if (!SerializeFrom(node))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
/*
|
||||
|
||||
CMapperOperator_Transform
|
||||
|
||||
*/
|
||||
|
||||
class CMapperOperator_Transform
|
||||
: public CMapperOperator
|
||||
{
|
||||
public:
|
||||
CMapperOperator_Transform()
|
||||
: CMapperOperator("Transform", 1, 1)
|
||||
{
|
||||
m_pAngles = new CVariable<Vec3>();
|
||||
m_pAngles->SetName("rotation");
|
||||
m_pAngles->Set(Vec3(0.0f, 0.0f, 0.0f));
|
||||
m_pAngles->SetLimits(-180.0f, 180.0f);
|
||||
AddParameter(*m_pAngles);
|
||||
|
||||
m_pVector = new CVariable<Vec3>();
|
||||
m_pVector->SetName("vector");
|
||||
m_pVector->Set(Vec3(0.0f, 0.0f, 0.0f));
|
||||
AddParameter(*m_pVector);
|
||||
|
||||
m_pScale = new CVariable<Vec3>();
|
||||
m_pScale->SetName("scale");
|
||||
m_pScale->Set(Vec3(1.0f, 1.0f, 1.0f));
|
||||
AddParameter(*m_pScale);
|
||||
}
|
||||
|
||||
// CMapperOperator
|
||||
public:
|
||||
virtual QuatT CMapperOperator_Transform::Compute()
|
||||
{
|
||||
QuatT result(IDENTITY);
|
||||
m_pVector->Get(result.t);
|
||||
|
||||
Vec3 scale;
|
||||
m_pScale->Get(scale);
|
||||
|
||||
Vec3 angles;
|
||||
m_pAngles->Get(angles);
|
||||
|
||||
result.q = Quat::CreateRotationXYZ(
|
||||
Ang3(DEG2RAD(angles.x), DEG2RAD(angles.y), DEG2RAD(angles.z)));
|
||||
|
||||
if (CMapperOperator* pOperator = GetPosition(0))
|
||||
{
|
||||
result.t = pOperator->Compute().t.CompMul(scale) + result.t;
|
||||
}
|
||||
if (CMapperOperator* pOperator = GetOrientation(0))
|
||||
{
|
||||
result.q = pOperator->Compute().q * result.q;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
CVariable<Vec3>* m_pVector;
|
||||
CVariable<Vec3>* m_pAngles;
|
||||
CVariable<Vec3>* m_pScale;
|
||||
};
|
||||
|
||||
SkeletonMapperOperatorRegister(Transform, CMapperOperator_Transform)
|
||||
|
||||
class CMapperOperator_PositionsToOrientation
|
||||
: public CMapperOperator
|
||||
{
|
||||
public:
|
||||
CMapperOperator_PositionsToOrientation()
|
||||
: CMapperOperator("PositionsToOrientation", 3, 0)
|
||||
{
|
||||
}
|
||||
|
||||
// CMapperOperator
|
||||
public:
|
||||
virtual QuatT Compute()
|
||||
{
|
||||
CMapperOperator* pOperator0 = GetPosition(0);
|
||||
CMapperOperator* pOperator1 = GetPosition(1);
|
||||
CMapperOperator* pOperator2 = GetPosition(2);
|
||||
if (!pOperator0 || !pOperator1 || !pOperator2)
|
||||
{
|
||||
return QuatT(IDENTITY);
|
||||
}
|
||||
|
||||
Vec3 p0 = pOperator0->Compute().t;
|
||||
Vec3 p1 = pOperator1->Compute().t;
|
||||
Vec3 p2 = pOperator2->Compute().t;
|
||||
|
||||
Vec3 m = (p1 + p2) * 0.5f;
|
||||
Vec3 y = (m - p0).GetNormalized();
|
||||
Vec3 z = (p1 - p2).GetNormalized();
|
||||
Vec3 x = y % z;
|
||||
z = x % y;
|
||||
|
||||
Matrix33 m33;
|
||||
m33.SetFromVectors(x, y, z);
|
||||
QuatT result(IDENTITY);
|
||||
result.q = Quat(m33);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
SkeletonMapperOperatorRegister(PositionsToOrientation, CMapperOperator_PositionsToOrientation)
|
||||
@@ -1,164 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CRYINCLUDE_EDITOR_ANIMATION_SKELETONMAPPEROPERATOR_H
|
||||
#define CRYINCLUDE_EDITOR_ANIMATION_SKELETONMAPPEROPERATOR_H
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "../Util/Variable.h"
|
||||
|
||||
#undef GetClassName
|
||||
|
||||
#define SkeletonMapperOperatorRegister(name, className) \
|
||||
class CMapperOperatorDesc_##name \
|
||||
: public CMapperOperatorDesc \
|
||||
{ \
|
||||
public: \
|
||||
CMapperOperatorDesc_##name() \
|
||||
: CMapperOperatorDesc(#name) { } \
|
||||
protected: \
|
||||
virtual const char* GetName() { return #name; } \
|
||||
virtual CMapperOperator* Create() { return new className(); } \
|
||||
} mapperOperatorDesc__##name;
|
||||
|
||||
namespace Skeleton {
|
||||
class CMapperOperator;
|
||||
|
||||
class CMapperOperatorDesc
|
||||
{
|
||||
public:
|
||||
static uint32 GetCount() { return uint32(s_descs.size()); }
|
||||
static const char* GetName(uint32 index) { return s_descs[index]->GetName(); }
|
||||
static CMapperOperator* Create(uint32 index) { return s_descs[index]->Create(); }
|
||||
|
||||
private:
|
||||
static std::vector<CMapperOperatorDesc*> s_descs;
|
||||
|
||||
public:
|
||||
CMapperOperatorDesc(const char* name);
|
||||
|
||||
protected:
|
||||
virtual const char* GetName() = 0;
|
||||
virtual CMapperOperator* Create() = 0;
|
||||
};
|
||||
|
||||
class CMapperOperator
|
||||
: public _reference_target_t
|
||||
{
|
||||
protected:
|
||||
CMapperOperator(const char* className, uint32 positionCount, uint32 orientationCount);
|
||||
~CMapperOperator();
|
||||
|
||||
public:
|
||||
const char* GetClassName() { return m_className; }
|
||||
|
||||
uint32 GetPositionCount() const { return uint32(m_position.size()); }
|
||||
void SetPosition(uint32 index, CMapperOperator* pOperator) { m_position[index] = pOperator; }
|
||||
CMapperOperator* GetPosition(uint32 index) { return m_position[index]; }
|
||||
|
||||
uint32 GetOrientationCount() const { return uint32(m_orientation.size()); }
|
||||
void SetOrientation(uint32 index, CMapperOperator* pOperator) { m_orientation[index] = pOperator; }
|
||||
CMapperOperator* GetOrientation(uint32 index) { return m_orientation[index]; }
|
||||
|
||||
uint32 GetParameterCount() { return uint32(m_parameters.size()); }
|
||||
IVariable* GetParameter(uint32 index) { return m_parameters[index]; }
|
||||
|
||||
bool IsOfClass(const char* className);
|
||||
uint32 HasLinksOfClass(const char* className);
|
||||
|
||||
bool SerializeTo(XmlNodeRef& node);
|
||||
bool SerializeFrom(XmlNodeRef& node);
|
||||
|
||||
bool SerializeWithLinksTo(XmlNodeRef& node);
|
||||
bool SerializeWithLinksFrom(XmlNodeRef& node);
|
||||
|
||||
protected:
|
||||
void AddParameter(IVariable& variable) { m_parameters.push_back(&variable); }
|
||||
|
||||
public:
|
||||
virtual QuatT Compute() = 0;
|
||||
|
||||
private:
|
||||
const char* m_className;
|
||||
std::vector<_smart_ptr<CMapperOperator> > m_position;
|
||||
std::vector<_smart_ptr<CMapperOperator> > m_orientation;
|
||||
|
||||
std::vector<IVariablePtr> m_parameters;
|
||||
};
|
||||
|
||||
class CMapperLocation
|
||||
: public CMapperOperator
|
||||
{
|
||||
public:
|
||||
CMapperLocation()
|
||||
: CMapperOperator("Location", 0, 0)
|
||||
{
|
||||
m_pName = new CVariable<CString>();
|
||||
m_pName->SetName("name");
|
||||
m_pName->SetFlags(m_pName->GetFlags() | IVariable::UI_INVISIBLE);
|
||||
AddParameter(*m_pName);
|
||||
|
||||
m_pAxis = new CVariable<Vec3>();
|
||||
m_pAxis->SetName("axis");
|
||||
m_pAxis->SetLimits(-3.0f, +3.0f);
|
||||
m_pAxis->Set(Vec3(1.0f, 2.0f, 3.0f));
|
||||
AddParameter(*m_pAxis);
|
||||
|
||||
m_location = QuatT(IDENTITY);
|
||||
}
|
||||
|
||||
public:
|
||||
void SetName(const char* name) { m_pName->Set(name); }
|
||||
CString GetName() const { CString s; m_pName->Get(s); return s; }
|
||||
|
||||
void SetLocation(const QuatT& location) { m_location = location; }
|
||||
const QuatT& GetLocation() const { return m_location; }
|
||||
|
||||
// CMapperOperator
|
||||
public:
|
||||
virtual QuatT Compute()
|
||||
{
|
||||
Vec3 axis;
|
||||
m_pAxis->Get(axis);
|
||||
|
||||
uint32 x = fabs_tpl(axis.x);
|
||||
uint32 y = fabs_tpl(axis.y);
|
||||
uint32 z = fabs_tpl(axis.z);
|
||||
if (x < 1 || y < 1 || z < 1 ||
|
||||
x > 3 || y > 3 || y > 3 ||
|
||||
x == y || x == z || y == z)
|
||||
{
|
||||
return QuatT(IDENTITY);
|
||||
}
|
||||
|
||||
Matrix33 matrix;
|
||||
matrix.SetFromVectors(
|
||||
m_location.q.GetColumn(x - 1) * f32(::sgn(axis.x)),
|
||||
m_location.q.GetColumn(y - 1) * f32(::sgn(axis.y)),
|
||||
m_location.q.GetColumn(z - 1) * f32(::sgn(axis.z)));
|
||||
if (!matrix.IsOrthonormalRH(0.01f))
|
||||
{
|
||||
return QuatT(IDENTITY);
|
||||
}
|
||||
|
||||
QuatT result = m_location;
|
||||
result.q = Quat(matrix);
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
CVariable<CString>* m_pName;
|
||||
CVariable<Vec3>* m_pAxis;
|
||||
|
||||
QuatT m_location;
|
||||
};
|
||||
} // namespace Skeleton
|
||||
|
||||
#endif // CRYINCLUDE_EDITOR_ANIMATION_SKELETONMAPPEROPERATOR_H
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
// Editor
|
||||
#include "TrackView/TrackViewDialog.h"
|
||||
#include "RenderViewport.h"
|
||||
#include "ViewManager.h"
|
||||
#include "Objects/SelectionGroup.h"
|
||||
#include "Include/IObjectManager.h"
|
||||
@@ -29,7 +28,7 @@ class CMovieCallback
|
||||
: public IMovieCallback
|
||||
{
|
||||
protected:
|
||||
virtual void OnMovieCallback(ECallbackReason reason, [[maybe_unused]] IAnimNode* pNode)
|
||||
void OnMovieCallback(ECallbackReason reason, [[maybe_unused]] IAnimNode* pNode) override
|
||||
{
|
||||
switch (reason)
|
||||
{
|
||||
@@ -49,7 +48,7 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
void OnSetCamera(const SCameraParams& Params)
|
||||
void OnSetCamera(const SCameraParams& Params) override
|
||||
{
|
||||
// Only switch camera when in Play mode.
|
||||
GUID camObjId = GUID_NULL;
|
||||
@@ -61,15 +60,6 @@ protected:
|
||||
{
|
||||
camObjId = pEditorEntity->GetId();
|
||||
}
|
||||
|
||||
CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport))
|
||||
{
|
||||
if (!rvp->IsSequenceCamera())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Switch camera in active rendering view.
|
||||
@@ -79,14 +69,14 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
bool IsSequenceCamUsed() const
|
||||
bool IsSequenceCamUsed() const override
|
||||
{
|
||||
if (gEnv->IsEditorGameMode() == true)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (GetIEditor()->GetViewManager() == NULL)
|
||||
if (GetIEditor()->GetViewManager() == nullptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -113,7 +103,7 @@ public:
|
||||
CAnimationContextPostRender(CAnimationContext* pAC)
|
||||
: m_pAC(pAC){}
|
||||
|
||||
void OnPostRender() const { assert(m_pAC); m_pAC->OnPostRender(); }
|
||||
void OnPostRender() const override { assert(m_pAC); m_pAC->OnPostRender(); }
|
||||
|
||||
protected:
|
||||
CAnimationContext* m_pAC;
|
||||
@@ -231,7 +221,7 @@ void CAnimationContext::SetSequence(CTrackViewSequence* sequence, bool force, bo
|
||||
m_pSequence->UnBindFromEditorObjects();
|
||||
}
|
||||
m_pSequence = sequence;
|
||||
|
||||
|
||||
// Notify a new sequence was just selected.
|
||||
Maestro::EditorSequenceNotificationBus::Broadcast(&Maestro::EditorSequenceNotificationBus::Events::OnSequenceSelected, m_pSequence ? m_pSequence->GetSequenceComponentEntityId() : AZ::EntityId());
|
||||
|
||||
@@ -347,7 +337,7 @@ void CAnimationContext::OnSequenceActivated(AZ::EntityId entityId)
|
||||
{
|
||||
// Hang onto this because SetSequence() will reset it.
|
||||
float lastTime = m_mostRecentSequenceTime;
|
||||
|
||||
|
||||
SetSequence(sequence, false, false);
|
||||
|
||||
// Restore the current time.
|
||||
|
||||
@@ -82,6 +82,7 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent)
|
||||
|
||||
m_ui->m_assetBrowserTableViewWidget->setVisible(false);
|
||||
m_ui->m_toggleDisplayViewBtn->setVisible(false);
|
||||
m_ui->m_searchWidget->SetFilterInputInterval(AZStd::chrono::milliseconds(250));
|
||||
if (ed_useNewAssetBrowserTableView)
|
||||
{
|
||||
m_ui->m_toggleDisplayViewBtn->setVisible(true);
|
||||
|
||||
+12
-13
@@ -24,10 +24,10 @@ class CUndoBaseLibrary
|
||||
: public IUndoObject
|
||||
{
|
||||
public:
|
||||
CUndoBaseLibrary(CBaseLibrary* pLib, const QString& description, const QString& selectedItem = 0)
|
||||
CUndoBaseLibrary(CBaseLibrary* pLib, const QString& description, const QString& selectedItem = QString())
|
||||
: m_pLib(pLib)
|
||||
, m_description(description)
|
||||
, m_redo(0)
|
||||
, m_redo(nullptr)
|
||||
, m_selectedItem(selectedItem)
|
||||
{
|
||||
assert(m_pLib);
|
||||
@@ -36,16 +36,16 @@ public:
|
||||
m_pLib->Serialize(m_undo, false);
|
||||
}
|
||||
|
||||
virtual QString GetEditorObjectName()
|
||||
QString GetEditorObjectName() override
|
||||
{
|
||||
return m_selectedItem;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual int GetSize() { return sizeof(CUndoBaseLibrary); }
|
||||
virtual QString GetDescription() { return m_description; };
|
||||
int GetSize() override { return sizeof(CUndoBaseLibrary); }
|
||||
QString GetDescription() override { return m_description; };
|
||||
|
||||
virtual void Undo(bool bUndo)
|
||||
void Undo(bool bUndo) override
|
||||
{
|
||||
if (bUndo)
|
||||
{
|
||||
@@ -57,7 +57,7 @@ protected:
|
||||
GetIEditor()->Notify(eNotify_OnDataBaseUpdate);
|
||||
}
|
||||
|
||||
virtual void Redo()
|
||||
void Redo() override
|
||||
{
|
||||
m_pLib->Serialize(m_redo, true);
|
||||
m_pLib->SetModified();
|
||||
@@ -107,7 +107,7 @@ void CBaseLibrary::RemoveAllItems()
|
||||
// Unregister item in case it was registered. It is ok if it wasn't. This is still safe to call.
|
||||
m_pManager->UnregisterItem(m_items[i]);
|
||||
// Clear library item.
|
||||
m_items[i]->m_library = NULL;
|
||||
m_items[i]->m_library = nullptr;
|
||||
}
|
||||
m_items.clear();
|
||||
Release();
|
||||
@@ -216,7 +216,7 @@ IDataBaseItem* CBaseLibrary::FindItem(const QString& name)
|
||||
return m_items[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool CBaseLibrary::AddLibraryToSourceControl(const QString& fullPathName) const
|
||||
@@ -233,8 +233,8 @@ bool CBaseLibrary::AddLibraryToSourceControl(const QString& fullPathName) const
|
||||
|
||||
bool CBaseLibrary::SaveLibrary(const char* name, bool saveEmptyLibrary)
|
||||
{
|
||||
assert(name != NULL);
|
||||
if (name == NULL)
|
||||
assert(name != nullptr);
|
||||
if (name == nullptr)
|
||||
{
|
||||
CryFatalError("The library you are attempting to save has no name specified.");
|
||||
return false;
|
||||
@@ -258,9 +258,8 @@ bool CBaseLibrary::SaveLibrary(const char* name, bool saveEmptyLibrary)
|
||||
}
|
||||
if (!bRes)
|
||||
{
|
||||
string strMessage;
|
||||
QByteArray filenameUtf8 = fileName.toUtf8();
|
||||
strMessage.Format("The file %s is read-only and the save of the library couldn't be performed. Try to remove the \"read-only\" flag or check-out the file and then try again.", filenameUtf8.data());
|
||||
AZStd::string strMessage = AZStd::string::format("The file %s is read-only and the save of the library couldn't be performed. Try to remove the \"read-only\" flag or check-out the file and then try again.", filenameUtf8.data());
|
||||
CryMessageBox(strMessage.c_str(), "Saving Error", MB_OK | MB_ICONWARNING);
|
||||
}
|
||||
return bRes;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include <AzCore/Math/Uuid.h>
|
||||
|
||||
//undo object for multi-changes inside library item. such as set all variables to default values.
|
||||
//undo object for multi-changes inside library item. such as set all variables to default values.
|
||||
//For example: change particle emitter shape will lead to multiple variable changes
|
||||
class CUndoBaseLibraryItem
|
||||
: public IUndoObject
|
||||
@@ -54,24 +54,24 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual int GetSize()
|
||||
{
|
||||
int GetSize() override
|
||||
{
|
||||
return m_size;
|
||||
}
|
||||
|
||||
QString GetDescription() override
|
||||
{
|
||||
return m_description;
|
||||
{
|
||||
return m_description;
|
||||
}
|
||||
|
||||
virtual void Undo(bool bUndo)
|
||||
void Undo(bool bUndo) override
|
||||
{
|
||||
//find the libItem
|
||||
IDataBaseItem *libItem = m_libMgr->FindItemByName(m_itemPath);
|
||||
if (libItem == nullptr)
|
||||
{
|
||||
//the undo stack is not reliable any more..
|
||||
assert(false);
|
||||
assert(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ protected:
|
||||
libItem->Serialize(m_undoCtx);
|
||||
}
|
||||
|
||||
virtual void Redo()
|
||||
void Redo() override
|
||||
{
|
||||
//find the libItem
|
||||
IDataBaseItem *libItem = m_libMgr->FindItemByName(m_itemPath);
|
||||
@@ -124,7 +124,7 @@ private:
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CBaseLibraryItem::CBaseLibraryItem()
|
||||
{
|
||||
m_library = 0;
|
||||
m_library = nullptr;
|
||||
GenerateId();
|
||||
m_bModified = false;
|
||||
}
|
||||
@@ -266,7 +266,7 @@ void CBaseLibraryItem::SetLibrary(CBaseLibrary* pLibrary)
|
||||
void CBaseLibraryItem::SetModified(bool bModified)
|
||||
{
|
||||
m_bModified = bModified;
|
||||
if (m_bModified && m_library != NULL)
|
||||
if (m_bModified && m_library != nullptr)
|
||||
{
|
||||
m_library->SetModified(bModified);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ class CUndoBaseLibraryManager
|
||||
: public IUndoObject
|
||||
{
|
||||
public:
|
||||
CUndoBaseLibraryManager(CBaseLibraryManager* pMngr, const QString& description, const QString& modifiedManager = 0)
|
||||
CUndoBaseLibraryManager(CBaseLibraryManager* pMngr, const QString& description, const QString& modifiedManager = nullptr)
|
||||
: m_pMngr(pMngr)
|
||||
, m_description(description)
|
||||
, m_editorObject(modifiedManager)
|
||||
@@ -35,16 +35,16 @@ public:
|
||||
SerializeTo(m_undos);
|
||||
}
|
||||
|
||||
virtual QString GetEditorObjectName()
|
||||
QString GetEditorObjectName() override
|
||||
{
|
||||
return m_editorObject;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual int GetSize() { return sizeof(CUndoBaseLibraryManager); }
|
||||
virtual QString GetDescription() { return m_description; };
|
||||
int GetSize() override { return sizeof(CUndoBaseLibraryManager); }
|
||||
QString GetDescription() override { return m_description; };
|
||||
|
||||
virtual void Undo(bool bUndo)
|
||||
void Undo(bool bUndo) override
|
||||
{
|
||||
if (bUndo)
|
||||
{
|
||||
@@ -55,7 +55,7 @@ protected:
|
||||
GetIEditor()->Notify(eNotify_OnDataBaseUpdate);
|
||||
}
|
||||
|
||||
virtual void Redo()
|
||||
void Redo() override
|
||||
{
|
||||
m_pMngr->ClearAll();
|
||||
UnserializeFrom(m_redos);
|
||||
@@ -84,7 +84,7 @@ private:
|
||||
for (int i = 0; i < m_pMngr->GetLibraryCount(); i++)
|
||||
{
|
||||
IDataBaseLibrary* library = m_pMngr->GetLibrary(i);
|
||||
|
||||
|
||||
const char* tag = library->IsLevelLibrary() ? LEVEL_LIBRARY_TAG : LIBRARY_TAG;
|
||||
XmlNodeRef node = GetIEditor()->GetSystem()->CreateXmlNode(tag);
|
||||
QString file = library->GetFilename().isEmpty() ? library->GetFilename() : library->GetName();
|
||||
@@ -203,7 +203,7 @@ int CBaseLibraryManager::FindLibraryIndex(const QString& library)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
IDataBaseItem* CBaseLibraryManager::FindItem(REFGUID guid) const
|
||||
{
|
||||
CBaseLibraryItem* pMtl = stl::find_in_map(m_itemsGuidMap, guid, (CBaseLibraryItem*)0);
|
||||
CBaseLibraryItem* pMtl = stl::find_in_map(m_itemsGuidMap, guid, nullptr);
|
||||
return pMtl;
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@ void CBaseLibraryManager::SplitFullItemName(const QString& fullItemName, QString
|
||||
IDataBaseItem* CBaseLibraryManager::FindItemByName(const QString& fullItemName)
|
||||
{
|
||||
AZStd::lock_guard<AZStd::mutex> lock(m_itemsNameMapMutex);
|
||||
return stl::find_in_map(m_itemsNameMap, fullItemName, 0);
|
||||
return stl::find_in_map(m_itemsNameMap, fullItemName, nullptr);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -398,7 +398,7 @@ void CBaseLibraryManager::DeleteLibrary(const QString& library, bool forceDelete
|
||||
UnregisterItem((CBaseLibraryItem*)pLibrary->GetItem(j));
|
||||
}
|
||||
pLibrary->RemoveAllItems();
|
||||
|
||||
|
||||
if (pLibrary->IsLevelLibrary())
|
||||
{
|
||||
m_pLevelLibrary = nullptr;
|
||||
@@ -420,7 +420,7 @@ IDataBaseLibrary* CBaseLibraryManager::GetLibrary(int index) const
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
IDataBaseLibrary* CBaseLibraryManager::GetLevelLibrary() const
|
||||
{
|
||||
IDataBaseLibrary* pLevelLib = NULL;
|
||||
IDataBaseLibrary* pLevelLib = nullptr;
|
||||
|
||||
for (int i = 0; i < GetLibraryCount(); i++)
|
||||
{
|
||||
@@ -526,14 +526,14 @@ void CBaseLibraryManager::Serialize(XmlNodeRef& node, bool bLoading)
|
||||
QString CBaseLibraryManager::MakeUniqueItemName(const QString& srcName, const QString& libName)
|
||||
{
|
||||
// unlikely we'll ever encounter more than 16
|
||||
std::vector<string> possibleDuplicates;
|
||||
std::vector<AZStd::string> possibleDuplicates;
|
||||
possibleDuplicates.reserve(16);
|
||||
|
||||
// search for strings in the database that might have a similar name (ignore case)
|
||||
IDataBaseItemEnumerator* pEnum = GetItemEnumerator();
|
||||
for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != NULL; pItem = pEnum->GetNext())
|
||||
for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != nullptr; pItem = pEnum->GetNext())
|
||||
{
|
||||
//Check if the item is in the target library first.
|
||||
//Check if the item is in the target library first.
|
||||
IDataBaseLibrary* itemLibrary = pItem->GetLibrary();
|
||||
QString itemLibraryName;
|
||||
if (itemLibrary)
|
||||
@@ -550,7 +550,7 @@ QString CBaseLibraryManager::MakeUniqueItemName(const QString& srcName, const QS
|
||||
const QString& name = pItem->GetName();
|
||||
if (name.startsWith(srcName, Qt::CaseInsensitive))
|
||||
{
|
||||
possibleDuplicates.push_back(string(name.toUtf8().data()));
|
||||
possibleDuplicates.push_back(AZStd::string(name.toUtf8().data()));
|
||||
}
|
||||
}
|
||||
pEnum->Release();
|
||||
@@ -560,7 +560,7 @@ QString CBaseLibraryManager::MakeUniqueItemName(const QString& srcName, const QS
|
||||
return srcName;
|
||||
}
|
||||
|
||||
std::sort(possibleDuplicates.begin(), possibleDuplicates.end(), [](const string& strOne, const string& strTwo)
|
||||
std::sort(possibleDuplicates.begin(), possibleDuplicates.end(), [](const AZStd::string& strOne, const AZStd::string& strTwo)
|
||||
{
|
||||
// I can assume size sorting since if the length is different, either one of the two strings doesn't
|
||||
// closely match the string we are trying to duplicate, or it's a bigger number (X1 vs X10)
|
||||
@@ -590,7 +590,7 @@ QString CBaseLibraryManager::MakeUniqueItemName(const QString& srcName, const QS
|
||||
void CBaseLibraryManager::Validate()
|
||||
{
|
||||
IDataBaseItemEnumerator* pEnum = GetItemEnumerator();
|
||||
for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != NULL; pItem = pEnum->GetNext())
|
||||
for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != nullptr; pItem = pEnum->GetNext())
|
||||
{
|
||||
pItem->Validate();
|
||||
}
|
||||
@@ -617,7 +617,7 @@ void CBaseLibraryManager::RegisterItem(CBaseLibraryItem* pItem, REFGUID newGuid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
CBaseLibraryItem* pOldItem = stl::find_in_map(m_itemsGuidMap, newGuid, (CBaseLibraryItem*)0);
|
||||
CBaseLibraryItem* pOldItem = stl::find_in_map(m_itemsGuidMap, newGuid, nullptr);
|
||||
if (!pOldItem)
|
||||
{
|
||||
pItem->m_guid = newGuid;
|
||||
@@ -677,7 +677,7 @@ void CBaseLibraryManager::RegisterItem(CBaseLibraryItem* pItem)
|
||||
{
|
||||
return;
|
||||
}
|
||||
CBaseLibraryItem* pOldItem = stl::find_in_map(m_itemsGuidMap, pItem->GetGUID(), (CBaseLibraryItem*)0);
|
||||
CBaseLibraryItem* pOldItem = stl::find_in_map(m_itemsGuidMap, pItem->GetGUID(), nullptr);
|
||||
if (!pOldItem)
|
||||
{
|
||||
m_itemsGuidMap[pItem->GetGUID()] = pItem;
|
||||
@@ -789,7 +789,7 @@ QString CBaseLibraryManager::MakeFullItemName(IDataBaseLibrary* pLibrary, const
|
||||
void CBaseLibraryManager::GatherUsedResources(CUsedResources& resources)
|
||||
{
|
||||
IDataBaseItemEnumerator* pEnum = GetItemEnumerator();
|
||||
for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != NULL; pItem = pEnum->GetNext())
|
||||
for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != nullptr; pItem = pEnum->GetNext())
|
||||
{
|
||||
pItem->GatherUsedResources(resources);
|
||||
}
|
||||
@@ -815,15 +815,15 @@ void CBaseLibraryManager::OnEditorNotifyEvent(EEditorNotifyEvent event)
|
||||
switch (event)
|
||||
{
|
||||
case eNotify_OnBeginNewScene:
|
||||
SetSelectedItem(0);
|
||||
SetSelectedItem(nullptr);
|
||||
ClearAll();
|
||||
break;
|
||||
case eNotify_OnBeginSceneOpen:
|
||||
SetSelectedItem(0);
|
||||
SetSelectedItem(nullptr);
|
||||
ClearAll();
|
||||
break;
|
||||
case eNotify_OnCloseScene:
|
||||
SetSelectedItem(0);
|
||||
SetSelectedItem(nullptr);
|
||||
ClearAll();
|
||||
break;
|
||||
}
|
||||
@@ -913,7 +913,7 @@ void CBaseLibraryManager::ChangeLibraryOrder(IDataBaseLibrary* lib, unsigned int
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < m_libs.size(); i++)
|
||||
{
|
||||
if (lib == m_libs[i])
|
||||
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
CANCEL = QDialog::Rejected
|
||||
};
|
||||
|
||||
CCheckOutDialog(const QString& file, QWidget* pParent = NULL); // standard constructor
|
||||
CCheckOutDialog(const QString& file, QWidget* pParent = nullptr); // standard constructor
|
||||
virtual ~CCheckOutDialog();
|
||||
|
||||
// Dialog Data
|
||||
|
||||
@@ -79,9 +79,9 @@ CEditorCommandManager::~CEditorCommandManager()
|
||||
m_uiCommands.clear();
|
||||
}
|
||||
|
||||
string CEditorCommandManager::GetFullCommandName(const string& module, const string& name)
|
||||
AZStd::string CEditorCommandManager::GetFullCommandName(const AZStd::string& module, const AZStd::string& name)
|
||||
{
|
||||
string fullName = module;
|
||||
AZStd::string fullName = module;
|
||||
fullName += ".";
|
||||
fullName += name;
|
||||
return fullName;
|
||||
@@ -91,10 +91,10 @@ bool CEditorCommandManager::AddCommand(CCommand* pCommand, TPfnDeleter deleter)
|
||||
{
|
||||
assert(pCommand);
|
||||
|
||||
string module = pCommand->GetModule();
|
||||
string name = pCommand->GetName();
|
||||
AZStd::string module = pCommand->GetModule();
|
||||
AZStd::string name = pCommand->GetName();
|
||||
|
||||
if (IsRegistered(module, name) && m_bWarnDuplicate)
|
||||
if (IsRegistered(module.c_str(), name.c_str()) && m_bWarnDuplicate)
|
||||
{
|
||||
QString errMsg;
|
||||
|
||||
@@ -118,7 +118,7 @@ bool CEditorCommandManager::AddCommand(CCommand* pCommand, TPfnDeleter deleter)
|
||||
|
||||
bool CEditorCommandManager::UnregisterCommand(const char* module, const char* name)
|
||||
{
|
||||
string fullName = GetFullCommandName(module, name);
|
||||
AZStd::string fullName = GetFullCommandName(module, name);
|
||||
CommandTable::iterator itr = m_commands.find(fullName);
|
||||
|
||||
if (itr != m_commands.end())
|
||||
@@ -154,7 +154,7 @@ bool CEditorCommandManager::RegisterUICommand(
|
||||
return false;
|
||||
}
|
||||
|
||||
return AttachUIInfo(GetFullCommandName(module, name), uiInfo);
|
||||
return AttachUIInfo(GetFullCommandName(module, name).c_str(), uiInfo);
|
||||
}
|
||||
|
||||
bool CEditorCommandManager::AttachUIInfo(const char* fullCmdName, const CCommand0::SUIInfo& uiInfo)
|
||||
@@ -190,14 +190,14 @@ bool CEditorCommandManager::AttachUIInfo(const char* fullCmdName, const CCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CEditorCommandManager::GetUIInfo(const string& module, const string& name, CCommand0::SUIInfo& uiInfo) const
|
||||
bool CEditorCommandManager::GetUIInfo(const AZStd::string& module, const AZStd::string& name, CCommand0::SUIInfo& uiInfo) const
|
||||
{
|
||||
string fullName = GetFullCommandName(module, name);
|
||||
AZStd::string fullName = GetFullCommandName(module, name);
|
||||
|
||||
return GetUIInfo(fullName, uiInfo);
|
||||
}
|
||||
|
||||
bool CEditorCommandManager::GetUIInfo(const string& fullCmdName, CCommand0::SUIInfo& uiInfo) const
|
||||
bool CEditorCommandManager::GetUIInfo(const AZStd::string& fullCmdName, CCommand0::SUIInfo& uiInfo) const
|
||||
{
|
||||
CommandTable::const_iterator iter = m_commands.find(fullCmdName);
|
||||
|
||||
@@ -223,9 +223,9 @@ int CEditorCommandManager::GenNewCommandId()
|
||||
return uniqueId++;
|
||||
}
|
||||
|
||||
QString CEditorCommandManager::Execute(const string& module, const string& name, const CCommand::CArgs& args)
|
||||
QString CEditorCommandManager::Execute(const AZStd::string& module, const AZStd::string& name, const CCommand::CArgs& args)
|
||||
{
|
||||
string fullName = GetFullCommandName(module, name);
|
||||
AZStd::string fullName = GetFullCommandName(module, name);
|
||||
CommandTable::iterator iter = m_commands.find(fullName);
|
||||
|
||||
if (iter != m_commands.end())
|
||||
@@ -245,18 +245,18 @@ QString CEditorCommandManager::Execute(const string& module, const string& name,
|
||||
return "";
|
||||
}
|
||||
|
||||
QString CEditorCommandManager::Execute(const string& cmdLine)
|
||||
QString CEditorCommandManager::Execute(const AZStd::string& cmdLine)
|
||||
{
|
||||
string cmdTxt, argsTxt;
|
||||
AZStd::string cmdTxt, argsTxt;
|
||||
size_t argStart = cmdLine.find_first_of(' ');
|
||||
|
||||
cmdTxt = cmdLine.substr(0, argStart);
|
||||
argsTxt = "";
|
||||
|
||||
if (argStart != string::npos)
|
||||
if (argStart != AZStd::string::npos)
|
||||
{
|
||||
argsTxt = cmdLine.substr(argStart + 1);
|
||||
argsTxt.Trim();
|
||||
AZ::StringFunc::TrimWhiteSpace(argsTxt, true, true);
|
||||
}
|
||||
|
||||
CommandTable::iterator itr = m_commands.find(cmdTxt);
|
||||
@@ -301,7 +301,7 @@ void CEditorCommandManager::Execute(int commandId)
|
||||
}
|
||||
}
|
||||
|
||||
void CEditorCommandManager::GetCommandList(std::vector<string>& cmds) const
|
||||
void CEditorCommandManager::GetCommandList(std::vector<AZStd::string>& cmds) const
|
||||
{
|
||||
cmds.clear();
|
||||
cmds.reserve(m_commands.size());
|
||||
@@ -315,9 +315,9 @@ void CEditorCommandManager::GetCommandList(std::vector<string>& cmds) const
|
||||
std::sort(cmds.begin(), cmds.end());
|
||||
}
|
||||
|
||||
string CEditorCommandManager::AutoComplete(const string& substr) const
|
||||
AZStd::string CEditorCommandManager::AutoComplete(const AZStd::string& substr) const
|
||||
{
|
||||
std::vector<string> cmds;
|
||||
std::vector<AZStd::string> cmds;
|
||||
GetCommandList(cmds);
|
||||
|
||||
// If substring is empty return first command.
|
||||
@@ -358,7 +358,7 @@ string CEditorCommandManager::AutoComplete(const string& substr) const
|
||||
|
||||
bool CEditorCommandManager::IsRegistered(const char* module, const char* name) const
|
||||
{
|
||||
string fullName = GetFullCommandName(module, name);
|
||||
AZStd::string fullName = GetFullCommandName(module, name);
|
||||
CommandTable::const_iterator iter = m_commands.find(fullName);
|
||||
|
||||
if (iter != m_commands.end())
|
||||
@@ -373,7 +373,7 @@ bool CEditorCommandManager::IsRegistered(const char* module, const char* name) c
|
||||
|
||||
bool CEditorCommandManager::IsRegistered(const char* cmdLine_) const
|
||||
{
|
||||
string cmdTxt, argsTxt, cmdLine(cmdLine_);
|
||||
AZStd::string cmdTxt, argsTxt, cmdLine(cmdLine_);
|
||||
size_t argStart = cmdLine.find_first_of(' ');
|
||||
cmdTxt = cmdLine.substr(0, argStart);
|
||||
CommandTable::const_iterator iter = m_commands.find(cmdTxt);
|
||||
@@ -402,9 +402,9 @@ bool CEditorCommandManager::IsRegistered(int commandId) const
|
||||
return false;
|
||||
}
|
||||
|
||||
void CEditorCommandManager::SetCommandAvailableInScripting(const string& module, const string& name)
|
||||
void CEditorCommandManager::SetCommandAvailableInScripting(const AZStd::string& module, const AZStd::string& name)
|
||||
{
|
||||
string fullName = GetFullCommandName(module, name);
|
||||
AZStd::string fullName = GetFullCommandName(module, name);
|
||||
CommandTable::iterator iter = m_commands.find(fullName);
|
||||
|
||||
if (iter != m_commands.end())
|
||||
@@ -413,7 +413,7 @@ void CEditorCommandManager::SetCommandAvailableInScripting(const string& module,
|
||||
}
|
||||
}
|
||||
|
||||
bool CEditorCommandManager::IsCommandAvailableInScripting(const string& fullCmdName) const
|
||||
bool CEditorCommandManager::IsCommandAvailableInScripting(const AZStd::string& fullCmdName) const
|
||||
{
|
||||
CommandTable::const_iterator iter = m_commands.find(fullCmdName);
|
||||
|
||||
@@ -425,16 +425,16 @@ bool CEditorCommandManager::IsCommandAvailableInScripting(const string& fullCmdN
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CEditorCommandManager::IsCommandAvailableInScripting(const string& module, const string& name) const
|
||||
bool CEditorCommandManager::IsCommandAvailableInScripting(const AZStd::string& module, const AZStd::string& name) const
|
||||
{
|
||||
string fullName = GetFullCommandName(module, name);
|
||||
AZStd::string fullName = GetFullCommandName(module, name);
|
||||
|
||||
return IsCommandAvailableInScripting(fullName);
|
||||
}
|
||||
|
||||
void CEditorCommandManager::LogCommand(const string& fullCmdName, const CCommand::CArgs& args) const
|
||||
void CEditorCommandManager::LogCommand(const AZStd::string& fullCmdName, const CCommand::CArgs& args) const
|
||||
{
|
||||
string cmdLine = fullCmdName;
|
||||
AZStd::string cmdLine = fullCmdName;
|
||||
|
||||
for (int i = 0; i < args.GetArgCount(); ++i)
|
||||
{
|
||||
@@ -509,7 +509,7 @@ void CEditorCommandManager::LogCommand(const string& fullCmdName, const CCommand
|
||||
|
||||
if (pScriptTermDialog)
|
||||
{
|
||||
string text = "> ";
|
||||
AZStd::string text = "> ";
|
||||
text += cmdLine;
|
||||
text += "\r\n";
|
||||
pScriptTermDialog->AppendText(text.c_str());
|
||||
@@ -526,14 +526,14 @@ QString CEditorCommandManager::ExecuteAndLogReturn(CCommand* pCommand, const CCo
|
||||
return result;
|
||||
}
|
||||
|
||||
void CEditorCommandManager::GetArgsFromString(const string& argsTxt, CCommand::CArgs& argList)
|
||||
void CEditorCommandManager::GetArgsFromString(const AZStd::string& argsTxt, CCommand::CArgs& argList)
|
||||
{
|
||||
const char quoteSymbol = '\'';
|
||||
int curPos = 0;
|
||||
int prevPos = 0;
|
||||
string arg = argsTxt.Tokenize(" ", curPos);
|
||||
|
||||
while (!arg.empty())
|
||||
AZStd::vector<AZStd::string> tokens;
|
||||
AZ::StringFunc::Tokenize(argsTxt, tokens, ' ');
|
||||
for(AZStd::string& arg : tokens)
|
||||
{
|
||||
if (arg[0] == quoteSymbol) // A special consideration for a quoted string
|
||||
{
|
||||
@@ -542,11 +542,11 @@ void CEditorCommandManager::GetArgsFromString(const string& argsTxt, CCommand::C
|
||||
size_t openingQuotePos = argsTxt.find(quoteSymbol, prevPos);
|
||||
size_t closingQuotePos = argsTxt.find(quoteSymbol, curPos);
|
||||
|
||||
if (closingQuotePos != string::npos)
|
||||
if (closingQuotePos != AZStd::string::npos)
|
||||
{
|
||||
arg = argsTxt.substr(openingQuotePos + 1, closingQuotePos - openingQuotePos - 1);
|
||||
size_t nextArgPos = argsTxt.find(' ', closingQuotePos + 1);
|
||||
curPos = nextArgPos != string::npos ? nextArgPos + 1 : argsTxt.length();
|
||||
curPos = nextArgPos != AZStd::string::npos ? nextArgPos + 1 : argsTxt.length();
|
||||
|
||||
for (; curPos < argsTxt.length(); ++curPos) // Skip spaces.
|
||||
{
|
||||
@@ -565,6 +565,5 @@ void CEditorCommandManager::GetArgsFromString(const string& argsTxt, CCommand::C
|
||||
|
||||
argList.Add(arg.c_str());
|
||||
prevPos = curPos;
|
||||
arg = argsTxt.Tokenize(" ", curPos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,20 +48,20 @@ public:
|
||||
const AZStd::function<void()>& functor,
|
||||
const CCommand0::SUIInfo& uiInfo);
|
||||
bool AttachUIInfo(const char* fullCmdName, const CCommand0::SUIInfo& uiInfo);
|
||||
bool GetUIInfo(const string& module, const string& name, CCommand0::SUIInfo& uiInfo) const;
|
||||
bool GetUIInfo(const string& fullCmdName, CCommand0::SUIInfo& uiInfo) const;
|
||||
QString Execute(const string& cmdLine);
|
||||
QString Execute(const string& module, const string& name, const CCommand::CArgs& args);
|
||||
bool GetUIInfo(const AZStd::string& module, const AZStd::string& name, CCommand0::SUIInfo& uiInfo) const;
|
||||
bool GetUIInfo(const AZStd::string& fullCmdName, CCommand0::SUIInfo& uiInfo) const;
|
||||
QString Execute(const AZStd::string& cmdLine);
|
||||
QString Execute(const AZStd::string& module, const AZStd::string& name, const CCommand::CArgs& args);
|
||||
void Execute(int commandId);
|
||||
void GetCommandList(std::vector<string>& cmds) const;
|
||||
void GetCommandList(std::vector<AZStd::string>& cmds) const;
|
||||
//! Used in the console dialog
|
||||
string AutoComplete(const string& substr) const;
|
||||
AZStd::string AutoComplete(const AZStd::string& substr) const;
|
||||
bool IsRegistered(const char* module, const char* name) const;
|
||||
bool IsRegistered(const char* cmdLine) const;
|
||||
bool IsRegistered(int commandId) const;
|
||||
void SetCommandAvailableInScripting(const string& module, const string& name);
|
||||
bool IsCommandAvailableInScripting(const string& module, const string& name) const;
|
||||
bool IsCommandAvailableInScripting(const string& fullCmdName) const;
|
||||
void SetCommandAvailableInScripting(const AZStd::string& module, const AZStd::string& name);
|
||||
bool IsCommandAvailableInScripting(const AZStd::string& module, const AZStd::string& name) const;
|
||||
bool IsCommandAvailableInScripting(const AZStd::string& fullCmdName) const;
|
||||
//! Turning off the warning is needed for reloading the ribbon bar.
|
||||
void TurnDuplicateWarningOn() { m_bWarnDuplicate = true; }
|
||||
void TurnDuplicateWarningOff() { m_bWarnDuplicate = false; }
|
||||
@@ -74,7 +74,7 @@ protected:
|
||||
};
|
||||
|
||||
//! A full command name to an actual command mapping
|
||||
typedef std::map<string, SCommandTableEntry> CommandTable;
|
||||
typedef std::map<AZStd::string, SCommandTableEntry> CommandTable;
|
||||
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
CommandTable m_commands;
|
||||
|
||||
@@ -86,9 +86,9 @@ protected:
|
||||
bool m_bWarnDuplicate;
|
||||
|
||||
static int GenNewCommandId();
|
||||
static string GetFullCommandName(const string& module, const string& name);
|
||||
static void GetArgsFromString(const string& argsTxt, CCommand::CArgs& argList);
|
||||
void LogCommand(const string& fullCmdName, const CCommand::CArgs& args) const;
|
||||
static AZStd::string GetFullCommandName(const AZStd::string& module, const AZStd::string& name);
|
||||
static void GetArgsFromString(const AZStd::string& argsTxt, CCommand::CArgs& argList);
|
||||
void LogCommand(const AZStd::string& fullCmdName, const CCommand::CArgs& args) const;
|
||||
QString ExecuteAndLogReturn(CCommand* pCommand, const CCommand::CArgs& args);
|
||||
};
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Config
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const IConfigVar* CConfigGroup::GetVar(const char* szName) const
|
||||
@@ -63,7 +63,7 @@ namespace Config
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
IConfigVar* CConfigGroup::GetVar(uint index)
|
||||
@@ -73,7 +73,7 @@ namespace Config
|
||||
return m_vars[index];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const IConfigVar* CConfigGroup::GetVar(uint index) const
|
||||
@@ -83,7 +83,7 @@ namespace Config
|
||||
return m_vars[index];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void CConfigGroup::SaveToXML(XmlNodeRef node)
|
||||
@@ -127,9 +127,9 @@ namespace Config
|
||||
|
||||
case IConfigVar::eType_STRING:
|
||||
{
|
||||
string currentValue = 0;
|
||||
AZStd::string currentValue;
|
||||
var->Get(¤tValue);
|
||||
node->setAttr(szName, currentValue);
|
||||
node->setAttr(szName, currentValue.c_str());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -186,7 +186,7 @@ namespace Config
|
||||
|
||||
case IConfigVar::eType_STRING:
|
||||
{
|
||||
string currentValue = 0;
|
||||
AZStd::string currentValue;
|
||||
var->GetDefault(¤tValue);
|
||||
QString readValue(currentValue.c_str());
|
||||
if (node->getAttr(szName, readValue))
|
||||
|
||||
@@ -37,22 +37,22 @@ namespace Config
|
||||
, m_description(szDescription)
|
||||
, m_type(varType)
|
||||
, m_flags(flags)
|
||||
, m_ptr(NULL)
|
||||
, m_ptr(nullptr)
|
||||
{};
|
||||
|
||||
virtual ~IConfigVar() = default;
|
||||
|
||||
|
||||
ILINE EType GetType() const
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
|
||||
ILINE const string& GetName() const
|
||||
ILINE const AZStd::string& GetName() const
|
||||
{
|
||||
return m_name;
|
||||
}
|
||||
|
||||
ILINE const string& GetDescription() const
|
||||
ILINE const AZStd::string& GetDescription() const
|
||||
{
|
||||
return m_description;
|
||||
}
|
||||
@@ -71,13 +71,13 @@ namespace Config
|
||||
static EType TranslateType(const bool&) { return eType_BOOL; }
|
||||
static EType TranslateType(const int&) { return eType_INT; }
|
||||
static EType TranslateType(const float&) { return eType_FLOAT; }
|
||||
static EType TranslateType(const string&) { return eType_STRING; }
|
||||
static EType TranslateType(const AZStd::string&) { return eType_STRING; }
|
||||
|
||||
protected:
|
||||
EType m_type;
|
||||
uint8 m_flags;
|
||||
string m_name;
|
||||
string m_description;
|
||||
AZStd::string m_name;
|
||||
AZStd::string m_description;
|
||||
void* m_ptr;
|
||||
ICVar* m_pCVar;
|
||||
};
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "EditorDefs.h"
|
||||
#include "ControlMRU.h"
|
||||
|
||||
IMPLEMENT_XTP_CONTROL(CControlMRU, CXTPControlRecentFileList)
|
||||
|
||||
bool CControlMRU::DoesFileExist(CString& sFileName)
|
||||
{
|
||||
return (_access(sFileName.GetBuffer(), 0) == 0);
|
||||
}
|
||||
|
||||
void CControlMRU::OnCalcDynamicSize(DWORD dwMode)
|
||||
{
|
||||
CRecentFileList* pRecentFileList = GetRecentFileList();
|
||||
|
||||
if (!pRecentFileList)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CString* pArrNames = pRecentFileList->m_arrNames;
|
||||
|
||||
assert(pArrNames != NULL);
|
||||
if (!pArrNames)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while (m_nIndex + 1 < m_pControls->GetCount())
|
||||
{
|
||||
CXTPControl* pControl = m_pControls->GetAt(m_nIndex + 1);
|
||||
assert(pControl);
|
||||
if (pControl->GetID() >= GetFirstMruID()
|
||||
&& pControl->GetID() <= GetFirstMruID() + pRecentFileList->m_nSize)
|
||||
{
|
||||
m_pControls->Remove(pControl);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_pParent->IsCustomizeMode())
|
||||
{
|
||||
m_dwHideFlags = 0;
|
||||
SetEnabled(TRUE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (pArrNames[0].IsEmpty())
|
||||
{
|
||||
SetCaption(CString(MAKEINTRESOURCE(IDS_NORECENTFILE_CAPTION)));
|
||||
SetDescription("No recently opened files");
|
||||
m_dwHideFlags = 0;
|
||||
SetEnabled(FALSE);
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCaption(CString(MAKEINTRESOURCE(IDS_RECENTFILE_CAPTION)));
|
||||
SetDescription("Open this document");
|
||||
}
|
||||
|
||||
m_dwHideFlags |= xtpHideGeneric;
|
||||
|
||||
CString sCurDir = (Path::GetEditingGameDataFolder() + "\\").c_str();
|
||||
int nCurDir = sCurDir.GetLength();
|
||||
|
||||
CString strName;
|
||||
CString strTemp;
|
||||
int iLastValidMRU = 0;
|
||||
|
||||
for (int iMRU = 0; iMRU < pRecentFileList->m_nSize; iMRU++)
|
||||
{
|
||||
if (!pRecentFileList->GetDisplayName(strName, iMRU, sCurDir.GetBuffer(), nCurDir))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (DoesFileExist(pArrNames[iMRU]))
|
||||
{
|
||||
CString sCurEntryDir = pArrNames[iMRU].Left(nCurDir);
|
||||
|
||||
if (sCurEntryDir.CompareNoCase(sCurDir) != 0)
|
||||
{
|
||||
//unavailable entry (wrong directory)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//invalid entry (not existing)
|
||||
continue;
|
||||
}
|
||||
|
||||
int nId = iMRU + GetFirstMruID();
|
||||
|
||||
CXTPControl* pControl = m_pControls->Add(xtpControlButton, nId, _T(""), m_nIndex + iLastValidMRU + 1, TRUE);
|
||||
assert(pControl);
|
||||
|
||||
pControl->SetCaption(CXTPControlWindowList::ConstructCaption(strName, iLastValidMRU + 1));
|
||||
pControl->SetFlags(xtpFlagManualUpdate);
|
||||
pControl->SetBeginGroup(iLastValidMRU == 0 && m_nIndex != 0);
|
||||
pControl->SetParameter(pArrNames[iMRU]);
|
||||
|
||||
CString sDescription = "Open file: " + pArrNames[iMRU];
|
||||
pControl->SetDescription(sDescription);
|
||||
|
||||
if ((GetFlags() & xtpFlagWrapRow) && iMRU == 0)
|
||||
{
|
||||
pControl->SetFlags(pControl->GetFlags() | xtpFlagWrapRow);
|
||||
}
|
||||
|
||||
++iLastValidMRU;
|
||||
}
|
||||
|
||||
//if no entry was valid, treat as none would exist
|
||||
if (iLastValidMRU == 0)
|
||||
{
|
||||
SetCaption(CString(MAKEINTRESOURCE(IDS_NORECENTFILE_CAPTION)));
|
||||
SetDescription("No recently opened files");
|
||||
m_dwHideFlags = 0;
|
||||
SetEnabled(FALSE);
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
#ifndef CRYINCLUDE_EDITOR_CONTROLMRU_H
|
||||
#define CRYINCLUDE_EDITOR_CONTROLMRU_H
|
||||
|
||||
class CControlMRU
|
||||
: public CXTPControlRecentFileList
|
||||
{
|
||||
protected:
|
||||
virtual void OnCalcDynamicSize(DWORD dwMode);
|
||||
|
||||
private:
|
||||
DECLARE_XTP_CONTROL(CControlMRU)
|
||||
bool DoesFileExist(CString& sFileName);
|
||||
};
|
||||
#endif // CRYINCLUDE_EDITOR_CONTROLMRU_H
|
||||
@@ -180,7 +180,7 @@ bool ConsoleLineEdit::event(QEvent* ev)
|
||||
|
||||
if (newStr.isEmpty())
|
||||
{
|
||||
newStr = GetIEditor()->GetCommandManager()->AutoComplete(cstring.toUtf8().data());
|
||||
newStr = GetIEditor()->GetCommandManager()->AutoComplete(cstring.toUtf8().data()).c_str();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +211,7 @@ void ConsoleLineEdit::keyPressEvent(QKeyEvent* ev)
|
||||
{
|
||||
if (commandManager->IsRegistered(str.toUtf8().data()))
|
||||
{
|
||||
commandManager->Execute(QtUtil::ToString(str));
|
||||
commandManager->Execute(str.toUtf8().data());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -566,15 +566,15 @@ static void OnVariableUpdated([[maybe_unused]] int row, ICVar* pCVar)
|
||||
static CVarBlock* VarBlockFromConsoleVars()
|
||||
{
|
||||
IConsole* console = GetIEditor()->GetSystem()->GetIConsole();
|
||||
std::vector<const char*> cmds;
|
||||
AZStd::vector<AZStd::string_view> cmds;
|
||||
cmds.resize(console->GetNumVars());
|
||||
size_t cmdCount = console->GetSortedVars(&cmds[0], cmds.size());
|
||||
size_t cmdCount = console->GetSortedVars(cmds);
|
||||
|
||||
CVarBlock* vb = new CVarBlock;
|
||||
IVariable* pVariable = nullptr;
|
||||
for (int i = 0; i < cmdCount; i++)
|
||||
{
|
||||
ICVar* pCVar = console->GetCVar(cmds[i]);
|
||||
ICVar* pCVar = console->GetCVar(cmds[i].data());
|
||||
if (!pCVar)
|
||||
{
|
||||
continue;
|
||||
@@ -606,7 +606,7 @@ static CVarBlock* VarBlockFromConsoleVars()
|
||||
pCVar->AddOnChangeFunctor(onChange);
|
||||
|
||||
pVariable->SetDescription(pCVar->GetHelp());
|
||||
pVariable->SetName(cmds[i]);
|
||||
pVariable->SetName(cmds[i].data());
|
||||
|
||||
// Transfer the custom limits have they have been set for this variable
|
||||
if (pCVar->HasCustomLimits())
|
||||
|
||||
@@ -1,543 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "EditorDefs.h"
|
||||
#include "ConsoleSCBMFC.h"
|
||||
#include "PropertiesDialog.h"
|
||||
#include "QtViewPaneManager.h"
|
||||
#include "Core/QtEditorApplication.h"
|
||||
|
||||
#include <Controls/ui_ConsoleSCBMFC.h>
|
||||
|
||||
#include <QtUtil.h>
|
||||
#include <QtUtilWin.h>
|
||||
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QScopedPointer>
|
||||
#include <QtCore/QPoint>
|
||||
#include <QtGui/QCursor>
|
||||
#include <QtGui/QMouseEvent>
|
||||
#include <QtWidgets/QStyle>
|
||||
#include <QtWidgets/QStyleFactory>
|
||||
#include <QtWidgets/QMenu>
|
||||
#include <QtWidgets/QScrollBar>
|
||||
#include <QtWidgets/QVBoxLayout>
|
||||
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
|
||||
namespace MFC
|
||||
{
|
||||
|
||||
static CPropertiesDialog* gPropertiesDlg = nullptr;
|
||||
static CString mfc_popup_helper(HWND hwnd, int x, int y);
|
||||
static CConsoleSCB* s_consoleSCB = nullptr;
|
||||
|
||||
static QString RemoveColorCode(const QString& text, int& iColorCode)
|
||||
{
|
||||
QString cleanString;
|
||||
cleanString.reserve(text.size());
|
||||
|
||||
const int textSize = text.size();
|
||||
for (int i = 0; i < textSize; ++i)
|
||||
{
|
||||
QChar c = text.at(i);
|
||||
bool isLast = i == textSize - 1;
|
||||
if (c == '$' && !isLast && text.at(i + 1).isDigit())
|
||||
{
|
||||
if (iColorCode == 0)
|
||||
{
|
||||
iColorCode = text.at(i + 1).digitValue();
|
||||
}
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (c == '\r' || c == '\n')
|
||||
{
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
|
||||
cleanString.append(c);
|
||||
}
|
||||
|
||||
return cleanString;
|
||||
}
|
||||
|
||||
ConsoleLineEdit::ConsoleLineEdit(QWidget* parent)
|
||||
: QLineEdit(parent)
|
||||
, m_historyIndex(0)
|
||||
, m_bReusedHistory(false)
|
||||
{
|
||||
}
|
||||
|
||||
void ConsoleLineEdit::mousePressEvent(QMouseEvent* ev)
|
||||
{
|
||||
if (ev->type() == QEvent::MouseButtonPress && ev->button() & Qt::RightButton)
|
||||
{
|
||||
Q_EMIT variableEditorRequested();
|
||||
}
|
||||
|
||||
QLineEdit::mousePressEvent(ev);
|
||||
}
|
||||
|
||||
void ConsoleLineEdit::mouseDoubleClickEvent(QMouseEvent* ev)
|
||||
{
|
||||
Q_EMIT variableEditorRequested();
|
||||
}
|
||||
|
||||
bool ConsoleLineEdit::event(QEvent* ev)
|
||||
{
|
||||
// Tab key doesn't go to keyPressEvent(), must be processed here
|
||||
|
||||
if (ev->type() != QEvent::KeyPress)
|
||||
{
|
||||
return QLineEdit::event(ev);
|
||||
}
|
||||
|
||||
QKeyEvent* ke = static_cast<QKeyEvent*>(ev);
|
||||
if (ke->key() != Qt::Key_Tab)
|
||||
{
|
||||
return QLineEdit::event(ev);
|
||||
}
|
||||
|
||||
QString inputStr = text();
|
||||
QString newStr;
|
||||
|
||||
QStringList tokens = inputStr.split(" ");
|
||||
inputStr = tokens.isEmpty() ? QString() : tokens.first();
|
||||
IConsole* console = GetIEditor()->GetSystem()->GetIConsole();
|
||||
|
||||
const bool ctrlPressed = ke->modifiers() & Qt::ControlModifier;
|
||||
CString cstring = QtUtil::ToCString(inputStr); // TODO: Use QString once the backend stops using QString
|
||||
if (ctrlPressed)
|
||||
{
|
||||
newStr = QtUtil::ToString(console->AutoCompletePrev(cstring));
|
||||
}
|
||||
else
|
||||
{
|
||||
newStr = QtUtil::ToString(console->ProcessCompletion(cstring));
|
||||
newStr = QtUtil::ToString(console->AutoComplete(cstring));
|
||||
|
||||
if (newStr.isEmpty())
|
||||
{
|
||||
newStr = QtUtil::ToQString(GetIEditor()->GetCommandManager()->AutoComplete(QtUtil::ToString(newStr)));
|
||||
}
|
||||
}
|
||||
|
||||
if (!newStr.isEmpty())
|
||||
{
|
||||
newStr += " ";
|
||||
setText(newStr);
|
||||
}
|
||||
|
||||
deselect();
|
||||
return true;
|
||||
}
|
||||
|
||||
void ConsoleLineEdit::keyPressEvent(QKeyEvent* ev)
|
||||
{
|
||||
IConsole* console = GetIEditor()->GetSystem()->GetIConsole();
|
||||
auto commandManager = GetIEditor()->GetCommandManager();
|
||||
|
||||
console->ResetAutoCompletion();
|
||||
|
||||
switch (ev->key())
|
||||
{
|
||||
case Qt::Key_Enter:
|
||||
case Qt::Key_Return:
|
||||
{
|
||||
QString str = text().trimmed();
|
||||
if (!str.isEmpty())
|
||||
{
|
||||
if (commandManager->IsRegistered(QtUtil::ToCString(str)))
|
||||
{
|
||||
commandManager->Execute(QtUtil::ToString(str));
|
||||
}
|
||||
else
|
||||
{
|
||||
CLogFile::WriteLine(QtUtil::ToCString(str));
|
||||
GetIEditor()->GetSystem()->GetIConsole()->ExecuteString(QtUtil::ToCString(str));
|
||||
}
|
||||
|
||||
// If a history command was reused directly via up arrow enter, do not reset history index
|
||||
if (m_history.size() > 0 && m_historyIndex < m_history.size() && m_history[m_historyIndex] == str)
|
||||
{
|
||||
m_bReusedHistory = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_historyIndex = m_history.size();
|
||||
}
|
||||
|
||||
// Do not add the same string if it is the top of the stack, but allow duplicate entries otherwise
|
||||
if (m_history.isEmpty() || m_history.back() != str)
|
||||
{
|
||||
m_history.push_back(str);
|
||||
if (!m_bReusedHistory)
|
||||
{
|
||||
m_historyIndex = m_history.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_historyIndex = m_history.size();
|
||||
}
|
||||
|
||||
setText(QString());
|
||||
break;
|
||||
}
|
||||
case Qt::Key_AsciiTilde: // ~
|
||||
case Qt::Key_Agrave: // `
|
||||
// disable log.
|
||||
GetIEditor()->ShowConsole(false);
|
||||
setText(QString());
|
||||
m_historyIndex = m_history.size();
|
||||
break;
|
||||
case Qt::Key_Escape:
|
||||
setText(QString());
|
||||
m_historyIndex = m_history.size();
|
||||
break;
|
||||
case Qt::Key_Up:
|
||||
DisplayHistory(false /*bForward*/);
|
||||
break;
|
||||
case Qt::Key_Down:
|
||||
DisplayHistory(true /*bForward*/);
|
||||
break;
|
||||
default:
|
||||
QLineEdit::keyPressEvent(ev);
|
||||
}
|
||||
}
|
||||
|
||||
void ConsoleLineEdit::DisplayHistory(bool bForward)
|
||||
{
|
||||
if (m_history.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Immediately after reusing a history entry, ensure up arrow re-displays command just used
|
||||
if (!m_bReusedHistory || bForward)
|
||||
{
|
||||
m_historyIndex = static_cast<unsigned int>(clamp_tpl(static_cast<int>(m_historyIndex) + (bForward ? 1 : -1), 0, m_history.size() - 1));
|
||||
}
|
||||
m_bReusedHistory = false;
|
||||
|
||||
setText(m_history[m_historyIndex]);
|
||||
}
|
||||
|
||||
ConsoleTextEdit::ConsoleTextEdit(QWidget* parent)
|
||||
: QTextEdit(parent)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Lines CConsoleSCB::s_pendingLines;
|
||||
|
||||
CConsoleSCB::CConsoleSCB(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, ui(new Ui::ConsoleMFC())
|
||||
, m_richEditTextLength(0)
|
||||
, m_backgroundTheme(gSettings.consoleBackgroundColorTheme)
|
||||
{
|
||||
m_lines = s_pendingLines;
|
||||
s_pendingLines.clear();
|
||||
s_consoleSCB = this;
|
||||
ui->setupUi(this);
|
||||
setMinimumHeight(120);
|
||||
|
||||
// Setup the color table for the default (light) theme
|
||||
m_colorTable << QColor(0, 0, 0)
|
||||
<< QColor(0, 0, 0)
|
||||
<< QColor(0, 0, 200) // blue
|
||||
<< QColor(0, 200, 0) // green
|
||||
<< QColor(200, 0, 0) // red
|
||||
<< QColor(0, 200, 200) // cyan
|
||||
<< QColor(128, 112, 0) // yellow
|
||||
<< QColor(200, 0, 200) // red+blue
|
||||
<< QColor(0x000080ff)
|
||||
<< QColor(0x008f8f8f);
|
||||
OnStyleSettingsChanged();
|
||||
|
||||
connect(ui->button, &QPushButton::clicked, this, &CConsoleSCB::showVariableEditor);
|
||||
connect(ui->lineEdit, &MFC::ConsoleLineEdit::variableEditorRequested, this, &MFC::CConsoleSCB::showVariableEditor);
|
||||
connect(Editor::EditorQtApplication::instance(), &Editor::EditorQtApplication::skinChanged, this, &MFC::CConsoleSCB::OnStyleSettingsChanged);
|
||||
|
||||
if (GetIEditor()->IsInConsolewMode())
|
||||
{
|
||||
// Attach / register edit box
|
||||
//CLogFile::AttachEditBox(m_edit.GetSafeHwnd()); // FIXME
|
||||
}
|
||||
}
|
||||
|
||||
CConsoleSCB::~CConsoleSCB()
|
||||
{
|
||||
s_consoleSCB = nullptr;
|
||||
delete gPropertiesDlg;
|
||||
gPropertiesDlg = nullptr;
|
||||
CLogFile::AttachEditBox(nullptr);
|
||||
}
|
||||
|
||||
void CConsoleSCB::RegisterViewClass()
|
||||
{
|
||||
QtViewOptions opts;
|
||||
opts.preferedDockingArea = Qt::BottomDockWidgetArea;
|
||||
opts.isDeletable = false;
|
||||
opts.isStandard = true;
|
||||
opts.showInMenu = true;
|
||||
opts.builtInActionId = ID_VIEW_CONSOLEWINDOW;
|
||||
opts.sendViewPaneNameBackToAmazonAnalyticsServers = true;
|
||||
RegisterQtViewPane<CConsoleSCB>(GetIEditor(), LyViewPane::Console, LyViewPane::CategoryTools, opts);
|
||||
}
|
||||
|
||||
void CConsoleSCB::OnStyleSettingsChanged()
|
||||
{
|
||||
ui->button->setIcon(QIcon(QString(":/controls/img/cvar_dark.bmp")));
|
||||
|
||||
// Set the debug/warning text colors appropriately for the background theme
|
||||
// (e.g. not have black text on black background)
|
||||
QColor textColor = Qt::black;
|
||||
m_backgroundTheme = gSettings.consoleBackgroundColorTheme;
|
||||
if (m_backgroundTheme == SEditorSettings::ConsoleColorTheme::Dark)
|
||||
{
|
||||
textColor = Qt::white;
|
||||
}
|
||||
m_colorTable[0] = textColor;
|
||||
m_colorTable[1] = textColor;
|
||||
|
||||
QColor bgColor;
|
||||
if (!GetIEditor()->IsInConsolewMode() && CConsoleSCB::GetCreatedInstance() && m_backgroundTheme == SEditorSettings::ConsoleColorTheme::Dark)
|
||||
{
|
||||
bgColor = Qt::black;
|
||||
}
|
||||
else
|
||||
{
|
||||
bgColor = Qt::white;
|
||||
}
|
||||
|
||||
ui->textEdit->setStyleSheet(QString("QTextEdit{ background: %1 }").arg(bgColor.name(QColor::HexRgb)));
|
||||
|
||||
// Clear out the console text when we change our background color since
|
||||
// some of the previous text colors may not be appropriate for the
|
||||
// new background color
|
||||
ui->textEdit->clear();
|
||||
}
|
||||
|
||||
void CConsoleSCB::showVariableEditor()
|
||||
{
|
||||
const QPoint cursorPos = QCursor::pos();
|
||||
CString str = mfc_popup_helper(0, cursorPos.x(), cursorPos.y());
|
||||
if (!str.IsEmpty())
|
||||
{
|
||||
ui->lineEdit->setText(QtUtil::ToQString(str));
|
||||
}
|
||||
}
|
||||
|
||||
void CConsoleSCB::SetInputFocus()
|
||||
{
|
||||
ui->lineEdit->setFocus();
|
||||
ui->lineEdit->setText(QString());
|
||||
}
|
||||
|
||||
void CConsoleSCB::AddToConsole(const QString& text, bool bNewLine)
|
||||
{
|
||||
m_lines.push_back({ text, bNewLine });
|
||||
FlushText();
|
||||
}
|
||||
|
||||
void CConsoleSCB::FlushText()
|
||||
{
|
||||
if (m_lines.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Store our current cursor in case we need to restore it, and check if
|
||||
// the user has scrolled the text edit away from the bottom
|
||||
const QTextCursor oldCursor = ui->textEdit->textCursor();
|
||||
QScrollBar* scrollBar = ui->textEdit->verticalScrollBar();
|
||||
const int oldScrollValue = scrollBar->value();
|
||||
bool scrolledOffBottom = oldScrollValue != scrollBar->maximum();
|
||||
|
||||
ui->textEdit->moveCursor(QTextCursor::End);
|
||||
QTextCursor textCursor = ui->textEdit->textCursor();
|
||||
|
||||
while (!m_lines.empty())
|
||||
{
|
||||
ConsoleLine line = m_lines.front();
|
||||
m_lines.pop_front();
|
||||
|
||||
int iColor = 0;
|
||||
QString text = MFC::RemoveColorCode(line.text, iColor);
|
||||
if (iColor < 0 || iColor >= m_colorTable.size())
|
||||
{
|
||||
iColor = 0;
|
||||
}
|
||||
|
||||
if (line.newLine)
|
||||
{
|
||||
text = QtUtil::trimRight(text);
|
||||
text = "\r\n" + text;
|
||||
}
|
||||
|
||||
QTextCharFormat format;
|
||||
const QColor color(m_colorTable[iColor]);
|
||||
format.setForeground(color);
|
||||
|
||||
if (iColor != 0)
|
||||
{
|
||||
format.setFontWeight(QFont::Bold);
|
||||
}
|
||||
|
||||
textCursor.setCharFormat(format);
|
||||
textCursor.insertText(text);
|
||||
}
|
||||
|
||||
// If the user has selected some text in the text edit area or has scrolled
|
||||
// away from the bottom, then restore the previous cursor and keep the scroll
|
||||
// bar in the same location
|
||||
if (oldCursor.hasSelection() || scrolledOffBottom)
|
||||
{
|
||||
ui->textEdit->setTextCursor(oldCursor);
|
||||
scrollBar->setValue(oldScrollValue);
|
||||
}
|
||||
// Otherwise scroll to the bottom so the latest text can be seen
|
||||
else
|
||||
{
|
||||
scrollBar->setValue(scrollBar->maximum());
|
||||
}
|
||||
}
|
||||
|
||||
QSize CConsoleSCB::minimumSizeHint() const
|
||||
{
|
||||
return QSize(-1, -1);
|
||||
}
|
||||
|
||||
QSize CConsoleSCB::sizeHint() const
|
||||
{
|
||||
return QSize(100, 100);
|
||||
}
|
||||
|
||||
/** static */
|
||||
void CConsoleSCB::AddToPendingLines(const QString& text, bool bNewLine)
|
||||
{
|
||||
s_pendingLines.push_back({ text, bNewLine });
|
||||
}
|
||||
|
||||
static CVarBlock* VarBlockFromConsoleVars()
|
||||
{
|
||||
IConsole* console = GetIEditor()->GetSystem()->GetIConsole();
|
||||
std::vector<const char*> cmds;
|
||||
cmds.resize(console->GetNumVars());
|
||||
size_t cmdCount = console->GetSortedVars(&cmds[0], cmds.size());
|
||||
|
||||
CVarBlock* vb = new CVarBlock;
|
||||
IVariable* pVariable = 0;
|
||||
for (int i = 0; i < cmdCount; i++)
|
||||
{
|
||||
ICVar* pCVar = console->GetCVar(cmds[i]);
|
||||
if (!pCVar)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
int varType = pCVar->GetType();
|
||||
|
||||
switch (varType)
|
||||
{
|
||||
case CVAR_INT:
|
||||
pVariable = new CVariable<int>();
|
||||
pVariable->Set(pCVar->GetIVal());
|
||||
break;
|
||||
case CVAR_FLOAT:
|
||||
pVariable = new CVariable<float>();
|
||||
pVariable->Set(pCVar->GetFVal());
|
||||
break;
|
||||
case CVAR_STRING:
|
||||
pVariable = new CVariable<CString>();
|
||||
pVariable->Set(pCVar->GetString());
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
|
||||
pVariable->SetDescription(pCVar->GetHelp());
|
||||
pVariable->SetName(cmds[i]);
|
||||
|
||||
if (pVariable)
|
||||
{
|
||||
vb->AddVariable(pVariable);
|
||||
}
|
||||
}
|
||||
return vb;
|
||||
}
|
||||
|
||||
static void OnConsoleVariableUpdated(IVariable* pVar)
|
||||
{
|
||||
if (!pVar)
|
||||
{
|
||||
return;
|
||||
}
|
||||
CString varName = pVar->GetName();
|
||||
ICVar* pCVar = GetIEditor()->GetSystem()->GetIConsole()->GetCVar(varName);
|
||||
if (!pCVar)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (pVar->GetType() == IVariable::INT)
|
||||
{
|
||||
int val;
|
||||
pVar->Get(val);
|
||||
pCVar->Set(val);
|
||||
}
|
||||
else if (pVar->GetType() == IVariable::FLOAT)
|
||||
{
|
||||
float val;
|
||||
pVar->Get(val);
|
||||
pCVar->Set(val);
|
||||
}
|
||||
else if (pVar->GetType() == IVariable::STRING)
|
||||
{
|
||||
CString val;
|
||||
pVar->Get(val);
|
||||
pCVar->Set(val);
|
||||
}
|
||||
}
|
||||
|
||||
static CString mfc_popup_helper(HWND hwnd, int x, int y)
|
||||
{
|
||||
IConsole* console = GetIEditor()->GetSystem()->GetIConsole();
|
||||
|
||||
TSmartPtr<CVarBlock> vb = VarBlockFromConsoleVars();
|
||||
XmlNodeRef node;
|
||||
if (!gPropertiesDlg)
|
||||
{
|
||||
gPropertiesDlg = new CPropertiesDialog("Console Variables", node, AfxGetMainWnd(), true);
|
||||
}
|
||||
if (!gPropertiesDlg->m_hWnd)
|
||||
{
|
||||
gPropertiesDlg->Create(CPropertiesDialog::IDD, AfxGetMainWnd());
|
||||
gPropertiesDlg->SetUpdateCallback(AZStd::bind(OnConsoleVariableUpdated, AZStd::placeholders::_1));
|
||||
}
|
||||
gPropertiesDlg->ShowWindow(SW_SHOW);
|
||||
gPropertiesDlg->BringWindowToTop();
|
||||
gPropertiesDlg->GetPropertyCtrl()->AddVarBlock(vb);
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
CConsoleSCB* CConsoleSCB::GetCreatedInstance()
|
||||
{
|
||||
return s_consoleSCB;
|
||||
}
|
||||
|
||||
} // namespace MFC
|
||||
|
||||
#include <Controls/moc_ConsoleSCBMFC.cpp>
|
||||
@@ -400,7 +400,7 @@ void CFolderTreeCtrl::RemoveEmptyFolderItems(const QString& folder)
|
||||
|
||||
void CFolderTreeCtrl::Edit(const QString& path)
|
||||
{
|
||||
CFileUtil::EditTextFile(QtUtil::ToString(path), 0, IFileUtil::FILE_TYPE_SCRIPT);
|
||||
CFileUtil::EditTextFile(path.toUtf8().data(), 0, IFileUtil::FILE_TYPE_SCRIPT);
|
||||
}
|
||||
|
||||
void CFolderTreeCtrl::ShowInExplorer(const QString& path)
|
||||
|
||||
@@ -132,7 +132,9 @@ void LocalStringPropertyEditor::onEditClicked()
|
||||
if (pMgr->GetLocalizedInfoByIndex(i, sInfo))
|
||||
{
|
||||
item.desc = tr("English Text:\r\n");
|
||||
item.desc += QString::fromWCharArray(Unicode::Convert<wstring>(sInfo.sUtf8TranslatedText).c_str());
|
||||
AZStd::wstring utf8TranslatedTextW;
|
||||
AZStd::to_wstring(utf8TranslatedTextW, sInfo.sUtf8TranslatedText);
|
||||
item.desc += QString::fromWCharArray(utf8TranslatedTextW.c_str());
|
||||
item.name = sInfo.sKey;
|
||||
items.push_back(item);
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ private:
|
||||
std::vector<int> keySelectionFlags;
|
||||
_smart_ptr<ISplineBackup> undo;
|
||||
_smart_ptr<ISplineBackup> redo;
|
||||
string id;
|
||||
AZStd::string id;
|
||||
ISplineInterpolator* pSpline;
|
||||
};
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@ class QRubberBand;
|
||||
class ISplineSet
|
||||
{
|
||||
public:
|
||||
virtual ISplineInterpolator* GetSplineFromID(const string& id) = 0;
|
||||
virtual string GetIDFromSpline(ISplineInterpolator* pSpline) = 0;
|
||||
virtual ISplineInterpolator* GetSplineFromID(const AZStd::string& id) = 0;
|
||||
virtual AZStd::string GetIDFromSpline(ISplineInterpolator* pSpline) = 0;
|
||||
virtual int GetSplineCount() const = 0;
|
||||
virtual int GetKeyCountAtTime(float time, float threshold) const = 0;
|
||||
};
|
||||
|
||||
@@ -206,11 +206,8 @@ namespace
|
||||
|
||||
static void LogToDebug([[maybe_unused]] QtMsgType Type, [[maybe_unused]] const QMessageLogContext& Context, const QString& message)
|
||||
{
|
||||
#if defined(WIN32) || defined(WIN64)
|
||||
OutputDebugStringW(L"Qt: ");
|
||||
OutputDebugStringW(reinterpret_cast<const wchar_t*>(message.utf16()));
|
||||
OutputDebugStringW(L"\n");
|
||||
#endif
|
||||
AZ::Debug::Platform::OutputToDebugger("Qt", message.toUtf8().data());
|
||||
AZ::Debug::Platform::OutputToDebugger(nullptr, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ protected:
|
||||
}
|
||||
|
||||
private:
|
||||
AZ::AllocatorScope<AZ::OSAllocator, AZ::SystemAllocator, AZ::LegacyAllocator, CryStringAllocator> m_allocatorScope;
|
||||
AZ::AllocatorScope<AZ::OSAllocator, AZ::SystemAllocator, AZ::LegacyAllocator> m_allocatorScope;
|
||||
SSystemGlobalEnvironment m_stubEnv;
|
||||
AZ::IO::LocalFileIO m_fileIO;
|
||||
NiceMock<CryPakMock>* m_cryPak;
|
||||
|
||||
@@ -62,7 +62,7 @@ int crtAllocHook(int nAllocType, void* pvData,
|
||||
{
|
||||
if (nBlockUse == _CRT_BLOCK)
|
||||
{
|
||||
return(TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int total_cnt = 0;
|
||||
|
||||
+47
-117
@@ -266,13 +266,13 @@ CCrySingleDocTemplate* CCryDocManager::SetDefaultTemplate(CCrySingleDocTemplate*
|
||||
// Copied from MFC to get rid of the silly ugly unoverridable doc-type pick dialog
|
||||
void CCryDocManager::OnFileNew()
|
||||
{
|
||||
assert(m_pDefTemplate != NULL);
|
||||
assert(m_pDefTemplate != nullptr);
|
||||
|
||||
m_pDefTemplate->OpenDocumentFile(NULL);
|
||||
m_pDefTemplate->OpenDocumentFile(nullptr);
|
||||
// if returns NULL, the user has already been alerted
|
||||
}
|
||||
BOOL CCryDocManager::DoPromptFileName(QString& fileName, [[maybe_unused]] UINT nIDSTitle,
|
||||
[[maybe_unused]] DWORD lFlags, BOOL bOpenFileDialog, [[maybe_unused]] CDocTemplate* pTemplate)
|
||||
bool CCryDocManager::DoPromptFileName(QString& fileName, [[maybe_unused]] UINT nIDSTitle,
|
||||
[[maybe_unused]] DWORD lFlags, bool bOpenFileDialog, [[maybe_unused]] CDocTemplate* pTemplate)
|
||||
{
|
||||
CLevelFileDialog levelFileDialog(bOpenFileDialog);
|
||||
levelFileDialog.show();
|
||||
@@ -286,15 +286,15 @@ BOOL CCryDocManager::DoPromptFileName(QString& fileName, [[maybe_unused]] UINT n
|
||||
|
||||
return false;
|
||||
}
|
||||
CCryEditDoc* CCryDocManager::OpenDocumentFile(LPCTSTR lpszFileName, BOOL bAddToMRU)
|
||||
CCryEditDoc* CCryDocManager::OpenDocumentFile(const char* lpszFileName, bool bAddToMRU)
|
||||
{
|
||||
assert(lpszFileName != NULL);
|
||||
assert(lpszFileName != nullptr);
|
||||
|
||||
// find the highest confidence
|
||||
auto pos = m_templateList.begin();
|
||||
CCrySingleDocTemplate::Confidence bestMatch = CCrySingleDocTemplate::noAttempt;
|
||||
CCrySingleDocTemplate* pBestTemplate = NULL;
|
||||
CCryEditDoc* pOpenDocument = NULL;
|
||||
CCrySingleDocTemplate* pBestTemplate = nullptr;
|
||||
CCryEditDoc* pOpenDocument = nullptr;
|
||||
|
||||
if (lpszFileName[0] == '\"')
|
||||
{
|
||||
@@ -311,7 +311,7 @@ CCryEditDoc* CCryDocManager::OpenDocumentFile(LPCTSTR lpszFileName, BOOL bAddToM
|
||||
auto pTemplate = *(pos++);
|
||||
|
||||
CCrySingleDocTemplate::Confidence match;
|
||||
assert(pOpenDocument == NULL);
|
||||
assert(pOpenDocument == nullptr);
|
||||
match = pTemplate->MatchDocType(szPath.toUtf8().data(), pOpenDocument);
|
||||
if (match > bestMatch)
|
||||
{
|
||||
@@ -324,18 +324,18 @@ CCryEditDoc* CCryDocManager::OpenDocumentFile(LPCTSTR lpszFileName, BOOL bAddToM
|
||||
}
|
||||
}
|
||||
|
||||
if (pOpenDocument != NULL)
|
||||
if (pOpenDocument != nullptr)
|
||||
{
|
||||
return pOpenDocument;
|
||||
}
|
||||
|
||||
if (pBestTemplate == NULL)
|
||||
if (pBestTemplate == nullptr)
|
||||
{
|
||||
QMessageBox::critical(AzToolsFramework::GetActiveWindow(), QString(), QObject::tr("Failed to open document."));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return pBestTemplate->OpenDocumentFile(szPath.toUtf8().data(), bAddToMRU, FALSE);
|
||||
return pBestTemplate->OpenDocumentFile(szPath.toUtf8().data(), bAddToMRU, false);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@@ -460,7 +460,7 @@ void CCryEditApp::RegisterActionHandlers()
|
||||
ON_COMMAND(ID_FILE_SAVE_LEVEL, OnFileSave)
|
||||
ON_COMMAND(ID_FILE_EXPORTOCCLUSIONMESH, OnFileExportOcclusionMesh)
|
||||
|
||||
// Project Manager
|
||||
// Project Manager
|
||||
ON_COMMAND(ID_FILE_PROJECT_MANAGER_SETTINGS, OnOpenProjectManagerSettings)
|
||||
ON_COMMAND(ID_FILE_PROJECT_MANAGER_NEW, OnOpenProjectManagerNew)
|
||||
ON_COMMAND(ID_FILE_PROJECT_MANAGER_OPEN, OnOpenProjectManager)
|
||||
@@ -653,7 +653,7 @@ struct SharedData
|
||||
//
|
||||
// This function uses a technique similar to that described in KB
|
||||
// article Q141752 to locate the previous instance of the application. .
|
||||
BOOL CCryEditApp::FirstInstance(bool bForceNewInstance)
|
||||
bool CCryEditApp::FirstInstance(bool bForceNewInstance)
|
||||
{
|
||||
QSystemSemaphore sem(QString(O3DEApplicationName) + "_sem", 1);
|
||||
sem.acquire();
|
||||
@@ -801,12 +801,12 @@ void CCryEditApp::InitDirectory()
|
||||
// Needed to work with custom memory manager.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CCryEditDoc* CCrySingleDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible /*= true*/)
|
||||
CCryEditDoc* CCrySingleDocTemplate::OpenDocumentFile(const char* lpszPathName, bool bMakeVisible /*= true*/)
|
||||
{
|
||||
return OpenDocumentFile(lpszPathName, true, bMakeVisible);
|
||||
}
|
||||
|
||||
CCryEditDoc* CCrySingleDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bAddToMRU, [[maybe_unused]] BOOL bMakeVisible)
|
||||
CCryEditDoc* CCrySingleDocTemplate::OpenDocumentFile(const char* lpszPathName, bool bAddToMRU, [[maybe_unused]] bool bMakeVisible)
|
||||
{
|
||||
CCryEditDoc* pCurDoc = GetIEditor()->GetDocument();
|
||||
|
||||
@@ -845,10 +845,10 @@ CCryEditDoc* CCrySingleDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL
|
||||
return pCurDoc;
|
||||
}
|
||||
|
||||
CCrySingleDocTemplate::Confidence CCrySingleDocTemplate::MatchDocType(LPCTSTR lpszPathName, CCryEditDoc*& rpDocMatch)
|
||||
CCrySingleDocTemplate::Confidence CCrySingleDocTemplate::MatchDocType(const char* lpszPathName, CCryEditDoc*& rpDocMatch)
|
||||
{
|
||||
assert(lpszPathName != NULL);
|
||||
rpDocMatch = NULL;
|
||||
assert(lpszPathName != nullptr);
|
||||
rpDocMatch = nullptr;
|
||||
|
||||
// go through all documents
|
||||
CCryEditDoc* pDoc = GetIEditor()->GetDocument();
|
||||
@@ -1053,7 +1053,7 @@ AZ::Outcome<void, AZStd::string> CCryEditApp::InitGameSystem(HWND hwndForInputSy
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
BOOL CCryEditApp::CheckIfAlreadyRunning()
|
||||
bool CCryEditApp::CheckIfAlreadyRunning()
|
||||
{
|
||||
bool bForceNewInstance = false;
|
||||
|
||||
@@ -1297,7 +1297,7 @@ void CCryEditApp::InitLevel(const CEditCommandLineInfo& cmdInfo)
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
BOOL CCryEditApp::InitConsole()
|
||||
bool CCryEditApp::InitConsole()
|
||||
{
|
||||
// Execute command from cmdline -exec_line if applicable
|
||||
if (!m_execLineCmd.isEmpty())
|
||||
@@ -1429,7 +1429,7 @@ struct CCryEditApp::PythonOutputHandler
|
||||
AzToolsFramework::EditorPythonConsoleNotificationBus::Handler::BusConnect();
|
||||
}
|
||||
|
||||
virtual ~PythonOutputHandler()
|
||||
~PythonOutputHandler() override
|
||||
{
|
||||
AzToolsFramework::EditorPythonConsoleNotificationBus::Handler::BusDisconnect();
|
||||
}
|
||||
@@ -1461,7 +1461,7 @@ struct PythonTestOutputHandler final
|
||||
: public CCryEditApp::PythonOutputHandler
|
||||
{
|
||||
PythonTestOutputHandler() = default;
|
||||
virtual ~PythonTestOutputHandler() = default;
|
||||
~PythonTestOutputHandler() override = default;
|
||||
|
||||
void OnTraceMessage(AZStd::string_view message) override
|
||||
{
|
||||
@@ -1587,7 +1587,7 @@ void CCryEditApp::RunInitPythonScript(CEditCommandLineInfo& cmdInfo)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CCryEditApp initialization
|
||||
BOOL CCryEditApp::InitInstance()
|
||||
bool CCryEditApp::InitInstance()
|
||||
{
|
||||
QElapsedTimer startupTimer;
|
||||
startupTimer.start();
|
||||
@@ -1614,7 +1614,7 @@ BOOL CCryEditApp::InitInstance()
|
||||
{
|
||||
CAboutDialog aboutDlg(FormatVersion(m_pEditor->GetFileVersion()), FormatRichTextCopyrightNotice());
|
||||
aboutDlg.exec();
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Reflect property control classes to the serialize context...
|
||||
@@ -1624,9 +1624,6 @@ BOOL CCryEditApp::InitInstance()
|
||||
ReflectedVarInit::setupReflection(serializeContext);
|
||||
RegisterReflectedVarHandlers();
|
||||
|
||||
|
||||
QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
|
||||
|
||||
CreateSplashScreen();
|
||||
|
||||
// Register the application's document templates. Document templates
|
||||
@@ -1757,7 +1754,7 @@ BOOL CCryEditApp::InitInstance()
|
||||
}
|
||||
}
|
||||
|
||||
SetEditorWindowTitle(0, AZ::Utils::GetProjectName().c_str(), 0);
|
||||
SetEditorWindowTitle(nullptr, AZ::Utils::GetProjectName().c_str(), nullptr);
|
||||
if (!GetIEditor()->IsInMatEditMode())
|
||||
{
|
||||
m_pEditor->InitFinished();
|
||||
@@ -1842,8 +1839,8 @@ void CCryEditApp::RegisterEventLoopHook(IEventLoopHook* pHook)
|
||||
|
||||
void CCryEditApp::UnregisterEventLoopHook(IEventLoopHook* pHookToRemove)
|
||||
{
|
||||
IEventLoopHook* pPrevious = 0;
|
||||
for (IEventLoopHook* pHook = m_pEventLoopHook; pHook != 0; pHook = pHook->pNextHook)
|
||||
IEventLoopHook* pPrevious = nullptr;
|
||||
for (IEventLoopHook* pHook = m_pEventLoopHook; pHook != nullptr; pHook = pHook->pNextHook)
|
||||
{
|
||||
if (pHook == pHookToRemove)
|
||||
{
|
||||
@@ -1856,7 +1853,7 @@ void CCryEditApp::UnregisterEventLoopHook(IEventLoopHook* pHookToRemove)
|
||||
m_pEventLoopHook = pHookToRemove->pNextHook;
|
||||
}
|
||||
|
||||
pHookToRemove->pNextHook = 0;
|
||||
pHookToRemove->pNextHook = nullptr;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1865,11 +1862,6 @@ void CCryEditApp::UnregisterEventLoopHook(IEventLoopHook* pHookToRemove)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::LoadFile(QString fileName)
|
||||
{
|
||||
//CEditCommandLineInfo cmdLine;
|
||||
//ProcessCommandLine(cmdinfo);
|
||||
|
||||
//bool bBuilding = false;
|
||||
//CString file = cmdLine.SpanExcluding()
|
||||
if (GetIEditor()->GetViewManager()->GetViewCount() == 0)
|
||||
{
|
||||
return;
|
||||
@@ -1879,7 +1871,7 @@ void CCryEditApp::LoadFile(QString fileName)
|
||||
|
||||
if (MainWindow::instance() || m_pConsoleDialog)
|
||||
{
|
||||
SetEditorWindowTitle(0, AZ::Utils::GetProjectName().c_str(), GetIEditor()->GetGameEngine()->GetLevelName());
|
||||
SetEditorWindowTitle(nullptr, AZ::Utils::GetProjectName().c_str(), GetIEditor()->GetGameEngine()->GetLevelName());
|
||||
}
|
||||
|
||||
GetIEditor()->SetModifiedFlag(false);
|
||||
@@ -1920,7 +1912,7 @@ void CCryEditApp::EnableAccelerator([[maybe_unused]] bool bEnable)
|
||||
CMainFrame *mainFrame = (CMainFrame*)m_pMainWnd;
|
||||
if (mainFrame->m_hAccelTable)
|
||||
DestroyAcceleratorTable( mainFrame->m_hAccelTable );
|
||||
mainFrame->m_hAccelTable = NULL;
|
||||
mainFrame->m_hAccelTable = nullptr;
|
||||
mainFrame->LoadAccelTable( MAKEINTRESOURCE(IDR_GAMEACCELERATOR) );
|
||||
CLogFile::WriteLine( "Disable Accelerators" );
|
||||
}
|
||||
@@ -2257,7 +2249,7 @@ void CCryEditApp::EnableIdleProcessing()
|
||||
AZ_Assert(m_disableIdleProcessingCounter >= 0, "m_disableIdleProcessingCounter must be nonnegative");
|
||||
}
|
||||
|
||||
BOOL CCryEditApp::OnIdle([[maybe_unused]] LONG lCount)
|
||||
bool CCryEditApp::OnIdle([[maybe_unused]] LONG lCount)
|
||||
{
|
||||
if (0 == m_disableIdleProcessingCounter)
|
||||
{
|
||||
@@ -2265,7 +2257,7 @@ BOOL CCryEditApp::OnIdle([[maybe_unused]] LONG lCount)
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3140,7 +3132,7 @@ void CCryEditApp::OnCreateLevel()
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool CCryEditApp::CreateLevel(bool& wasCreateLevelOperationCancelled)
|
||||
{
|
||||
BOOL bIsDocModified = GetIEditor()->GetDocument()->IsModified();
|
||||
bool bIsDocModified = GetIEditor()->GetDocument()->IsModified();
|
||||
if (GetIEditor()->GetDocument()->IsDocumentReady() && bIsDocModified)
|
||||
{
|
||||
QString str = QObject::tr("Level %1 has been changed. Save Level?").arg(GetIEditor()->GetGameEngine()->GetLevelName());
|
||||
@@ -3194,7 +3186,7 @@ bool CCryEditApp::CreateLevel(bool& wasCreateLevelOperationCancelled)
|
||||
GetIEditor()->GetDocument()->DeleteTemporaryLevel();
|
||||
}
|
||||
|
||||
if (levelName.length() == 0 || !CryStringUtils::IsValidFileName(levelName.toUtf8().data()))
|
||||
if (levelName.length() == 0 || !AZ::StringFunc::Path::IsValid(levelName.toUtf8().data()))
|
||||
{
|
||||
QMessageBox::critical(AzToolsFramework::GetActiveWindow(), QString(), QObject::tr("Level name is invalid, please choose another name."));
|
||||
return false;
|
||||
@@ -3227,13 +3219,16 @@ bool CCryEditApp::CreateLevel(bool& wasCreateLevelOperationCancelled)
|
||||
DWORD dw = GetLastError();
|
||||
|
||||
#ifdef WIN32
|
||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
wchar_t windowsErrorMessageW[ERROR_LEN];
|
||||
windowsErrorMessageW[0] = L'\0';
|
||||
FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
nullptr,
|
||||
dw,
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
windowsErrorMessage.data(),
|
||||
windowsErrorMessage.length(), NULL);
|
||||
windowsErrorMessageW,
|
||||
ERROR_LEN, nullptr);
|
||||
_getcwd(cwd.data(), cwd.length());
|
||||
AZStd::to_string(windowsErrorMessage.data(), ERROR_LEN, windowsErrorMessageW);
|
||||
#else
|
||||
windowsErrorMessage = strerror(dw);
|
||||
cwd = QDir::currentPath().toUtf8();
|
||||
@@ -3307,7 +3302,7 @@ void CCryEditApp::OnOpenSlice()
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CCryEditDoc* CCryEditApp::OpenDocumentFile(LPCTSTR lpszFileName)
|
||||
CCryEditDoc* CCryEditApp::OpenDocumentFile(const char* lpszFileName)
|
||||
{
|
||||
if (m_openingLevel)
|
||||
{
|
||||
@@ -3642,24 +3637,12 @@ void CCryEditApp::OnToolsPreferences()
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::OnSwitchToDefaultCamera()
|
||||
{
|
||||
CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
|
||||
{
|
||||
rvp->SetDefaultCamera();
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::OnUpdateSwitchToDefaultCamera(QAction* action)
|
||||
{
|
||||
Q_ASSERT(action->isCheckable());
|
||||
CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport))
|
||||
{
|
||||
action->setEnabled(true);
|
||||
action->setChecked(rvp->IsDefaultCamera());
|
||||
}
|
||||
else
|
||||
{
|
||||
action->setEnabled(false);
|
||||
}
|
||||
@@ -3668,39 +3651,12 @@ void CCryEditApp::OnUpdateSwitchToDefaultCamera(QAction* action)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::OnSwitchToSequenceCamera()
|
||||
{
|
||||
CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
|
||||
{
|
||||
rvp->SetSequenceCamera();
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::OnUpdateSwitchToSequenceCamera(QAction* action)
|
||||
{
|
||||
Q_ASSERT(action->isCheckable());
|
||||
|
||||
CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport))
|
||||
{
|
||||
bool enableAction = false;
|
||||
|
||||
// only enable if we're editing a sequence in Track View and have cameras in the level
|
||||
if (GetIEditor()->GetAnimation()->GetSequence())
|
||||
{
|
||||
|
||||
AZ::EBusAggregateResults<AZ::EntityId> componentCameras;
|
||||
Camera::CameraBus::BroadcastResult(componentCameras, &Camera::CameraRequests::GetCameras);
|
||||
|
||||
const int numCameras = componentCameras.values.size();
|
||||
enableAction = (numCameras > 0);
|
||||
}
|
||||
|
||||
action->setEnabled(enableAction);
|
||||
action->setChecked(rvp->IsSequenceCamera());
|
||||
}
|
||||
else
|
||||
{
|
||||
action->setEnabled(false);
|
||||
}
|
||||
@@ -3709,31 +3665,12 @@ void CCryEditApp::OnUpdateSwitchToSequenceCamera(QAction* action)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::OnSwitchToSelectedcamera()
|
||||
{
|
||||
CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
|
||||
{
|
||||
rvp->SetSelectedCamera();
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::OnUpdateSwitchToSelectedCamera(QAction* action)
|
||||
{
|
||||
Q_ASSERT(action->isCheckable());
|
||||
AzToolsFramework::EntityIdList selectedEntityList;
|
||||
AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult(selectedEntityList, &AzToolsFramework::ToolsApplicationRequests::GetSelectedEntities);
|
||||
AZ::EBusAggregateResults<AZ::EntityId> cameras;
|
||||
Camera::CameraBus::BroadcastResult(cameras, &Camera::CameraRequests::GetCameras);
|
||||
bool isCameraComponentSelected = selectedEntityList.size() > 0 ? AZStd::find(cameras.values.begin(), cameras.values.end(), *selectedEntityList.begin()) != cameras.values.end() : false;
|
||||
|
||||
CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport);
|
||||
if (isCameraComponentSelected && rvp)
|
||||
{
|
||||
action->setEnabled(true);
|
||||
action->setChecked(rvp->IsSelectedCamera());
|
||||
}
|
||||
else
|
||||
{
|
||||
action->setEnabled(false);
|
||||
}
|
||||
@@ -3742,11 +3679,7 @@ void CCryEditApp::OnUpdateSwitchToSelectedCamera(QAction* action)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CCryEditApp::OnSwitchcameraNext()
|
||||
{
|
||||
CViewport* vp = GetIEditor()->GetActiveView();
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
|
||||
{
|
||||
rvp->CycleCamera();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -3819,7 +3752,7 @@ bool CCryEditApp::IsInRegularEditorMode()
|
||||
|
||||
void CCryEditApp::OnOpenQuickAccessBar()
|
||||
{
|
||||
if (m_pQuickAccessBar == NULL)
|
||||
if (m_pQuickAccessBar == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -4064,15 +3997,12 @@ struct CryAllocatorsRAII
|
||||
CryAllocatorsRAII()
|
||||
{
|
||||
AZ_Assert(!AZ::AllocatorInstance<AZ::LegacyAllocator>::IsReady(), "Expected allocator to not be initialized, hunt down the static that is initializing it");
|
||||
AZ_Assert(!AZ::AllocatorInstance<CryStringAllocator>::IsReady(), "Expected allocator to not be initialized, hunt down the static that is initializing it");
|
||||
|
||||
AZ::AllocatorInstance<AZ::LegacyAllocator>::Create();
|
||||
AZ::AllocatorInstance<CryStringAllocator>::Create();
|
||||
}
|
||||
|
||||
~CryAllocatorsRAII()
|
||||
{
|
||||
AZ::AllocatorInstance<CryStringAllocator>::Destroy();
|
||||
AZ::AllocatorInstance<AZ::LegacyAllocator>::Destroy();
|
||||
}
|
||||
};
|
||||
@@ -4167,7 +4097,7 @@ extern "C" int AZ_DLL_EXPORT CryEditMain(int argc, char* argv[])
|
||||
|
||||
int exitCode = 0;
|
||||
|
||||
BOOL didCryEditStart = CCryEditApp::instance()->InitInstance();
|
||||
bool didCryEditStart = CCryEditApp::instance()->InitInstance();
|
||||
AZ_Error("Editor", didCryEditStart, "O3DE Editor did not initialize correctly, and will close."
|
||||
"\nThis could be because of incorrectly configured components, or missing required gems."
|
||||
"\nSee other errors for more details.");
|
||||
|
||||
+14
-14
@@ -135,16 +135,16 @@ public:
|
||||
virtual void AddToRecentFileList(const QString& lpszPathName);
|
||||
ECreateLevelResult CreateLevel(const QString& levelName, QString& fullyQualifiedLevelName);
|
||||
static void InitDirectory();
|
||||
BOOL FirstInstance(bool bForceNewInstance = false);
|
||||
bool FirstInstance(bool bForceNewInstance = false);
|
||||
void InitFromCommandLine(CEditCommandLineInfo& cmdInfo);
|
||||
BOOL CheckIfAlreadyRunning();
|
||||
bool CheckIfAlreadyRunning();
|
||||
//! @return successful outcome if initialization succeeded. or failed outcome with error message.
|
||||
AZ::Outcome<void, AZStd::string> InitGameSystem(HWND hwndForInputSystem);
|
||||
void CreateSplashScreen();
|
||||
void InitPlugins();
|
||||
bool InitGame();
|
||||
|
||||
BOOL InitConsole();
|
||||
bool InitConsole();
|
||||
int IdleProcessing(bool bBackground);
|
||||
bool IsWindowInForeground();
|
||||
void RunInitPythonScript(CEditCommandLineInfo& cmdInfo);
|
||||
@@ -171,10 +171,10 @@ public:
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
virtual bool InitInstance();
|
||||
virtual int ExitInstance(int exitCode = 0);
|
||||
virtual BOOL OnIdle(LONG lCount);
|
||||
virtual CCryEditDoc* OpenDocumentFile(LPCTSTR lpszFileName);
|
||||
virtual bool OnIdle(LONG lCount);
|
||||
virtual CCryEditDoc* OpenDocumentFile(const char* lpszFileName);
|
||||
|
||||
CCryDocManager* GetDocManager() { return m_pDocManager; }
|
||||
|
||||
@@ -347,7 +347,7 @@ private:
|
||||
// Disable warning for dll export since this member won't be used outside this class
|
||||
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
AZ::IO::FileDescriptorRedirector m_stdoutRedirection = AZ::IO::FileDescriptorRedirector(1); // < 1 for STDOUT
|
||||
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
|
||||
private:
|
||||
static inline constexpr const char* DefaultLevelTemplateName = "Prefabs/Default_Level.prefab";
|
||||
@@ -420,7 +420,7 @@ public:
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
class CCrySingleDocTemplate
|
||||
class CCrySingleDocTemplate
|
||||
: public QObject
|
||||
{
|
||||
private:
|
||||
@@ -448,9 +448,9 @@ public:
|
||||
~CCrySingleDocTemplate() {};
|
||||
// avoid creating another CMainFrame
|
||||
// close other type docs before opening any things
|
||||
virtual CCryEditDoc* OpenDocumentFile(LPCTSTR lpszPathName, BOOL bAddToMRU, BOOL bMakeVisible);
|
||||
virtual CCryEditDoc* OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
|
||||
virtual Confidence MatchDocType(LPCTSTR lpszPathName, CCryEditDoc*& rpDocMatch);
|
||||
virtual CCryEditDoc* OpenDocumentFile(const char* lpszPathName, bool bAddToMRU, bool bMakeVisible);
|
||||
virtual CCryEditDoc* OpenDocumentFile(const char* lpszPathName, bool bMakeVisible = TRUE);
|
||||
virtual Confidence MatchDocType(const char* lpszPathName, CCryEditDoc*& rpDocMatch);
|
||||
|
||||
private:
|
||||
const QMetaObject* m_documentClass = nullptr;
|
||||
@@ -465,9 +465,9 @@ public:
|
||||
CCrySingleDocTemplate* SetDefaultTemplate(CCrySingleDocTemplate* pNew);
|
||||
// Copied from MFC to get rid of the silly ugly unoverridable doc-type pick dialog
|
||||
virtual void OnFileNew();
|
||||
virtual BOOL DoPromptFileName(QString& fileName, UINT nIDSTitle,
|
||||
DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
|
||||
virtual CCryEditDoc* OpenDocumentFile(LPCTSTR lpszFileName, BOOL bAddToMRU);
|
||||
virtual bool DoPromptFileName(QString& fileName, UINT nIDSTitle,
|
||||
DWORD lFlags, bool bOpenFileDialog, CDocTemplate* pTemplate);
|
||||
virtual CCryEditDoc* OpenDocumentFile(const char* lpszFileName, bool bAddToMRU);
|
||||
|
||||
QVector<CCrySingleDocTemplate*> m_templateList;
|
||||
};
|
||||
|
||||
+39
-37
@@ -19,6 +19,7 @@
|
||||
#include <AzCore/Asset/AssetManager.h>
|
||||
#include <AzCore/Interface/Interface.h>
|
||||
#include <AzCore/Utils/Utils.h>
|
||||
#include <MathConversion.h>
|
||||
|
||||
// AzFramework
|
||||
#include <AzFramework/Archive/IArchive.h>
|
||||
@@ -53,6 +54,7 @@
|
||||
#include "MainWindow.h"
|
||||
#include "LevelFileDialog.h"
|
||||
#include "StatObjBus.h"
|
||||
#include "Undo/Undo.h"
|
||||
|
||||
#include <Atom/RPI.Public/ViewportContext.h>
|
||||
#include <Atom/RPI.Public/ViewportContextBus.h>
|
||||
@@ -95,7 +97,7 @@ namespace Internal
|
||||
{
|
||||
bool SaveLevel()
|
||||
{
|
||||
if (!GetIEditor()->GetDocument()->DoSave(GetIEditor()->GetDocument()->GetActivePathName(), TRUE))
|
||||
if (!GetIEditor()->GetDocument()->DoSave(GetIEditor()->GetDocument()->GetActivePathName(), true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -261,7 +263,7 @@ void CCryEditDoc::DeleteContents()
|
||||
GetIEditor()->GetObjectManager()->DeleteAllObjects();
|
||||
|
||||
// Load scripts data
|
||||
SetModifiedFlag(FALSE);
|
||||
SetModifiedFlag(false);
|
||||
SetModifiedModules(eModifiedNothing);
|
||||
// Clear error reports if open.
|
||||
CErrorReportDialog::Clear();
|
||||
@@ -303,7 +305,7 @@ void CCryEditDoc::Save(TDocMultiArchive& arrXmlAr)
|
||||
{
|
||||
CAutoDocNotReady autoDocNotReady;
|
||||
|
||||
if (arrXmlAr[DMAS_GENERAL] != NULL)
|
||||
if (arrXmlAr[DMAS_GENERAL] != nullptr)
|
||||
{
|
||||
(*arrXmlAr[DMAS_GENERAL]).root = XmlHelpers::CreateXmlNode("Level");
|
||||
(*arrXmlAr[DMAS_GENERAL]).root->setAttr("WaterColor", m_waterColor);
|
||||
@@ -416,8 +418,8 @@ void CCryEditDoc::Load(TDocMultiArchive& arrXmlAr, const QString& szFilename)
|
||||
Audio::AudioSystemRequestBus::BroadcastResult(controlsPath, &Audio::AudioSystemRequestBus::Events::GetControlsPath);
|
||||
QString sAudioLevelPath(controlsPath);
|
||||
sAudioLevelPath += "levels/";
|
||||
string const sLevelNameOnly = PathUtil::GetFileName(fileName.toUtf8().data());
|
||||
sAudioLevelPath += sLevelNameOnly;
|
||||
AZStd::string const sLevelNameOnly = PathUtil::GetFileName(fileName.toUtf8().data());
|
||||
sAudioLevelPath += sLevelNameOnly.c_str();
|
||||
QByteArray path = sAudioLevelPath.toUtf8();
|
||||
Audio::SAudioManagerRequestData<Audio::eAMRT_PARSE_CONTROLS_DATA> oAMData(path, Audio::eADS_LEVEL_SPECIFIC);
|
||||
Audio::SAudioRequest oAudioRequestData;
|
||||
@@ -481,7 +483,7 @@ void CCryEditDoc::Load(TDocMultiArchive& arrXmlAr, const QString& szFilename)
|
||||
|
||||
if (!pObj)
|
||||
{
|
||||
pObj = GetIEditor()->GetObjectManager()->NewObject("SequenceObject", 0, fullname);
|
||||
pObj = GetIEditor()->GetObjectManager()->NewObject("SequenceObject", nullptr, fullname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -665,7 +667,7 @@ int CCryEditDoc::GetModifiedModule()
|
||||
return m_modifiedModuleFlags;
|
||||
}
|
||||
|
||||
BOOL CCryEditDoc::CanCloseFrame()
|
||||
bool CCryEditDoc::CanCloseFrame()
|
||||
{
|
||||
// Ask the base class to ask for saving, which also includes the save
|
||||
// status of the plugins. Additionaly we query if all the plugins can exit
|
||||
@@ -674,21 +676,21 @@ BOOL CCryEditDoc::CanCloseFrame()
|
||||
// are not serialized in the project file
|
||||
if (!SaveModified())
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!GetIEditor()->GetPluginManager()->CanAllPluginsExitNow())
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
// If there is an export in process, exiting will corrupt it
|
||||
if (CGameExporter::GetCurrentExporter() != nullptr)
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CCryEditDoc::SaveModified()
|
||||
@@ -733,7 +735,7 @@ bool CCryEditDoc::OnOpenDocument(const QString& lpszPathName)
|
||||
TOpenDocContext context;
|
||||
if (!BeforeOpenDocument(lpszPathName, context))
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
return DoOpenDocument(context);
|
||||
}
|
||||
@@ -776,7 +778,7 @@ bool CCryEditDoc::BeforeOpenDocument(const QString& lpszPathName, TOpenDocContex
|
||||
context.absoluteLevelPath = absolutePath;
|
||||
context.absoluteSlicePath = "";
|
||||
}
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CCryEditDoc::DoOpenDocument(TOpenDocContext& context)
|
||||
@@ -813,7 +815,7 @@ bool CCryEditDoc::DoOpenDocument(TOpenDocContext& context)
|
||||
if (!LoadXmlArchiveArray(arrXmlAr, levelFilePath, levelFolderAbsolutePath))
|
||||
{
|
||||
m_bLoadFailed = true;
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!LoadLevel(arrXmlAr, context.absoluteLevelPath))
|
||||
@@ -825,7 +827,7 @@ bool CCryEditDoc::DoOpenDocument(TOpenDocContext& context)
|
||||
|
||||
if (m_bLoadFailed)
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Load AZ entities for the editor.
|
||||
@@ -846,7 +848,7 @@ bool CCryEditDoc::DoOpenDocument(TOpenDocContext& context)
|
||||
|
||||
if (m_bLoadFailed)
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
StartStreamingLoad();
|
||||
@@ -863,7 +865,7 @@ bool CCryEditDoc::DoOpenDocument(TOpenDocContext& context)
|
||||
// level.
|
||||
SetLevelExported(true);
|
||||
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CCryEditDoc::OnNewDocument()
|
||||
@@ -959,7 +961,7 @@ bool CCryEditDoc::BeforeSaveDocument(const QString& lpszPathName, TSaveDocContex
|
||||
bool bSaved(true);
|
||||
|
||||
context.bSaved = bSaved;
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CCryEditDoc::HasLayerNameConflicts() const
|
||||
@@ -1044,7 +1046,7 @@ bool CCryEditDoc::AfterSaveDocument([[maybe_unused]] const QString& lpszPathName
|
||||
else
|
||||
{
|
||||
CLogFile::WriteLine("$3Document successfully saved");
|
||||
SetModifiedFlag(FALSE);
|
||||
SetModifiedFlag(false);
|
||||
SetModifiedModules(eModifiedNothing);
|
||||
MainWindow::instance()->ResetAutoSaveTimers();
|
||||
}
|
||||
@@ -1596,7 +1598,7 @@ bool CCryEditDoc::LoadLevel(TDocMultiArchive& arrXmlAr, const QString& absoluteC
|
||||
// Set level path directly *after* DeleteContents(), since that will unload the previous level and clear the level path.
|
||||
GetIEditor()->GetGameEngine()->SetLevelPath(folderPath);
|
||||
|
||||
SetModifiedFlag(TRUE); // dirty during de-serialize
|
||||
SetModifiedFlag(true); // dirty during de-serialize
|
||||
SetModifiedModules(eModifiedAll);
|
||||
Load(arrXmlAr, absoluteCryFilePath);
|
||||
|
||||
@@ -1606,7 +1608,7 @@ bool CCryEditDoc::LoadLevel(TDocMultiArchive& arrXmlAr, const QString& absoluteC
|
||||
{
|
||||
pIPak->GetResourceList(AZ::IO::IArchive::RFOM_NextLevel)->Clear();
|
||||
}
|
||||
SetModifiedFlag(FALSE); // start off with unmodified
|
||||
SetModifiedFlag(false); // start off with unmodified
|
||||
SetModifiedModules(eModifiedNothing);
|
||||
SetDocumentReady(true);
|
||||
GetIEditor()->Notify(eNotify_OnEndLoad);
|
||||
@@ -1907,7 +1909,7 @@ void CCryEditDoc::LogLoadTime(int time) const
|
||||
|
||||
CLogFile::FormatLine("[LevelLoadTime] Level %s loaded in %d seconds", level.toUtf8().data(), time / 1000);
|
||||
#if defined(AZ_PLATFORM_WINDOWS)
|
||||
SetFileAttributes(filename.toUtf8().data(), FILE_ATTRIBUTE_ARCHIVE);
|
||||
SetFileAttributesW(filename.toStdWString().c_str(), FILE_ATTRIBUTE_ARCHIVE);
|
||||
#endif
|
||||
|
||||
QFile file(filename);
|
||||
@@ -1982,7 +1984,7 @@ void CCryEditDoc::OnStartLevelResourceList()
|
||||
gEnv->pCryPak->GetResourceList(AZ::IO::IArchive::RFOM_Level)->Clear();
|
||||
}
|
||||
|
||||
BOOL CCryEditDoc::DoFileSave()
|
||||
bool CCryEditDoc::DoFileSave()
|
||||
{
|
||||
if (GetEditMode() == CCryEditDoc::DocumentEditingMode::LevelEdit)
|
||||
{
|
||||
@@ -2000,15 +2002,15 @@ BOOL CCryEditDoc::DoFileSave()
|
||||
QString newLevelPath = filename.left(filename.lastIndexOf('/') + 1);
|
||||
GetIEditor()->GetDocument()->SetPathName(filename);
|
||||
GetIEditor()->GetGameEngine()->SetLevelPath(newLevelPath);
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!IsDocumentReady())
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
return Internal::SaveLevel();
|
||||
@@ -2063,7 +2065,7 @@ void CCryEditDoc::InitEmptyLevel(int /*resolution*/, int /*unitSize*/, bool /*bU
|
||||
GetISystem()->GetISystemEventDispatcher()->OnSystemEvent(ESYSTEM_EVENT_LEVEL_LOAD_END, 0, 0);
|
||||
|
||||
GetIEditor()->Notify(eNotify_OnEndNewScene);
|
||||
SetModifiedFlag(FALSE);
|
||||
SetModifiedFlag(false);
|
||||
SetLevelExported(false);
|
||||
SetModifiedModules(eModifiedNothing);
|
||||
|
||||
@@ -2077,13 +2079,13 @@ void CCryEditDoc::CreateDefaultLevelAssets([[maybe_unused]] int resolution, [[ma
|
||||
|
||||
void CCryEditDoc::OnEnvironmentPropertyChanged(IVariable* pVar)
|
||||
{
|
||||
if (pVar == NULL)
|
||||
if (pVar == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
XmlNodeRef node = GetEnvironmentTemplate();
|
||||
if (node == NULL)
|
||||
if (node == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -2101,7 +2103,7 @@ void CCryEditDoc::OnEnvironmentPropertyChanged(IVariable* pVar)
|
||||
|
||||
XmlNodeRef groupNode = node->getChild(nGroup);
|
||||
|
||||
if (groupNode == NULL)
|
||||
if (groupNode == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -2112,7 +2114,7 @@ void CCryEditDoc::OnEnvironmentPropertyChanged(IVariable* pVar)
|
||||
}
|
||||
|
||||
XmlNodeRef childNode = groupNode->getChild(nChild);
|
||||
if (childNode == NULL)
|
||||
if (childNode == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -2132,14 +2134,14 @@ void CCryEditDoc::OnEnvironmentPropertyChanged(IVariable* pVar)
|
||||
childNode->setAttr("value", childValue.toUtf8().data());
|
||||
}
|
||||
|
||||
QString CCryEditDoc::GetCryIndexPath(const LPCTSTR levelFilePath) const
|
||||
QString CCryEditDoc::GetCryIndexPath(const char* levelFilePath) const
|
||||
{
|
||||
QString levelPath = Path::GetPath(levelFilePath);
|
||||
QString levelName = Path::GetFileName(levelFilePath);
|
||||
return Path::AddPathSlash(levelPath + levelName + "_editor");
|
||||
}
|
||||
|
||||
BOOL CCryEditDoc::LoadXmlArchiveArray(TDocMultiArchive& arrXmlAr, const QString& absoluteLevelPath, const QString& levelPath)
|
||||
bool CCryEditDoc::LoadXmlArchiveArray(TDocMultiArchive& arrXmlAr, const QString& absoluteLevelPath, const QString& levelPath)
|
||||
{
|
||||
auto pIPak = GetIEditor()->GetSystem()->GetIPak();
|
||||
|
||||
@@ -2148,7 +2150,7 @@ BOOL CCryEditDoc::LoadXmlArchiveArray(TDocMultiArchive& arrXmlAr, const QString&
|
||||
CXmlArchive* pXmlAr = new CXmlArchive();
|
||||
if (!pXmlAr)
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
CXmlArchive& xmlAr = *pXmlAr;
|
||||
@@ -2159,7 +2161,7 @@ BOOL CCryEditDoc::LoadXmlArchiveArray(TDocMultiArchive& arrXmlAr, const QString&
|
||||
bool openLevelPakFileSuccess = pIPak->OpenPack(levelPath.toUtf8().data(), absoluteLevelPath.toUtf8().data());
|
||||
if (!openLevelPakFileSuccess)
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
CPakFile pakFile;
|
||||
@@ -2167,13 +2169,13 @@ BOOL CCryEditDoc::LoadXmlArchiveArray(TDocMultiArchive& arrXmlAr, const QString&
|
||||
pIPak->ClosePack(absoluteLevelPath.toUtf8().data());
|
||||
if (!loadFromPakSuccess)
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
FillXmlArArray(arrXmlAr, &xmlAr);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
void CCryEditDoc::ReleaseXmlArchiveArray(TDocMultiArchive& arrXmlAr)
|
||||
|
||||
@@ -26,7 +26,7 @@ struct ICVar;
|
||||
|
||||
// Filename of the temporary file used for the hold / fetch operation
|
||||
// conform to the "$tmp[0-9]_" naming convention
|
||||
#define HOLD_FETCH_FILE "$tmp_hold"
|
||||
#define HOLD_FETCH_FILE "$tmp_hold"
|
||||
|
||||
class CCryEditDoc
|
||||
: public QObject
|
||||
@@ -36,7 +36,7 @@ class CCryEditDoc
|
||||
Q_PROPERTY(bool modified READ IsModified WRITE SetModifiedFlag);
|
||||
Q_PROPERTY(QString pathName READ GetLevelPathName WRITE SetPathName);
|
||||
Q_PROPERTY(QString title READ GetTitle WRITE SetTitle);
|
||||
|
||||
|
||||
public: // Create from serialization only
|
||||
enum DocumentEditingMode
|
||||
{
|
||||
@@ -82,7 +82,7 @@ public: // Create from serialization only
|
||||
|
||||
bool DoSave(const QString& pathName, bool replace);
|
||||
SANDBOX_API bool Save();
|
||||
virtual BOOL DoFileSave();
|
||||
virtual bool DoFileSave();
|
||||
bool SaveModified();
|
||||
|
||||
virtual bool BackupBeforeSave(bool bForce = false);
|
||||
@@ -102,7 +102,7 @@ public: // Create from serialization only
|
||||
bool IsLevelExported() const;
|
||||
void SetLevelExported(bool boExported = true);
|
||||
|
||||
BOOL CanCloseFrame();
|
||||
bool CanCloseFrame();
|
||||
|
||||
enum class FetchPolicy
|
||||
{
|
||||
@@ -144,7 +144,7 @@ protected:
|
||||
};
|
||||
bool BeforeOpenDocument(const QString& lpszPathName, TOpenDocContext& context);
|
||||
bool DoOpenDocument(TOpenDocContext& context);
|
||||
virtual BOOL LoadXmlArchiveArray(TDocMultiArchive& arrXmlAr, const QString& absoluteLevelPath, const QString& levelPath);
|
||||
virtual bool LoadXmlArchiveArray(TDocMultiArchive& arrXmlAr, const QString& absoluteLevelPath, const QString& levelPath);
|
||||
virtual void ReleaseXmlArchiveArray(TDocMultiArchive& arrXmlAr);
|
||||
|
||||
virtual void Load(TDocMultiArchive& arrXmlAr, const QString& szFilename);
|
||||
@@ -180,7 +180,7 @@ protected:
|
||||
void OnStartLevelResourceList();
|
||||
static void OnValidateSurfaceTypesChanged(ICVar*);
|
||||
|
||||
QString GetCryIndexPath(const LPCTSTR levelFilePath) const;
|
||||
QString GetCryIndexPath(const char* levelFilePath) const;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// SliceEditorEntityOwnershipServiceNotificationBus::Handler
|
||||
|
||||
@@ -210,7 +210,7 @@ namespace
|
||||
const char* PyGetCurrentLevelName()
|
||||
{
|
||||
// Using static member to capture temporary data
|
||||
static string tempLevelName;
|
||||
static AZ::IO::FixedMaxPathString tempLevelName;
|
||||
tempLevelName = GetIEditor()->GetGameEngine()->GetLevelName().toUtf8().data();
|
||||
return tempLevelName.c_str();
|
||||
}
|
||||
@@ -218,7 +218,7 @@ namespace
|
||||
const char* PyGetCurrentLevelPath()
|
||||
{
|
||||
// Using static member to capture temporary data
|
||||
static string tempLevelPath;
|
||||
static AZ::IO::FixedMaxPathString tempLevelPath;
|
||||
tempLevelPath = GetIEditor()->GetGameEngine()->GetLevelPath().toUtf8().data();
|
||||
return tempLevelPath.c_str();
|
||||
}
|
||||
@@ -359,7 +359,7 @@ namespace
|
||||
{
|
||||
AZ::TickBus::Handler::BusConnect();
|
||||
}
|
||||
~Ticker()
|
||||
~Ticker() override
|
||||
{
|
||||
AZ::TickBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
#define MIN_ASPECT 1
|
||||
#define MAX_ASPECT 16384
|
||||
|
||||
CCustomAspectRatioDlg::CCustomAspectRatioDlg(int x, int y, QWidget* pParent /*=NULL*/)
|
||||
CCustomAspectRatioDlg::CCustomAspectRatioDlg(int x, int y, QWidget* pParent /*=nullptr*/)
|
||||
: QDialog(pParent)
|
||||
, m_xDefault(x)
|
||||
, m_yDefault(y)
|
||||
|
||||
@@ -25,7 +25,7 @@ AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
#define MIN_RES 64
|
||||
#define MAX_RES 8192
|
||||
|
||||
CCustomResolutionDlg::CCustomResolutionDlg(int w, int h, QWidget* pParent /*=NULL*/)
|
||||
CCustomResolutionDlg::CCustomResolutionDlg(int w, int h, QWidget* pParent /*=nullptr*/)
|
||||
: QDialog(pParent)
|
||||
, m_wDefault(w)
|
||||
, m_hDefault(h)
|
||||
@@ -50,12 +50,12 @@ void CCustomResolutionDlg::OnInitDialog()
|
||||
m_ui->m_height->setValue(m_hDefault);
|
||||
|
||||
QString maxDimensionString;
|
||||
QTextStream(&maxDimensionString)
|
||||
<< "Maximum Dimension: " << MAX_RES << Qt::endl
|
||||
QTextStream(&maxDimensionString)
|
||||
<< "Maximum Dimension: " << MAX_RES << Qt::endl
|
||||
<< Qt::endl
|
||||
<< "Note: Dimensions over 8K may be" << Qt::endl
|
||||
<< "unstable depending on hardware.";
|
||||
|
||||
|
||||
m_ui->m_maxDimension->setText(maxDimensionString);
|
||||
}
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
: QAbstractListModel(parent)
|
||||
{
|
||||
}
|
||||
virtual ~MenuActionsModel() {}
|
||||
~MenuActionsModel() override {}
|
||||
|
||||
int rowCount([[maybe_unused]] const QModelIndex& parent = QModelIndex()) const override
|
||||
{
|
||||
@@ -134,7 +134,7 @@ public:
|
||||
, m_action(nullptr)
|
||||
{
|
||||
}
|
||||
virtual ~ActionShortcutsModel() {}
|
||||
~ActionShortcutsModel() override {}
|
||||
|
||||
int rowCount([[maybe_unused]] const QModelIndex& parent = QModelIndex()) const override
|
||||
{
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
#pragma warning (disable : 4786) // identifier was truncated to 'number' characters in the debug information.
|
||||
#pragma warning (disable : 4244) // conversion from 'long' to 'float', possible loss of data
|
||||
#pragma warning (disable : 4018) // signed/unsigned mismatch
|
||||
#pragma warning (disable : 4800) // BOOL bool conversion
|
||||
|
||||
// Disable warning when a function returns a value inside an __asm block
|
||||
#pragma warning (disable : 4035)
|
||||
@@ -85,17 +84,17 @@
|
||||
#endif
|
||||
|
||||
#ifndef SAFE_DELETE
|
||||
#define SAFE_DELETE(p) { if (p) { delete (p); (p) = NULL; } \
|
||||
#define SAFE_DELETE(p) { if (p) { delete (p); (p) = nullptr; } \
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef SAFE_DELETE_ARRAY
|
||||
#define SAFE_DELETE_ARRAY(p) { if (p) { delete[] (p); (p) = NULL; } \
|
||||
#define SAFE_DELETE_ARRAY(p) { if (p) { delete[] (p); (p) = nullptr; } \
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef SAFE_RELEASE
|
||||
#define SAFE_RELEASE(p) { if (p) { (p)->Release(); (p) = NULL; } \
|
||||
#define SAFE_RELEASE(p) { if (p) { (p)->Release(); (p) = nullptr; } \
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -55,10 +55,10 @@ bool CEditorFileMonitor::RegisterListener(IFileChangeListener* pListener, const
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
static string CanonicalizePath(const char* path)
|
||||
static AZStd::string CanonicalizePath(const char* path)
|
||||
{
|
||||
auto canon = QFileInfo(path).canonicalFilePath();
|
||||
return canon.isEmpty() ? string(path) : string(canon.toUtf8());
|
||||
return canon.isEmpty() ? AZStd::string(path) : AZStd::string(canon.toUtf8());
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -66,8 +66,8 @@ bool CEditorFileMonitor::RegisterListener(IFileChangeListener* pListener, const
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
string gameFolder = Path::GetEditingGameDataFolder().c_str();
|
||||
string naivePath;
|
||||
AZStd::string gameFolder = Path::GetEditingGameDataFolder().c_str();
|
||||
AZStd::string naivePath;
|
||||
CFileChangeMonitor* fileChangeMonitor = CFileChangeMonitor::Instance();
|
||||
AZ_Assert(fileChangeMonitor, "CFileChangeMonitor singleton missing.");
|
||||
|
||||
@@ -75,12 +75,12 @@ bool CEditorFileMonitor::RegisterListener(IFileChangeListener* pListener, const
|
||||
// Append slash in preparation for appending the second part.
|
||||
naivePath = PathUtil::AddSlash(naivePath);
|
||||
naivePath += sFolderRelativeToGame;
|
||||
naivePath.replace('/', '\\');
|
||||
AZ::StringFunc::Replace(naivePath, '/', '\\');
|
||||
|
||||
// Remove the final slash if the given item is a folder so the file change monitor correctly picks up on it.
|
||||
naivePath = PathUtil::RemoveSlash(naivePath);
|
||||
|
||||
string canonicalizedPath = CanonicalizePath(naivePath.c_str());
|
||||
AZStd::string canonicalizedPath = CanonicalizePath(naivePath.c_str());
|
||||
|
||||
if (fileChangeMonitor->IsDirectory(canonicalizedPath.c_str()) || fileChangeMonitor->IsFile(canonicalizedPath.c_str()))
|
||||
{
|
||||
@@ -162,7 +162,7 @@ QString RemoveGameName(const QString &filename)
|
||||
void CEditorFileMonitor::OnFileMonitorChange(const SFileChangeInfo& rChange)
|
||||
{
|
||||
CCryEditApp* app = CCryEditApp::instance();
|
||||
if (app == NULL || app->IsExiting())
|
||||
if (app == nullptr || app->IsExiting())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ private:
|
||||
QString extension;
|
||||
|
||||
SFileChangeCallback()
|
||||
: pListener(NULL)
|
||||
: pListener(nullptr)
|
||||
{}
|
||||
|
||||
SFileChangeCallback(IFileChangeListener* pListener, const char* item, const char* extension)
|
||||
|
||||
@@ -49,7 +49,7 @@ class CEditorPanelUtils_Impl
|
||||
{
|
||||
#pragma region Drag & Drop
|
||||
public:
|
||||
virtual void SetViewportDragOperation(void(* dropCallback)(CViewport* viewport, int dragPointX, int dragPointY, void* custom), void* custom) override
|
||||
void SetViewportDragOperation(void(* dropCallback)(CViewport* viewport, int dragPointX, int dragPointY, void* custom), void* custom) override
|
||||
{
|
||||
for (int i = 0; i < GetIEditor()->GetViewManager()->GetViewCount(); i++)
|
||||
{
|
||||
@@ -60,13 +60,13 @@ public:
|
||||
#pragma region Preview Window
|
||||
public:
|
||||
|
||||
virtual int PreviewWindow_GetDisplaySettingsDebugFlags(CDisplaySettings* settings)
|
||||
int PreviewWindow_GetDisplaySettingsDebugFlags(CDisplaySettings* settings) override
|
||||
{
|
||||
CRY_ASSERT(settings);
|
||||
return settings->GetDebugFlags();
|
||||
}
|
||||
|
||||
virtual void PreviewWindow_SetDisplaySettingsDebugFlags(CDisplaySettings* settings, int flags)
|
||||
void PreviewWindow_SetDisplaySettingsDebugFlags(CDisplaySettings* settings, int flags) override
|
||||
{
|
||||
CRY_ASSERT(settings);
|
||||
settings->SetDebugFlags(flags);
|
||||
@@ -79,7 +79,7 @@ protected:
|
||||
bool m_hotkeysAreEnabled;
|
||||
public:
|
||||
|
||||
virtual bool HotKey_Import() override
|
||||
bool HotKey_Import() override
|
||||
{
|
||||
QVector<QPair<QString, QString> > keys;
|
||||
QString filepath = QFileDialog::getOpenFileName(nullptr, "Select shortcut configuration to load",
|
||||
@@ -143,7 +143,7 @@ public:
|
||||
return result;
|
||||
}
|
||||
|
||||
virtual void HotKey_Export() override
|
||||
void HotKey_Export() override
|
||||
{
|
||||
auto settingDir = AZ::IO::FixedMaxPath(AZ::Utils::GetEnginePath()) / "Editor" / "Plugins" / "ParticleEditorPlugin" / "settings";
|
||||
QString filepath = QFileDialog::getSaveFileName(nullptr, "Select shortcut configuration to load", settingDir.c_str(), "HotKey Config Files (*.hkxml)");
|
||||
@@ -170,7 +170,7 @@ public:
|
||||
file.close();
|
||||
}
|
||||
|
||||
virtual QKeySequence HotKey_GetShortcut(const char* path) override
|
||||
QKeySequence HotKey_GetShortcut(const char* path) override
|
||||
{
|
||||
for (HotKey combo : hotkeys)
|
||||
{
|
||||
@@ -182,7 +182,7 @@ public:
|
||||
return QKeySequence();
|
||||
}
|
||||
|
||||
virtual bool HotKey_IsPressed(const QKeyEvent* event, const char* path) override
|
||||
bool HotKey_IsPressed(const QKeyEvent* event, const char* path) override
|
||||
{
|
||||
if (!m_hotkeysAreEnabled)
|
||||
{
|
||||
@@ -221,7 +221,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool HotKey_IsPressed(const QShortcutEvent* event, const char* path) override
|
||||
bool HotKey_IsPressed(const QShortcutEvent* event, const char* path) override
|
||||
{
|
||||
if (!m_hotkeysAreEnabled)
|
||||
{
|
||||
@@ -239,7 +239,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool HotKey_LoadExisting() override
|
||||
bool HotKey_LoadExisting() override
|
||||
{
|
||||
QSettings settings("O3DE", "O3DE");
|
||||
QString group = "Hotkeys/";
|
||||
@@ -275,7 +275,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual void HotKey_SaveCurrent() override
|
||||
void HotKey_SaveCurrent() override
|
||||
{
|
||||
QSettings settings("O3DE", "O3DE");
|
||||
QString group = "Hotkeys/";
|
||||
@@ -296,7 +296,7 @@ public:
|
||||
settings.sync();
|
||||
}
|
||||
|
||||
virtual void HotKey_BuildDefaults() override
|
||||
void HotKey_BuildDefaults() override
|
||||
{
|
||||
m_hotkeysAreEnabled = true;
|
||||
QVector<QPair<QString, QString> > keys;
|
||||
@@ -356,17 +356,17 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void HotKey_SetKeys(QVector<HotKey> keys) override
|
||||
void HotKey_SetKeys(QVector<HotKey> keys) override
|
||||
{
|
||||
hotkeys = keys;
|
||||
}
|
||||
|
||||
virtual QVector<HotKey> HotKey_GetKeys() override
|
||||
QVector<HotKey> HotKey_GetKeys() override
|
||||
{
|
||||
return hotkeys;
|
||||
}
|
||||
|
||||
virtual QString HotKey_GetPressedHotkey(const QKeyEvent* event) override
|
||||
QString HotKey_GetPressedHotkey(const QKeyEvent* event) override
|
||||
{
|
||||
if (!m_hotkeysAreEnabled)
|
||||
{
|
||||
@@ -381,7 +381,7 @@ public:
|
||||
}
|
||||
return "";
|
||||
}
|
||||
virtual QString HotKey_GetPressedHotkey(const QShortcutEvent* event) override
|
||||
QString HotKey_GetPressedHotkey(const QShortcutEvent* event) override
|
||||
{
|
||||
if (!m_hotkeysAreEnabled)
|
||||
{
|
||||
@@ -398,12 +398,12 @@ public:
|
||||
}
|
||||
//building the default hotkey list re-enables hotkeys
|
||||
//do not use this when rebuilding the default list is a possibility.
|
||||
virtual void HotKey_SetEnabled(bool val) override
|
||||
void HotKey_SetEnabled(bool val) override
|
||||
{
|
||||
m_hotkeysAreEnabled = val;
|
||||
}
|
||||
|
||||
virtual bool HotKey_IsEnabled() const override
|
||||
bool HotKey_IsEnabled() const override
|
||||
{
|
||||
return m_hotkeysAreEnabled;
|
||||
}
|
||||
@@ -457,13 +457,13 @@ protected:
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void ToolTip_LoadConfigXML(QString filepath) override
|
||||
void ToolTip_LoadConfigXML(QString filepath) override
|
||||
{
|
||||
XmlNodeRef node = GetIEditor()->GetSystem()->LoadXmlFromFile(filepath.toStdString().c_str());
|
||||
ToolTip_ParseNode(node);
|
||||
}
|
||||
|
||||
virtual void ToolTip_BuildFromConfig(IQToolTip* tooltip, QString path, QString option, QString optionalData = "", bool isEnabled = true)
|
||||
void ToolTip_BuildFromConfig(IQToolTip* tooltip, QString path, QString option, QString optionalData = "", bool isEnabled = true) override
|
||||
{
|
||||
AZ_Assert(tooltip, "tooltip cannot be null");
|
||||
|
||||
@@ -488,7 +488,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual QString ToolTip_GetTitle(QString path, QString option) override
|
||||
QString ToolTip_GetTitle(QString path, QString option) override
|
||||
{
|
||||
if (!option.isEmpty() && GetToolTip(path + "." + option).isValid)
|
||||
{
|
||||
@@ -501,7 +501,7 @@ public:
|
||||
return GetToolTip(path).title;
|
||||
}
|
||||
|
||||
virtual QString ToolTip_GetContent(QString path, QString option) override
|
||||
QString ToolTip_GetContent(QString path, QString option) override
|
||||
{
|
||||
if (!option.isEmpty() && GetToolTip(path + "." + option).isValid)
|
||||
{
|
||||
@@ -514,7 +514,7 @@ public:
|
||||
return GetToolTip(path).content;
|
||||
}
|
||||
|
||||
virtual QString ToolTip_GetSpecialContentType(QString path, QString option) override
|
||||
QString ToolTip_GetSpecialContentType(QString path, QString option) override
|
||||
{
|
||||
if (!option.isEmpty() && GetToolTip(path + "." + option).isValid)
|
||||
{
|
||||
@@ -527,7 +527,7 @@ public:
|
||||
return GetToolTip(path).specialContent;
|
||||
}
|
||||
|
||||
virtual QString ToolTip_GetDisabledContent(QString path, QString option) override
|
||||
QString ToolTip_GetDisabledContent(QString path, QString option) override
|
||||
{
|
||||
if (!option.isEmpty() && GetToolTip(path + "." + option).isValid)
|
||||
{
|
||||
|
||||
@@ -282,7 +282,7 @@ void EditorPreferencesDialog::CreatePages()
|
||||
{
|
||||
auto pUnknown = classes[i];
|
||||
|
||||
IPreferencesPageCreator* pPageCreator = 0;
|
||||
IPreferencesPageCreator* pPageCreator = nullptr;
|
||||
if (FAILED(pUnknown->QueryInterface(&pPageCreator)))
|
||||
{
|
||||
continue;
|
||||
|
||||
@@ -43,11 +43,16 @@ void CEditorPreferencesPage_Files::Reflect(AZ::SerializeContext& serialize)
|
||||
->Field("MaxCount", &AutoBackup::m_maxCount)
|
||||
->Field("RemindTime", &AutoBackup::m_remindTime);
|
||||
|
||||
serialize.Class<AssetBrowserSearch>()
|
||||
->Version(1)
|
||||
->Field("Max number of items displayed", &AssetBrowserSearch::m_maxNumberOfItemsShownInSearch);
|
||||
|
||||
serialize.Class<CEditorPreferencesPage_Files>()
|
||||
->Version(1)
|
||||
->Field("Files", &CEditorPreferencesPage_Files::m_files)
|
||||
->Field("Editors", &CEditorPreferencesPage_Files::m_editors)
|
||||
->Field("AutoBackup", &CEditorPreferencesPage_Files::m_autoBackup);
|
||||
->Field("AutoBackup", &CEditorPreferencesPage_Files::m_autoBackup)
|
||||
->Field("AssetBrowserSearch", &CEditorPreferencesPage_Files::m_assetBrowserSearch);
|
||||
|
||||
|
||||
AZ::EditContext* editContext = serialize.GetEditContext();
|
||||
@@ -80,12 +85,19 @@ void CEditorPreferencesPage_Files::Reflect(AZ::SerializeContext& serialize)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 100)
|
||||
->DataElement(AZ::Edit::UIHandlers::SpinBox, &AutoBackup::m_remindTime, "Remind Time", "Auto Remind Every (Minutes)");
|
||||
|
||||
editContext->Class<AssetBrowserSearch>("Asset Browser Search View", "Asset Browser Search View")
|
||||
->DataElement(AZ::Edit::UIHandlers::SpinBox, &AssetBrowserSearch::m_maxNumberOfItemsShownInSearch, "Maximum number of displayed items",
|
||||
"Maximum number of displayed items displayed in the Search View")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 50)
|
||||
->Attribute(AZ::Edit::Attributes::Max, 5000);
|
||||
|
||||
editContext->Class<CEditorPreferencesPage_Files>("File Preferences", "Class for handling File Preferences")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20))
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_files, "Files", "File Preferences")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_editors, "External Editors", "External Editors")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_autoBackup, "Auto Backup", "Auto Backup");
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_autoBackup, "Auto Backup", "Auto Backup")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_assetBrowserSearch, "Asset Browser Search", "Asset Browser Search");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,6 +136,8 @@ void CEditorPreferencesPage_Files::OnApply()
|
||||
gSettings.autoBackupTime = m_autoBackup.m_timeInterval;
|
||||
gSettings.autoBackupMaxCount = m_autoBackup.m_maxCount;
|
||||
gSettings.autoRemindTime = m_autoBackup.m_remindTime;
|
||||
|
||||
gSettings.maxNumberOfItemsShownInSearch = m_assetBrowserSearch.m_maxNumberOfItemsShownInSearch;
|
||||
}
|
||||
|
||||
void CEditorPreferencesPage_Files::InitializeSettings()
|
||||
@@ -148,4 +162,6 @@ void CEditorPreferencesPage_Files::InitializeSettings()
|
||||
m_autoBackup.m_timeInterval = gSettings.autoBackupTime;
|
||||
m_autoBackup.m_maxCount = gSettings.autoBackupMaxCount;
|
||||
m_autoBackup.m_remindTime = gSettings.autoRemindTime;
|
||||
|
||||
m_assetBrowserSearch.m_maxNumberOfItemsShownInSearch = gSettings.maxNumberOfItemsShownInSearch;
|
||||
}
|
||||
|
||||
@@ -69,10 +69,17 @@ private:
|
||||
int m_remindTime;
|
||||
};
|
||||
|
||||
struct AssetBrowserSearch
|
||||
{
|
||||
AZ_TYPE_INFO(AssetBrowserSearch, "{9FBFCD24-9452-49DF-99F4-2711443CEAAE}")
|
||||
|
||||
int m_maxNumberOfItemsShownInSearch;
|
||||
};
|
||||
|
||||
Files m_files;
|
||||
ExternalEditors m_editors;
|
||||
AutoBackup m_autoBackup;
|
||||
AssetBrowserSearch m_assetBrowserSearch;
|
||||
QIcon m_icon;
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+201
-404
@@ -8,8 +8,6 @@
|
||||
|
||||
|
||||
#pragma once
|
||||
// RenderViewport.h : header file
|
||||
//
|
||||
|
||||
#if !defined(Q_MOC_RUN)
|
||||
#include <Cry_Camera.h>
|
||||
@@ -34,6 +32,7 @@
|
||||
#include <MathConversion.h>
|
||||
#include <Atom/RPI.Public/ViewportContext.h>
|
||||
#include <Atom/RPI.Public/SceneBus.h>
|
||||
#include <AzFramework/Components/CameraBus.h>
|
||||
#endif
|
||||
|
||||
#include <AzFramework/Windowing/WindowBus.h>
|
||||
@@ -65,130 +64,120 @@ namespace AzToolsFramework
|
||||
// EditorViewportWidget window
|
||||
AZ_PUSH_DISABLE_DLL_EXPORT_BASECLASS_WARNING
|
||||
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
class SANDBOX_API EditorViewportWidget
|
||||
class SANDBOX_API EditorViewportWidget final
|
||||
: public QtViewport
|
||||
, public IEditorNotifyListener
|
||||
, public IUndoManagerListener
|
||||
, public Camera::EditorCameraRequestBus::Handler
|
||||
, public AzFramework::InputSystemCursorConstraintRequestBus::Handler
|
||||
, public AzToolsFramework::ViewportInteraction::ViewportFreezeRequestBus::Handler
|
||||
, public AzToolsFramework::ViewportInteraction::MainEditorViewportInteractionRequestBus::Handler
|
||||
, public AzFramework::AssetCatalogEventBus::Handler
|
||||
, public AZ::RPI::SceneNotificationBus::Handler
|
||||
, private IEditorNotifyListener
|
||||
, private IUndoManagerListener
|
||||
, private Camera::EditorCameraRequestBus::Handler
|
||||
, private Camera::CameraNotificationBus::Handler
|
||||
, private AzFramework::InputSystemCursorConstraintRequestBus::Handler
|
||||
, private AzToolsFramework::ViewportInteraction::ViewportFreezeRequestBus::Handler
|
||||
, private AzToolsFramework::ViewportInteraction::MainEditorViewportInteractionRequestBus::Handler
|
||||
, private AzFramework::AssetCatalogEventBus::Handler
|
||||
, private AZ::RPI::SceneNotificationBus::Handler
|
||||
{
|
||||
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING
|
||||
Q_OBJECT
|
||||
public:
|
||||
struct SResolution
|
||||
{
|
||||
SResolution()
|
||||
: width(0)
|
||||
, height(0)
|
||||
{
|
||||
}
|
||||
|
||||
SResolution(int w, int h)
|
||||
: width(w)
|
||||
, height(h)
|
||||
{
|
||||
}
|
||||
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
|
||||
public:
|
||||
EditorViewportWidget(const QString& name, QWidget* parent = nullptr);
|
||||
~EditorViewportWidget() override;
|
||||
|
||||
static const GUID& GetClassID()
|
||||
{
|
||||
return QtViewport::GetClassID<EditorViewportWidget>();
|
||||
}
|
||||
|
||||
/** Get type of this viewport.
|
||||
*/
|
||||
virtual EViewportType GetType() const { return ET_ViewportCamera; }
|
||||
virtual void SetType([[maybe_unused]] EViewportType type) { assert(type == ET_ViewportCamera); };
|
||||
static EditorViewportWidget* GetPrimaryViewport();
|
||||
|
||||
virtual ~EditorViewportWidget();
|
||||
// Used by ViewPan in some circumstances
|
||||
void ConnectViewportInteractionRequestBus();
|
||||
void DisconnectViewportInteractionRequestBus();
|
||||
|
||||
Q_INVOKABLE void InjectFakeMouseMove(int deltaX, int deltaY, Qt::MouseButtons buttons);
|
||||
// QtViewport/IDisplayViewport/CViewport
|
||||
// These methods are made public in the derived class because they are called with an object whose static type is known to be this class type.
|
||||
void SetFOV(float fov) override;
|
||||
float GetFOV() const override;
|
||||
|
||||
// Replacement for still used CRenderer methods
|
||||
void UnProjectFromScreen(float sx, float sy, float sz, float* px, float* py, float* pz) const;
|
||||
void ProjectToScreen(float ptx, float pty, float ptz, float* sx, float* sy, float* sz) const;
|
||||
private:
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Private types ...
|
||||
|
||||
public:
|
||||
virtual void Update();
|
||||
|
||||
virtual void ResetContent();
|
||||
virtual void UpdateContent(int flags);
|
||||
|
||||
void OnTitleMenu(QMenu* menu) override;
|
||||
|
||||
void SetCamera(const CCamera& camera);
|
||||
const CCamera& GetCamera() const { return m_Camera; };
|
||||
virtual void SetViewTM(const Matrix34& tm)
|
||||
enum class ViewSourceType
|
||||
{
|
||||
if (m_viewSourceType == ViewSourceType::None)
|
||||
{
|
||||
m_defaultViewTM = tm;
|
||||
}
|
||||
SetViewTM(tm, false);
|
||||
}
|
||||
None,
|
||||
CameraComponent,
|
||||
ViewSourceTypesCount,
|
||||
};
|
||||
enum class PlayInEditorState
|
||||
{
|
||||
Editor, Starting, Started
|
||||
};
|
||||
enum class KeyPressedState
|
||||
{
|
||||
AllUp,
|
||||
PressedThisFrame,
|
||||
PressedInPreviousFrame,
|
||||
};
|
||||
|
||||
//! Map world space position to viewport position.
|
||||
virtual QPoint WorldToView(const Vec3& wp) const;
|
||||
virtual QPoint WorldToViewParticleEditor(const Vec3& wp, int width, int height) const;
|
||||
virtual Vec3 WorldToView3D(const Vec3& wp, int nFlags = 0) const;
|
||||
|
||||
//! Map viewport position to world space position.
|
||||
virtual Vec3 ViewToWorld(const QPoint& vp, bool* collideWithTerrain = nullptr, bool onlyTerrain = false, bool bSkipVegetation = false, bool bTestRenderMesh = false, bool* collideWithObject = nullptr) const override;
|
||||
virtual void ViewToWorldRay(const QPoint& vp, Vec3& raySrc, Vec3& rayDir) const override;
|
||||
virtual Vec3 ViewToWorldNormal(const QPoint& vp, bool onlyTerrain, bool bTestRenderMesh = false) override;
|
||||
virtual float GetScreenScaleFactor(const Vec3& worldPoint) const;
|
||||
virtual float GetScreenScaleFactor(const CCamera& camera, const Vec3& object_position);
|
||||
virtual float GetAspectRatio() const;
|
||||
virtual bool HitTest(const QPoint& point, HitContext& hitInfo);
|
||||
virtual bool IsBoundsVisible(const AABB& box) const;
|
||||
virtual void CenterOnSelection();
|
||||
virtual void CenterOnAABB(const AABB& aabb);
|
||||
void CenterOnSliceInstance() override;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Method overrides ...
|
||||
|
||||
// QWidget
|
||||
void focusOutEvent(QFocusEvent* event) override;
|
||||
void keyPressEvent(QKeyEvent* event) override;
|
||||
bool event(QEvent* event) override;
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
void mousePressEvent(QMouseEvent* event) override;
|
||||
|
||||
void SetFOV(float fov);
|
||||
float GetFOV() const;
|
||||
// QtViewport/IDisplayViewport/CViewport
|
||||
EViewportType GetType() const override { return ET_ViewportCamera; }
|
||||
void SetType([[maybe_unused]] EViewportType type) override { assert(type == ET_ViewportCamera); };
|
||||
AzToolsFramework::ViewportInteraction::MouseInteraction BuildMouseInteraction(
|
||||
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPoint& point) override;
|
||||
void SetViewportId(int id) override;
|
||||
QPoint WorldToView(const Vec3& wp) const override;
|
||||
QPoint WorldToViewParticleEditor(const Vec3& wp, int width, int height) const override;
|
||||
Vec3 WorldToView3D(const Vec3& wp, int nFlags = 0) const override;
|
||||
Vec3 ViewToWorld(const QPoint& vp, bool* collideWithTerrain = nullptr, bool onlyTerrain = false, bool bSkipVegetation = false, bool bTestRenderMesh = false, bool* collideWithObject = nullptr) const override;
|
||||
void ViewToWorldRay(const QPoint& vp, Vec3& raySrc, Vec3& rayDir) const override;
|
||||
Vec3 ViewToWorldNormal(const QPoint& vp, bool onlyTerrain, bool bTestRenderMesh = false) override;
|
||||
float GetScreenScaleFactor(const Vec3& worldPoint) const override;
|
||||
float GetScreenScaleFactor(const CCamera& camera, const Vec3& object_position) override;
|
||||
float GetAspectRatio() const override;
|
||||
bool HitTest(const QPoint& point, HitContext& hitInfo) override;
|
||||
bool IsBoundsVisible(const AABB& box) const override;
|
||||
void CenterOnSelection() override;
|
||||
void CenterOnAABB(const AABB& aabb) override;
|
||||
void CenterOnSliceInstance() override;
|
||||
void OnTitleMenu(QMenu* menu) override;
|
||||
void SetViewTM(const Matrix34& tm) override;
|
||||
const Matrix34& GetViewTM() const override;
|
||||
void Update() override;
|
||||
void UpdateContent(int flags) override;
|
||||
|
||||
void SetDefaultCamera();
|
||||
bool IsDefaultCamera() const;
|
||||
void SetSequenceCamera();
|
||||
bool IsSequenceCamera() const { return m_viewSourceType == ViewSourceType::SequenceCamera; }
|
||||
void SetSelectedCamera();
|
||||
bool IsSelectedCamera() const;
|
||||
void SetComponentCamera(const AZ::EntityId& entityId);
|
||||
void SetEntityAsCamera(const AZ::EntityId& entityId, bool lockCameraMovement = false);
|
||||
void SetFirstComponentCamera();
|
||||
void SetViewEntity(const AZ::EntityId& cameraEntityId, bool lockCameraMovement = false);
|
||||
void PostCameraSet();
|
||||
// This switches the active camera to the next one in the list of (default, all custom cams).
|
||||
void CycleCamera();
|
||||
// SceneNotificationBus
|
||||
void OnBeginPrepareRender() override;
|
||||
|
||||
// Camera::EditorCameraRequestBus
|
||||
void SetViewFromEntityPerspective(const AZ::EntityId& entityId) override;
|
||||
void SetViewAndMovementLockFromEntityPerspective(const AZ::EntityId& entityId, bool lockCameraMovement) override;
|
||||
AZ::EntityId GetCurrentViewEntityId() override { return m_viewEntityId; }
|
||||
bool GetActiveCameraPosition(AZ::Vector3& cameraPos) override;
|
||||
bool GetActiveCameraState(AzFramework::CameraState& cameraState) override;
|
||||
// Camera::CameraNotificationBus
|
||||
void OnActiveViewChanged(const AZ::EntityId&) override;
|
||||
|
||||
// IEditorEventListener
|
||||
void OnEditorNotifyEvent(EEditorNotifyEvent event) override;
|
||||
|
||||
// AzToolsFramework::EditorEntityContextNotificationBus (handler moved to cpp to resolve link issues in unity builds)
|
||||
virtual void OnStartPlayInEditor();
|
||||
virtual void OnStopPlayInEditor();
|
||||
void OnStartPlayInEditor();
|
||||
void OnStopPlayInEditor();
|
||||
void OnStartPlayInEditorBegin();
|
||||
|
||||
AzFramework::CameraState GetCameraState();
|
||||
AzFramework::ScreenPoint ViewportWorldToScreen(const AZ::Vector3& worldPosition);
|
||||
// IUndoManagerListener
|
||||
void BeginUndoTransaction() override;
|
||||
void EndUndoTransaction() override;
|
||||
|
||||
// AzFramework::InputSystemCursorConstraintRequestBus
|
||||
void* GetSystemCursorConstraintWindow() const override;
|
||||
|
||||
// AzToolsFramework::ViewportFreezeRequestBus
|
||||
bool IsViewportInputFrozen() override;
|
||||
@@ -204,142 +193,19 @@ public:
|
||||
void BeginWidgetContext() override;
|
||||
void EndWidgetContext() override;
|
||||
|
||||
// CViewport...
|
||||
void SetViewportId(int id) override;
|
||||
|
||||
void ConnectViewportInteractionRequestBus();
|
||||
void DisconnectViewportInteractionRequestBus();
|
||||
|
||||
void LockCameraMovement(bool bLock) { m_bLockCameraMovement = bLock; }
|
||||
bool IsCameraMovementLocked() const { return m_bLockCameraMovement; }
|
||||
|
||||
void EnableCameraObjectMove(bool bMove) { m_bMoveCameraObject = bMove; }
|
||||
bool IsCameraObjectMove() const { return m_bMoveCameraObject; }
|
||||
|
||||
void SetPlayerControl(uint32 i) { m_PlayerControl = i; };
|
||||
uint32 GetPlayerControl() { return m_PlayerControl; };
|
||||
|
||||
const DisplayContext& GetDisplayContext() const { return m_displayContext; }
|
||||
CBaseObject* GetCameraObject() const;
|
||||
|
||||
QPoint WidgetToViewport(const QPoint& point) const;
|
||||
QPoint ViewportToWidget(const QPoint& point) const;
|
||||
QSize WidgetToViewport(const QSize& size) const;
|
||||
|
||||
AzToolsFramework::ViewportInteraction::MouseInteraction BuildMouseInteraction(
|
||||
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPoint& point) override;
|
||||
|
||||
void SetPlayerPos()
|
||||
{
|
||||
Matrix34 m = GetViewTM();
|
||||
m.SetTranslation(m.GetTranslation() - m_PhysicalLocation.t);
|
||||
SetViewTM(m);
|
||||
|
||||
m_AverageFrameTime = 0.14f;
|
||||
|
||||
m_PhysicalLocation.SetIdentity();
|
||||
|
||||
m_LocalEntityMat.SetIdentity();
|
||||
m_PrevLocalEntityMat.SetIdentity();
|
||||
|
||||
m_absCameraHigh = 2.0f;
|
||||
m_absCameraPos = Vec3(0, 3, 2);
|
||||
m_absCameraPosVP = Vec3(0, -3, 1.5);
|
||||
|
||||
m_absCurrentSlope = 0.0f;
|
||||
|
||||
m_absLookDirectionXY = Vec2(0, 1);
|
||||
|
||||
m_LookAt = Vec3(ZERO);
|
||||
m_LookAtRate = Vec3(ZERO);
|
||||
m_vCamPos = Vec3(ZERO);
|
||||
m_vCamPosRate = Vec3(ZERO);
|
||||
|
||||
m_relCameraRotX = 0;
|
||||
m_relCameraRotZ = 0;
|
||||
|
||||
uint32 numSample6 = static_cast<uint32>(m_arrAnimatedCharacterPath.size());
|
||||
for (uint32 i = 0; i < numSample6; i++)
|
||||
{
|
||||
m_arrAnimatedCharacterPath[i] = Vec3(ZERO);
|
||||
}
|
||||
|
||||
numSample6 = static_cast<uint32>(m_arrSmoothEntityPath.size());
|
||||
for (uint32 i = 0; i < numSample6; i++)
|
||||
{
|
||||
m_arrSmoothEntityPath[i] = Vec3(ZERO);
|
||||
}
|
||||
|
||||
uint32 numSample7 = static_cast<uint32>(m_arrRunStrafeSmoothing.size());
|
||||
for (uint32 i = 0; i < numSample7; i++)
|
||||
{
|
||||
m_arrRunStrafeSmoothing[i] = 0;
|
||||
}
|
||||
|
||||
m_vWorldDesiredBodyDirection = Vec2(0, 1);
|
||||
m_vWorldDesiredBodyDirectionSmooth = Vec2(0, 1);
|
||||
m_vWorldDesiredBodyDirectionSmoothRate = Vec2(0, 1);
|
||||
|
||||
m_vWorldDesiredBodyDirection2 = Vec2(0, 1);
|
||||
|
||||
m_vWorldDesiredMoveDirection = Vec2(0, 1);
|
||||
m_vWorldDesiredMoveDirectionSmooth = Vec2(0, 1);
|
||||
m_vWorldDesiredMoveDirectionSmoothRate = Vec2(0, 1);
|
||||
m_vLocalDesiredMoveDirection = Vec2(0, 1);
|
||||
m_vLocalDesiredMoveDirectionSmooth = Vec2(0, 1);
|
||||
m_vLocalDesiredMoveDirectionSmoothRate = Vec2(0, 1);
|
||||
|
||||
m_vWorldAimBodyDirection = Vec2(0, 1);
|
||||
|
||||
m_MoveSpeedMSec = 5.0f;
|
||||
m_key_W = 0;
|
||||
m_keyrcr_W = 0;
|
||||
m_key_S = 0;
|
||||
m_keyrcr_S = 0;
|
||||
m_key_A = 0;
|
||||
m_keyrcr_A = 0;
|
||||
m_key_D = 0;
|
||||
m_keyrcr_D = 0;
|
||||
m_key_SPACE = 0;
|
||||
m_keyrcr_SPACE = 0;
|
||||
m_ControllMode = 0;
|
||||
|
||||
m_State = -1;
|
||||
m_Stance = 1; //combat
|
||||
|
||||
m_udGround = 0.0f;
|
||||
m_lrGround = 0.0f;
|
||||
AABB aabb = AABB(Vec3(-40.0f, -40.0f, -0.25f), Vec3(+40.0f, +40.0f, +0.0f));
|
||||
m_GroundOBB = OBB::CreateOBBfromAABB(Matrix33(IDENTITY), aabb);
|
||||
m_GroundOBBPos = Vec3(0, 0, -0.01f);
|
||||
};
|
||||
|
||||
static EditorViewportWidget* GetPrimaryViewport();
|
||||
|
||||
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
CCamera m_Camera;
|
||||
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
|
||||
protected:
|
||||
struct SScopedCurrentContext;
|
||||
// Camera::EditorCameraRequestBus
|
||||
void SetViewFromEntityPerspective(const AZ::EntityId& entityId) override;
|
||||
void SetViewAndMovementLockFromEntityPerspective(const AZ::EntityId& entityId, bool lockCameraMovement) override;
|
||||
AZ::EntityId GetCurrentViewEntityId() override;
|
||||
bool GetActiveCameraPosition(AZ::Vector3& cameraPos) override;
|
||||
bool GetActiveCameraState(AzFramework::CameraState& cameraState) override;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Private helpers...
|
||||
void SetViewTM(const Matrix34& tm, bool bMoveOnly);
|
||||
|
||||
// Called to render stuff.
|
||||
virtual void OnRender();
|
||||
|
||||
virtual void OnEditorNotifyEvent(EEditorNotifyEvent event);
|
||||
|
||||
//! Get currently active camera object.
|
||||
void ToggleCameraObject();
|
||||
|
||||
void RenderConstructionPlane();
|
||||
void RenderSnapMarker();
|
||||
|
||||
void RenderAll();
|
||||
|
||||
void OnBeginPrepareRender() override;
|
||||
|
||||
// Update the safe frame, safe action, safe title, and borders rectangles based on
|
||||
// viewport size and target aspect ratio.
|
||||
void UpdateSafeFrame();
|
||||
@@ -353,193 +219,41 @@ protected:
|
||||
// Draw a selected region if it has been selected
|
||||
void RenderSelectedRegion();
|
||||
|
||||
virtual bool CreateRenderContext();
|
||||
virtual void DestroyRenderContext();
|
||||
|
||||
void OnMenuCommandChangeAspectRatio(unsigned int commandId);
|
||||
|
||||
bool AdjustObjectPosition(const ray_hit& hit, Vec3& outNormal, Vec3& outPos) const;
|
||||
bool RayRenderMeshIntersection(IRenderMesh* pRenderMesh, const Vec3& vInPos, const Vec3& vInDir, Vec3& vOutPos, Vec3& vOutNormal) const;
|
||||
|
||||
bool AddCameraMenuItems(QMenu* menu);
|
||||
void ResizeView(int width, int height);
|
||||
|
||||
void OnCameraFOVVariableChanged(IVariable* var);
|
||||
|
||||
void HideCursor();
|
||||
void ShowCursor();
|
||||
|
||||
bool IsKeyDown(Qt::Key key) const;
|
||||
|
||||
enum class ViewSourceType
|
||||
{
|
||||
None,
|
||||
SequenceCamera,
|
||||
LegacyCamera,
|
||||
CameraComponent,
|
||||
AZ_Entity,
|
||||
ViewSourceTypesCount,
|
||||
};
|
||||
void ResetToViewSourceType(const ViewSourceType& viewSourType);
|
||||
double WidgetToViewportFactor() const;
|
||||
|
||||
bool ShouldPreviewFullscreen() const;
|
||||
void StartFullscreenPreview();
|
||||
void StopFullscreenPreview();
|
||||
|
||||
bool m_inFullscreenPreview = false;
|
||||
bool m_bRenderContextCreated = false;
|
||||
bool m_bInRotateMode = false;
|
||||
bool m_bInMoveMode = false;
|
||||
bool m_bInOrbitMode = false;
|
||||
bool m_bInZoomMode = false;
|
||||
|
||||
QPoint m_mousePos = QPoint(0, 0);
|
||||
QPoint m_prevMousePos = QPoint(0, 0); // for tablets, you can't use SetCursorPos and need to remember the prior point and delta with that.
|
||||
|
||||
|
||||
float m_moveSpeed = 1;
|
||||
|
||||
float m_orbitDistance = 10.0f;
|
||||
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
Vec3 m_orbitTarget;
|
||||
|
||||
//-------------------------------------------
|
||||
//--- player-control in CharEdit ---
|
||||
//-------------------------------------------
|
||||
f32 m_MoveSpeedMSec;
|
||||
|
||||
uint32 m_key_W, m_keyrcr_W;
|
||||
uint32 m_key_S, m_keyrcr_S;
|
||||
uint32 m_key_A, m_keyrcr_A;
|
||||
uint32 m_key_D, m_keyrcr_D;
|
||||
|
||||
uint32 m_key_SPACE, m_keyrcr_SPACE;
|
||||
uint32 m_ControllMode;
|
||||
|
||||
int32 m_Stance;
|
||||
int32 m_State;
|
||||
f32 m_AverageFrameTime;
|
||||
|
||||
uint32 m_PlayerControl = 0;
|
||||
|
||||
f32 m_absCameraHigh;
|
||||
Vec3 m_absCameraPos;
|
||||
Vec3 m_absCameraPosVP;
|
||||
|
||||
f32 m_absCurrentSlope; //in radiants
|
||||
|
||||
Vec2 m_absLookDirectionXY;
|
||||
|
||||
Vec3 m_LookAt;
|
||||
Vec3 m_LookAtRate;
|
||||
Vec3 m_vCamPos;
|
||||
Vec3 m_vCamPosRate;
|
||||
float m_camFOV;
|
||||
|
||||
f32 m_relCameraRotX;
|
||||
f32 m_relCameraRotZ;
|
||||
|
||||
QuatTS m_PhysicalLocation;
|
||||
|
||||
Matrix34 m_AnimatedCharacterMat;
|
||||
|
||||
Matrix34 m_LocalEntityMat; //this is used for data-driven animations where the character is running on the spot
|
||||
Matrix34 m_PrevLocalEntityMat;
|
||||
|
||||
std::vector<Vec3> m_arrVerticesHF;
|
||||
std::vector<vtx_idx> m_arrIndicesHF;
|
||||
|
||||
std::vector<Vec3> m_arrAnimatedCharacterPath;
|
||||
std::vector<Vec3> m_arrSmoothEntityPath;
|
||||
std::vector<f32> m_arrRunStrafeSmoothing;
|
||||
|
||||
Vec2 m_vWorldDesiredBodyDirection;
|
||||
Vec2 m_vWorldDesiredBodyDirectionSmooth;
|
||||
Vec2 m_vWorldDesiredBodyDirectionSmoothRate;
|
||||
|
||||
Vec2 m_vWorldDesiredBodyDirection2;
|
||||
|
||||
|
||||
Vec2 m_vWorldDesiredMoveDirection;
|
||||
Vec2 m_vWorldDesiredMoveDirectionSmooth;
|
||||
Vec2 m_vWorldDesiredMoveDirectionSmoothRate;
|
||||
Vec2 m_vLocalDesiredMoveDirection;
|
||||
Vec2 m_vLocalDesiredMoveDirectionSmooth;
|
||||
Vec2 m_vLocalDesiredMoveDirectionSmoothRate;
|
||||
Vec2 m_vWorldAimBodyDirection;
|
||||
|
||||
f32 m_udGround;
|
||||
f32 m_lrGround;
|
||||
OBB m_GroundOBB;
|
||||
Vec3 m_GroundOBBPos;
|
||||
|
||||
// Index of camera objects.
|
||||
mutable GUID m_cameraObjectId;
|
||||
mutable AZ::EntityId m_viewEntityId;
|
||||
mutable ViewSourceType m_viewSourceType = ViewSourceType::None;
|
||||
AZ::EntityId m_viewEntityIdCachedForEditMode;
|
||||
Matrix34 m_preGameModeViewTM;
|
||||
uint m_disableRenderingCount = 0;
|
||||
bool m_bLockCameraMovement;
|
||||
bool m_bUpdateViewport = false;
|
||||
bool m_bMoveCameraObject = true;
|
||||
|
||||
enum class KeyPressedState
|
||||
{
|
||||
AllUp,
|
||||
PressedThisFrame,
|
||||
PressedInPreviousFrame,
|
||||
};
|
||||
KeyPressedState m_pressedKeyState = KeyPressedState::AllUp;
|
||||
|
||||
Matrix34 m_defaultViewTM;
|
||||
const QString m_defaultViewName;
|
||||
|
||||
DisplayContext m_displayContext;
|
||||
|
||||
|
||||
bool m_isOnPaint = false;
|
||||
static EditorViewportWidget* m_pPrimaryViewport;
|
||||
|
||||
QRect m_safeFrame;
|
||||
QRect m_safeAction;
|
||||
QRect m_safeTitle;
|
||||
|
||||
CPredefinedAspectRatios m_predefinedAspectRatios;
|
||||
|
||||
bool m_bCursorHidden = false;
|
||||
|
||||
void OnMenuResolutionCustom();
|
||||
void OnMenuCreateCameraEntityFromCurrentView();
|
||||
void OnMenuSelectCurrentCamera();
|
||||
|
||||
int OnCreate();
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
void mousePressEvent(QMouseEvent* event) override;
|
||||
|
||||
// From a series of input primitives, compose a complete mouse interaction.
|
||||
AzToolsFramework::ViewportInteraction::MouseInteraction BuildMouseInteractionInternal(
|
||||
AzToolsFramework::ViewportInteraction::MouseButtons buttons,
|
||||
AzToolsFramework::ViewportInteraction::KeyboardModifiers modifiers,
|
||||
const AzToolsFramework::ViewportInteraction::MousePick& mousePick) const;
|
||||
|
||||
// Given a point in the viewport, return the pick ray into the scene.
|
||||
// note: The argument passed to parameter **point**, originating
|
||||
// from a Qt event, must first be passed to WidgetToViewport before being
|
||||
// passed to BuildMousePick.
|
||||
AzToolsFramework::ViewportInteraction::MousePick BuildMousePick(const QPoint& point);
|
||||
|
||||
bool event(QEvent* event) override;
|
||||
void OnDestroy();
|
||||
|
||||
bool CheckRespondToInput() const;
|
||||
|
||||
// AzFramework::InputSystemCursorConstraintRequestBus
|
||||
void* GetSystemCursorConstraintWindow() const override;
|
||||
|
||||
void BuildDragDropContext(AzQtComponents::ViewportDragContext& context, const QPoint& pt) override;
|
||||
|
||||
private:
|
||||
void SetAsActiveViewport();
|
||||
void PushDisableRendering();
|
||||
void PopDisableRendering();
|
||||
@@ -547,48 +261,131 @@ private:
|
||||
AzToolsFramework::ViewportInteraction::MousePick BuildMousePickInternal(const QPoint& point) const;
|
||||
|
||||
void RestoreViewportAfterGameMode();
|
||||
void UpdateCameraFromViewportContext();
|
||||
|
||||
double WidgetToViewportFactor() const
|
||||
{
|
||||
#if defined(AZ_PLATFORM_WINDOWS)
|
||||
// Needed for high DPI mode on windows
|
||||
return devicePixelRatioF();
|
||||
#else
|
||||
return 1.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
void BeginUndoTransaction() override;
|
||||
void EndUndoTransaction() override;
|
||||
|
||||
void UpdateCurrentMousePos(const QPoint& newPosition);
|
||||
void UpdateScene();
|
||||
|
||||
void SetDefaultCamera();
|
||||
void SetSelectedCamera();
|
||||
bool IsSelectedCamera() const;
|
||||
void SetComponentCamera(const AZ::EntityId& entityId);
|
||||
void SetEntityAsCamera(const AZ::EntityId& entityId, bool lockCameraMovement = false);
|
||||
void SetFirstComponentCamera();
|
||||
void PostCameraSet();
|
||||
// This switches the active camera to the next one in the list of (default, all custom cams).
|
||||
void CycleCamera();
|
||||
|
||||
AzFramework::CameraState GetCameraState();
|
||||
AzFramework::ScreenPoint ViewportWorldToScreen(const AZ::Vector3& worldPosition);
|
||||
|
||||
QPoint WidgetToViewport(const QPoint& point) const;
|
||||
QPoint ViewportToWidget(const QPoint& point) const;
|
||||
QSize WidgetToViewport(const QSize& size) const;
|
||||
|
||||
const DisplayContext& GetDisplayContext() const { return m_displayContext; }
|
||||
CBaseObject* GetCameraObject() const;
|
||||
|
||||
void UnProjectFromScreen(float sx, float sy, float sz, float* px, float* py, float* pz) const;
|
||||
void ProjectToScreen(float ptx, float pty, float ptz, float* sx, float* sy, float* sz) const;
|
||||
|
||||
AZ::RPI::ViewPtr GetCurrentAtomView() const;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Members ...
|
||||
friend class AZ::ViewportHelpers::EditorEntityNotifications;
|
||||
|
||||
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
|
||||
// Singleton for the primary viewport
|
||||
static EditorViewportWidget* m_pPrimaryViewport;
|
||||
|
||||
// The simulation (play-game in editor) state
|
||||
PlayInEditorState m_playInEditorState = PlayInEditorState::Editor;
|
||||
|
||||
// Whether we are doing a full screen game preview (play-game in editor) or a regular one
|
||||
bool m_inFullscreenPreview = false;
|
||||
|
||||
// The entity ID of the current camera for this viewport, or invalid if the default editor camera
|
||||
AZ::EntityId m_viewEntityId;
|
||||
|
||||
// Determines also if the current camera for this viewport is default editor camera
|
||||
ViewSourceType m_viewSourceType = ViewSourceType::None;
|
||||
|
||||
// During play game in editor, holds the editor entity ID of the last
|
||||
AZ::EntityId m_viewEntityIdCachedForEditMode;
|
||||
|
||||
// The editor camera TM before switching to game mode
|
||||
Matrix34 m_preGameModeViewTM;
|
||||
|
||||
// Disables rendering during some periods of time, e.g. undo/redo, resize events
|
||||
uint m_disableRenderingCount = 0;
|
||||
|
||||
// Determines if the viewport needs updating (false when out of focus for example)
|
||||
bool m_bUpdateViewport = false;
|
||||
|
||||
// Avoid re-entering PostCameraSet->OnActiveViewChanged->PostCameraSet
|
||||
bool m_sendingOnActiveChanged = false;
|
||||
|
||||
// Legacy...
|
||||
KeyPressedState m_pressedKeyState = KeyPressedState::AllUp;
|
||||
|
||||
// The last camera matrix of the default editor camera, used when switching back to editor camera to restore the right TM
|
||||
Matrix34 m_defaultViewTM;
|
||||
|
||||
// The name to use for the default editor camera
|
||||
const QString m_defaultViewName;
|
||||
|
||||
// Note that any attempts to draw anything with this object will crash. Exists here for legacy "reasons"
|
||||
DisplayContext m_displayContext;
|
||||
|
||||
// Re-entrency guard for on paint events
|
||||
bool m_isOnPaint = false;
|
||||
|
||||
// Shapes of various safe frame helpers which can be displayed in the editor
|
||||
QRect m_safeFrame;
|
||||
QRect m_safeAction;
|
||||
QRect m_safeTitle;
|
||||
|
||||
// Aspect ratios available in the title bar
|
||||
CPredefinedAspectRatios m_predefinedAspectRatios;
|
||||
|
||||
// Is the cursor hidden or displayed?
|
||||
bool m_bCursorHidden = false;
|
||||
|
||||
// Shim for QtViewport, which used to be responsible for visibility queries in the editor,
|
||||
// these are now forwarded to EntityVisibilityQuery
|
||||
AzFramework::EntityVisibilityQuery m_entityVisibilityQuery;
|
||||
|
||||
// Handlers for grid snapping/editor event callbacks
|
||||
SandboxEditor::GridSnappingChangedEvent::Handler m_gridSnappingHandler;
|
||||
AZStd::unique_ptr<SandboxEditor::EditorViewportSettingsCallbacks> m_editorViewportSettingsCallbacks;
|
||||
|
||||
// Used for some legacy logic which lets the widget release a grabbed keyboard at the right times
|
||||
// Unclear if it's still necessary.
|
||||
QSet<int> m_keyDown;
|
||||
|
||||
// State for ViewportFreezeRequestBus, currently does nothing
|
||||
bool m_freezeViewportInput = false;
|
||||
|
||||
// This widget holds a reference to the manipulator manage because its responsible for drawing manipulators
|
||||
AZStd::shared_ptr<AzToolsFramework::ManipulatorManager> m_manipulatorManager;
|
||||
|
||||
// Used to prevent circular set camera events
|
||||
bool m_ignoreSetViewFromEntityPerspective = false;
|
||||
bool m_windowResizedEvent = false;
|
||||
|
||||
// Helper for getting EditorEntityNotificationBus events
|
||||
AZStd::unique_ptr<AZ::ViewportHelpers::EditorEntityNotifications> m_editorEntityNotifications;
|
||||
|
||||
// The widget to which Atom will actually render
|
||||
AtomToolsFramework::RenderViewportWidget* m_renderViewport = nullptr;
|
||||
|
||||
bool m_updateCameraPositionNextTick = false;
|
||||
AZ::RPI::ViewportContext::MatrixChangedEvent::Handler m_cameraViewMatrixChangeHandler;
|
||||
AZ::RPI::ViewportContext::MatrixChangedEvent::Handler m_cameraProjectionMatrixChangeHandler;
|
||||
// Atom debug display
|
||||
AzFramework::DebugDisplayRequests* m_debugDisplay = nullptr;
|
||||
|
||||
// The default view created for the viewport context, which is used as the "Editor Camera"
|
||||
AZ::RPI::ViewPtr m_defaultView;
|
||||
|
||||
// The name to set on the viewport context when this viewport widget is set as the active one
|
||||
AZ::Name m_defaultViewportContextName;
|
||||
|
||||
// DO NOT USE THIS! It exists only to satisfy the signature of the base class method GetViewTm
|
||||
mutable Matrix34 m_viewTmStorage;
|
||||
|
||||
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
};
|
||||
|
||||
@@ -136,11 +136,11 @@ void CErrorReport::ReportError(CErrorRecord& err)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (err.pObject == NULL && m_pObject != NULL)
|
||||
if (err.pObject == nullptr && m_pObject != nullptr)
|
||||
{
|
||||
err.pObject = m_pObject;
|
||||
}
|
||||
else if (err.pItem == NULL && m_pItem != NULL)
|
||||
else if (err.pItem == nullptr && m_pItem != nullptr)
|
||||
{
|
||||
err.pItem = m_pItem;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CErrorReportDialog* CErrorReportDialog::m_instance = 0;
|
||||
CErrorReportDialog* CErrorReportDialog::m_instance = nullptr;
|
||||
|
||||
// CErrorReportDialog dialog
|
||||
|
||||
@@ -88,12 +88,12 @@ CErrorReportDialog::CErrorReportDialog(QWidget* parent)
|
||||
m_instance = this;
|
||||
//CErrorReport *report,
|
||||
//m_pErrorReport = report;
|
||||
m_pErrorReport = 0;
|
||||
m_pErrorReport = nullptr;
|
||||
}
|
||||
|
||||
CErrorReportDialog::~CErrorReportDialog()
|
||||
{
|
||||
m_instance = 0;
|
||||
m_instance = nullptr;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -141,7 +141,7 @@ void CErrorReportDialog::Clear()
|
||||
{
|
||||
if (m_instance)
|
||||
{
|
||||
m_instance->SetReport(0);
|
||||
m_instance->SetReport(nullptr);
|
||||
m_instance->UpdateErrors();
|
||||
}
|
||||
}
|
||||
@@ -500,7 +500,7 @@ void CErrorReportDialog::OnReportItemDblClick(const QModelIndex& index)
|
||||
{
|
||||
bool bDone = false;
|
||||
const CErrorRecord* pError = index.data(Qt::UserRole).value<const CErrorRecord*>();
|
||||
if (pError && pError->pObject != NULL)
|
||||
if (pError && pError->pObject != nullptr)
|
||||
{
|
||||
CUndo undo("Select Object(s)");
|
||||
// Clear other selection.
|
||||
@@ -563,7 +563,7 @@ void CErrorReportDialog::OnReportHyperlink(const QModelIndex& index)
|
||||
{
|
||||
const CErrorRecord* pError = index.data(Qt::UserRole).value<const CErrorRecord*>();
|
||||
bool bDone = false;
|
||||
if (pError && pError->pObject != NULL)
|
||||
if (pError && pError->pObject != nullptr)
|
||||
{
|
||||
CUndo undo("Select Object(s)");
|
||||
// Clear other selection.
|
||||
@@ -593,8 +593,8 @@ void CErrorReportDialog::OnShowFieldChooser()
|
||||
CMainFrm* pMainFrm = (CMainFrame*)AfxGetMainWnd();
|
||||
if (pMainFrm)
|
||||
{
|
||||
BOOL bShow = !pMainFrm->m_wndFieldChooser.IsVisible();
|
||||
pMainFrm->ShowControlBar(&pMainFrm->m_wndFieldChooser, bShow, FALSE);
|
||||
bool bShow = !pMainFrm->m_wndFieldChooser.IsVisible();
|
||||
pMainFrm->ShowControlBar(&pMainFrm->m_wndFieldChooser, bShow, false);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -105,7 +105,7 @@ void CErrorReportTableModel::setErrorReport(CErrorReport* report)
|
||||
{
|
||||
m_errorRecords.clear();
|
||||
}
|
||||
if (report != 0)
|
||||
if (report != nullptr)
|
||||
{
|
||||
const int count = report->GetErrorCount();
|
||||
m_errorRecords.reserve(count);
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include "OBJExporter.h"
|
||||
#include "OCMExporter.h"
|
||||
#include "FBXExporterDialog.h"
|
||||
#include "RenderViewport.h"
|
||||
#include "TrackViewExportKeyTimeDlg.h"
|
||||
#include "AnimationContext.h"
|
||||
#include "TrackView/DirectorNodeAnimator.h"
|
||||
@@ -46,7 +45,7 @@ namespace
|
||||
SEfResTexture* pTex = pRes->GetTextureResource(nSlot);
|
||||
if (pTex)
|
||||
{
|
||||
cry_strcat(outName, Path::GamePathToFullPath(pTex->m_Name.c_str()).toUtf8().data());
|
||||
azstrcat(outName, AZ_ARRAY_SIZE(outName), Path::GamePathToFullPath(pTex->m_Name.c_str()).toUtf8().data());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +87,7 @@ Export::CObject::CObject(const char* pName)
|
||||
|
||||
nParent = -1;
|
||||
|
||||
cry_strcpy(name, pName);
|
||||
azstrcpy(name, AZ_ARRAY_SIZE(name), pName);
|
||||
|
||||
materialName[0] = '\0';
|
||||
|
||||
@@ -102,7 +101,7 @@ Export::CObject::CObject(const char* pName)
|
||||
|
||||
void Export::CObject::SetMaterialName(const char* pName)
|
||||
{
|
||||
cry_strcpy(materialName, pName);
|
||||
azstrcpy(materialName, AZ_ARRAY_SIZE(materialName), pName);
|
||||
}
|
||||
|
||||
|
||||
@@ -662,12 +661,6 @@ bool CExportManager::ProcessObjectsForExport()
|
||||
GetIEditor()->GetAnimation()->SetRecording(false);
|
||||
GetIEditor()->GetAnimation()->SetPlaying(false);
|
||||
|
||||
CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
|
||||
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
|
||||
{
|
||||
rvp->SetSequenceCamera();
|
||||
}
|
||||
|
||||
int startFrame = 0;
|
||||
timeValue = startFrame * fpsTimeInterval;
|
||||
|
||||
|
||||
+16
-25
@@ -57,12 +57,12 @@ struct SSystemUserCallback
|
||||
: public ISystemUserCallback
|
||||
{
|
||||
SSystemUserCallback(IInitializeUIInfo* logo) : m_threadErrorHandler(this) { m_pLogo = logo; };
|
||||
virtual void OnSystemConnect(ISystem* pSystem)
|
||||
void OnSystemConnect(ISystem* pSystem) override
|
||||
{
|
||||
ModuleInitISystem(pSystem, "Editor");
|
||||
}
|
||||
|
||||
virtual bool OnError(const char* szErrorString)
|
||||
bool OnError(const char* szErrorString) override
|
||||
{
|
||||
// since we show a message box, we have to use the GUI thread
|
||||
if (QThread::currentThread() != qApp->thread())
|
||||
@@ -95,7 +95,7 @@ struct SSystemUserCallback
|
||||
|
||||
int res = IDNO;
|
||||
|
||||
ICVar* pCVar = gEnv->pConsole ? gEnv->pConsole->GetCVar("sys_no_crash_dialog") : NULL;
|
||||
ICVar* pCVar = gEnv->pConsole ? gEnv->pConsole->GetCVar("sys_no_crash_dialog") : nullptr;
|
||||
|
||||
if (!pCVar || pCVar->GetIVal() == 0)
|
||||
{
|
||||
@@ -116,7 +116,7 @@ struct SSystemUserCallback
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool OnSaveDocument()
|
||||
bool OnSaveDocument() override
|
||||
{
|
||||
bool success = false;
|
||||
|
||||
@@ -133,7 +133,7 @@ struct SSystemUserCallback
|
||||
return success;
|
||||
}
|
||||
|
||||
virtual bool OnBackupDocument()
|
||||
bool OnBackupDocument() override
|
||||
{
|
||||
CCryEditDoc* level = GetIEditor() ? GetIEditor()->GetDocument() : nullptr;
|
||||
if (level)
|
||||
@@ -144,7 +144,7 @@ struct SSystemUserCallback
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual void OnProcessSwitch()
|
||||
void OnProcessSwitch() override
|
||||
{
|
||||
if (GetIEditor()->IsInGameMode())
|
||||
{
|
||||
@@ -152,7 +152,7 @@ struct SSystemUserCallback
|
||||
}
|
||||
}
|
||||
|
||||
virtual void OnInitProgress(const char* sProgressMsg)
|
||||
void OnInitProgress(const char* sProgressMsg) override
|
||||
{
|
||||
if (m_pLogo)
|
||||
{
|
||||
@@ -160,7 +160,7 @@ struct SSystemUserCallback
|
||||
}
|
||||
}
|
||||
|
||||
virtual int ShowMessage(const char* text, const char* caption, unsigned int uType)
|
||||
int ShowMessage(const char* text, const char* caption, unsigned int uType) override
|
||||
{
|
||||
if (CCryEditApp::instance()->IsInAutotestMode())
|
||||
{
|
||||
@@ -176,7 +176,7 @@ struct SSystemUserCallback
|
||||
return CryMessageBox(text, caption, uType);
|
||||
}
|
||||
|
||||
virtual void GetMemoryUsage(ICrySizer* pSizer)
|
||||
void GetMemoryUsage(ICrySizer* pSizer) override
|
||||
{
|
||||
GetIEditor()->GetMemoryUsage(pSizer);
|
||||
}
|
||||
@@ -215,7 +215,7 @@ public:
|
||||
{
|
||||
AzFramework::AssetSystemConnectionNotificationsBus::Handler::BusConnect();
|
||||
};
|
||||
~AssetProcessConnectionStatus()
|
||||
~AssetProcessConnectionStatus() override
|
||||
{
|
||||
AzFramework::AssetSystemConnectionNotificationsBus::Handler::BusDisconnect();
|
||||
}
|
||||
@@ -247,18 +247,18 @@ private:
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4273, "-Wunknown-warning-option")
|
||||
CGameEngine::CGameEngine()
|
||||
: m_gameDll(0)
|
||||
: m_gameDll(nullptr)
|
||||
, m_bIgnoreUpdates(false)
|
||||
, m_ePendingGameMode(ePGM_NotPending)
|
||||
, m_modalWindowDismisser(nullptr)
|
||||
AZ_POP_DISABLE_WARNING
|
||||
{
|
||||
m_pISystem = NULL;
|
||||
m_pISystem = nullptr;
|
||||
m_bLevelLoaded = false;
|
||||
m_bInGameMode = false;
|
||||
m_bSimulationMode = false;
|
||||
m_bSyncPlayerPosition = true;
|
||||
m_hSystemHandle = 0;
|
||||
m_hSystemHandle = nullptr;
|
||||
m_bJustCreated = false;
|
||||
m_levelName = "Untitled";
|
||||
m_levelExtension = EditorUtils::LevelFile::GetDefaultFileExtension();
|
||||
@@ -271,7 +271,7 @@ CGameEngine::~CGameEngine()
|
||||
{
|
||||
AZ_POP_DISABLE_WARNING
|
||||
GetIEditor()->UnregisterNotifyListener(this);
|
||||
m_pISystem->GetIMovieSystem()->SetCallback(NULL);
|
||||
m_pISystem->GetIMovieSystem()->SetCallback(nullptr);
|
||||
|
||||
if (m_gameDll)
|
||||
{
|
||||
@@ -279,7 +279,7 @@ AZ_POP_DISABLE_WARNING
|
||||
}
|
||||
|
||||
delete m_pISystem;
|
||||
m_pISystem = NULL;
|
||||
m_pISystem = nullptr;
|
||||
|
||||
if (m_hSystemHandle)
|
||||
{
|
||||
@@ -572,8 +572,6 @@ void CGameEngine::SwitchToInGame()
|
||||
m_pISystem->GetIMovieSystem()->EnablePhysicsEvents(true);
|
||||
m_bInGameMode = true;
|
||||
|
||||
gEnv->pSystem->GetViewCamera().SetMatrix(m_playerViewTM);
|
||||
|
||||
// Disable accelerators.
|
||||
GetIEditor()->EnableAcceleratos(false);
|
||||
//! Send event to switch into game.
|
||||
@@ -627,13 +625,6 @@ void CGameEngine::SwitchToInEditor()
|
||||
|
||||
m_bInGameMode = false;
|
||||
|
||||
// save the current gameView matrix for editor
|
||||
if (pGameViewport)
|
||||
{
|
||||
Matrix34 gameView = gEnv->pSystem->GetViewCamera().GetMatrix();
|
||||
pGameViewport->SetGameTM(gameView);
|
||||
}
|
||||
|
||||
// Out of game in Editor mode.
|
||||
if (pGameViewport)
|
||||
{
|
||||
@@ -875,7 +866,7 @@ void CGameEngine::OnEditorNotifyEvent(EEditorNotifyEvent event)
|
||||
{
|
||||
case eNotify_OnSplashScreenDestroyed:
|
||||
{
|
||||
if (m_pSystemUserCallback != NULL)
|
||||
if (m_pSystemUserCallback != nullptr)
|
||||
{
|
||||
m_pSystemUserCallback->OnSplashScreenDone();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "LogFile.h"
|
||||
#include "CryListenerSet.h"
|
||||
#include "Util/ModalWindowDismisser.h"
|
||||
#include <CryCommon/CryThread.h>
|
||||
#endif
|
||||
|
||||
class CStartupLogoDialog;
|
||||
|
||||
@@ -63,7 +63,7 @@ void SGameExporterSettings::SetHiQuality()
|
||||
nApplySS = 1;
|
||||
}
|
||||
|
||||
CGameExporter* CGameExporter::m_pCurrentExporter = NULL;
|
||||
CGameExporter* CGameExporter::m_pCurrentExporter = nullptr;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// CGameExporter
|
||||
@@ -76,7 +76,7 @@ CGameExporter::CGameExporter()
|
||||
|
||||
CGameExporter::~CGameExporter()
|
||||
{
|
||||
m_pCurrentExporter = NULL;
|
||||
m_pCurrentExporter = nullptr;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -378,14 +378,14 @@ void CGameExporter::ExportFileList(const QString& path, const QString& levelName
|
||||
{
|
||||
// process the folder of the specified map name, producing a filelist.xml file
|
||||
// that can later be used for map downloads
|
||||
string newpath;
|
||||
AZStd::string newpath;
|
||||
|
||||
QString filename = levelName;
|
||||
string mapname = (filename + ".dds").toUtf8().data();
|
||||
string metaname = (filename + ".xml").toUtf8().data();
|
||||
AZStd::string filename = levelName.toUtf8().data();
|
||||
AZStd::string mapname = (filename + ".dds");
|
||||
AZStd::string metaname = (filename + ".xml");
|
||||
|
||||
XmlNodeRef rootNode = gEnv->pSystem->CreateXmlNode("download");
|
||||
rootNode->setAttr("name", filename.toUtf8().data());
|
||||
rootNode->setAttr("name", filename.c_str());
|
||||
rootNode->setAttr("type", "Map");
|
||||
XmlNodeRef indexNode = rootNode->newChild("index");
|
||||
if (indexNode)
|
||||
@@ -434,9 +434,9 @@ void CGameExporter::ExportFileList(const QString& path, const QString& levelName
|
||||
newFileNode->setAttr("size", handle.m_fileDesc.nSize);
|
||||
|
||||
unsigned char md5[16];
|
||||
string filenameToHash = GetIEditor()->GetGameEngine()->GetLevelPath().toUtf8().data();
|
||||
AZStd::string filenameToHash = GetIEditor()->GetGameEngine()->GetLevelPath().toUtf8().data();
|
||||
filenameToHash += "/";
|
||||
filenameToHash += string{ handle.m_filename.data(), handle.m_filename.size() };
|
||||
filenameToHash += AZStd::string{ handle.m_filename.data(), handle.m_filename.size() };
|
||||
if (gEnv->pCryPak->ComputeMD5(filenameToHash.data(), md5))
|
||||
{
|
||||
char md5string[33];
|
||||
|
||||
@@ -17,7 +17,7 @@ AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
|
||||
|
||||
// CGenericSelectItemDialog dialog
|
||||
|
||||
CGenericSelectItemDialog::CGenericSelectItemDialog(QWidget* pParent /*=NULL*/)
|
||||
CGenericSelectItemDialog::CGenericSelectItemDialog(QWidget* pParent /*=nullptr*/)
|
||||
: QDialog(pParent)
|
||||
, ui(new Ui::CGenericSelectItemDialog)
|
||||
, m_initialized(false)
|
||||
@@ -91,20 +91,6 @@ void CGenericSelectItemDialog::ReloadTree()
|
||||
|
||||
QTreeWidgetItem* hSelected = nullptr;
|
||||
|
||||
/*
|
||||
std::vector<CString>::const_iterator iter = m_items.begin();
|
||||
while (iter != m_items.end())
|
||||
{
|
||||
const CString& itemName = *iter;
|
||||
HTREEITEM hItem = m_tree.InsertItem(itemName, 0, 0, TVI_ROOT, TVI_SORT);
|
||||
if (!m_preselect.IsEmpty() && m_preselect.CompareNoCase(itemName) == 0)
|
||||
{
|
||||
hSelected = hItem;
|
||||
}
|
||||
++iter;
|
||||
}
|
||||
*/
|
||||
|
||||
std::map<QString, QTreeWidgetItem*, less_qstring_icmp> items;
|
||||
|
||||
QRegularExpression sep(QStringLiteral("[\\/.") + m_treeSeparator + QStringLiteral("]+"));
|
||||
|
||||
@@ -570,7 +570,7 @@ struct IEditor
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
virtual class CLevelIndependentFileMan* GetLevelIndependentFileMan() = 0;
|
||||
//! Notify all views that data is changed.
|
||||
virtual void UpdateViews(int flags = 0xFFFFFFFF, const AABB* updateRegion = NULL) = 0;
|
||||
virtual void UpdateViews(int flags = 0xFFFFFFFF, const AABB* updateRegion = nullptr) = 0;
|
||||
virtual void ResetViews() = 0;
|
||||
//! Update information in track view dialog.
|
||||
virtual void ReloadTrackView() = 0;
|
||||
@@ -589,7 +589,7 @@ struct IEditor
|
||||
//! if bShow is true also returns a valid ITransformManipulator pointer.
|
||||
virtual ITransformManipulator* ShowTransformManipulator(bool bShow) = 0;
|
||||
//! Return a pointer to a ITransformManipulator pointer if shown.
|
||||
//! NULL is manipulator is not shown.
|
||||
//! nullptr if manipulator is not shown.
|
||||
virtual ITransformManipulator* GetTransformManipulator() = 0;
|
||||
//! Set constrain on specified axis for objects construction and modifications.
|
||||
//! @param axis one of AxisConstrains enumerations.
|
||||
|
||||
+32
-29
@@ -26,6 +26,7 @@ AZ_POP_DISABLE_WARNING
|
||||
#include <AzCore/IO/Path/Path.h>
|
||||
#include <AzCore/JSON/document.h>
|
||||
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
|
||||
#include <AzCore/Utils/Utils.h>
|
||||
|
||||
// AzFramework
|
||||
#include <AzFramework/Terrain/TerrainDataRequestBus.h>
|
||||
@@ -415,7 +416,7 @@ void CEditorImpl::Update()
|
||||
}
|
||||
if (IsInPreviewMode())
|
||||
{
|
||||
SetModifiedFlag(FALSE);
|
||||
SetModifiedFlag(false);
|
||||
SetModifiedModule(eModifiedNothing);
|
||||
}
|
||||
|
||||
@@ -550,7 +551,7 @@ QString CEditorImpl::GetResolvedUserFolder()
|
||||
|
||||
void CEditorImpl::SetDataModified()
|
||||
{
|
||||
GetDocument()->SetModifiedFlag(TRUE);
|
||||
GetDocument()->SetModifiedFlag(true);
|
||||
}
|
||||
|
||||
void CEditorImpl::SetStatusText(const QString& pszString)
|
||||
@@ -597,9 +598,9 @@ ITransformManipulator* CEditorImpl::ShowTransformManipulator(bool bShow)
|
||||
GetObjectManager()->GetGizmoManager()->RemoveGizmo(m_pAxisGizmo);
|
||||
m_pAxisGizmo->Release();
|
||||
}
|
||||
m_pAxisGizmo = 0;
|
||||
m_pAxisGizmo = nullptr;
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ITransformManipulator* CEditorImpl::GetTransformManipulator()
|
||||
@@ -614,7 +615,7 @@ void CEditorImpl::SetAxisConstraints(AxisConstrains axisFlags)
|
||||
SetTerrainAxisIgnoreObjects(false);
|
||||
|
||||
// Update all views.
|
||||
UpdateViews(eUpdateObjects, NULL);
|
||||
UpdateViews(eUpdateObjects, nullptr);
|
||||
}
|
||||
|
||||
AxisConstrains CEditorImpl::GetAxisConstrains()
|
||||
@@ -637,15 +638,15 @@ void CEditorImpl::SetReferenceCoordSys(RefCoordSys refCoords)
|
||||
m_refCoordsSys = refCoords;
|
||||
|
||||
// Update all views.
|
||||
UpdateViews(eUpdateObjects, NULL);
|
||||
UpdateViews(eUpdateObjects, nullptr);
|
||||
|
||||
// Update the construction plane infos.
|
||||
CViewport* pViewport = GetActiveView();
|
||||
if (pViewport)
|
||||
{
|
||||
//Pre and Post widget rendering calls are made here to make sure that the proper camera state is set.
|
||||
//MakeConstructionPlane will make a call to ViewToWorldRay which needs the correct camera state
|
||||
//in the CRenderViewport to be set.
|
||||
//MakeConstructionPlane will make a call to ViewToWorldRay which needs the correct camera state
|
||||
//in the CRenderViewport to be set.
|
||||
pViewport->PreWidgetRendering();
|
||||
|
||||
pViewport->MakeConstructionPlane(GetIEditor()->GetAxisConstrains());
|
||||
@@ -671,7 +672,7 @@ CBaseObject* CEditorImpl::NewObject(const char* typeName, const char* fileName,
|
||||
editor->SetModifiedFlag();
|
||||
editor->SetModifiedModule(eModifiedBrushes);
|
||||
}
|
||||
CBaseObject* object = editor->GetObjectManager()->NewObject(typeName, 0, fileName, name);
|
||||
CBaseObject* object = editor->GetObjectManager()->NewObject(typeName, nullptr, fileName, name);
|
||||
if (!object)
|
||||
{
|
||||
return nullptr;
|
||||
@@ -932,7 +933,7 @@ void CEditorImpl::CloseView(const GUID& classId)
|
||||
|
||||
IDataBaseManager* CEditorImpl::GetDBItemManager([[maybe_unused]] EDataBaseItemType itemType)
|
||||
{
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool CEditorImpl::SelectColor(QColor& color, QWidget* parent)
|
||||
@@ -1107,16 +1108,18 @@ void CEditorImpl::DetectVersion()
|
||||
DWORD dwHandle;
|
||||
UINT len;
|
||||
|
||||
char ver[1024 * 8];
|
||||
wchar_t ver[1024 * 8];
|
||||
|
||||
GetModuleFileName(NULL, exe, _MAX_PATH);
|
||||
AZ::Utils::GetExecutablePath(exe, _MAX_PATH);
|
||||
AZStd::wstring exeW;
|
||||
AZStd::to_wstring(exeW, exe);
|
||||
|
||||
int verSize = GetFileVersionInfoSize(exe, &dwHandle);
|
||||
int verSize = GetFileVersionInfoSizeW(exeW.c_str(), &dwHandle);
|
||||
if (verSize > 0)
|
||||
{
|
||||
GetFileVersionInfo(exe, dwHandle, 1024 * 8, ver);
|
||||
GetFileVersionInfoW(exeW.c_str(), dwHandle, 1024 * 8, ver);
|
||||
VS_FIXEDFILEINFO* vinfo;
|
||||
VerQueryValue(ver, "\\", (void**)&vinfo, &len);
|
||||
VerQueryValueW(ver, L"\\", (void**)&vinfo, &len);
|
||||
|
||||
m_fileVersion.v[0] = vinfo->dwFileVersionLS & 0xFFFF;
|
||||
m_fileVersion.v[1] = vinfo->dwFileVersionLS >> 16;
|
||||
@@ -1431,7 +1434,7 @@ void CEditorImpl::NotifyExcept(EEditorNotifyEvent event, IEditorNotifyListener*
|
||||
{
|
||||
m_pAxisGizmo->Release();
|
||||
}
|
||||
m_pAxisGizmo = 0;
|
||||
m_pAxisGizmo = nullptr;
|
||||
}
|
||||
|
||||
if (event == eNotify_OnInit)
|
||||
@@ -1472,7 +1475,7 @@ ISourceControl* CEditorImpl::GetSourceControl()
|
||||
for (int i = 0; i < classes.size(); i++)
|
||||
{
|
||||
IClassDesc* pClass = classes[i];
|
||||
ISourceControl* pSCM = NULL;
|
||||
ISourceControl* pSCM = nullptr;
|
||||
HRESULT hRes = pClass->QueryInterface(__uuidof(ISourceControl), (void**)&pSCM);
|
||||
if (!FAILED(hRes) && pSCM)
|
||||
{
|
||||
@@ -1482,7 +1485,7 @@ ISourceControl* CEditorImpl::GetSourceControl()
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool CEditorImpl::IsSourceControlAvailable()
|
||||
@@ -1557,31 +1560,31 @@ IExportManager* CEditorImpl::GetExportManager()
|
||||
void CEditorImpl::AddUIEnums()
|
||||
{
|
||||
// Spec settings for shadow casting lights
|
||||
string SpecString[4];
|
||||
AZStd::string SpecString[4];
|
||||
QStringList types;
|
||||
types.push_back("Never=0");
|
||||
SpecString[0].Format("VeryHigh Spec=%d", CONFIG_VERYHIGH_SPEC);
|
||||
SpecString[0] = AZStd::string::format("VeryHigh Spec=%d", CONFIG_VERYHIGH_SPEC);
|
||||
types.push_back(SpecString[0].c_str());
|
||||
SpecString[1].Format("High Spec=%d", CONFIG_HIGH_SPEC);
|
||||
SpecString[1] = AZStd::string::format("High Spec=%d", CONFIG_HIGH_SPEC);
|
||||
types.push_back(SpecString[1].c_str());
|
||||
SpecString[2].Format("Medium Spec=%d", CONFIG_MEDIUM_SPEC);
|
||||
SpecString[2] = AZStd::string::format("Medium Spec=%d", CONFIG_MEDIUM_SPEC);
|
||||
types.push_back(SpecString[2].c_str());
|
||||
SpecString[3].Format("Low Spec=%d", CONFIG_LOW_SPEC);
|
||||
SpecString[3] = AZStd::string::format("Low Spec=%d", CONFIG_LOW_SPEC);
|
||||
types.push_back(SpecString[3].c_str());
|
||||
m_pUIEnumsDatabase->SetEnumStrings("CastShadows", types);
|
||||
|
||||
// Power-of-two percentages
|
||||
string percentStringPOT[5];
|
||||
AZStd::string percentStringPOT[5];
|
||||
types.clear();
|
||||
percentStringPOT[0].Format("Default=%d", 0);
|
||||
percentStringPOT[0] = AZStd::string::format("Default=%d", 0);
|
||||
types.push_back(percentStringPOT[0].c_str());
|
||||
percentStringPOT[1].Format("12.5=%d", 1);
|
||||
percentStringPOT[1] = AZStd::string::format("12.5=%d", 1);
|
||||
types.push_back(percentStringPOT[1].c_str());
|
||||
percentStringPOT[2].Format("25=%d", 2);
|
||||
percentStringPOT[2] = AZStd::string::format("25=%d", 2);
|
||||
types.push_back(percentStringPOT[2].c_str());
|
||||
percentStringPOT[3].Format("50=%d", 3);
|
||||
percentStringPOT[3] = AZStd::string::format("50=%d", 3);
|
||||
types.push_back(percentStringPOT[3].c_str());
|
||||
percentStringPOT[4].Format("100=%d", 4);
|
||||
percentStringPOT[4] = AZStd::string::format("100=%d", 4);
|
||||
types.push_back(percentStringPOT[4].c_str());
|
||||
m_pUIEnumsDatabase->SetEnumStrings("ShadowMinResPercent", types);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <AzToolsFramework/Thumbnails/ThumbnailerBus.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
|
||||
#include "Commands/CommandManager.h"
|
||||
#include "Commands/CommandManager.h"
|
||||
|
||||
#include "Include/IErrorReport.h"
|
||||
#include "ErrorReport.h"
|
||||
@@ -63,7 +63,7 @@ namespace AssetDatabase
|
||||
class AssetDatabaseLocationListener;
|
||||
}
|
||||
|
||||
class CEditorImpl
|
||||
class CEditorImpl
|
||||
: public IEditor
|
||||
{
|
||||
Q_DECLARE_TR_FUNCTIONS(CEditorImpl)
|
||||
@@ -176,7 +176,7 @@ public:
|
||||
{
|
||||
return m_pSystem->GetIMovieSystem();
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
CPluginManager* GetPluginManager() { return m_pPluginManager; }
|
||||
@@ -210,7 +210,7 @@ public:
|
||||
RefCoordSys GetReferenceCoordSys();
|
||||
XmlNodeRef FindTemplate(const QString& templateName);
|
||||
void AddTemplate(const QString& templateName, XmlNodeRef& tmpl);
|
||||
|
||||
|
||||
const QtViewPane* OpenView(QString sViewClassName, bool reuseOpened = true) override;
|
||||
|
||||
/**
|
||||
|
||||
@@ -81,7 +81,7 @@ void CIconManager::Reset()
|
||||
{
|
||||
m_objects[i]->Release();
|
||||
}
|
||||
m_objects[i] = 0;
|
||||
m_objects[i] = nullptr;
|
||||
}
|
||||
for (i = 0; i < eIcon_COUNT; i++)
|
||||
{
|
||||
@@ -135,7 +135,7 @@ IStatObj* CIconManager::GetObject(EStatObject)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
QImage* CIconManager::GetIconBitmap(const char* filename, bool& bHaveAlpha, uint32 effects /*=0*/)
|
||||
{
|
||||
QImage* pBitmap = 0;
|
||||
QImage* pBitmap = nullptr;
|
||||
|
||||
QString iconFilename = filename;
|
||||
|
||||
@@ -160,11 +160,11 @@ QImage* CIconManager::GetIconBitmap(const char* filename, bool& bHaveAlpha, uint
|
||||
return pBitmap;
|
||||
}
|
||||
|
||||
BOOL bAlphaBitmap = FALSE;
|
||||
bool bAlphaBitmap = false;
|
||||
QPixmap pm(iconFilename);
|
||||
bAlphaBitmap = pm.hasAlpha();
|
||||
|
||||
bHaveAlpha = (bAlphaBitmap == TRUE);
|
||||
bHaveAlpha = (bAlphaBitmap == true);
|
||||
if (!pm.isNull())
|
||||
{
|
||||
pBitmap = new QImage;
|
||||
@@ -252,5 +252,5 @@ QImage* CIconManager::GetIconBitmap(const char* filename, bool& bHaveAlpha, uint
|
||||
|
||||
return pBitmap;
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
#include "Util/EditorUtils.h"
|
||||
|
||||
inline string ToString(const QString& s)
|
||||
inline AZStd::string ToString(const QString& s)
|
||||
{
|
||||
return s.toUtf8().data();
|
||||
}
|
||||
@@ -27,10 +27,10 @@ class CCommand
|
||||
{
|
||||
public:
|
||||
CCommand(
|
||||
const string& module,
|
||||
const string& name,
|
||||
const string& description,
|
||||
const string& example)
|
||||
const AZStd::string& module,
|
||||
const AZStd::string& name,
|
||||
const AZStd::string& description,
|
||||
const AZStd::string& example)
|
||||
: m_module(module)
|
||||
, m_name(name)
|
||||
, m_description(description)
|
||||
@@ -79,20 +79,20 @@ public:
|
||||
}
|
||||
int GetArgCount() const
|
||||
{ return m_args.size(); }
|
||||
const string& GetArg(int i) const
|
||||
const AZStd::string& GetArg(int i) const
|
||||
{
|
||||
assert(0 <= i && i < GetArgCount());
|
||||
return m_args[i];
|
||||
}
|
||||
private:
|
||||
DynArray<string> m_args;
|
||||
DynArray<AZStd::string> m_args;
|
||||
unsigned char m_stringFlags; // This is needed to quote string parameters when logging a command.
|
||||
};
|
||||
|
||||
const string& GetName() const { return m_name; }
|
||||
const string& GetModule() const { return m_module; }
|
||||
const string& GetDescription() const { return m_description; }
|
||||
const string& GetExample() const { return m_example; }
|
||||
const AZStd::string& GetName() const { return m_name; }
|
||||
const AZStd::string& GetModule() const { return m_module; }
|
||||
const AZStd::string& GetDescription() const { return m_description; }
|
||||
const AZStd::string& GetExample() const { return m_example; }
|
||||
|
||||
void SetAvailableInScripting() { m_bAlsoAvailableInScripting = true; };
|
||||
bool IsAvailableInScripting() const { return m_bAlsoAvailableInScripting; }
|
||||
@@ -104,15 +104,15 @@ public:
|
||||
|
||||
protected:
|
||||
friend class CEditorCommandManager;
|
||||
string m_module;
|
||||
string m_name;
|
||||
string m_description;
|
||||
string m_example;
|
||||
AZStd::string m_module;
|
||||
AZStd::string m_name;
|
||||
AZStd::string m_description;
|
||||
AZStd::string m_example;
|
||||
bool m_bAlsoAvailableInScripting;
|
||||
|
||||
template <typename T>
|
||||
static string ToString_(T t) { return ::ToString(t); }
|
||||
static inline string ToString_(const char* val)
|
||||
static AZStd::string ToString_(T t) { return ::ToString(t); }
|
||||
static inline AZStd::string ToString_(const char* val)
|
||||
{ return val; }
|
||||
template <typename T>
|
||||
static bool FromString_(T& t, const char* s) { return ::FromString(t, s); }
|
||||
@@ -137,8 +137,8 @@ class CCommand0
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand0(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand0(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void()>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor) {}
|
||||
@@ -146,10 +146,10 @@ public:
|
||||
// UI metadata for this command, if any
|
||||
struct SUIInfo
|
||||
{
|
||||
string caption;
|
||||
string tooltip;
|
||||
string description;
|
||||
string iconFilename;
|
||||
AZStd::string caption;
|
||||
AZStd::string tooltip;
|
||||
AZStd::string description;
|
||||
AZStd::string iconFilename;
|
||||
int iconIndex;
|
||||
int commandId; // Windows command id
|
||||
|
||||
@@ -179,8 +179,8 @@ class CCommand0wRet
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand0wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand0wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT()>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -195,8 +195,8 @@ class CCommand1
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand1(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand1(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(1, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -211,8 +211,8 @@ class CCommand1wRet
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand1wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand1wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(1, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -227,8 +227,8 @@ class CCommand2
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand2(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand2(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(2, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -243,8 +243,8 @@ class CCommand2wRet
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand2wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand2wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(2, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -259,8 +259,8 @@ class CCommand3
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand3(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand3(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(3, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -275,8 +275,8 @@ class CCommand3wRet
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand3wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand3wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(3, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -291,8 +291,8 @@ class CCommand4
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand4(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand4(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(4, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -307,8 +307,8 @@ class CCommand4wRet
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand4wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand4wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(4, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -323,8 +323,8 @@ class CCommand5
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand5(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand5(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(5, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -339,8 +339,8 @@ class CCommand6
|
||||
: public CCommand
|
||||
{
|
||||
public:
|
||||
CCommand6(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand6(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(6, P))>& functor);
|
||||
|
||||
QString Execute(const CArgs& args);
|
||||
@@ -353,8 +353,8 @@ protected:
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename RT>
|
||||
CCommand0wRet<RT>::CCommand0wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand0wRet<RT>::CCommand0wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT()>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -373,8 +373,8 @@ QString CCommand0wRet<RT>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(1, typename P)>
|
||||
CCommand1<LIST(1, P)>::CCommand1(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand1<LIST(1, P)>::CCommand1(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(1, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -410,8 +410,8 @@ QString CCommand1<LIST(1, P)>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(1, typename P), typename RT>
|
||||
CCommand1wRet<LIST(1, P), RT>::CCommand1wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand1wRet<LIST(1, P), RT>::CCommand1wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(1, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -448,8 +448,8 @@ QString CCommand1wRet<LIST(1, P), RT>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(2, typename P)>
|
||||
CCommand2<LIST(2, P)>::CCommand2(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand2<LIST(2, P)>::CCommand2(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(2, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -487,8 +487,8 @@ QString CCommand2<LIST(2, P)>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(2, typename P), typename RT>
|
||||
CCommand2wRet<LIST(2, P), RT>::CCommand2wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand2wRet<LIST(2, P), RT>::CCommand2wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(2, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -527,8 +527,8 @@ QString CCommand2wRet<LIST(2, P), RT>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(3, typename P)>
|
||||
CCommand3<LIST(3, P)>::CCommand3(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand3<LIST(3, P)>::CCommand3(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(3, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -568,8 +568,8 @@ QString CCommand3<LIST(3, P)>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(3, typename P), typename RT>
|
||||
CCommand3wRet<LIST(3, P), RT>::CCommand3wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand3wRet<LIST(3, P), RT>::CCommand3wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(3, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -610,8 +610,8 @@ QString CCommand3wRet<LIST(3, P), RT>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(4, typename P)>
|
||||
CCommand4<LIST(4, P)>::CCommand4(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand4<LIST(4, P)>::CCommand4(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(4, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -654,8 +654,8 @@ QString CCommand4<LIST(4, P)>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(4, typename P), typename RT>
|
||||
CCommand4wRet<LIST(4, P), RT>::CCommand4wRet(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand4wRet<LIST(4, P), RT>::CCommand4wRet(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<RT(LIST(4, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -699,8 +699,8 @@ QString CCommand4wRet<LIST(4, P), RT>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(5, typename P)>
|
||||
CCommand5<LIST(5, P)>::CCommand5(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand5<LIST(5, P)>::CCommand5(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(5, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
@@ -745,8 +745,8 @@ QString CCommand5<LIST(5, P)>::Execute(const CCommand::CArgs& args)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <LIST(6, typename P)>
|
||||
CCommand6<LIST(6, P)>::CCommand6(const string& module, const string& name,
|
||||
const string& description, const string& example,
|
||||
CCommand6<LIST(6, P)>::CCommand6(const AZStd::string& module, const AZStd::string& name,
|
||||
const AZStd::string& description, const AZStd::string& example,
|
||||
const AZStd::function<void(LIST(6, P))>& functor)
|
||||
: CCommand(module, name, description, example)
|
||||
, m_functor(functor)
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "StringUtils.h"
|
||||
#include "../Include/SandboxAPI.h"
|
||||
#include <set>
|
||||
|
||||
class QWidget;
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/PlatformIncl.h>
|
||||
#include <AzCore/Math/Guid.h>
|
||||
#include <CryCommon/platform.h>
|
||||
#include <CryCommon/Cry_Geo.h>
|
||||
#include <set>
|
||||
|
||||
@@ -68,7 +68,7 @@ QVariant LayoutConfigModel::data(const QModelIndex& index, int role) const
|
||||
|
||||
// CLayoutConfigDialog dialog
|
||||
|
||||
CLayoutConfigDialog::CLayoutConfigDialog(QWidget* pParent /*=NULL*/)
|
||||
CLayoutConfigDialog::CLayoutConfigDialog(QWidget* pParent /*=nullptr*/)
|
||||
: QDialog(pParent)
|
||||
, m_model(new LayoutConfigModel(this))
|
||||
, ui(new Ui::CLayoutConfigDialog)
|
||||
|
||||
@@ -98,7 +98,7 @@ CLayoutWnd::CLayoutWnd(QSettings* settings, QWidget* parent)
|
||||
, m_settings(settings)
|
||||
{
|
||||
m_bMaximized = false;
|
||||
m_maximizedView = 0;
|
||||
m_maximizedView = nullptr;
|
||||
m_layout = (EViewLayout) - 1;
|
||||
|
||||
m_maximizedViewId = 0;
|
||||
@@ -729,7 +729,7 @@ void CLayoutWnd::OnDestroy()
|
||||
if (m_maximizedView)
|
||||
{
|
||||
delete m_maximizedView;
|
||||
m_maximizedView = 0;
|
||||
m_maximizedView = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ CLevelFileDialog::CLevelFileDialog(bool openDialog, QWidget* parent)
|
||||
connect(ui->nameLineEdit, &QLineEdit::textChanged, this, &CLevelFileDialog::OnNameChanged);
|
||||
}
|
||||
|
||||
// reject invalid file names (see CryStringUtils::IsValidFileName)
|
||||
// reject invalid file names
|
||||
ui->nameLineEdit->setValidator(new QRegExpValidator(QRegExp("^[a-zA-Z0-9_\\-./]*$"), ui->nameLineEdit));
|
||||
|
||||
ReloadTree();
|
||||
@@ -315,7 +315,7 @@ void CLevelFileDialog::OnNewFolder()
|
||||
const QString newFolderName = inputDlg.textValue();
|
||||
const QString newFolderPath = parentFullPath + "/" + newFolderName;
|
||||
|
||||
if (!CryStringUtils::IsValidFileName(newFolderName.toUtf8().data()))
|
||||
if (!AZ::StringFunc::Path::IsValid(newFolderName.toUtf8().data()))
|
||||
{
|
||||
QMessageBox box(this);
|
||||
box.setText(tr("Please enter a single, valid folder name(standard English alphanumeric characters only)"));
|
||||
@@ -416,7 +416,7 @@ bool CLevelFileDialog::ValidateSaveLevelPath(QString& errorMessage) const
|
||||
const QString enteredPath = GetEnteredPath();
|
||||
const QString levelPath = GetLevelPath();
|
||||
|
||||
if (!CryStringUtils::IsValidFileName(Path::GetFileName(levelPath).toUtf8().data()))
|
||||
if (!AZ::StringFunc::Path::IsValid(Path::GetFileName(levelPath).toUtf8().data()))
|
||||
{
|
||||
errorMessage = tr("Please enter a valid level name (standard English alphanumeric characters only)");
|
||||
return false;
|
||||
|
||||
@@ -23,12 +23,12 @@ namespace EditorUtilsTest
|
||||
BusConnect();
|
||||
}
|
||||
|
||||
~WarningDetector()
|
||||
~WarningDetector() override
|
||||
{
|
||||
BusDisconnect();
|
||||
}
|
||||
|
||||
virtual bool OnWarning(const char* /*window*/, const char* /*message*/) override
|
||||
bool OnWarning(const char* /*window*/, const char* /*message*/) override
|
||||
{
|
||||
m_gotWarning = true;
|
||||
return true;
|
||||
|
||||
@@ -17,7 +17,7 @@ class EditorLibTestEnvironment
|
||||
: public AZ::Test::ITestEnvironment
|
||||
{
|
||||
public:
|
||||
virtual ~EditorLibTestEnvironment() {}
|
||||
~EditorLibTestEnvironment() override = default;
|
||||
|
||||
protected:
|
||||
void SetupEnvironment() override
|
||||
|
||||
+15
-14
@@ -180,14 +180,14 @@ void CLogFile::FormatLineV(const char * format, va_list argList)
|
||||
void CLogFile::AboutSystem()
|
||||
{
|
||||
char szBuffer[MAX_LOGBUFFER_SIZE];
|
||||
wchar_t szBufferW[MAX_LOGBUFFER_SIZE];
|
||||
#if defined(AZ_PLATFORM_WINDOWS) || defined(AZ_PLATFORM_LINUX)
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Write the system informations to the log
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
char szProfileBuffer[128];
|
||||
char szLanguageBuffer[64];
|
||||
//char szCPUModel[64];
|
||||
wchar_t szLanguageBufferW[64];
|
||||
//wchar_t szCPUModel[64];
|
||||
MEMORYSTATUS MemoryStatus;
|
||||
#endif // defined(AZ_PLATFORM_WINDOWS) || defined(AZ_PLATFORM_LINUX)
|
||||
|
||||
@@ -201,11 +201,13 @@ void CLogFile::AboutSystem()
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Get system language
|
||||
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGLANGUAGE,
|
||||
szLanguageBuffer, sizeof(szLanguageBuffer));
|
||||
GetLocaleInfoW(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGLANGUAGE,
|
||||
szLanguageBufferW, sizeof(szLanguageBufferW));
|
||||
AZStd::string szLanguageBuffer;
|
||||
AZStd::to_string(szLanguageBuffer, szLanguageBufferW);
|
||||
|
||||
// Format and send OS information line
|
||||
azsnprintf(szBuffer, MAX_LOGBUFFER_SIZE, "Current Language: %s ", szLanguageBuffer);
|
||||
azsnprintf(szBuffer, MAX_LOGBUFFER_SIZE, "Current Language: %s ", szLanguageBuffer.c_str());
|
||||
CryLog("%s", szBuffer);
|
||||
#else
|
||||
QLocale locale;
|
||||
@@ -294,7 +296,8 @@ AZ_POP_DISABLE_WARNING
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
str += " (";
|
||||
GetWindowsDirectory(szBuffer, sizeof(szBuffer));
|
||||
GetWindowsDirectoryW(szBufferW, sizeof(szBufferW));
|
||||
AZStd::to_string(szBuffer, MAX_LOGBUFFER_SIZE, szBufferW);
|
||||
str += szBuffer;
|
||||
str += ")";
|
||||
CryLog("%s", str.toUtf8().data());
|
||||
@@ -381,12 +384,13 @@ AZ_POP_DISABLE_WARNING
|
||||
|
||||
#if defined(AZ_PLATFORM_WINDOWS)
|
||||
EnumDisplaySettings(nullptr, ENUM_CURRENT_SETTINGS, &DisplayConfig);
|
||||
GetPrivateProfileString("boot.description", "display.drv",
|
||||
"(Unknown graphics card)", szProfileBuffer, sizeof(szProfileBuffer),
|
||||
"system.ini");
|
||||
GetPrivateProfileStringW(L"boot.description", L"display.drv",
|
||||
L"(Unknown graphics card)", szLanguageBufferW, sizeof(szLanguageBufferW),
|
||||
L"system.ini");
|
||||
AZStd::to_string(szLanguageBuffer, szLanguageBufferW);
|
||||
azsnprintf(szBuffer, MAX_LOGBUFFER_SIZE, "Current display mode is %dx%dx%d, %s",
|
||||
DisplayConfig.dmPelsWidth, DisplayConfig.dmPelsHeight,
|
||||
DisplayConfig.dmBitsPerPel, szProfileBuffer);
|
||||
DisplayConfig.dmBitsPerPel, szLanguageBuffer.c_str());
|
||||
CryLog("%s", szBuffer);
|
||||
#else
|
||||
auto screen = QGuiApplication::primaryScreen();
|
||||
@@ -568,9 +572,6 @@ void CLogFile::OnWriteToConsole(const char* sText, bool bNewLine)
|
||||
}
|
||||
if (bNewLine)
|
||||
{
|
||||
//str = CString("\r\n") + str.TrimLeft();
|
||||
//str = CString("\r\n") + str;
|
||||
//str = CString("\r") + str;
|
||||
str = QString("\r\n") + str;
|
||||
str = str.trimmed();
|
||||
}
|
||||
|
||||
@@ -1687,7 +1687,7 @@ void MainWindow::OnUpdateConnectionStatus()
|
||||
|
||||
status = tr("Pending Jobs : %1 Failed Jobs : %2").arg(m_connectionListener->GetJobsCount()).arg(failureCount);
|
||||
|
||||
statusBar->SetItem(QtUtil::ToQString("connection"), status, tooltip, icon);
|
||||
statusBar->SetItem("connection", status, tooltip, icon);
|
||||
|
||||
if (m_showAPDisconnectDialog && m_connectionListener->GetState() != EConnectionState::Connected)
|
||||
{
|
||||
|
||||
@@ -57,12 +57,12 @@ public:
|
||||
CUndoBaseObject(CBaseObject* pObj, const char* undoDescription);
|
||||
|
||||
protected:
|
||||
virtual int GetSize() { return sizeof(*this); }
|
||||
virtual QString GetDescription() { return m_undoDescription; };
|
||||
virtual QString GetObjectName();
|
||||
int GetSize() override { return sizeof(*this); }
|
||||
QString GetDescription() override { return m_undoDescription; };
|
||||
QString GetObjectName() override;
|
||||
|
||||
virtual void Undo(bool bUndo);
|
||||
virtual void Redo();
|
||||
void Undo(bool bUndo) override;
|
||||
void Redo() override;
|
||||
|
||||
protected:
|
||||
QString m_undoDescription;
|
||||
@@ -81,12 +81,12 @@ public:
|
||||
CUndoBaseObjectMinimal(CBaseObject* obj, const char* undoDescription, int flags);
|
||||
|
||||
protected:
|
||||
virtual int GetSize() { return sizeof(*this); }
|
||||
virtual QString GetDescription() { return m_undoDescription; };
|
||||
virtual QString GetObjectName();
|
||||
int GetSize() override { return sizeof(*this); }
|
||||
QString GetDescription() override { return m_undoDescription; };
|
||||
QString GetObjectName() override;
|
||||
|
||||
virtual void Undo(bool bUndo);
|
||||
virtual void Redo();
|
||||
void Undo(bool bUndo) override;
|
||||
void Redo() override;
|
||||
|
||||
private:
|
||||
struct StateStruct
|
||||
@@ -119,7 +119,7 @@ public:
|
||||
, m_bKeepPos(bKeepPos)
|
||||
, m_bAttach(bAttach) {}
|
||||
|
||||
virtual void Undo([[maybe_unused]] bool bUndo) override
|
||||
void Undo([[maybe_unused]] bool bUndo) override
|
||||
{
|
||||
if (m_bAttach)
|
||||
{
|
||||
@@ -131,7 +131,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void Redo() override
|
||||
void Redo() override
|
||||
{
|
||||
if (m_bAttach)
|
||||
{
|
||||
@@ -167,8 +167,8 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
virtual int GetSize() { return sizeof(CUndoAttachBaseObject); }
|
||||
virtual QString GetDescription() { return "Attachment Changed"; }
|
||||
int GetSize() override { return sizeof(CUndoAttachBaseObject); }
|
||||
QString GetDescription() override { return "Attachment Changed"; }
|
||||
|
||||
GUID m_attachedObjectGUID;
|
||||
GUID m_parentObjectGUID;
|
||||
@@ -184,7 +184,7 @@ CUndoBaseObject::CUndoBaseObject(CBaseObject* obj, const char* undoDescription)
|
||||
m_undoDescription = undoDescription;
|
||||
m_guid = obj->GetId();
|
||||
|
||||
m_redo = 0;
|
||||
m_redo = nullptr;
|
||||
m_undo = XmlHelpers::CreateXmlNode("Undo");
|
||||
CObjectArchive ar(GetIEditor()->GetObjectManager(), m_undo, false);
|
||||
ar.bUndo = true;
|
||||
@@ -355,7 +355,7 @@ void CObjectCloneContext::AddClone(CBaseObject* pFromObject, CBaseObject* pToObj
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CBaseObject* CObjectCloneContext::FindClone(CBaseObject* pFromObject)
|
||||
{
|
||||
CBaseObject* pTarget = stl::find_in_map(m_objectsMap, pFromObject, (CBaseObject*) NULL);
|
||||
CBaseObject* pTarget = stl::find_in_map(m_objectsMap, pFromObject, (CBaseObject*) nullptr);
|
||||
return pTarget;
|
||||
}
|
||||
|
||||
@@ -426,7 +426,7 @@ bool CBaseObject::Init([[maybe_unused]] IEditor* ie, CBaseObject* prev, [[maybe_
|
||||
{
|
||||
SetFlags(m_flags & (~OBJFLAG_DELETED));
|
||||
|
||||
if (prev != 0)
|
||||
if (prev != nullptr)
|
||||
{
|
||||
SetUniqueName(prev->GetName());
|
||||
SetLocalTM(prev->GetPos(), prev->GetRotation(), prev->GetScale());
|
||||
@@ -457,7 +457,7 @@ CBaseObject::~CBaseObject()
|
||||
for (Childs::iterator c = m_childs.begin(); c != m_childs.end(); c++)
|
||||
{
|
||||
CBaseObject* child = *c;
|
||||
child->m_parent = 0;
|
||||
child->m_parent = nullptr;
|
||||
}
|
||||
m_childs.clear();
|
||||
}
|
||||
@@ -470,10 +470,10 @@ void CBaseObject::Done()
|
||||
// From children
|
||||
DetachAll();
|
||||
|
||||
SetLookAt(0);
|
||||
SetLookAt(nullptr);
|
||||
if (m_lookatSource)
|
||||
{
|
||||
m_lookatSource->SetLookAt(0);
|
||||
m_lookatSource->SetLookAt(nullptr);
|
||||
}
|
||||
SetFlags(m_flags | OBJFLAG_DELETED);
|
||||
|
||||
@@ -1730,7 +1730,7 @@ bool CBaseObject::IntersectRayBounds(const Ray& ray)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
namespace
|
||||
{
|
||||
typedef std::pair<Vec2, Vec2> Edge2D;
|
||||
using Edge2D = std::pair<Vec2, Vec2>;
|
||||
}
|
||||
bool IsIncludePointsInConvexHull(Edge2D* pEdgeArray0, int nEdgeArray0Size, Edge2D* pEdgeArray1, int nEdgeArray1Size)
|
||||
{
|
||||
@@ -2065,7 +2065,7 @@ void CBaseObject::GetAllChildren(TBaseObjects& outAllChildren, CBaseObject* pObj
|
||||
for (int i = 0, iChildCount(pBaseObj->GetChildCount()); i < iChildCount; ++i)
|
||||
{
|
||||
CBaseObject* pChild = pBaseObj->GetChild(i);
|
||||
if (pChild == NULL)
|
||||
if (pChild == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -2081,7 +2081,7 @@ void CBaseObject::GetAllChildren(DynArray< _smart_ptr<CBaseObject> >& outAllChil
|
||||
for (int i = 0, iChildCount(pBaseObj->GetChildCount()); i < iChildCount; ++i)
|
||||
{
|
||||
CBaseObject* pChild = pBaseObj->GetChild(i);
|
||||
if (pChild == NULL)
|
||||
if (pChild == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -2097,7 +2097,7 @@ void CBaseObject::GetAllChildren(CSelectionGroup& outAllChildren, CBaseObject* p
|
||||
for (int i = 0, iChildCount(pBaseObj->GetChildCount()); i < iChildCount; ++i)
|
||||
{
|
||||
CBaseObject* pChild = pBaseObj->GetChild(i);
|
||||
if (pChild == NULL)
|
||||
if (pChild == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -2109,7 +2109,7 @@ void CBaseObject::GetAllChildren(CSelectionGroup& outAllChildren, CBaseObject* p
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CBaseObject::CloneChildren(CBaseObject* pFromObject)
|
||||
{
|
||||
if (pFromObject == NULL)
|
||||
if (pFromObject == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -2119,7 +2119,7 @@ void CBaseObject::CloneChildren(CBaseObject* pFromObject)
|
||||
CBaseObject* pFromChildObject = pFromObject->GetChild(i);
|
||||
|
||||
CBaseObject* pChildClone = GetObjectManager()->CloneObject(pFromChildObject);
|
||||
if (pChildClone == NULL)
|
||||
if (pChildClone == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -2248,7 +2248,7 @@ void CBaseObject::DetachThis(bool bKeepPos)
|
||||
|
||||
// Copy parent to temp var, erasing child from parent may delete this node if child referenced only from parent.
|
||||
CBaseObject* parent = m_parent;
|
||||
m_parent = 0;
|
||||
m_parent = nullptr;
|
||||
parent->RemoveChild(this);
|
||||
|
||||
if (bKeepPos)
|
||||
@@ -2389,7 +2389,7 @@ void CBaseObject::InvalidateTM([[maybe_unused]] int flags)
|
||||
// Invalidate matrices off all child objects.
|
||||
for (int i = 0; i < m_childs.size(); i++)
|
||||
{
|
||||
if (m_childs[i] != 0 && m_childs[i]->m_bMatrixValid)
|
||||
if (m_childs[i] != nullptr && m_childs[i]->m_bMatrixValid)
|
||||
{
|
||||
m_childs[i]->InvalidateTM(eObjectUpdateFlags_ParentChanged);
|
||||
}
|
||||
@@ -2538,7 +2538,7 @@ void CBaseObject::SetLookAt(CBaseObject* target)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool CBaseObject::IsLookAtTarget() const
|
||||
{
|
||||
return m_lookatSource != 0;
|
||||
return m_lookatSource != nullptr;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -2806,7 +2806,7 @@ bool CBaseObject::IntersectRayMesh(const Vec3& raySrc, const Vec3& rayDir, SRayH
|
||||
outHitInfo.bInFirstHit = false;
|
||||
outHitInfo.bUseCache = false;
|
||||
|
||||
return pStatObj->RayIntersection(outHitInfo, 0);
|
||||
return pStatObj->RayIntersection(outHitInfo, nullptr);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -321,7 +321,7 @@ public:
|
||||
//! Set object selected status.
|
||||
virtual void SetSelected(bool bSelect);
|
||||
//! Return associated 3DEngine render node
|
||||
virtual IRenderNode* GetEngineNode() const { return NULL; };
|
||||
virtual IRenderNode* GetEngineNode() const { return nullptr; };
|
||||
//! Set object highlighted (Note: not selected)
|
||||
virtual void SetHighlight(bool bHighlight);
|
||||
//! Check if object is highlighted.
|
||||
@@ -410,9 +410,9 @@ public:
|
||||
//! Scans hierarchy up to determine if we child of specified node.
|
||||
virtual bool IsChildOf(CBaseObject* node);
|
||||
//! Get all child objects
|
||||
void GetAllChildren(TBaseObjects& outAllChildren, CBaseObject* pObj = NULL) const;
|
||||
void GetAllChildren(DynArray< _smart_ptr<CBaseObject> >& outAllChildren, CBaseObject* pObj = NULL) const;
|
||||
void GetAllChildren(CSelectionGroup& outAllChildren, CBaseObject* pObj = NULL) const;
|
||||
void GetAllChildren(TBaseObjects& outAllChildren, CBaseObject* pObj = nullptr) const;
|
||||
void GetAllChildren(DynArray< _smart_ptr<CBaseObject> >& outAllChildren, CBaseObject* pObj = nullptr) const;
|
||||
void GetAllChildren(CSelectionGroup& outAllChildren, CBaseObject* pObj = nullptr) const;
|
||||
//! Clone Children
|
||||
void CloneChildren(CBaseObject* pFromObject);
|
||||
//! Attach new child node.
|
||||
@@ -468,8 +468,8 @@ public:
|
||||
//! Called when object is being created (use GetMouseCreateCallback for more advanced mouse creation callback).
|
||||
virtual int MouseCreateCallback(CViewport* view, EMouseEvent event, QPoint& point, int flags);
|
||||
// Return pointer to the callback object used when creating object by the mouse.
|
||||
// If this function return NULL MouseCreateCallback method will be used instead.
|
||||
virtual IMouseCreateCallback* GetMouseCreateCallback() { return 0; };
|
||||
// If this function return nullptr MouseCreateCallback method will be used instead.
|
||||
virtual IMouseCreateCallback* GetMouseCreateCallback() { return nullptr; };
|
||||
|
||||
//! Draw object to specified viewport.
|
||||
virtual void Display([[maybe_unused]] DisplayContext& disp) {}
|
||||
@@ -598,7 +598,7 @@ public:
|
||||
bool CanBeHightlighted() const;
|
||||
bool IsSkipSelectionHelper() const;
|
||||
|
||||
virtual IStatObj* GetIStatObj() { return NULL; }
|
||||
virtual IStatObj* GetIStatObj() { return nullptr; }
|
||||
|
||||
// Invalidates cached transformation matrix.
|
||||
// nWhyFlags - Flags that indicate the reason for matrix invalidation.
|
||||
@@ -672,7 +672,7 @@ protected:
|
||||
//! Draw warning icons
|
||||
virtual void DrawWarningIcons(DisplayContext& dc, const Vec3& pos);
|
||||
//! Check if dimension's figures can be displayed before draw them.
|
||||
virtual void DrawDimensions(DisplayContext& dc, AABB* pMergedBoundBox = NULL);
|
||||
virtual void DrawDimensions(DisplayContext& dc, AABB* pMergedBoundBox = nullptr);
|
||||
|
||||
//! Draw highlight.
|
||||
virtual void DrawHighlight(DisplayContext& dc);
|
||||
|
||||
@@ -56,18 +56,18 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void Release() { delete this; };
|
||||
virtual int GetSize() { return sizeof(*this); }; // Return size of xml state.
|
||||
virtual QString GetDescription() { return "Entity Link"; };
|
||||
virtual QString GetObjectName(){ return ""; };
|
||||
void Release() override { delete this; };
|
||||
int GetSize() override { return sizeof(*this); }; // Return size of xml state.
|
||||
QString GetDescription() override { return "Entity Link"; };
|
||||
QString GetObjectName() override{ return ""; };
|
||||
|
||||
virtual void Undo([[maybe_unused]] bool bUndo)
|
||||
void Undo([[maybe_unused]] bool bUndo) override
|
||||
{
|
||||
for (int i = 0, iLinkSize(m_Links.size()); i < iLinkSize; ++i)
|
||||
{
|
||||
SLink& link = m_Links[i];
|
||||
CBaseObject* pObj = GetIEditor()->GetObjectManager()->FindObject(link.entityID);
|
||||
if (pObj == NULL)
|
||||
if (pObj == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -83,7 +83,7 @@ protected:
|
||||
pEntity->LoadLink(link.linkXmlNode->getChild(0));
|
||||
}
|
||||
}
|
||||
virtual void Redo(){}
|
||||
void Redo() override{}
|
||||
|
||||
private:
|
||||
|
||||
@@ -109,7 +109,7 @@ public:
|
||||
, m_bAttach(bAttach)
|
||||
{}
|
||||
|
||||
virtual void Undo([[maybe_unused]] bool bUndo) override
|
||||
void Undo([[maybe_unused]] bool bUndo) override
|
||||
{
|
||||
if (!m_bAttach)
|
||||
{
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void Redo() override
|
||||
void Redo() override
|
||||
{
|
||||
if (m_bAttach)
|
||||
{
|
||||
@@ -138,8 +138,8 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
virtual int GetSize() { return sizeof(CUndoAttachEntity); }
|
||||
virtual QString GetDescription() { return "Attachment Changed"; }
|
||||
int GetSize() override { return sizeof(CUndoAttachEntity); }
|
||||
QString GetDescription() override { return "Attachment Changed"; }
|
||||
|
||||
GUID m_attachedEntityGUID;
|
||||
CEntityObject::EAttachmentType m_attachmentType;
|
||||
@@ -167,7 +167,7 @@ CEntityObject::CEntityObject()
|
||||
{
|
||||
m_bLoadFailed = false;
|
||||
|
||||
m_visualObject = 0;
|
||||
m_visualObject = nullptr;
|
||||
|
||||
m_box.min.Set(0, 0, 0);
|
||||
m_box.max.Set(0, 0, 0);
|
||||
@@ -225,7 +225,7 @@ CEntityObject::CEntityObject()
|
||||
mv_ratioLOD.SetLimits(0, 255);
|
||||
mv_viewDistanceMultiplier.SetLimits(0.0f, IRenderNode::VIEW_DISTANCE_MULTIPLIER_MAX);
|
||||
|
||||
m_physicsState = 0;
|
||||
m_physicsState = nullptr;
|
||||
|
||||
m_attachmentType = eAT_Pivot;
|
||||
|
||||
@@ -540,7 +540,7 @@ IVariable* CEntityObject::FindVariableInSubBlock(CVarBlockPtr& properties, IVari
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CEntityObject::AdjustLightProperties(CVarBlockPtr& properties, const char* pSubBlock)
|
||||
{
|
||||
IVariable* pSubBlockVar = pSubBlock ? properties->FindVariable(pSubBlock) : NULL;
|
||||
IVariable* pSubBlockVar = pSubBlock ? properties->FindVariable(pSubBlock) : nullptr;
|
||||
|
||||
if (IVariable* pRadius = FindVariableInSubBlock(properties, pSubBlockVar, "Radius"))
|
||||
{
|
||||
@@ -933,7 +933,7 @@ void CEntityObject::Serialize(CObjectArchive& ar)
|
||||
{
|
||||
XmlNodeRef eventTarget = eventTargets->getChild(i);
|
||||
CEntityEventTarget et;
|
||||
et.target = 0;
|
||||
et.target = nullptr;
|
||||
GUID targetId = GUID_NULL;
|
||||
eventTarget->getAttr("TargetId", targetId);
|
||||
eventTarget->getAttr("Event", et.event);
|
||||
@@ -1029,7 +1029,7 @@ void CEntityObject::Serialize(CObjectArchive& ar)
|
||||
{
|
||||
CEntityEventTarget& et = m_eventTargets[i];
|
||||
GUID targetId = GUID_NULL;
|
||||
if (et.target != 0)
|
||||
if (et.target != nullptr)
|
||||
{
|
||||
targetId = et.target->GetId();
|
||||
}
|
||||
@@ -1060,7 +1060,7 @@ XmlNodeRef CEntityObject::Export([[maybe_unused]] const QString& levelPath, XmlN
|
||||
{
|
||||
if (m_bLoadFailed)
|
||||
{
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Do not export entity with bad id.
|
||||
@@ -1268,7 +1268,7 @@ void CEntityObject::OnEvent(ObjectEvent event)
|
||||
IObjectManager* objMan = GetIEditor()->GetObjectManager();
|
||||
if (objMan && objMan->IsLightClass(this))
|
||||
{
|
||||
OnPropertyChange(NULL);
|
||||
OnPropertyChange(nullptr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1314,7 +1314,7 @@ IVariable* CEntityObject::GetLightVariable(const char* name0) const
|
||||
{
|
||||
IVariable* pChild = pLightProperties->GetVariable(i);
|
||||
|
||||
if (pChild == NULL)
|
||||
if (pChild == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1341,7 +1341,7 @@ QString CEntityObject::GetLightAnimation() const
|
||||
{
|
||||
IVariable* pChild = pStyleGroup->GetVariable(i);
|
||||
|
||||
if (pChild == NULL)
|
||||
if (pChild == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1617,7 +1617,7 @@ void CEntityObject::RemoveEventTarget(int index, [[maybe_unused]] bool bUpdateSc
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
int CEntityObject::AddEntityLink(const QString& name, GUID targetEntityId)
|
||||
{
|
||||
CEntityObject* target = 0;
|
||||
CEntityObject* target = nullptr;
|
||||
if (targetEntityId != GUID_NULL)
|
||||
{
|
||||
CBaseObject* pObject = FindObject(targetEntityId);
|
||||
@@ -1635,7 +1635,7 @@ int CEntityObject::AddEntityLink(const QString& name, GUID targetEntityId)
|
||||
|
||||
StoreUndo("Add EntityLink");
|
||||
|
||||
CLineGizmo* pLineGizmo = 0;
|
||||
CLineGizmo* pLineGizmo = nullptr;
|
||||
|
||||
// Assign event target.
|
||||
if (target)
|
||||
@@ -1968,7 +1968,7 @@ void CEntityObject::ResetCallbacks()
|
||||
|
||||
//@FIXME Hack to display radii of properties.
|
||||
// wires properties from param block, to this entity internal variables.
|
||||
IVariable* var = 0;
|
||||
IVariable* var = nullptr;
|
||||
var = pProperties->FindVariable("Radius", false);
|
||||
if (var && (var->GetType() == IVariable::FLOAT || var->GetType() == IVariable::INT))
|
||||
{
|
||||
@@ -2194,7 +2194,7 @@ template <typename T>
|
||||
T CEntityObject::GetEntityProperty(const char* pName, T defaultvalue) const
|
||||
{
|
||||
CVarBlock* pProperties = GetProperties2();
|
||||
IVariable* pVariable = NULL;
|
||||
IVariable* pVariable = nullptr;
|
||||
if (pProperties)
|
||||
{
|
||||
pVariable = pProperties->FindVariable(pName);
|
||||
@@ -2228,7 +2228,7 @@ template <typename T>
|
||||
void CEntityObject::SetEntityProperty(const char* pName, T value)
|
||||
{
|
||||
CVarBlock* pProperties = GetProperties2();
|
||||
IVariable* pVariable = NULL;
|
||||
IVariable* pVariable = nullptr;
|
||||
if (pProperties)
|
||||
{
|
||||
pVariable = pProperties->FindVariable(pName);
|
||||
|
||||
@@ -185,7 +185,7 @@ public:
|
||||
void RemoveAllEntityLinks();
|
||||
virtual void EntityLinked([[maybe_unused]] const QString& name, [[maybe_unused]] GUID targetEntityId){}
|
||||
virtual void EntityUnlinked([[maybe_unused]] const QString& name, [[maybe_unused]] GUID targetEntityId) {}
|
||||
void LoadLink(XmlNodeRef xmlNode, CObjectArchive* pArchive = NULL);
|
||||
void LoadLink(XmlNodeRef xmlNode, CObjectArchive* pArchive = nullptr);
|
||||
void SaveLink(XmlNodeRef xmlNode);
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
//! Set this gizmo to be deleted.
|
||||
void DeleteThis();
|
||||
|
||||
virtual CBaseObjectPtr GetBaseObject() const { return NULL; }
|
||||
virtual CBaseObjectPtr GetBaseObject() const { return nullptr; }
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
@@ -79,7 +79,7 @@ CGizmo* CGizmoManager::GetGizmoByIndex(int nIndex) const
|
||||
return *ii;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -37,8 +37,8 @@ CLineGizmo::~CLineGizmo()
|
||||
{
|
||||
m_object[1]->RemoveEventListener(this);
|
||||
}
|
||||
m_object[0] = 0;
|
||||
m_object[1] = 0;
|
||||
m_object[0] = nullptr;
|
||||
m_object[1] = nullptr;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -164,7 +164,7 @@ void CLineGizmo::SetName(const char* sName)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool CLineGizmo::HitTest([[maybe_unused]] HitContext& hc)
|
||||
{
|
||||
return 0;
|
||||
return false;
|
||||
/*
|
||||
if (hc.distanceTollerance != 0)
|
||||
return 0;
|
||||
|
||||
@@ -28,8 +28,8 @@ CObjectArchive::CObjectArchive(IObjectManager* objMan, XmlNodeRef xmlRoot, bool
|
||||
m_nFlags = 0;
|
||||
node = xmlRoot;
|
||||
m_pCurrentErrorReport = GetIEditor()->GetErrorReport();
|
||||
m_pGeometryPak = NULL;
|
||||
m_pCurrentObject = NULL;
|
||||
m_pGeometryPak = nullptr;
|
||||
m_pCurrentObject = nullptr;
|
||||
m_bNeedResolveObjects = false;
|
||||
m_bProgressBarEnabled = true;
|
||||
}
|
||||
@@ -145,7 +145,7 @@ void CObjectArchive::ResolveObjects()
|
||||
// Objects can be added to the list here (from Groups).
|
||||
numObj = m_loadedObjects.size();
|
||||
}
|
||||
m_pCurrentErrorReport->SetCurrentValidatorObject(NULL);
|
||||
m_pCurrentErrorReport->SetCurrentValidatorObject(nullptr);
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
GetIEditor()->ResumeUndo();
|
||||
}
|
||||
@@ -238,7 +238,7 @@ void CObjectArchive::ResolveObjects()
|
||||
// might generate unrelated errors
|
||||
m_pCurrentErrorReport->SetCurrentValidatorObject(nullptr);
|
||||
}
|
||||
m_pCurrentErrorReport->SetCurrentValidatorObject(NULL);
|
||||
m_pCurrentErrorReport->SetCurrentValidatorObject(nullptr);
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -257,7 +257,7 @@ void CObjectArchive::ResolveObjects()
|
||||
}
|
||||
|
||||
m_bNeedResolveObjects = false;
|
||||
m_pCurrentErrorReport->SetCurrentValidatorObject(NULL);
|
||||
m_pCurrentErrorReport->SetCurrentValidatorObject(nullptr);
|
||||
m_sequenceIdRemap.clear();
|
||||
m_pendingIds.clear();
|
||||
}
|
||||
@@ -314,7 +314,7 @@ void CObjectArchive::LoadObjects(XmlNodeRef& rootObjectsNode)
|
||||
for (int i = 0; i < numObjects; i++)
|
||||
{
|
||||
XmlNodeRef objNode = rootObjectsNode->getChild(i);
|
||||
LoadObject(objNode, NULL);
|
||||
LoadObject(objNode, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,7 +401,7 @@ void CObjectArchive::AddSequenceIdMapping(uint32 oldId, uint32 newId)
|
||||
{
|
||||
assert(oldId != newId);
|
||||
assert(GetIEditor()->GetMovieSystem()->FindSequenceById(oldId) || stl::find(m_pendingIds, oldId));
|
||||
assert(GetIEditor()->GetMovieSystem()->FindSequenceById(newId) == NULL);
|
||||
assert(GetIEditor()->GetMovieSystem()->FindSequenceById(newId) == nullptr);
|
||||
assert(stl::find(m_pendingIds, newId) == false);
|
||||
m_sequenceIdRemap[oldId] = newId;
|
||||
m_pendingIds.push_back(newId);
|
||||
|
||||
@@ -69,7 +69,7 @@ AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING
|
||||
void LoadObjects(XmlNodeRef& rootObjectsNode);
|
||||
|
||||
//! Load one object from archive.
|
||||
CBaseObject* LoadObject(const XmlNodeRef& objNode, CBaseObject* pPrevObject = NULL);
|
||||
CBaseObject* LoadObject(const XmlNodeRef& objNode, CBaseObject* pPrevObject = nullptr);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
int GetLoadedObjectsCount() { return static_cast<int>(m_loadedObjects.size()); }
|
||||
|
||||
@@ -32,7 +32,11 @@
|
||||
#include <AzCore/Console/Console.h>
|
||||
|
||||
AZ_CVAR_EXTERNED(bool, ed_visibility_logTiming);
|
||||
AZ_CVAR_EXTERNED(bool, ed_visibility_use);
|
||||
|
||||
AZ_CVAR(
|
||||
bool, ed_visibility_use, true, nullptr, AZ::ConsoleFunctorFlags::Null,
|
||||
"Enable/disable using the new IVisibilitySystem for Entity visibility determination");
|
||||
|
||||
|
||||
/*!
|
||||
* Class Description used for object templates.
|
||||
@@ -49,16 +53,16 @@ public:
|
||||
GUID guid;
|
||||
|
||||
public:
|
||||
REFGUID ClassID()
|
||||
REFGUID ClassID() override
|
||||
{
|
||||
return guid;
|
||||
}
|
||||
ObjectType GetObjectType() { return superType->GetObjectType(); };
|
||||
QString ClassName() { return type; };
|
||||
QString Category() { return category; };
|
||||
ObjectType GetObjectType() override { return superType->GetObjectType(); };
|
||||
QString ClassName() override { return type; };
|
||||
QString Category() override { return category; };
|
||||
QObject* CreateQObject() const override { return superType->CreateQObject(); }
|
||||
QString GetTextureIcon() { return superType->GetTextureIcon(); };
|
||||
QString GetFileSpec()
|
||||
QString GetTextureIcon() override { return superType->GetTextureIcon(); };
|
||||
QString GetFileSpec() override
|
||||
{
|
||||
if (!fileSpec.isEmpty())
|
||||
{
|
||||
@@ -69,7 +73,7 @@ public:
|
||||
return superType->GetFileSpec();
|
||||
}
|
||||
};
|
||||
virtual int GameCreationOrder() { return superType->GameCreationOrder(); };
|
||||
int GameCreationOrder() override { return superType->GameCreationOrder(); };
|
||||
};
|
||||
|
||||
void CBaseObjectsCache::AddObject(CBaseObject* object)
|
||||
@@ -86,7 +90,7 @@ void CBaseObjectsCache::AddObject(CBaseObject* object)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// CObjectManager implementation.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CObjectManager* g_pObjectManager = 0;
|
||||
CObjectManager* g_pObjectManager = nullptr;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CObjectManager::CObjectManager()
|
||||
@@ -182,19 +186,19 @@ CBaseObject* CObjectManager::NewObject(CObjectClassDesc* cls, CBaseObject* prev,
|
||||
|
||||
if (!AddObject(obj))
|
||||
{
|
||||
obj = 0;
|
||||
obj = nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
obj = 0;
|
||||
obj = nullptr;
|
||||
}
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(NULL);
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(nullptr);
|
||||
}
|
||||
|
||||
GetIEditor()->ResumeUndo();
|
||||
|
||||
if (obj != 0 && GetIEditor()->IsUndoRecording())
|
||||
if (obj != nullptr && GetIEditor()->IsUndoRecording())
|
||||
{
|
||||
// AZ entity creations are handled through the AZ undo system.
|
||||
if (obj->GetType() != OBJTYPE_AZENTITY)
|
||||
@@ -228,7 +232,7 @@ CBaseObject* CObjectManager::NewObject(CObjectArchive& ar, CBaseObject* pUndoObj
|
||||
|
||||
if (!objNode->getAttr("Type", typeName))
|
||||
{
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!objNode->getAttr("Id", id))
|
||||
@@ -268,7 +272,7 @@ CBaseObject* CObjectManager::NewObject(CObjectArchive& ar, CBaseObject* pUndoObj
|
||||
if (!cls)
|
||||
{
|
||||
CryWarning(VALIDATOR_MODULE_EDITOR, VALIDATOR_ERROR, "RuntimeClass %s not registered", typeName.toUtf8().data());
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
pObject = qobject_cast<CBaseObject*>(cls->CreateQObject());
|
||||
@@ -301,29 +305,29 @@ CBaseObject* CObjectManager::NewObject(CObjectArchive& ar, CBaseObject* pUndoObj
|
||||
GetIEditor()->GetErrorReport()->ReportError(errorRecord);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
//CoCreateGuid( &pObject->m_guid ); // generate uniq GUID for this object.
|
||||
}
|
||||
}
|
||||
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(pObject);
|
||||
if (!pObject->Init(GetIEditor(), 0, ""))
|
||||
if (!pObject->Init(GetIEditor(), nullptr, ""))
|
||||
{
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(NULL);
|
||||
return 0;
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(nullptr);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!AddObject(pObject))
|
||||
{
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(NULL);
|
||||
return 0;
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(nullptr);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//pObject->Serialize( ar );
|
||||
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(NULL);
|
||||
GetIEditor()->GetErrorReport()->SetCurrentValidatorObject(nullptr);
|
||||
|
||||
if (pObject != 0 && pUndoObject == 0)
|
||||
if (pObject != nullptr && pUndoObject == nullptr)
|
||||
{
|
||||
// If new object with no undo, record it.
|
||||
if (CUndo::IsRecording())
|
||||
@@ -355,7 +359,7 @@ CBaseObject* CObjectManager::NewObject(const QString& typeName, CBaseObject* pre
|
||||
if (!cls)
|
||||
{
|
||||
GetIEditor()->GetSystem()->GetILog()->Log("Warning: RuntimeClass %s (as well as %s) not registered", typeName.toUtf8().data(), fullName.toUtf8().data());
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
CBaseObject* pObject = NewObject(cls, prev, file, newObjectName);
|
||||
return pObject;
|
||||
@@ -411,7 +415,7 @@ void CObjectManager::DeleteObject(CBaseObject* obj)
|
||||
void CObjectManager::DeleteSelection(CSelectionGroup* pSelection)
|
||||
{
|
||||
AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::Editor);
|
||||
if (pSelection == NULL)
|
||||
if (pSelection == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -527,7 +531,7 @@ CBaseObject* CObjectManager::CloneObject(CBaseObject* obj)
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CBaseObject* CObjectManager::FindObject(REFGUID guid) const
|
||||
{
|
||||
CBaseObject* result = stl::find_in_map(m_objects, guid, (CBaseObject*)0);
|
||||
CBaseObject* result = stl::find_in_map(m_objects, guid, (CBaseObject*)nullptr);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -603,7 +607,7 @@ void CObjectManager::FindObjectsInAABB(const AABB& aabb, std::vector<CBaseObject
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool CObjectManager::AddObject(CBaseObject* obj)
|
||||
{
|
||||
CBaseObjectPtr p = stl::find_in_map(m_objects, obj->GetId(), 0);
|
||||
CBaseObjectPtr p = stl::find_in_map(m_objects, obj->GetId(), nullptr);
|
||||
if (p)
|
||||
{
|
||||
CErrorRecord err;
|
||||
@@ -908,7 +912,7 @@ void CObjectManager::UnfreezeAll()
|
||||
bool CObjectManager::SelectObject(CBaseObject* obj, bool bUseMask)
|
||||
{
|
||||
assert(obj);
|
||||
if (obj == NULL)
|
||||
if (obj == nullptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -974,7 +978,7 @@ void CObjectManager::UnselectObject(CBaseObject* obj)
|
||||
|
||||
CSelectionGroup* CObjectManager::GetSelection(const QString& name) const
|
||||
{
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)0);
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)nullptr);
|
||||
return selection;
|
||||
}
|
||||
|
||||
@@ -993,7 +997,7 @@ void CObjectManager::NameSelection(const QString& name)
|
||||
return;
|
||||
}
|
||||
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)0);
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)nullptr);
|
||||
if (selection)
|
||||
{
|
||||
assert(selection != 0);
|
||||
@@ -1020,7 +1024,7 @@ void CObjectManager::SerializeNameSelection(XmlNodeRef& rootNode, bool bLoading)
|
||||
return;
|
||||
}
|
||||
|
||||
_smart_ptr<CSelectionGroup> tmpGroup(0);
|
||||
_smart_ptr<CSelectionGroup> tmpGroup(nullptr);
|
||||
|
||||
QString selRootStr("NameSelection");
|
||||
QString selNodeStr("NameSelectionNode");
|
||||
@@ -1075,7 +1079,7 @@ void CObjectManager::SerializeNameSelection(XmlNodeRef& rootNode, bool bLoading)
|
||||
else
|
||||
{
|
||||
startNode = rootNode->newChild(selRootStr.toUtf8().data());
|
||||
CSelectionGroup* objSelection = 0;
|
||||
CSelectionGroup* objSelection = nullptr;
|
||||
|
||||
for (TNameSelectionMap::iterator it = m_selections.begin(); it != m_selections.end(); ++it)
|
||||
{
|
||||
@@ -1186,7 +1190,7 @@ int CObjectManager::InvertSelection()
|
||||
void CObjectManager::SetSelection(const QString& name)
|
||||
{
|
||||
AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::Editor);
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)0);
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)nullptr);
|
||||
if (selection)
|
||||
{
|
||||
UnselectCurrent();
|
||||
@@ -1201,7 +1205,7 @@ void CObjectManager::RemoveSelection(const QString& name)
|
||||
AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::Editor);
|
||||
|
||||
QString selName = name;
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)0);
|
||||
CSelectionGroup* selection = stl::find_in_map(m_selections, name, (CSelectionGroup*)nullptr);
|
||||
if (selection)
|
||||
{
|
||||
if (selection == m_currSelection)
|
||||
@@ -1327,7 +1331,6 @@ void CObjectManager::FindDisplayableObjects(DisplayContext& dc, [[maybe_unused]]
|
||||
|
||||
pDispayedViewObjects->SetSerialNumber(m_visibilitySerialNumber); // update viewport to be latest serial number
|
||||
|
||||
const CCamera& camera = GetIEditor()->GetSystem()->GetViewCamera();
|
||||
AABB bbox;
|
||||
bbox.min.zero();
|
||||
bbox.max.zero();
|
||||
@@ -1359,7 +1362,7 @@ void CObjectManager::FindDisplayableObjects(DisplayContext& dc, [[maybe_unused]]
|
||||
for (int i = 0, iCount(pSelection->GetCount()); i < iCount; ++i)
|
||||
{
|
||||
CBaseObject* pObj(pSelection->GetObject(i));
|
||||
if (pObj == NULL)
|
||||
if (pObj == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1376,11 +1379,9 @@ void CObjectManager::FindDisplayableObjects(DisplayContext& dc, [[maybe_unused]]
|
||||
{
|
||||
CBaseObject* obj = m_visibleObjects[i];
|
||||
|
||||
if (obj && obj->IsInCameraView(camera))
|
||||
if (obj)
|
||||
{
|
||||
// Check if object is too far.
|
||||
float visRatio = obj->GetCameraVisRatio(camera);
|
||||
if (visRatio > m_maxObjectViewDistRatio || (dc.flags & DISPLAY_SELECTION_HELPERS) || obj->IsSelected())
|
||||
if ((dc.flags & DISPLAY_SELECTION_HELPERS) || obj->IsSelected())
|
||||
{
|
||||
pDispayedViewObjects->AddObject(obj);
|
||||
}
|
||||
@@ -1443,7 +1444,7 @@ void CObjectManager::BeginEditParams(CBaseObject* obj, int flags)
|
||||
void CObjectManager::EndEditParams([[maybe_unused]] int flags)
|
||||
{
|
||||
m_bSingleSelection = false;
|
||||
m_currEditObject = 0;
|
||||
m_currEditObject = nullptr;
|
||||
//m_bSelectionChanged = false; // don't need to clear for ungroup
|
||||
}
|
||||
|
||||
@@ -1657,7 +1658,7 @@ bool CObjectManager::HitTest(HitContext& hitInfo)
|
||||
HitContext hcOrg = hitInfo;
|
||||
if (hcOrg.view)
|
||||
{
|
||||
hcOrg.view->GetPerpendicularAxis(0, &hcOrg.b2DViewport);
|
||||
hcOrg.view->GetPerpendicularAxis(nullptr, &hcOrg.b2DViewport);
|
||||
}
|
||||
hcOrg.rayDir = hcOrg.rayDir.GetNormalized();
|
||||
|
||||
@@ -1692,7 +1693,7 @@ bool CObjectManager::HitTest(HitContext& hitInfo)
|
||||
|
||||
const bool iconsPrioritized = true; // Force icons to always be prioritized over other things you hit. Can change to be a configurable option in the future.
|
||||
|
||||
CBaseObject* selected = 0;
|
||||
CBaseObject* selected = nullptr;
|
||||
const char* name = nullptr;
|
||||
bool iconHit = false;
|
||||
int numVis = pDispayedViewObjects->GetObjectCount();
|
||||
@@ -1993,11 +1994,11 @@ bool CObjectManager::EnableUniqObjectNames(bool bEnable)
|
||||
CObjectClassDesc* CObjectManager::FindClass(const QString& className)
|
||||
{
|
||||
IClassDesc* cls = CClassFactory::Instance()->FindClass(className.toUtf8().data());
|
||||
if (cls != NULL && cls->SystemClassID() == ESYSTEM_CLASS_OBJECT)
|
||||
if (cls != nullptr && cls->SystemClassID() == ESYSTEM_CLASS_OBJECT)
|
||||
{
|
||||
return (CObjectClassDesc*)cls;
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -2101,7 +2102,7 @@ void CObjectManager::LoadClassTemplates(const QString& path)
|
||||
{
|
||||
// Construct the full filepath of the current file
|
||||
XmlNodeRef node = XmlHelpers::LoadXmlFromFile((dir + files[k].filename).toUtf8().data());
|
||||
if (node != 0 && node->isTag("ObjectTemplates"))
|
||||
if (node != nullptr && node->isTag("ObjectTemplates"))
|
||||
{
|
||||
QString name;
|
||||
for (int i = 0; i < node->getChildCount(); i++)
|
||||
@@ -2449,7 +2450,7 @@ void CObjectManager::EndObjectsLoading()
|
||||
{
|
||||
delete m_pLoadProgress;
|
||||
}
|
||||
m_pLoadProgress = 0;
|
||||
m_pLoadProgress = nullptr;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -2481,20 +2482,20 @@ bool CObjectManager::IsLightClass(CBaseObject* pObject)
|
||||
{
|
||||
if (pEntity->GetEntityClass().compare(CLASS_LIGHT) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
if (pEntity->GetEntityClass().compare(CLASS_RIGIDBODY_LIGHT) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
if (pEntity->GetEntityClass().compare(CLASS_DESTROYABLE_LIGHT) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
|
||||
void CObjectManager::FindAndRenameProperty2(const char* property2Name, const QString& oldValue, const QString& newValue)
|
||||
|
||||
@@ -636,7 +636,7 @@ void CSelectionGroup::FinishChanges()
|
||||
for (int i = 0; i < iObjectSize; ++i)
|
||||
{
|
||||
CBaseObject* pObject = selectedObjects[i];
|
||||
if (pObject == NULL)
|
||||
if (pObject == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace {
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CTrackGizmo::CTrackGizmo()
|
||||
{
|
||||
m_pAnimNode = 0;
|
||||
m_pAnimNode = nullptr;
|
||||
|
||||
m_worldBbox.min = Vec3(-10000, -10000, -10000);
|
||||
m_worldBbox.max = Vec3(10000, 10000, 10000);
|
||||
|
||||
@@ -13,3 +13,27 @@ set_target_properties(Editor PROPERTIES
|
||||
RESOURCE ${CMAKE_CURRENT_LIST_DIR}/Images.xcassets
|
||||
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME EditorAppIcon
|
||||
)
|
||||
|
||||
# We cannot use ly_add_target here because we're already including this file from inside ly_add_target
|
||||
# So we need to setup target, dependencies and install logic manually.
|
||||
add_executable(EditorDummy Platform/Mac/main_dummy.cpp)
|
||||
add_executable(AZ::EditorDummy ALIAS EditorDummy)
|
||||
|
||||
ly_target_link_libraries(EditorDummy
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
AZ::AzFramework)
|
||||
|
||||
ly_add_dependencies(Editor EditorDummy)
|
||||
|
||||
# Store the aliased target into a DIRECTORY property
|
||||
set_property(DIRECTORY APPEND PROPERTY LY_DIRECTORY_TARGETS AZ::EditorDummy)
|
||||
|
||||
# Store the directory path in a GLOBAL property so that it can be accessed
|
||||
# in the layout install logic. Skip if the directory has already been added
|
||||
get_property(ly_all_target_directories GLOBAL PROPERTY LY_ALL_TARGET_DIRECTORIES)
|
||||
if(NOT CMAKE_CURRENT_SOURCE_DIR IN_LIST ly_all_target_directories)
|
||||
set_property(GLOBAL APPEND PROPERTY LY_ALL_TARGET_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
endif()
|
||||
|
||||
ly_install_add_install_path_setreg(Editor)
|
||||
@@ -3,7 +3,7 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Editor</string>
|
||||
<string>EditorDummy</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.O3DE.Editor</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzCore/Component/ComponentApplication.h>
|
||||
#include <AzCore/Memory/SystemAllocator.h>
|
||||
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
|
||||
#include <AzCore/Utils/Utils.h>
|
||||
#include <AzFramework/Process/ProcessWatcher.h>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
// Create a ComponentApplication to initialize the AZ::SystemAllocator and initialize the SettingsRegistry
|
||||
AZ::ComponentApplication::Descriptor desc;
|
||||
AZ::ComponentApplication application;
|
||||
application.Create(desc);
|
||||
|
||||
AZStd::vector<AZStd::string> envVars;
|
||||
|
||||
const char* homePath = std::getenv("HOME");
|
||||
envVars.push_back(AZStd::string::format("HOME=%s", homePath));
|
||||
|
||||
if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr)
|
||||
{
|
||||
const char* dyldLibPathOrig = std::getenv("DYLD_LIBRARY_PATH");
|
||||
AZStd::string dyldSearchPath = AZStd::string::format("DYLD_LIBRARY_PATH=%s", dyldLibPathOrig);
|
||||
if (AZ::IO::FixedMaxPath projectModulePath;
|
||||
settingsRegistry->Get(projectModulePath.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_ProjectConfigurationBinPath))
|
||||
{
|
||||
dyldSearchPath.append(":");
|
||||
dyldSearchPath.append(projectModulePath.c_str());
|
||||
}
|
||||
|
||||
if (AZ::IO::FixedMaxPath installedBinariesFolder;
|
||||
settingsRegistry->Get(installedBinariesFolder.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_InstalledBinaryFolder))
|
||||
{
|
||||
if (AZ::IO::FixedMaxPath engineRootFolder;
|
||||
settingsRegistry->Get(engineRootFolder.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_EngineRootFolder))
|
||||
{
|
||||
installedBinariesFolder = engineRootFolder / installedBinariesFolder;
|
||||
dyldSearchPath.append(":");
|
||||
dyldSearchPath.append(installedBinariesFolder.c_str());
|
||||
}
|
||||
}
|
||||
envVars.push_back(dyldSearchPath);
|
||||
}
|
||||
|
||||
AZStd::string commandArgs;
|
||||
for (int i = 1; i < argc; i++)
|
||||
{
|
||||
commandArgs.append(argv[i]);
|
||||
commandArgs.append(" ");
|
||||
}
|
||||
|
||||
AzFramework::ProcessLauncher::ProcessLaunchInfo processLaunchInfo;
|
||||
AZ::IO::Path processPath{ AZ::IO::PathView(AZ::Utils::GetExecutableDirectory()) };
|
||||
processPath /= "Editor";
|
||||
processLaunchInfo.m_processExecutableString = AZStd::move(processPath.Native());
|
||||
processLaunchInfo.m_commandlineParameters = commandArgs;
|
||||
processLaunchInfo.m_environmentVariables = &envVars;
|
||||
processLaunchInfo.m_showWindow = true;
|
||||
|
||||
AzFramework::ProcessWatcher* processWatcher = AzFramework::ProcessWatcher::LaunchProcess(processLaunchInfo, AzFramework::ProcessCommunicationType::COMMUNICATOR_TYPE_NONE);
|
||||
|
||||
application.Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ bool CMailer::SendMail(const char* subject,
|
||||
GetCurrentDirectoryW(sizeof(dir), dir);
|
||||
|
||||
// Load MAPI dll
|
||||
HMODULE hMAPILib = LoadLibraryA("MAPI32.DLL");
|
||||
HMODULE hMAPILib = LoadLibraryW(L"MAPI32.DLL");
|
||||
LPMAPISENDMAIL lpfnMAPISendMail = (LPMAPISENDMAIL) GetProcAddress(hMAPILib, "MAPISendMail");
|
||||
|
||||
int numRecipients = (int)_recipients.size();
|
||||
@@ -51,8 +51,8 @@ bool CMailer::SendMail(const char* subject,
|
||||
attachments[i].flFlags = 0;
|
||||
attachments[i].nPosition = (ULONG)-1;
|
||||
attachments[i].lpszPathName = (char*)(const char*)_attachments[k];
|
||||
attachments[i].lpszFileName = NULL;
|
||||
attachments[i].lpFileType = NULL;
|
||||
attachments[i].lpszFileName = nullptr;
|
||||
attachments[i].lpFileType = nullptr;
|
||||
i++;
|
||||
}
|
||||
int numAttachments = i;
|
||||
@@ -60,11 +60,11 @@ bool CMailer::SendMail(const char* subject,
|
||||
// Handle Recipients
|
||||
MapiRecipDesc* recipients = new MapiRecipDesc[numRecipients];
|
||||
|
||||
std::vector<string> addresses;
|
||||
std::vector<AZStd::string> addresses;
|
||||
addresses.resize(numRecipients);
|
||||
for (i = 0; i < numRecipients; i++)
|
||||
{
|
||||
addresses[i] = string("SMTP:") + _recipients[i];
|
||||
addresses[i] = AZStd::string("SMTP:") + _recipients[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < numRecipients; i++)
|
||||
@@ -74,14 +74,14 @@ bool CMailer::SendMail(const char* subject,
|
||||
recipients[i].lpszName = (char*)(const char*)_recipients[i];
|
||||
recipients[i].lpszAddress = (char*)addresses[i].c_str();
|
||||
recipients[i].ulEIDSize = 0;
|
||||
recipients[i].lpEntryID = NULL;
|
||||
recipients[i].lpEntryID = nullptr;
|
||||
}
|
||||
|
||||
MapiMessage message;
|
||||
memset(&message, 0, sizeof(message));
|
||||
message.lpszSubject = (char*)(const char*)subject;
|
||||
message.lpszNoteText = (char*)(const char*)messageBody;
|
||||
message.lpszMessageType = NULL;
|
||||
message.lpszMessageType = nullptr;
|
||||
|
||||
message.nRecipCount = numRecipients;
|
||||
message.lpRecips = recipients;
|
||||
|
||||
@@ -17,9 +17,8 @@
|
||||
// Editor
|
||||
#include "Include/IPlugin.h"
|
||||
|
||||
|
||||
using TPfnCreatePluginInstance = IPlugin *(*)(PLUGIN_INIT_PARAM *pInitParam);
|
||||
using TPfnQueryPluginSettings = void (*)(SPluginSettings &);
|
||||
using TPfnCreatePluginInstance = IPlugin* (*)(PLUGIN_INIT_PARAM* pInitParam);
|
||||
using TPfnQueryPluginSettings = void (*)(SPluginSettings&);
|
||||
|
||||
CPluginManager::CPluginManager()
|
||||
{
|
||||
@@ -126,8 +125,8 @@ namespace
|
||||
|
||||
bool CPluginManager::LoadPlugins(const char* pPathWithMask)
|
||||
{
|
||||
QString strPath = QtUtil::ToQString(PathUtil::GetPath(pPathWithMask));
|
||||
QString strMask = QString::fromUtf8(PathUtil::GetFile(pPathWithMask));
|
||||
QString strPath = PathUtil::GetPath(pPathWithMask).c_str();
|
||||
QString strMask = PathUtil::GetFile(pPathWithMask);
|
||||
|
||||
CLogFile::WriteLine("[Plugin Manager] Loading plugins...");
|
||||
|
||||
@@ -155,7 +154,7 @@ bool CPluginManager::LoadPlugins(const char* pPathWithMask)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (plugins.size() == 0)
|
||||
if (plugins.empty())
|
||||
{
|
||||
CLogFile::FormatLine("[Plugin Manager] Cannot find any plugins in plugin directory '%s'", strPath.toUtf8().data());
|
||||
return false;
|
||||
@@ -269,13 +268,13 @@ void CPluginManager::RegisterPlugin(QLibrary* dllHandle, IPlugin* pPlugin)
|
||||
|
||||
IPlugin* CPluginManager::GetPluginByGUID(const char* pGUID)
|
||||
{
|
||||
for (auto it = m_plugins.begin(); it != m_plugins.end(); ++it)
|
||||
for (const SPluginEntry& pluginEntry : m_plugins)
|
||||
{
|
||||
const char* pPluginGuid = it->pPlugin->GetPluginGUID();
|
||||
const char* pPluginGuid = pluginEntry.pPlugin->GetPluginGUID();
|
||||
|
||||
if (pPluginGuid && !strcmp(pPluginGuid, pGUID))
|
||||
{
|
||||
return it->pPlugin;
|
||||
return pluginEntry.pPlugin;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,14 +331,11 @@ IUIEvent* CPluginManager::GetEventByIDAndPluginID(uint8 aPluginID, uint8 aEventI
|
||||
|
||||
bool CPluginManager::CanAllPluginsExitNow()
|
||||
{
|
||||
for (auto it = m_plugins.begin(); it != m_plugins.end(); ++it)
|
||||
for (const SPluginEntry& pluginEntry : m_plugins)
|
||||
{
|
||||
if (it->pPlugin)
|
||||
if (pluginEntry.pPlugin && !pluginEntry.pPlugin->CanExitNow())
|
||||
{
|
||||
if (!it->pPlugin->CanExitNow())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
#include <Editor/Util/PathUtil.h>
|
||||
#include <IResourceSelectorHost.h>
|
||||
#include "CryEdit.h"
|
||||
#include "Undo/Undo.h"
|
||||
|
||||
#include <QMenu>
|
||||
#include <QAction>
|
||||
@@ -1815,7 +1816,7 @@ void SandboxIntegrationManager::ContextMenu_PushEntitiesToSlice(AzToolsFramework
|
||||
(void)targetAncestorId;
|
||||
(void)affectEntireHierarchy;
|
||||
|
||||
AZ::SerializeContext* serializeContext = NULL;
|
||||
AZ::SerializeContext* serializeContext = nullptr;
|
||||
EBUS_EVENT_RESULT(serializeContext, AZ::ComponentApplicationBus, GetSerializeContext);
|
||||
AZ_Assert(serializeContext, "No serialize context");
|
||||
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ void ComponentPaletteWindow::Init()
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
layout->setSpacing(0);
|
||||
|
||||
QHBoxLayout* gridLayout = new QHBoxLayout(NULL);
|
||||
QHBoxLayout* gridLayout = new QHBoxLayout(nullptr);
|
||||
gridLayout->setSizeConstraint(QLayout::SetMaximumSize);
|
||||
gridLayout->setContentsMargins(0, 0, 0, 0);
|
||||
gridLayout->setSpacing(0);
|
||||
|
||||
@@ -41,7 +41,7 @@ public:
|
||||
return m_editor;
|
||||
}
|
||||
|
||||
const string& GetToolName() const
|
||||
const AZStd::string& GetToolName() const
|
||||
{
|
||||
return m_toolName;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ private:
|
||||
IEditor* const m_editor;
|
||||
|
||||
// Tool name
|
||||
string m_toolName;
|
||||
AZStd::string m_toolName;
|
||||
|
||||
// Context provider for the Asset Browser
|
||||
AZ::AssetBrowserContextProvider m_assetBrowserContextProvider;
|
||||
|
||||
@@ -30,13 +30,13 @@ class CDockWidgetTitleButton
|
||||
public:
|
||||
CDockWidgetTitleButton(QWidget* parent);
|
||||
|
||||
QSize sizeHint() const;
|
||||
QSize minimumSizeHint() const { return sizeHint(); }
|
||||
QSize sizeHint() const override;
|
||||
QSize minimumSizeHint() const override { return sizeHint(); }
|
||||
|
||||
protected:
|
||||
void enterEvent(QEvent* ev);
|
||||
void leaveEvent(QEvent* ev);
|
||||
void paintEvent(QPaintEvent* ev);
|
||||
void enterEvent(QEvent* ev) override;
|
||||
void leaveEvent(QEvent* ev) override;
|
||||
void paintEvent(QPaintEvent* ev) override;
|
||||
};
|
||||
|
||||
class CTitleBarText
|
||||
@@ -85,10 +85,10 @@ QSize CDockWidgetTitleButton::sizeHint() const
|
||||
{
|
||||
ensurePolished();
|
||||
|
||||
int size = 2 * style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin, 0, this);
|
||||
int size = 2 * style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin, nullptr, this);
|
||||
if (!icon().isNull())
|
||||
{
|
||||
int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
|
||||
int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this);
|
||||
QSize sz = icon().actualSize(QSize(iconSize, iconSize));
|
||||
size += qMax(sz.width(), sz.height());
|
||||
}
|
||||
@@ -145,7 +145,7 @@ void CDockWidgetTitleButton::paintEvent([[maybe_unused]] QPaintEvent* ev)
|
||||
opt.activeSubControls = QStyle::SubControls();
|
||||
opt.features = QStyleOptionToolButton::None;
|
||||
opt.arrowType = Qt::NoArrow;
|
||||
int size = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
|
||||
int size = style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this);
|
||||
opt.iconSize = QSize(size, size);
|
||||
style()->drawComplexControl(QStyle::CC_ToolButton, &opt, &painter, this);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <QPainter>
|
||||
#include <QPalette>
|
||||
#include <AzCore/Casting/numeric_cast.h>
|
||||
#include <AzCore/std/algorithm.h>
|
||||
|
||||
namespace DrawingPrimitives
|
||||
{
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
|
||||
|
||||
#include "FFMPEGPlugin.h"
|
||||
#include "CryString.h"
|
||||
typedef CryStringT<char> string;
|
||||
#include "Include/ICommandManager.h"
|
||||
#include "Util/PathUtil.h"
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ PLUGIN_API IPlugin* CreatePluginInstance(PLUGIN_INIT_PARAM* pInitParam)
|
||||
if (pInitParam->pluginVersion != SANDBOX_PLUGIN_SYSTEM_VERSION)
|
||||
{
|
||||
pInitParam->outErrorCode = IPlugin::eError_VersionMismatch;
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ModuleInitISystem(GetIEditor()->GetSystem(), "FFMPEGPlugin");
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "CryFile.h"
|
||||
#include "PerforceSourceControl.h"
|
||||
#include "PasswordDlg.h"
|
||||
#include <CryCommon/CryThread.h>
|
||||
|
||||
#include <QSettings>
|
||||
#include <QDir>
|
||||
|
||||
@@ -165,8 +165,8 @@ namespace ProjectSettingsTool
|
||||
if (editContext)
|
||||
{
|
||||
editContext->Class<AndroidSplashscreens>("Splashscreens", "All splashscreen overrides for Android.")
|
||||
->DataElement(0, &AndroidSplashscreens::m_landscapeSplashscreens)
|
||||
->DataElement(0, &AndroidSplashscreens::m_portraitSplashscreens)
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &AndroidSplashscreens::m_landscapeSplashscreens)
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &AndroidSplashscreens::m_portraitSplashscreens)
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "ProjectSettingsContainer.h"
|
||||
|
||||
#include <AzCore/IO/SystemFile.h>
|
||||
#include <AzCore/JSON/prettywriter.h>
|
||||
#include <AzCore/JSON/stringbuffer.h>
|
||||
#include <AzCore/XML/rapidxml_print.h>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
namespace
|
||||
{
|
||||
typedef ProjectSettingsTool::FunctorValidator::ReturnType RetType;
|
||||
using RetType = ProjectSettingsTool::FunctorValidator::ReturnType;
|
||||
|
||||
static const int noMaxLength = -1;
|
||||
static const int maxIosVersionLength = 18;
|
||||
|
||||
@@ -41,7 +41,7 @@ void LoadPSApi()
|
||||
{
|
||||
if (!g_hPSAPI)
|
||||
{
|
||||
g_hPSAPI = LoadLibraryA("psapi.dll");
|
||||
g_hPSAPI = LoadLibraryW(L"psapi.dll");
|
||||
|
||||
if (g_hPSAPI)
|
||||
{
|
||||
|
||||
+1
-26
@@ -10,9 +10,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
#include <CryString.h>
|
||||
#include "UnicodeFunctions.h"
|
||||
#include <StlUtils.h>
|
||||
#include <CryCommon/StlUtils.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDropEvent>
|
||||
@@ -37,29 +35,6 @@ public:
|
||||
|
||||
namespace QtUtil
|
||||
{
|
||||
// From QString to CryString
|
||||
inline CryStringT<char> ToString(const QString& str)
|
||||
{
|
||||
return Unicode::Convert<CryStringT<char> >(str);
|
||||
}
|
||||
|
||||
// From CryString to QString
|
||||
inline QString ToQString(const CryStringT<char>& str)
|
||||
{
|
||||
return Unicode::Convert<QString>(str);
|
||||
}
|
||||
|
||||
// From const char * to QString
|
||||
inline QString ToQString(const char* str, size_t len = -1)
|
||||
{
|
||||
if (len == -1)
|
||||
{
|
||||
len = strlen(str);
|
||||
}
|
||||
return Unicode::Convert<QString>(str, str + len);
|
||||
}
|
||||
|
||||
// Replacement for CString::trimRight()
|
||||
inline QString trimRight(const QString& str)
|
||||
{
|
||||
// We prepend a char, so that the left doesn't get trimmed, then we remove it after trimming
|
||||
|
||||
@@ -68,12 +68,12 @@ void CQuickAccessBar::OnInitDialog()
|
||||
|
||||
// Add console variables & commands.
|
||||
IConsole* console = GetIEditor()->GetSystem()->GetIConsole();
|
||||
std::vector<const char*> cmds;
|
||||
AZStd::vector<AZStd::string_view> cmds;
|
||||
cmds.resize(console->GetNumVars());
|
||||
size_t cmdCount = console->GetSortedVars(&cmds[0], cmds.size());
|
||||
size_t cmdCount = console->GetSortedVars(cmds);
|
||||
for (int i = 0; i < cmdCount; ++i)
|
||||
{
|
||||
m_model->setStringList(m_model->stringList() += cmds[i]);
|
||||
m_model->setStringList(m_model->stringList() += cmds[i].data());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user