Merge remote-tracking branch 'upstream/development' into thin-transmission
This commit is contained in:
@@ -1281,6 +1281,8 @@ void OutlinerWidget::OnSearchTextChanged(const QString& activeTextFilter)
|
|||||||
|
|
||||||
m_listModel->SearchStringChanged(filterString);
|
m_listModel->SearchStringChanged(filterString);
|
||||||
m_proxyModel->UpdateFilter();
|
m_proxyModel->UpdateFilter();
|
||||||
|
|
||||||
|
m_gui->m_objectTree->expandAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutlinerWidget::OnFilterChanged(const AzQtComponents::SearchTypeFilterList& activeTypeFilters)
|
void OutlinerWidget::OnFilterChanged(const AzQtComponents::SearchTypeFilterList& activeTypeFilters)
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ void ScriptContextDebug::ConnectHook()
|
|||||||
void ScriptContextDebug::DisconnectHook()
|
void ScriptContextDebug::DisconnectHook()
|
||||||
{
|
{
|
||||||
lua_sethook(m_context.NativeContext(), nullptr, 0, 0);
|
lua_sethook(m_context.NativeContext(), nullptr, 0, 0);
|
||||||
|
m_currentStackLevel = -1;
|
||||||
|
m_stepStackLevel = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
@@ -651,6 +653,11 @@ void AZ::LuaHook(lua_State* l, lua_Debug* ar)
|
|||||||
context->PopCallstack();
|
context->PopCallstack();
|
||||||
}
|
}
|
||||||
context->m_currentStackLevel--;
|
context->m_currentStackLevel--;
|
||||||
|
|
||||||
|
if (context->m_currentStackLevel == -1)
|
||||||
|
{
|
||||||
|
context->m_stepStackLevel = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (ar->event == LUA_HOOKLINE)
|
else if (ar->event == LUA_HOOKLINE)
|
||||||
{
|
{
|
||||||
@@ -731,7 +738,7 @@ void AZ::LuaHook(lua_State* l, lua_Debug* ar)
|
|||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doBreak)
|
if (doBreak && bp->m_lineNumber > 0)
|
||||||
{
|
{
|
||||||
context->m_luaDebug = ar;
|
context->m_luaDebug = ar;
|
||||||
context->m_breakCallback(context, bp);
|
context->m_breakCallback(context, bp);
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include <Psapi.h>
|
#include <Psapi.h>
|
||||||
|
|
||||||
AZ_CVAR(bool, ap_tether_lifetime, false, nullptr, AZ::ConsoleFunctorFlags::Null,
|
AZ_CVAR(bool, ap_tether_lifetime, true, nullptr, AZ::ConsoleFunctorFlags::Null,
|
||||||
"If enabled, a parent process that launches the AP will terminate the AP on exit");
|
"If enabled, a parent process that launches the AP will terminate the AP on exit");
|
||||||
|
|
||||||
namespace AzFramework::AssetSystem::Platform
|
namespace AzFramework::AssetSystem::Platform
|
||||||
|
|||||||
@@ -25,7 +25,12 @@
|
|||||||
{
|
{
|
||||||
"Name": "DepthStencilInput",
|
"Name": "DepthStencilInput",
|
||||||
"SlotType": "Input",
|
"SlotType": "Input",
|
||||||
"ScopeAttachmentUsage": "DepthStencil"
|
"ScopeAttachmentUsage": "DepthStencil",
|
||||||
|
"ImageViewDesc": {
|
||||||
|
"AspectFlags": [
|
||||||
|
"Depth"
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Name": "Output",
|
"Name": "Output",
|
||||||
|
|||||||
@@ -81,10 +81,10 @@ def start():
|
|||||||
try:
|
try:
|
||||||
_TAG_LY_BUILD_PATH = os.getenv('TAG_LY_BUILD_PATH', 'build')
|
_TAG_LY_BUILD_PATH = os.getenv('TAG_LY_BUILD_PATH', 'build')
|
||||||
_DEFAULT_BIN_PATH = Path(str(_O3DE_DEV), _TAG_LY_BUILD_PATH, 'bin', 'profile')
|
_DEFAULT_BIN_PATH = Path(str(_O3DE_DEV), _TAG_LY_BUILD_PATH, 'bin', 'profile')
|
||||||
_O3DE_BIN_PATH = Path(os.getenv('O3DE_BIN_PATH', _DEFAULT_BIN_PATH))
|
_PATH_O3DE_BIN = Path(os.getenv('PATH_O3DE_BIN', _DEFAULT_BIN_PATH))
|
||||||
os.environ['O3DE_BIN_PATH'] = _O3DE_BIN_PATH.as_posix()
|
os.environ['PATH_O3DE_BIN'] = _PATH_O3DE_BIN.as_posix()
|
||||||
_LOGGER.debug(f'O3DE_BIN_PATH is: {_O3DE_BIN_PATH}')
|
_LOGGER.debug(f'PATH_O3DE_BIN is: {_PATH_O3DE_BIN}')
|
||||||
site.addsitedir(_O3DE_BIN_PATH.resolve())
|
site.addsitedir(_PATH_O3DE_BIN.resolve())
|
||||||
except EnvironmentError as e:
|
except EnvironmentError as e:
|
||||||
_LOGGER.error('O3DE bin folder not set or found')
|
_LOGGER.error('O3DE bin folder not set or found')
|
||||||
raise e
|
raise e
|
||||||
@@ -94,10 +94,10 @@ def start():
|
|||||||
os.environ['O3DE_DEV'] = _O3DE_DEV.as_posix()
|
os.environ['O3DE_DEV'] = _O3DE_DEV.as_posix()
|
||||||
_LOGGER.debug(_O3DE_DEV)
|
_LOGGER.debug(_O3DE_DEV)
|
||||||
|
|
||||||
_O3DE_BIN_PATH = Path(str(_O3DE_DEV),Path(azlmbr.paths.executableFolder))
|
_PATH_O3DE_BIN = Path(str(_O3DE_DEV),Path(azlmbr.paths.executableFolder))
|
||||||
|
|
||||||
_O3DE_BIN = Path(os.getenv('O3DE_BIN', _O3DE_BIN_PATH.resolve()))
|
_O3DE_BIN = Path(os.getenv('O3DE_BIN', _PATH_O3DE_BIN.resolve()))
|
||||||
os.environ['O3DE_BIN'] = _O3DE_BIN_PATH.as_posix()
|
os.environ['O3DE_BIN'] = _PATH_O3DE_BIN.as_posix()
|
||||||
|
|
||||||
_LOGGER.debug(_O3DE_BIN)
|
_LOGGER.debug(_O3DE_BIN)
|
||||||
|
|
||||||
|
|||||||
+3
-5
@@ -53,14 +53,12 @@ namespace AtomToolsFramework
|
|||||||
const AZ::RPI::MaterialTypeSourceData::PropertyDefinition& propertyDefinition,
|
const AZ::RPI::MaterialTypeSourceData::PropertyDefinition& propertyDefinition,
|
||||||
AZ::RPI::MaterialPropertyValue& propertyValue);
|
AZ::RPI::MaterialPropertyValue& propertyValue);
|
||||||
|
|
||||||
//! Generate a file path from the exported file to the external reference.
|
//! Generate a file path that is relative to either the source asset root or the export path
|
||||||
//! This function returns a relative path from the export file to the reference file.
|
|
||||||
//! If the relative path is too different or distant from the export path then we return the asset folder relative path.
|
|
||||||
//! @param exportPath absolute path of the file being saved
|
//! @param exportPath absolute path of the file being saved
|
||||||
//! @param referencePath absolute path of a file that will be treated as an external reference
|
//! @param referencePath absolute path of a file that will be treated as an external reference
|
||||||
//! @param maxPathDepth the maximum relative depth or number of parent or child folders between the export path and the reference path
|
//! @param relativeToExportPath specifies if the path is relative to the source asset root or the export path
|
||||||
AZStd::string GetExteralReferencePath(
|
AZStd::string GetExteralReferencePath(
|
||||||
const AZStd::string& exportPath, const AZStd::string& referencePath, const uint32_t maxPathDepth = 2);
|
const AZStd::string& exportPath, const AZStd::string& referencePath, const bool relativeToExportPath = false);
|
||||||
|
|
||||||
//! Traverse up the instance data node hierarchy to find the containing dynamic property object
|
//! Traverse up the instance data node hierarchy to find the containing dynamic property object
|
||||||
const AtomToolsFramework::DynamicProperty* FindDynamicPropertyForInstanceDataNode(const AzToolsFramework::InstanceDataNode* pNode);
|
const AtomToolsFramework::DynamicProperty* FindDynamicPropertyForInstanceDataNode(const AzToolsFramework::InstanceDataNode* pNode);
|
||||||
|
|||||||
+14
-11
@@ -24,6 +24,7 @@ AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnin
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QTimer>
|
||||||
AZ_POP_DISABLE_WARNING
|
AZ_POP_DISABLE_WARNING
|
||||||
|
|
||||||
namespace AtomToolsFramework
|
namespace AtomToolsFramework
|
||||||
@@ -121,7 +122,6 @@ namespace AtomToolsFramework
|
|||||||
|
|
||||||
void AtomToolsDocumentSystemComponent::Deactivate()
|
void AtomToolsDocumentSystemComponent::Deactivate()
|
||||||
{
|
{
|
||||||
AZ::TickBus::Handler::BusDisconnect();
|
|
||||||
AtomToolsDocumentNotificationBus::Handler::BusDisconnect();
|
AtomToolsDocumentNotificationBus::Handler::BusDisconnect();
|
||||||
AtomToolsDocumentSystemRequestBus::Handler::BusDisconnect();
|
AtomToolsDocumentSystemRequestBus::Handler::BusDisconnect();
|
||||||
m_documentMap.clear();
|
m_documentMap.clear();
|
||||||
@@ -160,25 +160,30 @@ namespace AtomToolsFramework
|
|||||||
void AtomToolsDocumentSystemComponent::OnDocumentExternallyModified(const AZ::Uuid& documentId)
|
void AtomToolsDocumentSystemComponent::OnDocumentExternallyModified(const AZ::Uuid& documentId)
|
||||||
{
|
{
|
||||||
m_documentIdsWithExternalChanges.insert(documentId);
|
m_documentIdsWithExternalChanges.insert(documentId);
|
||||||
if (!AZ::TickBus::Handler::BusIsConnected())
|
QueueReopenDocuments();
|
||||||
{
|
|
||||||
AZ::TickBus::Handler::BusConnect();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AtomToolsDocumentSystemComponent::OnDocumentDependencyModified(const AZ::Uuid& documentId)
|
void AtomToolsDocumentSystemComponent::OnDocumentDependencyModified(const AZ::Uuid& documentId)
|
||||||
{
|
{
|
||||||
m_documentIdsWithDependencyChanges.insert(documentId);
|
m_documentIdsWithDependencyChanges.insert(documentId);
|
||||||
if (!AZ::TickBus::Handler::BusIsConnected())
|
QueueReopenDocuments();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AtomToolsDocumentSystemComponent::QueueReopenDocuments()
|
||||||
|
{
|
||||||
|
if (!m_queueReopenDocuments)
|
||||||
{
|
{
|
||||||
AZ::TickBus::Handler::BusConnect();
|
m_queueReopenDocuments = true;
|
||||||
|
QTimer::singleShot(0, [this] { ReopenDocuments(); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AtomToolsDocumentSystemComponent::OnTick([[maybe_unused]] float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time)
|
void AtomToolsDocumentSystemComponent::ReopenDocuments()
|
||||||
{
|
{
|
||||||
for (const AZ::Uuid& documentId : m_documentIdsWithExternalChanges)
|
for (const AZ::Uuid& documentId : m_documentIdsWithExternalChanges)
|
||||||
{
|
{
|
||||||
|
m_documentIdsWithDependencyChanges.erase(documentId);
|
||||||
|
|
||||||
AZStd::string documentPath;
|
AZStd::string documentPath;
|
||||||
AtomToolsDocumentRequestBus::EventResult(documentPath, documentId, &AtomToolsDocumentRequestBus::Events::GetAbsolutePath);
|
AtomToolsDocumentRequestBus::EventResult(documentPath, documentId, &AtomToolsDocumentRequestBus::Events::GetAbsolutePath);
|
||||||
|
|
||||||
@@ -191,8 +196,6 @@ namespace AtomToolsFramework
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_documentIdsWithDependencyChanges.erase(documentId);
|
|
||||||
|
|
||||||
AtomToolsFramework::TraceRecorder traceRecorder(m_maxMessageBoxLineCount);
|
AtomToolsFramework::TraceRecorder traceRecorder(m_maxMessageBoxLineCount);
|
||||||
|
|
||||||
bool openResult = false;
|
bool openResult = false;
|
||||||
@@ -235,7 +238,7 @@ namespace AtomToolsFramework
|
|||||||
|
|
||||||
m_documentIdsWithDependencyChanges.clear();
|
m_documentIdsWithDependencyChanges.clear();
|
||||||
m_documentIdsWithExternalChanges.clear();
|
m_documentIdsWithExternalChanges.clear();
|
||||||
AZ::TickBus::Handler::BusDisconnect();
|
m_queueReopenDocuments = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
AZ::Uuid AtomToolsDocumentSystemComponent::OpenDocument(AZStd::string_view sourcePath)
|
AZ::Uuid AtomToolsDocumentSystemComponent::OpenDocument(AZStd::string_view sourcePath)
|
||||||
|
|||||||
+3
-6
@@ -9,7 +9,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AzCore/Component/Component.h>
|
#include <AzCore/Component/Component.h>
|
||||||
#include <AzCore/Component/TickBus.h>
|
|
||||||
#include <AzCore/std/smart_ptr/shared_ptr.h>
|
#include <AzCore/std/smart_ptr/shared_ptr.h>
|
||||||
#include <AzCore/Asset/AssetCommon.h>
|
#include <AzCore/Asset/AssetCommon.h>
|
||||||
|
|
||||||
@@ -28,7 +27,6 @@ namespace AtomToolsFramework
|
|||||||
//! AtomToolsDocumentSystemComponent is the central component of the Material Editor Core gem
|
//! AtomToolsDocumentSystemComponent is the central component of the Material Editor Core gem
|
||||||
class AtomToolsDocumentSystemComponent
|
class AtomToolsDocumentSystemComponent
|
||||||
: public AZ::Component
|
: public AZ::Component
|
||||||
, private AZ::TickBus::Handler
|
|
||||||
, private AtomToolsDocumentNotificationBus::Handler
|
, private AtomToolsDocumentNotificationBus::Handler
|
||||||
, private AtomToolsDocumentSystemRequestBus::Handler
|
, private AtomToolsDocumentSystemRequestBus::Handler
|
||||||
{
|
{
|
||||||
@@ -59,10 +57,8 @@ namespace AtomToolsFramework
|
|||||||
void OnDocumentExternallyModified(const AZ::Uuid& documentId) override;
|
void OnDocumentExternallyModified(const AZ::Uuid& documentId) override;
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
void QueueReopenDocuments();
|
||||||
// AZ::TickBus::Handler overrides...
|
void ReopenDocuments();
|
||||||
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// AtomToolsDocumentSystemRequestBus::Handler overrides...
|
// AtomToolsDocumentSystemRequestBus::Handler overrides...
|
||||||
@@ -87,6 +83,7 @@ namespace AtomToolsFramework
|
|||||||
AZStd::unordered_map<AZ::Uuid, AZStd::shared_ptr<AtomToolsDocument>> m_documentMap;
|
AZStd::unordered_map<AZ::Uuid, AZStd::shared_ptr<AtomToolsDocument>> m_documentMap;
|
||||||
AZStd::unordered_set<AZ::Uuid> m_documentIdsWithExternalChanges;
|
AZStd::unordered_set<AZ::Uuid> m_documentIdsWithExternalChanges;
|
||||||
AZStd::unordered_set<AZ::Uuid> m_documentIdsWithDependencyChanges;
|
AZStd::unordered_set<AZ::Uuid> m_documentIdsWithDependencyChanges;
|
||||||
|
bool m_queueReopenDocuments = false;
|
||||||
const size_t m_maxMessageBoxLineCount = 15;
|
const size_t m_maxMessageBoxLineCount = 15;
|
||||||
};
|
};
|
||||||
} // namespace AtomToolsFramework
|
} // namespace AtomToolsFramework
|
||||||
|
|||||||
@@ -222,31 +222,15 @@ namespace AtomToolsFramework
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
AZStd::string GetExteralReferencePath(const AZStd::string& exportPath, const AZStd::string& referencePath, const uint32_t maxPathDepth)
|
AZStd::string GetExteralReferencePath(
|
||||||
|
const AZStd::string& exportPath, const AZStd::string& referencePath, const bool relativeToExportPath)
|
||||||
{
|
{
|
||||||
if (referencePath.empty())
|
if (referencePath.empty())
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
AZ::IO::BasicPath<AZStd::string> exportFolder(exportPath);
|
if (!relativeToExportPath)
|
||||||
exportFolder.RemoveFilename();
|
|
||||||
|
|
||||||
const AZStd::string relativePath = AZ::IO::PathView(referencePath).LexicallyRelative(exportFolder).StringAsPosix();
|
|
||||||
|
|
||||||
// Count the difference in depth between the export file path and the referenced file path.
|
|
||||||
uint32_t parentFolderCount = 0;
|
|
||||||
AZStd::string::size_type pos = 0;
|
|
||||||
const AZStd::string parentFolderToken = "..";
|
|
||||||
while ((pos = relativePath.find(parentFolderToken, pos)) != AZStd::string::npos)
|
|
||||||
{
|
|
||||||
parentFolderCount++;
|
|
||||||
pos += parentFolderToken.length();
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the difference in depth is too great then revert to using the asset folder relative path.
|
|
||||||
// We could change this to only use relative paths for references in subfolders.
|
|
||||||
if (parentFolderCount > maxPathDepth)
|
|
||||||
{
|
{
|
||||||
AZStd::string watchFolder;
|
AZStd::string watchFolder;
|
||||||
AZ::Data::AssetInfo assetInfo;
|
AZ::Data::AssetInfo assetInfo;
|
||||||
@@ -260,7 +244,9 @@ namespace AtomToolsFramework
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return relativePath;
|
AZ::IO::BasicPath<AZStd::string> exportFolder(exportPath);
|
||||||
|
exportFolder.RemoveFilename();
|
||||||
|
return AZ::IO::PathView(referencePath).LexicallyRelative(exportFolder).StringAsPosix();
|
||||||
}
|
}
|
||||||
|
|
||||||
const AtomToolsFramework::DynamicProperty* FindDynamicPropertyForInstanceDataNode(const AzToolsFramework::InstanceDataNode* pNode)
|
const AtomToolsFramework::DynamicProperty* FindDynamicPropertyForInstanceDataNode(const AzToolsFramework::InstanceDataNode* pNode)
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ namespace AtomToolsFramework
|
|||||||
const QFileInfo initialFileInfo(initialPath);
|
const QFileInfo initialFileInfo(initialPath);
|
||||||
const QString initialExt(initialFileInfo.completeSuffix());
|
const QString initialExt(initialFileInfo.completeSuffix());
|
||||||
|
|
||||||
|
// Instead of just passing in the absolute file path, we pass in the absolute folder path and the base name to prevent the file
|
||||||
|
// dialog from displaying multiple extensions when the extension contains a "."
|
||||||
const QFileInfo selectedFileInfo(AzQtComponents::FileDialog::GetSaveFileName(
|
const QFileInfo selectedFileInfo(AzQtComponents::FileDialog::GetSaveFileName(
|
||||||
QApplication::activeWindow(),
|
QApplication::activeWindow(),
|
||||||
"Save File",
|
"Save File",
|
||||||
@@ -82,7 +84,9 @@ namespace AtomToolsFramework
|
|||||||
return QFileInfo();
|
return QFileInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
return selectedFileInfo;
|
// Reconstructing the file info from the absolute path and expected extension to compensate for an issue with the save file
|
||||||
|
// dialog adding the extension multiple times if it contains "." like *.lightingpreset.azasset
|
||||||
|
return QFileInfo(selectedFileInfo.absolutePath() + AZ_CORRECT_FILESYSTEM_SEPARATOR_STRING + selectedFileInfo.baseName() + "." + initialExt);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFileInfo GetOpenFileInfo(const AZStd::vector<AZ::Data::AssetType>& assetTypes)
|
QFileInfo GetOpenFileInfo(const AZStd::vector<AZ::Data::AssetType>& assetTypes)
|
||||||
|
|||||||
@@ -66,15 +66,15 @@ namespace UnitTest
|
|||||||
|
|
||||||
TEST_F(AtomToolsFrameworkTest, GetExteralReferencePath_Succeeds)
|
TEST_F(AtomToolsFrameworkTest, GetExteralReferencePath_Succeeds)
|
||||||
{
|
{
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("", "", 2), "");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("", "", true), "");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/condor.material", "", 2), "");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/condor.material", "", true), "");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/talisman.material", "", 2), "");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/talisman.material", "", false), "");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/talisman.material", "d:/project/assets/textures/gold.png", 2), "../textures/gold.png");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/talisman.material", "d:/project/assets/textures/gold.png", true), "../textures/gold.png");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/talisman.material", "d:/project/assets/textures/gold.png", 0), "textures/gold.png");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/talisman.material", "d:/project/assets/textures/gold.png", false), "textures/gold.png");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", 3), "../../../materials/condor.material");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", true), "../../../materials/condor.material");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", 2), "materials/condor.material");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", false), "materials/condor.material");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", 1), "materials/condor.material");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", false), "materials/condor.material");
|
||||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", 0), "materials/condor.material");
|
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", false), "materials/condor.material");
|
||||||
}
|
}
|
||||||
|
|
||||||
AZ_UNIT_TEST_HOOK(new AtomToolsFrameworkTestEnvironment);
|
AZ_UNIT_TEST_HOOK(new AtomToolsFrameworkTestEnvironment);
|
||||||
|
|||||||
@@ -555,7 +555,7 @@ namespace MaterialEditor
|
|||||||
|
|
||||||
void MaterialDocument::SourceFileChanged(AZStd::string relativePath, AZStd::string scanFolder, [[maybe_unused]] AZ::Uuid sourceUUID)
|
void MaterialDocument::SourceFileChanged(AZStd::string relativePath, AZStd::string scanFolder, [[maybe_unused]] AZ::Uuid sourceUUID)
|
||||||
{
|
{
|
||||||
auto sourcePath = AZ::RPI::AssetUtils::ResolvePathReference(scanFolder, relativePath);
|
const auto sourcePath = AZ::RPI::AssetUtils::ResolvePathReference(scanFolder, relativePath);
|
||||||
|
|
||||||
if (m_absolutePath == sourcePath)
|
if (m_absolutePath == sourcePath)
|
||||||
{
|
{
|
||||||
|
|||||||
+8
-12
@@ -6,25 +6,21 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <Window/CreateMaterialDialog/CreateMaterialDialog.h>
|
#include <Atom/Document/MaterialDocumentSettings.h>
|
||||||
|
|
||||||
#include <AzFramework/Application/Application.h>
|
|
||||||
#include <AzFramework/StringFunc/StringFunc.h>
|
|
||||||
|
|
||||||
#include <AzQtComponents/Components/Widgets/FileDialog.h>
|
|
||||||
|
|
||||||
#include <AtomToolsFramework/Util/Util.h>
|
|
||||||
|
|
||||||
#include <Atom/RPI.Edit/Common/AssetUtils.h>
|
#include <Atom/RPI.Edit/Common/AssetUtils.h>
|
||||||
#include <Atom/RPI.Edit/Material/MaterialSourceData.h>
|
#include <Atom/RPI.Edit/Material/MaterialSourceData.h>
|
||||||
#include <Atom/RPI.Edit/Material/MaterialTypeSourceData.h>
|
#include <Atom/RPI.Edit/Material/MaterialTypeSourceData.h>
|
||||||
|
#include <AtomToolsFramework/Util/Util.h>
|
||||||
#include <Atom/Document/MaterialDocumentSettings.h>
|
#include <AzCore/Utils/Utils.h>
|
||||||
|
#include <AzFramework/Application/Application.h>
|
||||||
|
#include <AzFramework/StringFunc/StringFunc.h>
|
||||||
|
#include <AzQtComponents/Components/Widgets/FileDialog.h>
|
||||||
|
#include <Window/CreateMaterialDialog/CreateMaterialDialog.h>
|
||||||
|
|
||||||
namespace MaterialEditor
|
namespace MaterialEditor
|
||||||
{
|
{
|
||||||
CreateMaterialDialog::CreateMaterialDialog(QWidget* parent)
|
CreateMaterialDialog::CreateMaterialDialog(QWidget* parent)
|
||||||
: CreateMaterialDialog(QString(AZ::IO::FileIOBase::GetInstance()->GetAlias("@projectroot@")) + AZ_CORRECT_FILESYSTEM_SEPARATOR + "Materials", parent)
|
: CreateMaterialDialog(QString(AZ::Utils::GetProjectPath().c_str()) + AZ_CORRECT_FILESYSTEM_SEPARATOR + "Assets", parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-4
@@ -12,6 +12,7 @@
|
|||||||
#include <Atom/RPI.Reflect/Material/MaterialAsset.h>
|
#include <Atom/RPI.Reflect/Material/MaterialAsset.h>
|
||||||
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
||||||
#include <AtomToolsFramework/Util/Util.h>
|
#include <AtomToolsFramework/Util/Util.h>
|
||||||
|
#include <AzCore/Utils/Utils.h>
|
||||||
#include <AzCore/std/string/wildcard.h>
|
#include <AzCore/std/string/wildcard.h>
|
||||||
#include <AzQtComponents/Utilities/DesktopUtilities.h>
|
#include <AzQtComponents/Utilities/DesktopUtilities.h>
|
||||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||||
@@ -106,8 +107,8 @@ namespace MaterialEditor
|
|||||||
menu->addAction("Create Material...", [entry]()
|
menu->addAction("Create Material...", [entry]()
|
||||||
{
|
{
|
||||||
const QString defaultPath = AtomToolsFramework::GetUniqueFileInfo(
|
const QString defaultPath = AtomToolsFramework::GetUniqueFileInfo(
|
||||||
QString(AZ::IO::FileIOBase::GetInstance()->GetAlias("@projectroot@")) +
|
QString(AZ::Utils::GetProjectPath().c_str()) +
|
||||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Materials" +
|
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Assets" +
|
||||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "untitled." +
|
AZ_CORRECT_FILESYSTEM_SEPARATOR + "untitled." +
|
||||||
AZ::RPI::MaterialSourceData::Extension).absoluteFilePath();
|
AZ::RPI::MaterialSourceData::Extension).absoluteFilePath();
|
||||||
|
|
||||||
@@ -182,8 +183,8 @@ namespace MaterialEditor
|
|||||||
menu->addAction("Create Child Material...", [entry]()
|
menu->addAction("Create Child Material...", [entry]()
|
||||||
{
|
{
|
||||||
const QString defaultPath = AtomToolsFramework::GetUniqueFileInfo(
|
const QString defaultPath = AtomToolsFramework::GetUniqueFileInfo(
|
||||||
QString(AZ::IO::FileIOBase::GetInstance()->GetAlias("@projectroot@")) +
|
QString(AZ::Utils::GetProjectPath().c_str()) +
|
||||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Materials" +
|
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Assets" +
|
||||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "untitled." +
|
AZ_CORRECT_FILESYSTEM_SEPARATOR + "untitled." +
|
||||||
AZ::RPI::MaterialSourceData::Extension).absoluteFilePath();
|
AZ::RPI::MaterialSourceData::Extension).absoluteFilePath();
|
||||||
|
|
||||||
|
|||||||
+6
-8
@@ -6,10 +6,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <Atom/RPI.Reflect/Model/ModelAsset.h>
|
||||||
#include <Atom/Viewport/MaterialViewportRequestBus.h>
|
#include <Atom/Viewport/MaterialViewportRequestBus.h>
|
||||||
#include <AtomToolsFramework/Inspector/InspectorPropertyGroupWidget.h>
|
#include <AtomToolsFramework/Inspector/InspectorPropertyGroupWidget.h>
|
||||||
#include <AtomToolsFramework/Util/Util.h>
|
#include <AtomToolsFramework/Util/Util.h>
|
||||||
#include <Atom/RPI.Reflect/Model/ModelAsset.h>
|
#include <AzCore/Utils/Utils.h>
|
||||||
#include <Window/PresetBrowserDialogs/LightingPresetBrowserDialog.h>
|
#include <Window/PresetBrowserDialogs/LightingPresetBrowserDialog.h>
|
||||||
#include <Window/PresetBrowserDialogs/ModelPresetBrowserDialog.h>
|
#include <Window/PresetBrowserDialogs/ModelPresetBrowserDialog.h>
|
||||||
#include <Window/ViewportSettingsInspector/ViewportSettingsInspector.h>
|
#include <Window/ViewportSettingsInspector/ViewportSettingsInspector.h>
|
||||||
@@ -346,13 +347,10 @@ namespace MaterialEditor
|
|||||||
|
|
||||||
AZStd::string ViewportSettingsInspector::GetDefaultUniqueSaveFilePath(const AZStd::string& baseName) const
|
AZStd::string ViewportSettingsInspector::GetDefaultUniqueSaveFilePath(const AZStd::string& baseName) const
|
||||||
{
|
{
|
||||||
AZStd::string savePath = AZ::IO::FileIOBase::GetInstance()->GetAlias("@projectroot@");
|
return AtomToolsFramework::GetUniqueFileInfo(
|
||||||
savePath += AZ_CORRECT_FILESYSTEM_SEPARATOR;
|
QString(AZ::Utils::GetProjectPath().c_str()) +
|
||||||
savePath += "Materials";
|
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Assets" +
|
||||||
savePath += AZ_CORRECT_FILESYSTEM_SEPARATOR;
|
AZ_CORRECT_FILESYSTEM_SEPARATOR + baseName.c_str()).absoluteFilePath().toUtf8().constData();
|
||||||
savePath += baseName;
|
|
||||||
savePath = AtomToolsFramework::GetUniqueFileInfo(savePath.c_str()).absoluteFilePath().toUtf8().constData();
|
|
||||||
return savePath;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AZ::Crc32 ViewportSettingsInspector::GetGroupSaveStateKey(const AZStd::string& groupName) const
|
AZ::Crc32 ViewportSettingsInspector::GetGroupSaveStateKey(const AZStd::string& groupName) const
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
export DYNACONF_COMPANY=Amazon
|
export DYNACONF_COMPANY=Amazon
|
||||||
# if a O3DE project isn't set use this gem
|
# if a O3DE project isn't set use this gem
|
||||||
export DYNACONF_O3DE_PROJECT=DccScriptingInterface
|
export DYNACONF_O3DE_PROJECT=DccScriptingInterface
|
||||||
export DYNACONF_O3DE_PROJECT_PATH=`pwd`
|
export DYNACONF_PATH_O3DE_PROJECT=`pwd`
|
||||||
export DYNACONF_O3DE_DEV=${O3DE_PROJECT_PATH}\..\..\..\..
|
export DYNACONF_O3DE_DEV=${PATH_O3DE_PROJECT}\..\..\..\..
|
||||||
|
|
||||||
# LY build folder
|
# LY build folder
|
||||||
export DYNACONF_O3DE_BUILD_PATH=${O3DE_DEV}\build
|
export DYNACONF_PATH_O3DE_BUILD=${O3DE_DEV}\build
|
||||||
export DYNACONF_O3DE_BIN_PATH=${O3DE_BUILD_PATH}\bin\profile
|
export DYNACONF_PATH_O3DE_BIN=${PATH_O3DE_BUILD}\bin\profile
|
||||||
|
|
||||||
# default IDE and debug settings
|
# default IDE and debug settings
|
||||||
#export DYNACONF_DCCSI_GDEBUG=false
|
#export DYNACONF_DCCSI_GDEBUG=false
|
||||||
@@ -24,7 +24,7 @@ export DYNACONF_DCCSI_GDEBUGGER=WING
|
|||||||
export DYNACONF_DCCSI_LOGLEVEL=20
|
export DYNACONF_DCCSI_LOGLEVEL=20
|
||||||
|
|
||||||
# defaults for DccScriptingInterface (DCCsi)
|
# defaults for DccScriptingInterface (DCCsi)
|
||||||
export DYNACONF_DCCSIG_PATH=${O3DE_DEV}\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface
|
export DYNACONF_PATH_DCCSIG=${O3DE_DEV}\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface
|
||||||
|
|
||||||
# set up default python interpreter (O3DE)
|
# set up default python interpreter (O3DE)
|
||||||
# we may want to entirely remove these and rely on config.py to dynamically set up
|
# we may want to entirely remove these and rely on config.py to dynamically set up
|
||||||
@@ -33,20 +33,20 @@ export DYNACONF_DCCSI_PY_VERSION_MAJOR=3
|
|||||||
export DYNACONF_DCCSI_PY_VERSION_MINOR=7
|
export DYNACONF_DCCSI_PY_VERSION_MINOR=7
|
||||||
export DYNACONF_DCCSI_PY_VERSION_RELEASE=11
|
export DYNACONF_DCCSI_PY_VERSION_RELEASE=11
|
||||||
# To Do: probably move the folder below into the /SDK folder?
|
# To Do: probably move the folder below into the /SDK folder?
|
||||||
export DYNACONF_DCCSI_PYTHON_PATH=${DCCSIG_PATH}\3rdParty\Python
|
export DYNACONF_PATH_DCCSI_PYTHON=${PATH_DCCSIG}\3rdParty\Python
|
||||||
|
|
||||||
# add access to a Lib location that matches the py version (3.7.x)
|
# add access to a Lib location that matches the py version (3.7.x)
|
||||||
# switch this for other python version like (2.7.x) for Maya
|
# switch this for other python version like (2.7.x) for Maya
|
||||||
export DYNACONF_DCCSI_PYTHON_LIB_PATH=${DCCSI_PYTHON_PATH}\Lib\${DCCSI_PY_VERSION_MAJOR}.x\${DCCSI_PY_VERSION_MAJOR}.${DCCSI_PY_VERSION_MINOR}.x\site-packages
|
export DYNACONF_PATH_DCCSI_PYTHON_LIB=${PATH_DCCSI_PYTHON}\Lib\${DCCSI_PY_VERSION_MAJOR}.x\${DCCSI_PY_VERSION_MAJOR}.${DCCSI_PY_VERSION_MINOR}.x\site-packages
|
||||||
|
|
||||||
# TO DO: figure out how to best deal with OS folder (i.e. 'windows')
|
# TO DO: figure out how to best deal with OS folder (i.e. 'windows')
|
||||||
export DYNACONF_O3DE_PYTHON_INSTALL=${O3DE_DEV}\python
|
export DYNACONF_PATH_O3DE_PYTHON_INSTALL=${O3DE_DEV}\python
|
||||||
export DYNACONF_DCCSI_PY_BASE=${O3DE_PYTHON_INSTALL}\python.cmd
|
export DYNACONF_DCCSI_PY_BASE=${PATH_O3DE_PYTHON_INSTALL}\python.cmd
|
||||||
|
|
||||||
# set up Qt / PySide2
|
# set up Qt / PySide2
|
||||||
# TO DO: These should NOT be set in the global env as they will cause conflicts
|
# TO DO: These should NOT be set in the global env as they will cause conflicts
|
||||||
# with other Qt apps (like DCC tools), only set in local.env, or modify config.py
|
# with other Qt apps (like DCC tools), only set in local.env, or modify config.py
|
||||||
# for utils/tools/apps that need them ( see config.init_ly_pyside() )
|
# for utils/tools/apps that need them ( see config.init_ly_pyside() )
|
||||||
#export DYNACONF_QTFORPYTHON_PATH=${O3DE_DEV}\Gems\QtForPython\3rdParty\pyside2\windows\release
|
#export DYNACONF_QTFORPYTHON_PATH=${O3DE_DEV}\Gems\QtForPython\3rdParty\pyside2\windows\release
|
||||||
#export DYNACONF_QT_PLUGIN_PATH=${O3DE_BUILD_PATH}\bin\profile\EditorPlugins
|
#export DYNACONF_QT_PLUGIN_PATH=${PATH_O3DE_BUILD}\bin\profile\EditorPlugins
|
||||||
#export DYNACONF_QT_QPA_PLATFORM_PLUGIN_PATH=${O3DE_BUILD_PATH}\bin\profile\EditorPlugins\platforms
|
#export DYNACONF_QT_QPA_PLATFORM_PLUGIN_PATH=${PATH_O3DE_BUILD}\bin\profile\EditorPlugins\platforms
|
||||||
|
|||||||
+8
-1
@@ -33,4 +33,11 @@ pyside2-tools instructions:
|
|||||||
3. add to PYTHONPATH: < local DCCsi >\3rdParty\Python
|
3. add to PYTHONPATH: < local DCCsi >\3rdParty\Python
|
||||||
in .py something like: site.addsitedir(DCCSI_PYSIDE2_TOOLS)
|
in .py something like: site.addsitedir(DCCSI_PYSIDE2_TOOLS)
|
||||||
|
|
||||||
See: "< local DCCsi >\config.py"
|
See: "< local DCCsi >\config.py"
|
||||||
|
|
||||||
|
Substance Automation Toolkit (SAT) Instructions:
|
||||||
|
Substance has a licensed python API for automating material data workflows. By default, their instructions cover installing it to a python 'system interpreter', however if we want to install it for use within the DCCsi (for custom tools) or even potentially to build inter-op and integrations with O3DE editors, we want to install it in a way that is accessible.
|
||||||
|
|
||||||
|
Install Substance Automation Toolkit 3rd party library to DCCsi 3rdParty sandbox:
|
||||||
|
|
||||||
|
> C:\Depot\o3de\python> pip install "c:\< path to >\SubstanceAutomationToolkit\Python API\Pysbs-2021.2.2-py2.py3-none-win_amd64.whl" --target="C:\Depot\o3de\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\3rdParty\Python\Lib\3.x\3.7.x\site-packages"
|
||||||
+229
-124
@@ -14,74 +14,88 @@ If you need DCCsi access in py27 (Autodesk Maya for instance) you may need
|
|||||||
to implement your own boostrapper module. Currently this is boostrapped
|
to implement your own boostrapper module. Currently this is boostrapped
|
||||||
from add_dccsi.py, as a temporty measure related to this Jira:
|
from add_dccsi.py, as a temporty measure related to this Jira:
|
||||||
SPEC-2581"""
|
SPEC-2581"""
|
||||||
|
|
||||||
|
# test bootstrap execution time
|
||||||
|
import time
|
||||||
|
_START = time.process_time() # start tracking
|
||||||
|
|
||||||
# standard imports
|
# standard imports
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import site
|
import site
|
||||||
import importlib.util
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import logging as _logging
|
import logging as _logging
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
_O3DE_RUNNING=None
|
_MODULENAME = 'O3DE.DCCsi.bootstrap'
|
||||||
try:
|
|
||||||
import azlmbr
|
# we don't use dynaconf setting here as we might not yet have access
|
||||||
_O3DE_RUNNING=True
|
# we need to set up basic access to the DCCsi
|
||||||
except:
|
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||||
_O3DE_RUNNING=False
|
_PATH_DCCSIG = Path(os.path.join(_MODULE_PATH, '../../..'))
|
||||||
# -------------------------------------------------------------------------
|
site.addsitedir(_PATH_DCCSIG)
|
||||||
|
|
||||||
|
# set envar so DCCsi synthetic env bootstraps with it (config.py)
|
||||||
|
from azpy.constants import ENVAR_PATH_DCCSIG
|
||||||
|
os.environ[ENVAR_PATH_DCCSIG] = str(_PATH_DCCSIG.resolve())
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# we don't use dynaconf setting here as we might not yet have access
|
|
||||||
# to that site-dir.
|
|
||||||
|
|
||||||
_MODULENAME = __name__
|
|
||||||
if _MODULENAME is '__main__':
|
|
||||||
_MODULENAME = 'O3DE.DCCsi.bootstrap'
|
|
||||||
|
|
||||||
# set up module logging
|
|
||||||
for handler in _logging.root.handlers[:]:
|
|
||||||
_logging.root.removeHandler(handler)
|
|
||||||
_LOGGER = _logging.getLogger(_MODULENAME)
|
|
||||||
|
|
||||||
# we need to set up basic access to the DCCsi
|
|
||||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
|
||||||
_DCCSI_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../../..'))
|
|
||||||
_DCCSI_PATH = os.getenv('DCCSI_PATH', _DCCSI_PATH)
|
|
||||||
site.addsitedir(_DCCSI_PATH)
|
|
||||||
|
|
||||||
# now we have azpy api access
|
# now we have azpy api access
|
||||||
from azpy.env_bool import env_bool
|
from azpy.env_bool import env_bool
|
||||||
from azpy.constants import ENVAR_DCCSI_GDEBUG
|
from azpy.constants import ENVAR_DCCSI_GDEBUG
|
||||||
from azpy.constants import ENVAR_DCCSI_DEV_MODE
|
from azpy.constants import ENVAR_DCCSI_DEV_MODE
|
||||||
from azpy.constants import ENVAR_DCCSI_LOGLEVEL
|
from azpy.constants import ENVAR_DCCSI_LOGLEVEL
|
||||||
|
from azpy.constants import ENVAR_DCCSI_GDEBUGGER
|
||||||
from azpy.constants import FRMT_LOG_LONG
|
from azpy.constants import FRMT_LOG_LONG
|
||||||
|
|
||||||
# set up global space, logging etc.
|
from azpy.env_bool import env_bool
|
||||||
# set these true if you want them set globally for debugging
|
|
||||||
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
||||||
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
||||||
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, int(20)))
|
_DCCSI_GDEBUGGER = env_bool(ENVAR_DCCSI_GDEBUGGER, 'WING')
|
||||||
if _DCCSI_GDEBUG:
|
|
||||||
_DCCSI_LOGLEVEL = int(10)
|
|
||||||
|
|
||||||
_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
|
# default loglevel to info unless set
|
||||||
|
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, _logging.INFO))
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
# override loglevel if runnign debug
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
|
||||||
|
# set up module logging
|
||||||
|
#for handler in _logging.root.handlers[:]:
|
||||||
|
#_logging.root.removeHandler(handler)
|
||||||
|
|
||||||
|
# configure basic logger
|
||||||
|
# note: not using a common logger to reduce cyclical imports
|
||||||
|
_logging.basicConfig(level=_DCCSI_LOGLEVEL,
|
||||||
|
format=FRMT_LOG_LONG,
|
||||||
|
datefmt='%m-%d %H:%M')
|
||||||
|
|
||||||
|
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
def attach_debugger():
|
||||||
|
from azpy.test.entry_test import connect_wing
|
||||||
|
_debugger = connect_wing()
|
||||||
|
return _debugger
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# _settings.setenv() # doing this will add the additional DYNACONF_ envars
|
# _settings.setenv() # doing this will add the additional DYNACONF_ envars
|
||||||
def get_dccsi_config(DCCSI_PATH=_DCCSI_PATH):
|
import importlib.util
|
||||||
|
def get_dccsi_config(PATH_DCCSIG=_PATH_DCCSIG):
|
||||||
"""Convenience method to set and retreive settings directly from module."""
|
"""Convenience method to set and retreive settings directly from module."""
|
||||||
|
|
||||||
# we can go ahead and just make sure the the DCCsi env is set
|
# we can go ahead and just make sure the the DCCsi env is set
|
||||||
# _config is SO generic this ensures we are importing a specific one
|
# _config is SO generic this ensures we are importing a specific one
|
||||||
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi._config",
|
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi._config",
|
||||||
Path(DCCSI_PATH,
|
Path(PATH_DCCSIG,
|
||||||
"config.py"))
|
"config.py"))
|
||||||
_dccsi_config = importlib.util.module_from_spec(_spec_dccsi_config)
|
_dccsi_config = importlib.util.module_from_spec(_spec_dccsi_config)
|
||||||
_spec_dccsi_config.loader.exec_module(_dccsi_config)
|
_spec_dccsi_config.loader.exec_module(_dccsi_config)
|
||||||
@@ -89,114 +103,205 @@ def get_dccsi_config(DCCSI_PATH=_DCCSI_PATH):
|
|||||||
return _dccsi_config
|
return _dccsi_config
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
# set and retreive the base env context/_settings on import
|
|
||||||
_config = get_dccsi_config()
|
|
||||||
_settings = _config.get_config_settings()
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# bootstrap in AssetProcessor
|
||||||
|
def bootstrap_Editor(test_config=_DCCSI_GDEBUG,
|
||||||
|
test_pyside2=_DCCSI_GDEBUG):
|
||||||
|
'''Put boostrapping code here to execute in O3DE Editor.exe'''
|
||||||
|
|
||||||
|
_settings = None
|
||||||
|
|
||||||
|
if test_config:
|
||||||
|
# set and retreive the base env context/_settings on import
|
||||||
|
_config = get_dccsi_config()
|
||||||
|
_settings = _config.get_config_settings(enable_o3de_python=True,
|
||||||
|
enable_o3de_pyside2=True)
|
||||||
|
# note: this can impact start up times so currently we are only
|
||||||
|
# running it to test.
|
||||||
|
# To Do: slim down start up times so we can init _settings
|
||||||
|
|
||||||
|
if test_pyside2:
|
||||||
|
_config.test_pyside2()
|
||||||
|
|
||||||
|
return _settings
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# bootstrap in AssetProcessor
|
||||||
|
def bootstrap_MaterialEditor():
|
||||||
|
'''Put boostrapping code here to execute in O3DE MaterialEdito.exe'''
|
||||||
|
pass
|
||||||
|
return None
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# bootstrap in AssetProcessor
|
||||||
|
def bootstrap_AssetProcessor():
|
||||||
|
'''Put boostrapping code here to execute in O3DE AssetProcessor.exe'''
|
||||||
|
pass
|
||||||
|
return None
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# bootstrap in AssetProcessor
|
||||||
|
def bootstrap_AssetBuilder():
|
||||||
|
'''Put boostrapping code here to execute in O3DE AssetBuilder.exe'''
|
||||||
|
pass
|
||||||
|
return None
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
if _DCCSI_DEV_MODE:
|
if _DCCSI_DEV_MODE:
|
||||||
_config.attach_debugger() # attempts to start debugger
|
foo = attach_debugger() # attempts to start debugger
|
||||||
# done with basic setup
|
|
||||||
# --- END -----------------------------------------------------------------
|
# set and retreive the *basic* env context/_settings on import
|
||||||
|
# What application is executing the bootstrap?
|
||||||
|
# Python is being run from:
|
||||||
|
# editor.exe
|
||||||
|
# materialeditor.exe
|
||||||
|
# assetprocessor.exe
|
||||||
|
# assetbuilder.exe, or the Python executable.
|
||||||
|
# Exclude the .exe so it works on other platforms
|
||||||
|
|
||||||
|
_O3DE_Editor = Path(sys.executable)
|
||||||
|
_LOGGER.debug(f'The sys.executable is: {_O3DE_Editor}')
|
||||||
|
|
||||||
|
if _O3DE_Editor.stem.lower() == "editor":
|
||||||
|
# if _DCCSI_GDEBUG then run the pyside2 test
|
||||||
|
_settings = bootstrap_Editor(_DCCSI_GDEBUG)
|
||||||
|
|
||||||
|
elif _O3DE_Editor.stem.lower() == "materialeditor":
|
||||||
|
_settings = bootstrap_MaterialEditor()
|
||||||
|
|
||||||
|
elif _O3DE_Editor.stem.lower() == "assetprocessor":
|
||||||
|
_settings = bootstrap_AssetProcessor()
|
||||||
|
|
||||||
|
elif _O3DE_Editor.stem.lower() == "assetbuilder":
|
||||||
|
_settings= bootstrap_AssetBuilder()
|
||||||
|
|
||||||
|
elif _O3DE_Editor.stem.lower() == "python":
|
||||||
|
# in this case, we can re-use the editor settings
|
||||||
|
# which will init python and pyside2 access externally
|
||||||
|
_settings= bootstrap_Editor(_DCCSI_GDEBUG)
|
||||||
|
|
||||||
|
else:
|
||||||
|
_LOGGER.warning('No bootstrapping code for: {_O3DE_Editor}')
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
# Main Code Block, runs this script as main (testing)
|
# Main Code Block, runs this script as main (testing)
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
"""Run this file as main"""
|
"""Run this file as main (external commandline for testing)"""
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# force enable debug settings manually
|
||||||
|
_DCCSI_GDEBUG = False # enable here to force temporarily
|
||||||
|
_DCCSI_DEV_MODE = False
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
# override loglevel if runnign debug
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
_O3DE_RUNNING=None
|
_O3DE_RUNNING=None
|
||||||
try:
|
try:
|
||||||
import azlmbr
|
import azlmbr
|
||||||
_O3DE_RUNNING=True
|
_O3DE_RUNNING=True
|
||||||
except:
|
except:
|
||||||
_O3DE_RUNNING=False
|
_O3DE_RUNNING=False
|
||||||
# -------------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
_MODULENAME = __name__
|
|
||||||
if _MODULENAME is '__main__':
|
|
||||||
_MODULENAME = 'O3DE.DCCsi.bootstrap'
|
|
||||||
|
|
||||||
from azpy.constants import STR_CROSSBAR
|
|
||||||
|
|
||||||
# module internal debugging flags
|
# ---------------------------------------------------------------------
|
||||||
while 0: # temp internal debug flag
|
# this is a simple commandline interface for running and testing externally
|
||||||
_DCCSI_GDEBUG = True
|
if not _O3DE_RUNNING: # external tool or commandline
|
||||||
break
|
|
||||||
|
|
||||||
# overide logger for standalone to be more verbose and log to file
|
|
||||||
import azpy
|
|
||||||
_LOGGER = azpy.initialize_logger(_MODULENAME,
|
|
||||||
log_to_file=_DCCSI_GDEBUG,
|
|
||||||
default_log_level=_DCCSI_LOGLEVEL)
|
|
||||||
# happy print
|
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
|
||||||
_LOGGER.info('~ constants.py ... Running script as __main__')
|
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
|
||||||
|
|
||||||
# parse the command line args
|
|
||||||
import argparse
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description='O3DE DCCsi Boostrap (Test)',
|
|
||||||
epilog="Will externally test the DCCsi boostrap")
|
|
||||||
|
|
||||||
_config = get_dccsi_config()
|
|
||||||
_settings = _config.get_config_settings(enable_o3de_python=True,
|
|
||||||
enable_o3de_pyside2=True)
|
|
||||||
parser.add_argument('-gd', '--global-debug',
|
|
||||||
type=bool,
|
|
||||||
required=False,
|
|
||||||
help='Enables global debug flag.')
|
|
||||||
parser.add_argument('-dm', '--developer-mode',
|
|
||||||
type=bool,
|
|
||||||
required=False,
|
|
||||||
help='Enables dev mode for early auto attaching debugger.')
|
|
||||||
parser.add_argument('-tp', '--test-pyside2',
|
|
||||||
type=bool,
|
|
||||||
required=False,
|
|
||||||
help='Runs Qt/PySide2 tests and reports.')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
# easy overrides
|
|
||||||
if args.global_debug:
|
|
||||||
_DCCSI_GDEBUG = True
|
|
||||||
if args.developer_mode:
|
|
||||||
_DCCSI_DEV_MODE = True
|
|
||||||
_config.attach_debugger() # attempts to start debugger
|
|
||||||
|
|
||||||
if _DCCSI_GDEBUG:
|
|
||||||
_LOGGER.info(f'DCCSI_PATH: {_settings.DCCSI_PATH}')
|
|
||||||
_LOGGER.info(f'DCCSI_G_DEBUG: {_settings.DCCSI_GDEBUG}')
|
|
||||||
_LOGGER.info(f'DCCSI_DEV_MODE: {_settings.DCCSI_DEV_MODE}')
|
|
||||||
|
|
||||||
_LOGGER.info(f'DCCSI_OS_FOLDER: {_settings.DCCSI_OS_FOLDER}')
|
|
||||||
_LOGGER.info(f'O3DE_PROJECT: {_settings.O3DE_PROJECT}')
|
|
||||||
_LOGGER.info(f'O3DE_PROJECT_PATH: {_settings.O3DE_PROJECT_PATH}')
|
|
||||||
_LOGGER.info(f'O3DE_DEV: {_settings.O3DE_DEV}')
|
|
||||||
_LOGGER.info(f'O3DE_BUILD_PATH: {_settings.O3DE_BUILD_PATH}')
|
|
||||||
_LOGGER.info(f'O3DE_BIN_PATH: {_settings.O3DE_BIN_PATH}')
|
|
||||||
|
|
||||||
_LOGGER.info(f'DCCSI_PATH: {_settings.DCCSI_PATH}')
|
# parse the command line args
|
||||||
_LOGGER.info(f'DCCSI_PYTHON_LIB_PATH: {_settings.DCCSI_PYTHON_LIB_PATH}')
|
import argparse
|
||||||
_LOGGER.info(f'DCCSI_PY_BASE: {_settings.DCCSI_PY_BASE}')
|
parser = argparse.ArgumentParser(
|
||||||
|
description='O3DE DCCsi Boostrap (Test)',
|
||||||
|
epilog="Will externally test the DCCsi boostrap")
|
||||||
|
|
||||||
if _DCCSI_GDEBUG or args.test_pyside2:
|
parser.add_argument('-gd', '--global-debug',
|
||||||
try:
|
type=bool,
|
||||||
import PySide2
|
required=False,
|
||||||
except:
|
help='Enables global debug flag.')
|
||||||
# set up Qt/PySide2 access and test
|
|
||||||
_settings = _config.get_config_settings(enable_o3de_pyside2=True)
|
parser.add_argument('-sd', '--set-debugger',
|
||||||
import PySide2
|
type=str,
|
||||||
|
required=False,
|
||||||
_LOGGER.info(f'PySide2: {PySide2}')
|
help='Default debugger: WING, others: PYCHARM, VSCODE (not yet implemented).')
|
||||||
_LOGGER.info(f'O3DE_BIN_PATH: {_settings.O3DE_BIN_PATH}')
|
|
||||||
_LOGGER.info(f'QT_PLUGIN_PATH: {_settings.QT_PLUGIN_PATH}')
|
|
||||||
_LOGGER.info(f'QT_QPA_PLATFORM_PLUGIN_PATH: {_settings.QT_QPA_PLATFORM_PLUGIN_PATH}')
|
|
||||||
|
|
||||||
_config.test_pyside2()
|
parser.add_argument('-dm', '--developer-mode',
|
||||||
|
type=bool,
|
||||||
if not _O3DE_RUNNING:
|
required=False,
|
||||||
# return
|
help='Enables dev mode for early auto attaching debugger.')
|
||||||
sys.exit()
|
|
||||||
|
parser.add_argument('-tp', '--test-pyside2',
|
||||||
|
type=bool,
|
||||||
|
required=False,
|
||||||
|
help='Runs Qt/PySide2 tests and reports.')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# easy overrides
|
||||||
|
if args.global_debug:
|
||||||
|
_DCCSI_GDEBUG = True
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
_LOGGER.setLevel(_DCCSI_LOGLEVEL)
|
||||||
|
|
||||||
|
if args.set_debugger:
|
||||||
|
_LOGGER.info('Setting and switching debugger type not implemented (default=WING)')
|
||||||
|
# To Do: implement debugger plugin pattern
|
||||||
|
|
||||||
|
if args.developer_mode or _DCCSI_DEV_MODE:
|
||||||
|
_DCCSI_DEV_MODE = True
|
||||||
|
foo = attach_debugger() # attempts to start debugger
|
||||||
|
|
||||||
|
# happy print
|
||||||
|
from azpy.constants import STR_CROSSBAR
|
||||||
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
|
_LOGGER.info('~ DCCsi: bootstrap.py ... Running script as __main__')
|
||||||
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
|
|
||||||
|
_TEST_PYSIDE2 = False
|
||||||
|
if args.test_pyside2:
|
||||||
|
_TEST_PYSIDE2 = True
|
||||||
|
|
||||||
|
_settings= bootstrap_Editor(_DCCSI_GDEBUG, _TEST_PYSIDE2)
|
||||||
|
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
_LOGGER.info(f'PATH_DCCSIG: {_settings.PATH_DCCSIG}')
|
||||||
|
_LOGGER.info(f'DCCSI_G_DEBUG: {_settings.DCCSI_GDEBUG}')
|
||||||
|
_LOGGER.info(f'DCCSI_DEV_MODE: {_settings.DCCSI_DEV_MODE}')
|
||||||
|
|
||||||
|
_LOGGER.info(f'DCCSI_OS_FOLDER: {_settings.DCCSI_OS_FOLDER}')
|
||||||
|
_LOGGER.info(f'O3DE_PROJECT: {_settings.O3DE_PROJECT}')
|
||||||
|
_LOGGER.info(f'PATH_O3DE_PROJECT: {_settings.PATH_O3DE_PROJECT}')
|
||||||
|
_LOGGER.info(f'O3DE_DEV: {_settings.O3DE_DEV}')
|
||||||
|
_LOGGER.info(f'PATH_O3DE_BUILD: {_settings.PATH_O3DE_BUILD}')
|
||||||
|
_LOGGER.info(f'PATH_O3DE_BIN: {_settings.PATH_O3DE_BIN}')
|
||||||
|
|
||||||
|
_LOGGER.info(f'PATH_DCCSIG: {_settings.PATH_DCCSIG}')
|
||||||
|
_LOGGER.info(f'PATH_DCCSI_PYTHON_LIB: {_settings.PATH_DCCSI_PYTHON_LIB}')
|
||||||
|
_LOGGER.info(f'DCCSI_PY_BASE: {_settings.DCCSI_PY_BASE}')
|
||||||
|
|
||||||
|
if args.test_pyside2:
|
||||||
|
_LOGGER.info(f'PySide2: {PySide2}')
|
||||||
|
_LOGGER.info(f'PATH_O3DE_BIN: {_settings.PATH_O3DE_BIN}')
|
||||||
|
_LOGGER.info(f'QT_PLUGIN_PATH: {_settings.QT_PLUGIN_PATH}')
|
||||||
|
_LOGGER.info(f'QT_QPA_PLATFORM_PLUGIN_PATH: {_settings.QT_QPA_PLATFORM_PLUGIN_PATH}')
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
# custom prompt
|
||||||
|
sys.ps1 = "[azpy]>>"
|
||||||
|
|
||||||
|
_LOGGER.debug('~ DCCsi: bootstrap.py took: {} sec'.format(time.process_time() - _START))
|
||||||
# --- END -----------------------------------------------------------------
|
# --- END -----------------------------------------------------------------
|
||||||
|
|||||||
+1
-1
@@ -118,7 +118,7 @@ def clicked_launch_sub_builder():
|
|||||||
print(debug_msg)
|
print(debug_msg)
|
||||||
_LOGGER.debug(debug_msg)
|
_LOGGER.debug(debug_msg)
|
||||||
|
|
||||||
_SUB_BUILDER_PATH = Path(settings.DCCSIG_PATH,
|
_SUB_BUILDER_PATH = Path(settings.PATH_DCCSIG,
|
||||||
'SDK',
|
'SDK',
|
||||||
'Substance',
|
'Substance',
|
||||||
'builder')
|
'builder')
|
||||||
|
|||||||
+2
-2
@@ -34,7 +34,7 @@ print(_config)
|
|||||||
# this is an alternative to "from dynaconf import settings" with Qt
|
# this is an alternative to "from dynaconf import settings" with Qt
|
||||||
settings = _config.get_config_settings(setup_ly_pyside=True)
|
settings = _config.get_config_settings(setup_ly_pyside=True)
|
||||||
|
|
||||||
# app_path = Path.joinpath(settings.DCCSIG_PATH, < relative path to current script dir >).resolve()
|
# app_path = Path.joinpath(settings.PATH_DCCSIG, < relative path to current script dir >).resolve()
|
||||||
|
|
||||||
# 3rd Party (we may or do provide)
|
# 3rd Party (we may or do provide)
|
||||||
from box import Box
|
from box import Box
|
||||||
@@ -507,7 +507,7 @@ class FBXConverter(QtWidgets.QDialog):
|
|||||||
_LOGGER.debug('get_material_definition, os.getcwd() is: {}'.format(os.getcwd()))
|
_LOGGER.debug('get_material_definition, os.getcwd() is: {}'.format(os.getcwd()))
|
||||||
|
|
||||||
# build a resolved absolute path because cwd may be unknown and change running externally
|
# build a resolved absolute path because cwd may be unknown and change running externally
|
||||||
material_file = Path(settings.DCCSIG_PATH,
|
material_file = Path(settings.PATH_DCCSIG,
|
||||||
'SDK', 'Maya', 'Scripts', 'Python', 'kitbash_converter',
|
'SDK', 'Maya', 'Scripts', 'Python', 'kitbash_converter',
|
||||||
material_file).resolve()
|
material_file).resolve()
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -18,14 +18,14 @@ import site
|
|||||||
_MODULE_PATH = os.path.abspath(__file__)
|
_MODULE_PATH = os.path.abspath(__file__)
|
||||||
|
|
||||||
_DCCSIG_REL_PATH = "../../../.."
|
_DCCSIG_REL_PATH = "../../../.."
|
||||||
_DCCSIG_PATH = os.path.join(_MODULE_PATH, _DCCSIG_REL_PATH)
|
_PATH_DCCSIG = os.path.join(_MODULE_PATH, _DCCSIG_REL_PATH)
|
||||||
_DCCSIG_PATH = os.path.normpath(_DCCSIG_PATH)
|
_PATH_DCCSIG = os.path.normpath(_PATH_DCCSIG)
|
||||||
|
|
||||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH',
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG',
|
||||||
os.path.abspath(_DCCSIG_PATH))
|
os.path.abspath(_PATH_DCCSIG))
|
||||||
|
|
||||||
# we don't have access yet to the DCCsi Lib\site-packages
|
# we don't have access yet to the DCCsi Lib\site-packages
|
||||||
site.addsitedir(_DCCSIG_PATH) # PYTHONPATH
|
site.addsitedir(_PATH_DCCSIG) # PYTHONPATH
|
||||||
|
|
||||||
# azpy bootstrapping and extensions
|
# azpy bootstrapping and extensions
|
||||||
import azpy.config_utils
|
import azpy.config_utils
|
||||||
|
|||||||
+14
-14
@@ -135,14 +135,14 @@ if _DCCSI_DEV_MODE:
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# validate access to the DCCsi and it's Lib site-packages
|
# validate access to the DCCsi and it's Lib site-packages
|
||||||
# bootstrap site-packages by version
|
# bootstrap site-packages by version
|
||||||
from azpy.constants import PATH_DCCSI_PYTHON_LIB_PATH
|
from azpy.constants import PATH_DCCSI_PYTHON_LIB
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.path.exists(PATH_DCCSI_PYTHON_LIB_PATH)
|
os.path.exists(PATH_DCCSI_PYTHON_LIB)
|
||||||
site.addsitedir(PATH_DCCSI_PYTHON_LIB_PATH)
|
site.addsitedir(PATH_DCCSI_PYTHON_LIB)
|
||||||
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB_PATH))
|
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.error('ERROR: {0}, {1}'.format(e, PATH_DCCSI_PYTHON_LIB_PATH))
|
_LOGGER.error('ERROR: {0}, {1}'.format(e, PATH_DCCSI_PYTHON_LIB))
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
# 3rdparty
|
# 3rdparty
|
||||||
@@ -175,15 +175,15 @@ try:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_DCCSI_SDK_PATH]))
|
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_DCCSI_SDK_PATH]))
|
||||||
|
|
||||||
_O3DE_PROJECT_PATH = None
|
_PATH_O3DE_PROJECT = None
|
||||||
try:
|
try:
|
||||||
_O3DE_PROJECT_PATH = _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]
|
_PATH_O3DE_PROJECT = _BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]))
|
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]))
|
||||||
|
|
||||||
# check some env var tags (fail if no, likely means no proper code access)
|
# check some env var tags (fail if no, likely means no proper code access)
|
||||||
_O3DE_DEV = _BASE_ENVVAR_DICT[ENVAR_O3DE_DEV]
|
_O3DE_DEV = _BASE_ENVVAR_DICT[ENVAR_O3DE_DEV]
|
||||||
_O3DE_DCCSIG_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSIG_PATH]
|
_O3DE_PATH_DCCSIG = _BASE_ENVVAR_DICT[ENVAR_PATH_DCCSIG]
|
||||||
_O3DE_DCCSI_LOG_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_LOG_PATH]
|
_O3DE_DCCSI_LOG_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_LOG_PATH]
|
||||||
_O3DE_AZPY_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH]
|
_O3DE_AZPY_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH]
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -270,18 +270,18 @@ def post_startup():
|
|||||||
install_fix_paths()
|
install_fix_paths()
|
||||||
|
|
||||||
# set the project workspace
|
# set the project workspace
|
||||||
#_O3DE_PROJECT_PATH = _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]
|
#_PATH_O3DE_PROJECT = _BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
_project_workspace = os.path.join(_O3DE_PROJECT_PATH, TAG_MAYA_WORKSPACE)
|
_project_workspace = os.path.join(_PATH_O3DE_PROJECT, TAG_MAYA_WORKSPACE)
|
||||||
if os.path.isfile(_project_workspace):
|
if os.path.isfile(_project_workspace):
|
||||||
try:
|
try:
|
||||||
# load workspace
|
# load workspace
|
||||||
maya.cmds.workspace(_O3DE_PROJECT_PATH, openWorkspace=True)
|
maya.cmds.workspace(_PATH_O3DE_PROJECT, openWorkspace=True)
|
||||||
_LOGGER.info('Loaded workspace file: {0}'.format(_project_workspace))
|
_LOGGER.info('Loaded workspace file: {0}'.format(_project_workspace))
|
||||||
maya.cmds.workspace(_O3DE_PROJECT_PATH, update=True)
|
maya.cmds.workspace(_PATH_O3DE_PROJECT, update=True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.error(e)
|
_LOGGER.error(e)
|
||||||
else:
|
else:
|
||||||
_LOGGER.warning('Workspace file not found: {1}'.format(_O3DE_PROJECT_PATH))
|
_LOGGER.warning('Workspace file not found: {1}'.format(_PATH_O3DE_PROJECT))
|
||||||
|
|
||||||
# Set up Lumberyard, maya default setting
|
# Set up Lumberyard, maya default setting
|
||||||
from set_defaults import set_defaults
|
from set_defaults import set_defaults
|
||||||
|
|||||||
+11
-11
@@ -19,10 +19,10 @@ import importlib.util
|
|||||||
# if running in py2.7 we won't have access to pathlib yet until we boostrap
|
# if running in py2.7 we won't have access to pathlib yet until we boostrap
|
||||||
# the DCCsi
|
# the DCCsi
|
||||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../../../..'))
|
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../../../..'))
|
||||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||||
site.addsitedir(_DCCSIG_PATH)
|
site.addsitedir(_PATH_DCCSIG)
|
||||||
# print(_DCCSIG_PATH)
|
# print(_PATH_DCCSIG)
|
||||||
|
|
||||||
# Lumberyard DCCsi site extensions
|
# Lumberyard DCCsi site extensions
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -46,7 +46,7 @@ _LOGGER = azpy.initialize_logger(_PACKAGENAME,
|
|||||||
log_to_file=True,
|
log_to_file=True,
|
||||||
default_log_level=_log_level)
|
default_log_level=_log_level)
|
||||||
_LOGGER.debug('Starting up: {0}.'.format({_PACKAGENAME}))
|
_LOGGER.debug('Starting up: {0}.'.format({_PACKAGENAME}))
|
||||||
_LOGGER.debug('_DCCSIG_PATH: {}'.format(_DCCSIG_PATH))
|
_LOGGER.debug('_PATH_DCCSIG: {}'.format(_PATH_DCCSIG))
|
||||||
_LOGGER.debug('_G_DEBUG: {}'.format(_DCCSI_GDEBUG))
|
_LOGGER.debug('_G_DEBUG: {}'.format(_DCCSI_GDEBUG))
|
||||||
_LOGGER.debug('_DCCSI_DEV_MODE: {}'.format(_DCCSI_DEV_MODE))
|
_LOGGER.debug('_DCCSI_DEV_MODE: {}'.format(_DCCSI_DEV_MODE))
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ if _DCCSI_DEV_MODE:
|
|||||||
# we can go ahead and just make sure the the DCCsi env is set
|
# we can go ahead and just make sure the the DCCsi env is set
|
||||||
# config is SO generic this ensures we are importing a specific one
|
# config is SO generic this ensures we are importing a specific one
|
||||||
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi.config",
|
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi.config",
|
||||||
Path(_DCCSIG_PATH,
|
Path(_PATH_DCCSIG,
|
||||||
"config.py"))
|
"config.py"))
|
||||||
_dccsi_config = importlib.util.module_from_spec(_spec_dccsi_config)
|
_dccsi_config = importlib.util.module_from_spec(_spec_dccsi_config)
|
||||||
_spec_dccsi_config.loader.exec_module(_dccsi_config)
|
_spec_dccsi_config.loader.exec_module(_dccsi_config)
|
||||||
@@ -96,16 +96,16 @@ from azpy.constants import ENVAR_O3DE_DEV
|
|||||||
_O3DE_DEV = Path(os.getenv(ENVAR_O3DE_DEV,
|
_O3DE_DEV = Path(os.getenv(ENVAR_O3DE_DEV,
|
||||||
settings.O3DE_DEV)).resolve()
|
settings.O3DE_DEV)).resolve()
|
||||||
|
|
||||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
from azpy.constants import ENVAR_PATH_O3DE_PROJECT
|
||||||
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH,
|
_PATH_O3DE_PROJECT = Path(os.getenv(ENVAR_PATH_O3DE_PROJECT,
|
||||||
settings.O3DE_PROJECT_PATH)).resolve()
|
settings.PATH_O3DE_PROJECT)).resolve()
|
||||||
|
|
||||||
from azpy.constants import ENVAR_DCCSI_SDK_PATH
|
from azpy.constants import ENVAR_DCCSI_SDK_PATH
|
||||||
_DCCSI_SDK_PATH = Path(os.getenv(ENVAR_DCCSI_SDK_PATH,
|
_DCCSI_SDK_PATH = Path(os.getenv(ENVAR_DCCSI_SDK_PATH,
|
||||||
settings.DCCSIG_SDK_PATH)).resolve()
|
settings.DCCSIG_SDK_PATH)).resolve()
|
||||||
|
|
||||||
# build some reuseable path parts for the substance builder
|
# build some reuseable path parts for the substance builder
|
||||||
_PROJECT_ASSETS_PATH = Path(_O3DE_PROJECT_PATH, 'Assets').resolve()
|
_PROJECT_ASSETS_PATH = Path(_PATH_O3DE_PROJECT, 'Assets').resolve()
|
||||||
_PROJECT_MATERIALS_PATH = Path(_PROJECT_ASSETS_PATH, 'Materials').resolve()
|
_PROJECT_MATERIALS_PATH = Path(_PROJECT_ASSETS_PATH, 'Materials').resolve()
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ if __name__ == "__main__":
|
|||||||
"""Run this file as main"""
|
"""Run this file as main"""
|
||||||
|
|
||||||
_LOGGER.info('_O3DE_DEV: {}'.format(_O3DE_DEV))
|
_LOGGER.info('_O3DE_DEV: {}'.format(_O3DE_DEV))
|
||||||
_LOGGER.info('_O3DE_PROJECT_PATH: {}'.format(_O3DE_PROJECT_PATH))
|
_LOGGER.info('_PATH_O3DE_PROJECT: {}'.format(_PATH_O3DE_PROJECT))
|
||||||
_LOGGER.info('_DCCSI_SDK_PATH: {}'.format(_DCCSI_SDK_PATH))
|
_LOGGER.info('_DCCSI_SDK_PATH: {}'.format(_DCCSI_SDK_PATH))
|
||||||
|
|
||||||
_LOGGER.info('_PYSBS_DIR_PATH: {}'.format(_PYSBS_DIR_PATH))
|
_LOGGER.info('_PYSBS_DIR_PATH: {}'.format(_PYSBS_DIR_PATH))
|
||||||
|
|||||||
+12
-12
@@ -76,7 +76,7 @@ settings.setenv() # for standalone
|
|||||||
|
|
||||||
# log debug info about Qt/PySide2
|
# log debug info about Qt/PySide2
|
||||||
_LOGGER.debug('QTFORPYTHON_PATH: {}'.format(settings.QTFORPYTHON_PATH))
|
_LOGGER.debug('QTFORPYTHON_PATH: {}'.format(settings.QTFORPYTHON_PATH))
|
||||||
_LOGGER.debug('O3DE_BIN_PATH: {}'.format(settings.O3DE_BIN_PATH))
|
_LOGGER.debug('PATH_O3DE_BIN: {}'.format(settings.PATH_O3DE_BIN))
|
||||||
_LOGGER.debug('QT_PLUGIN_PATH: {}'.format(settings.QT_PLUGIN_PATH))
|
_LOGGER.debug('QT_PLUGIN_PATH: {}'.format(settings.QT_PLUGIN_PATH))
|
||||||
_LOGGER.debug('QT_QPA_PLATFORM_PLUGIN_PATH: {}'.format(settings.QT_QPA_PLATFORM_PLUGIN_PATH))
|
_LOGGER.debug('QT_QPA_PLATFORM_PLUGIN_PATH: {}'.format(settings.QT_QPA_PLATFORM_PLUGIN_PATH))
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -129,15 +129,15 @@ _O3DE_DEV = Path(os.getenv(ENVAR_O3DE_DEV, None)).resolve()
|
|||||||
from azpy.constants import ENVAR_O3DE_PROJECT
|
from azpy.constants import ENVAR_O3DE_PROJECT
|
||||||
_O3DE_PROJECT = os.getenv(ENVAR_O3DE_PROJECT, None)
|
_O3DE_PROJECT = os.getenv(ENVAR_O3DE_PROJECT, None)
|
||||||
|
|
||||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
from azpy.constants import ENVAR_PATH_O3DE_PROJECT
|
||||||
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH, None)).resolve()
|
_PATH_O3DE_PROJECT = Path(os.getenv(ENVAR_PATH_O3DE_PROJECT, None)).resolve()
|
||||||
|
|
||||||
from azpy.constants import ENVAR_DCCSI_SDK_PATH
|
from azpy.constants import ENVAR_DCCSI_SDK_PATH
|
||||||
_DCCSI_SDK_PATH = Path(os.getenv(ENVAR_DCCSI_SDK_PATH, None)).resolve()
|
_DCCSI_SDK_PATH = Path(os.getenv(ENVAR_DCCSI_SDK_PATH, None)).resolve()
|
||||||
|
|
||||||
# build some reuseable path parts
|
# build some reuseable path parts
|
||||||
_PROJECT_ASSET_PATH = Path(_O3DE_PROJECT_PATH).resolve()
|
_PROJECT_ASSET_PATH = Path(_PATH_O3DE_PROJECT).resolve()
|
||||||
_PROJECT_ASSETS_PATH = Path(_O3DE_PROJECT_PATH, 'Materials').resolve()
|
_PROJECT_ASSETS_PATH = Path(_PATH_O3DE_PROJECT, 'Materials').resolve()
|
||||||
|
|
||||||
# To Do: figure out a proper way to deal with Lumberyard game projects
|
# To Do: figure out a proper way to deal with Lumberyard game projects
|
||||||
_GEM_MATPLAY_PATH = Path(_O3DE_DEV, 'Gems', 'AtomContent', 'AtomMaterialPlayground').resolve()
|
_GEM_MATPLAY_PATH = Path(_O3DE_DEV, 'Gems', 'AtomContent', 'AtomMaterialPlayground').resolve()
|
||||||
@@ -150,9 +150,9 @@ _SUB_LIBRARY_PATH = Path(_GEM_SUBSOURCELIBRARY, 'Assets', 'SubstanceSource', 'Li
|
|||||||
# path to watcher script
|
# path to watcher script
|
||||||
_WATCHER_SCRIPT_PATH = Path(_DCCSI_SDK_PATH, 'substance', 'builder', 'watchdog', '__init__.py').resolve()
|
_WATCHER_SCRIPT_PATH = Path(_DCCSI_SDK_PATH, 'substance', 'builder', 'watchdog', '__init__.py').resolve()
|
||||||
|
|
||||||
_TEX_RNDR_PATH = Path(_O3DE_PROJECT_PATH, 'Materials', 'Substance').resolve()
|
_TEX_RNDR_PATH = Path(_PATH_O3DE_PROJECT, 'Materials', 'Substance').resolve()
|
||||||
_MAT_OUTPUT_PATH = Path(_O3DE_PROJECT_PATH, 'Materials', 'Substance').resolve()
|
_MAT_OUTPUT_PATH = Path(_PATH_O3DE_PROJECT, 'Materials', 'Substance').resolve()
|
||||||
_SBSAR_COOK_PATH = Path(_O3DE_PROJECT_PATH, 'Materials', 'Substance').resolve()
|
_SBSAR_COOK_PATH = Path(_PATH_O3DE_PROJECT, 'Materials', 'Substance').resolve()
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -171,12 +171,12 @@ class Window(QtWidgets.QDialog):
|
|||||||
|
|
||||||
# we should really init non-Qt stuff and set things up as properties
|
# we should really init non-Qt stuff and set things up as properties
|
||||||
if project_path is None:
|
if project_path is None:
|
||||||
self.project_path = str(_O3DE_PROJECT_PATH)
|
self.project_path = str(_PATH_O3DE_PROJECT)
|
||||||
else:
|
else:
|
||||||
self.project_path = Path(project_path)
|
self.project_path = Path(project_path)
|
||||||
|
|
||||||
if default_material_path is None:
|
if default_material_path is None:
|
||||||
self._default_material_path = Path(_DCCSIG_PATH,
|
self._default_material_path = Path(_PATH_DCCSIG,
|
||||||
'sdk',
|
'sdk',
|
||||||
'substance',
|
'substance',
|
||||||
'resources',
|
'resources',
|
||||||
@@ -672,7 +672,7 @@ class Window(QtWidgets.QDialog):
|
|||||||
|
|
||||||
# if you want relative paths here is a better way
|
# if you want relative paths here is a better way
|
||||||
# first of all, assume we know the project we are in
|
# first of all, assume we know the project we are in
|
||||||
#_O3DE_PROJECT_PATH
|
#_PATH_O3DE_PROJECT
|
||||||
|
|
||||||
texture_output_path = Path(self.texRenderPathComboBox.currentText()).resolve()
|
texture_output_path = Path(self.texRenderPathComboBox.currentText()).resolve()
|
||||||
rel_tex_path = None
|
rel_tex_path = None
|
||||||
@@ -928,7 +928,7 @@ def substance_builder_launcher():
|
|||||||
_LOGGER.info('file: {}'.format(__file__)) # *might* come back relative
|
_LOGGER.info('file: {}'.format(__file__)) # *might* come back relative
|
||||||
|
|
||||||
# we should ensure we know the abs path
|
# we should ensure we know the abs path
|
||||||
qss_filepath = Path(_DCCSIG_PATH).resolve().absolute()
|
qss_filepath = Path(_PATH_DCCSIG).resolve().absolute()
|
||||||
qss_filepath = Path(qss_filepath, 'SDK', 'substance', 'builder',
|
qss_filepath = Path(qss_filepath, 'SDK', 'substance', 'builder',
|
||||||
'ui', 'stylesheets', 'LYstyle.qss').resolve().absolute()
|
'ui', 'stylesheets', 'LYstyle.qss').resolve().absolute()
|
||||||
window.setStyleSheet(qss_filepath.read_text())
|
window.setStyleSheet(qss_filepath.read_text())
|
||||||
|
|||||||
+3
-3
@@ -67,11 +67,11 @@ from collections import OrderedDict
|
|||||||
_SYNTH_ENV_DICT = OrderedDict()
|
_SYNTH_ENV_DICT = OrderedDict()
|
||||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||||
# grab a specific path from the base_env
|
# grab a specific path from the base_env
|
||||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
|
|
||||||
# build some reuseable path parts
|
# build some reuseable path parts
|
||||||
_PATH_MOCK_ASSETS = Path(_O3DE_PROJECT_PATH, 'Assets').norm()
|
_PATH_MOCK_ASSETS = Path(_PATH_O3DE_PROJECT, 'Assets').norm()
|
||||||
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
||||||
|
|
||||||
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
||||||
|
|||||||
+3
-3
@@ -87,11 +87,11 @@ from collections import OrderedDict
|
|||||||
_SYNTH_ENV_DICT = OrderedDict()
|
_SYNTH_ENV_DICT = OrderedDict()
|
||||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||||
# grab a specific path from the base_env
|
# grab a specific path from the base_env
|
||||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
|
|
||||||
# build some reuseable path parts
|
# build some reuseable path parts
|
||||||
_PATH_MOCK_ASSETS = Path(_O3DE_PROJECT_PATH, 'Assets').norm()
|
_PATH_MOCK_ASSETS = Path(_PATH_O3DE_PROJECT, 'Assets').norm()
|
||||||
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
||||||
|
|
||||||
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
||||||
|
|||||||
+3
-3
@@ -65,11 +65,11 @@ from collections import OrderedDict
|
|||||||
_SYNTH_ENV_DICT = OrderedDict()
|
_SYNTH_ENV_DICT = OrderedDict()
|
||||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||||
# grab a specific path from the base_env
|
# grab a specific path from the base_env
|
||||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
|
|
||||||
# build some reuseable path parts
|
# build some reuseable path parts
|
||||||
_PATH_MOCK_ASSETS = Path(_O3DE_PROJECT_PATH, 'Assets').norm()
|
_PATH_MOCK_ASSETS = Path(_PATH_O3DE_PROJECT, 'Assets').norm()
|
||||||
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
||||||
|
|
||||||
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
||||||
|
|||||||
+5
-5
@@ -189,16 +189,16 @@ if __name__ == "__main__":
|
|||||||
from azpy import synthetic_env
|
from azpy import synthetic_env
|
||||||
_SYNTH_ENV_DICT = synthetic_env.stash_env()
|
_SYNTH_ENV_DICT = synthetic_env.stash_env()
|
||||||
|
|
||||||
from azpy.constants import ENVAR_DCCSIG_PATH
|
from azpy.constants import ENVAR_PATH_DCCSIG
|
||||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
from azpy.constants import ENVAR_PATH_O3DE_PROJECT
|
||||||
|
|
||||||
# grab a specific path from the base_env
|
# grab a specific path from the base_env
|
||||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||||
|
|
||||||
# use DCCsi as the project path for this test
|
# use DCCsi as the project path for this test
|
||||||
_O3DE_PROJECT_PATH = _PATH_DCCSI
|
_PATH_O3DE_PROJECT = _PATH_DCCSI
|
||||||
|
|
||||||
_PROJECT_ASSETS_PATH = Path(_O3DE_PROJECT_PATH, 'Assets').resolve()
|
_PROJECT_ASSETS_PATH = Path(_PATH_O3DE_PROJECT, 'Assets').resolve()
|
||||||
_PROJECT_MATERIALS_PATH = Path(_PROJECT_ASSETS_PATH, 'Materials').resolve()
|
_PROJECT_MATERIALS_PATH = Path(_PROJECT_ASSETS_PATH, 'Materials').resolve()
|
||||||
|
|
||||||
# this will combine two parts into a single path (object)
|
# this will combine two parts into a single path (object)
|
||||||
|
|||||||
+3
-3
@@ -66,11 +66,11 @@ from collections import OrderedDict
|
|||||||
_SYNTH_ENV_DICT = OrderedDict()
|
_SYNTH_ENV_DICT = OrderedDict()
|
||||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||||
# grab a specific path from the base_env
|
# grab a specific path from the base_env
|
||||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
|
|
||||||
# build some reuseable path parts
|
# build some reuseable path parts
|
||||||
_PATH_MOCK_ASSETS = Path(_O3DE_PROJECT_PATH, 'Assets').norm()
|
_PATH_MOCK_ASSETS = Path(_PATH_O3DE_PROJECT, 'Assets').norm()
|
||||||
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
_PATH_MOCK_SUBLIB = Path(_PATH_MOCK_ASSETS, 'SubstanceSource').norm()
|
||||||
|
|
||||||
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
_PATH_MOCK_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
||||||
|
|||||||
+4
-4
@@ -17,9 +17,9 @@ import time
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# we don't have access yet to the DCCsi Lib\site-packages
|
# we don't have access yet to the DCCsi Lib\site-packages
|
||||||
# (1) this will give us import access to dccsi and azpy import
|
# (1) this will give us import access to dccsi and azpy import
|
||||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', os.getcwd()) # always?, doubtful
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', os.getcwd()) # always?, doubtful
|
||||||
# ^^ this assume that the \DccScriptingInterface is the cwd!!! (launch there)
|
# ^^ this assume that the \DccScriptingInterface is the cwd!!! (launch there)
|
||||||
site.addsitedir(_DCCSIG_PATH)
|
site.addsitedir(_PATH_DCCSIG)
|
||||||
|
|
||||||
# Lumberyard extensions
|
# Lumberyard extensions
|
||||||
from azpy.env_bool import env_bool
|
from azpy.env_bool import env_bool
|
||||||
@@ -72,7 +72,7 @@ from collections import OrderedDict
|
|||||||
_SYNTH_ENV_DICT = OrderedDict()
|
_SYNTH_ENV_DICT = OrderedDict()
|
||||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||||
_O3DE_DEV = _SYNTH_ENV_DICT[ENVAR_O3DE_DEV]
|
_O3DE_DEV = _SYNTH_ENV_DICT[ENVAR_O3DE_DEV]
|
||||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -90,7 +90,7 @@ class MyHandler(PatternMatchingEventHandler):
|
|||||||
"""
|
"""
|
||||||
self.outputName = event.src_path.split(".sbsar")[0].split("/")[-1]
|
self.outputName = event.src_path.split(".sbsar")[0].split("/")[-1]
|
||||||
self.outputCookPath = event.src_path.split(self.outputName)
|
self.outputCookPath = event.src_path.split(self.outputName)
|
||||||
self.outputRenderPath = Path(_O3DE_PROJECT_PATH, 'Assets', 'Textures', 'Substance').norm()
|
self.outputRenderPath = Path(_PATH_O3DE_PROJECT, 'Assets', 'Textures', 'Substance').norm()
|
||||||
_LOGGER.debug(self.outputCookPath, self.outputName, self.outputRenderPath)
|
_LOGGER.debug(self.outputCookPath, self.outputName, self.outputRenderPath)
|
||||||
|
|
||||||
pysbs_batch.sbsrender_info(input=event.src_path)
|
pysbs_batch.sbsrender_info(input=event.src_path)
|
||||||
|
|||||||
+19
-19
@@ -137,14 +137,14 @@ if _DCCSI_DEV_MODE:
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# validate access to the DCCsi and it's Lib site-packages
|
# validate access to the DCCsi and it's Lib site-packages
|
||||||
# bootstrap site-packages by version
|
# bootstrap site-packages by version
|
||||||
from azpy.constants import PATH_DCCSI_PYTHON_LIB_PATH
|
from azpy.constants import PATH_DCCSI_PYTHON_LIB
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.path.exists(PATH_DCCSI_PYTHON_LIB_PATH)
|
os.path.exists(PATH_DCCSI_PYTHON_LIB)
|
||||||
site.addsitedir(PATH_DCCSI_PYTHON_LIB_PATH)
|
site.addsitedir(PATH_DCCSI_PYTHON_LIB)
|
||||||
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB_PATH))
|
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.error('ERROR: {0}, {1}'.format(e, PATH_DCCSI_PYTHON_LIB_PATH))
|
_LOGGER.error('ERROR: {0}, {1}'.format(e, PATH_DCCSI_PYTHON_LIB))
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
# 3rdparty
|
# 3rdparty
|
||||||
@@ -171,22 +171,22 @@ _LOGGER.info('_MODULENAME: {}'.format(_MODULENAME))
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# check some env var tags (fail if no, likely means no proper code access)
|
# check some env var tags (fail if no, likely means no proper code access)
|
||||||
_STR_ERROR_ENVAR = "Envar 'key' does not exist in base_env: {0}"
|
_STR_ERROR_ENVAR = "Envar 'key' does not exist in base_env: {0}"
|
||||||
_DCCSI_TOOLS_PATH = None
|
_PATH_DCCSI_TOOLS = None
|
||||||
# To Do: needs to be updated to use dynaconf and config.py
|
# To Do: needs to be updated to use dynaconf and config.py
|
||||||
try:
|
try:
|
||||||
_DCCSI_TOOLS_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_TOOLS_PATH]
|
_PATH_DCCSI_TOOLS = _BASE_ENVVAR_DICT[ENVAR_PATH_DCCSI_TOOLS]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_DCCSI_TOOLS_PATH]))
|
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_PATH_DCCSI_TOOLS]))
|
||||||
|
|
||||||
_O3DE_PROJECT_PATH = None
|
_PATH_O3DE_PROJECT = None
|
||||||
try:
|
try:
|
||||||
_O3DE_PROJECT_PATH = _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]
|
_PATH_O3DE_PROJECT = _BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]))
|
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]))
|
||||||
|
|
||||||
# check some env var tags (fail if no, likely means no proper code access)
|
# check some env var tags (fail if no, likely means no proper code access)
|
||||||
_O3DE_DEV = _BASE_ENVVAR_DICT[ENVAR_O3DE_DEV]
|
_O3DE_DEV = _BASE_ENVVAR_DICT[ENVAR_O3DE_DEV]
|
||||||
_O3DE_DCCSIG_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSIG_PATH]
|
_O3DE_PATH_DCCSIG = _BASE_ENVVAR_DICT[ENVAR_PATH_DCCSIG]
|
||||||
_O3DE_DCCSI_LOG_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_LOG_PATH]
|
_O3DE_DCCSI_LOG_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_LOG_PATH]
|
||||||
_O3DE_AZPY_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH]
|
_O3DE_AZPY_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH]
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -216,8 +216,8 @@ def startup():
|
|||||||
# get known paths
|
# get known paths
|
||||||
_KNOWN_PATHS = site._init_pathinfo()
|
_KNOWN_PATHS = site._init_pathinfo()
|
||||||
|
|
||||||
if os.path.isdir(_DCCSI_TOOLS_PATH):
|
if os.path.isdir(_PATH_DCCSI_TOOLS):
|
||||||
site.addsitedir(_DCCSI_TOOLS_PATH, _KNOWN_PATHS)
|
site.addsitedir(_PATH_DCCSI_TOOLS, _KNOWN_PATHS)
|
||||||
try:
|
try:
|
||||||
import azpy.test
|
import azpy.test
|
||||||
_LOGGER.info('SUCCESS, import azpy.test')
|
_LOGGER.info('SUCCESS, import azpy.test')
|
||||||
@@ -273,18 +273,18 @@ def post_startup():
|
|||||||
install_fix_paths()
|
install_fix_paths()
|
||||||
|
|
||||||
# set the project workspace
|
# set the project workspace
|
||||||
#_O3DE_PROJECT_PATH = _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]
|
#_PATH_O3DE_PROJECT = _BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||||
_project_workspace = os.path.join(_O3DE_PROJECT_PATH, TAG_MAYA_WORKSPACE)
|
_project_workspace = os.path.join(_PATH_O3DE_PROJECT, TAG_MAYA_WORKSPACE)
|
||||||
if os.path.isfile(_project_workspace):
|
if os.path.isfile(_project_workspace):
|
||||||
try:
|
try:
|
||||||
# load workspace
|
# load workspace
|
||||||
maya.cmds.workspace(_O3DE_PROJECT_PATH, openWorkspace=True)
|
maya.cmds.workspace(_PATH_O3DE_PROJECT, openWorkspace=True)
|
||||||
_LOGGER.info('Loaded workspace file: {0}'.format(_project_workspace))
|
_LOGGER.info('Loaded workspace file: {0}'.format(_project_workspace))
|
||||||
maya.cmds.workspace(_O3DE_PROJECT_PATH, update=True)
|
maya.cmds.workspace(_PATH_O3DE_PROJECT, update=True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
_LOGGER.error(e)
|
_LOGGER.error(e)
|
||||||
else:
|
else:
|
||||||
_LOGGER.warning('Workspace file not found: {1}'.format(_O3DE_PROJECT_PATH))
|
_LOGGER.warning('Workspace file not found: {1}'.format(_PATH_O3DE_PROJECT))
|
||||||
|
|
||||||
# Set up Lumberyard, maya default setting
|
# Set up Lumberyard, maya default setting
|
||||||
from set_defaults import set_defaults
|
from set_defaults import set_defaults
|
||||||
|
|||||||
+7
-7
@@ -14,15 +14,18 @@ PUSHD %~dp0
|
|||||||
|
|
||||||
SETLOCAL ENABLEDELAYEDEXPANSION
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||||
|
|
||||||
|
:: if the user has set up a custom env call it
|
||||||
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
:: Default Maya and Python version
|
:: Default Maya and Python version
|
||||||
set MAYA_VERSION=2020
|
set MAYA_VERSION=2020
|
||||||
set DCCSI_PY_VERSION_MAJOR=2
|
set DCCSI_PY_VERSION_MAJOR=2
|
||||||
set DCCSI_PY_VERSION_MINOR=7
|
set DCCSI_PY_VERSION_MINOR=7
|
||||||
set DCCSI_PY_VERSION_RELEASE=11
|
set DCCSI_PY_VERSION_RELEASE=11
|
||||||
|
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0\..\Env_Core.bat
|
||||||
CALL %~dp0\Env_Python.bat
|
CALL %~dp0\..\Env_Python.bat
|
||||||
CALL %~dp0\Env_Maya.bat
|
CALL %~dp0\..\Env_Maya.bat
|
||||||
|
|
||||||
:: ide and debugger plug
|
:: ide and debugger plug
|
||||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||||
@@ -32,9 +35,6 @@ set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
|||||||
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%Launch_mayaPy_2020.bat
|
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%Launch_mayaPy_2020.bat
|
||||||
echo DCCSI_PY_DCCSI = %DCCSI_PY_DCCSI%
|
echo DCCSI_PY_DCCSI = %DCCSI_PY_DCCSI%
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
echo.
|
echo.
|
||||||
@@ -50,7 +50,7 @@ echo MAYA_LOCATION = %MAYA_LOCATION%
|
|||||||
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
:: Default to the right version of Maya if we can detect it... and launch
|
:: Default to the right version of Maya if we can detect it... and launch
|
||||||
IF EXIST "%MAYA_BIN_PATH%\maya.exe" (
|
IF EXIST "%MAYA_BIN_PATH%\maya.exe" (
|
||||||
+73
@@ -0,0 +1,73 @@
|
|||||||
|
@echo off
|
||||||
|
REM
|
||||||
|
REM Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
REM
|
||||||
|
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
REM
|
||||||
|
REM
|
||||||
|
|
||||||
|
:: Store current dir
|
||||||
|
%~d0
|
||||||
|
cd %~dp0
|
||||||
|
PUSHD %~dp0
|
||||||
|
|
||||||
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||||
|
|
||||||
|
:: if the user has set up a custom env call it
|
||||||
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
|
:: Default Maya and Python version
|
||||||
|
set MAYA_VERSION=2022
|
||||||
|
set DCCSI_PY_VERSION_MAJOR=3
|
||||||
|
set DCCSI_PY_VERSION_MINOR=7
|
||||||
|
set DCCSI_PY_VERSION_RELEASE=7
|
||||||
|
|
||||||
|
CALL %~dp0\..\Env_Core.bat
|
||||||
|
CALL %~dp0\..\Env_Python.bat
|
||||||
|
CALL %~dp0\..\Env_Maya.bat
|
||||||
|
|
||||||
|
:: ide and debugger plug
|
||||||
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||||
|
|
||||||
|
:: Default BASE DCCsi python 3.7 location
|
||||||
|
:: Can be overridden (example, Launch_mayaPy_%MAYA_VERSION%.bat :: MayaPy.exe)
|
||||||
|
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%Launch_mayaPy_%MAYA_VERSION%.bat
|
||||||
|
echo DCCSI_PY_DCCSI = %DCCSI_PY_DCCSI%
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo _____________________________________________________________________
|
||||||
|
echo.
|
||||||
|
echo Launching Maya %MAYA_VERSION% for O3DE DCCsi...
|
||||||
|
echo _____________________________________________________________________
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo MAYA_VERSION = %MAYA_VERSION%
|
||||||
|
echo DCCSI_PY_VERSION_MAJOR = %DCCSI_PY_VERSION_MAJOR%
|
||||||
|
echo DCCSI_PY_VERSION_MINOR = %DCCSI_PY_VERSION_MINOR%
|
||||||
|
echo DCCSI_PY_VERSION_RELEASE = %DCCSI_PY_VERSION_RELEASE%
|
||||||
|
echo MAYA_LOCATION = %MAYA_LOCATION%
|
||||||
|
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
||||||
|
|
||||||
|
:: Change to root dir
|
||||||
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
|
:: Default to the right version of Maya if we can detect it... and launch
|
||||||
|
IF EXIST "%MAYA_BIN_PATH%\maya.exe" (
|
||||||
|
start "" "%MAYA_BIN_PATH%\maya.exe" %*
|
||||||
|
) ELSE (
|
||||||
|
Where maya.exe 2> NUL
|
||||||
|
IF ERRORLEVEL 1 (
|
||||||
|
echo Maya.exe could not be found
|
||||||
|
pause
|
||||||
|
) ELSE (
|
||||||
|
start "" Maya.exe %*
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
::ENDLOCAL
|
||||||
|
|
||||||
|
:: Restore previous directory
|
||||||
|
POPD
|
||||||
|
|
||||||
|
:END_OF_FILE
|
||||||
+9
-9
@@ -17,18 +17,18 @@ COLOR 8E
|
|||||||
cd %~dp0
|
cd %~dp0
|
||||||
PUSHD %~dp0
|
PUSHD %~dp0
|
||||||
|
|
||||||
|
:: if the user has set up a custom env call it
|
||||||
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
:: Default Maya and Python version
|
:: Default Maya and Python version
|
||||||
set MAYA_VERSION=2020
|
set MAYA_VERSION=2020
|
||||||
set DCCSI_PY_VERSION_MAJOR=2
|
set DCCSI_PY_VERSION_MAJOR=2
|
||||||
set DCCSI_PY_VERSION_MINOR=7
|
set DCCSI_PY_VERSION_MINOR=7
|
||||||
set DCCSI_PY_VERSION_RELEASE=11
|
set DCCSI_PY_VERSION_RELEASE=11
|
||||||
|
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0\..\Env_Core.bat
|
||||||
CALL %~dp0\Env_Python.bat
|
CALL %~dp0\..\Env_Python.bat
|
||||||
CALL %~dp0\Env_Maya.bat
|
CALL %~dp0\..\Env_Maya.bat
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
|
||||||
|
|
||||||
:: ide and debugger plug
|
:: ide and debugger plug
|
||||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||||
@@ -48,7 +48,7 @@ echo MAYA_LOCATION = %MAYA_LOCATION%
|
|||||||
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
SETLOCAL ENABLEDELAYEDEXPANSION
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||||
|
|
||||||
@@ -58,10 +58,10 @@ IF EXIST "%DCCSI_PY_MAYA%" (
|
|||||||
) ELSE (
|
) ELSE (
|
||||||
Where maya.exe 2> NUL
|
Where maya.exe 2> NUL
|
||||||
IF ERRORLEVEL 1 (
|
IF ERRORLEVEL 1 (
|
||||||
echo Maya.exe could not be found
|
echo MayaPy.exe could not be found
|
||||||
pause
|
pause
|
||||||
) ELSE (
|
) ELSE (
|
||||||
start "" Maya.exe %*
|
start "" MayaPy.exe %*
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
+73
@@ -0,0 +1,73 @@
|
|||||||
|
@echo off
|
||||||
|
REM
|
||||||
|
REM Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
REM
|
||||||
|
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
REM
|
||||||
|
REM
|
||||||
|
|
||||||
|
:: Set up window
|
||||||
|
TITLE O3DE DCCsi Launch MayaPy
|
||||||
|
:: Use obvious color to prevent confusion (Grey with Yellow Text)
|
||||||
|
COLOR 8E
|
||||||
|
|
||||||
|
:: Store current directory and change to environment directory so script works in any path.
|
||||||
|
%~d0
|
||||||
|
cd %~dp0
|
||||||
|
PUSHD %~dp0
|
||||||
|
|
||||||
|
:: if the user has set up a custom env call it
|
||||||
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
|
:: Default Maya and Python version
|
||||||
|
set MAYA_VERSION=2022
|
||||||
|
set DCCSI_PY_VERSION_MAJOR=3
|
||||||
|
set DCCSI_PY_VERSION_MINOR=7
|
||||||
|
set DCCSI_PY_VERSION_RELEASE=7
|
||||||
|
|
||||||
|
CALL %~dp0\..\Env_Core.bat
|
||||||
|
CALL %~dp0\..\Env_Python.bat
|
||||||
|
CALL %~dp0\..\Env_Maya.bat
|
||||||
|
|
||||||
|
:: ide and debugger plug
|
||||||
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo _____________________________________________________________________
|
||||||
|
echo.
|
||||||
|
echo ~ Launching O3DE DCCsi MayaPy (%MAYA_VERSION%) ...
|
||||||
|
echo ________________________________________________________________
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo MAYA_VERSION = %MAYA_VERSION%
|
||||||
|
echo DCCSI_PY_VERSION_MAJOR = %DCCSI_PY_VERSION_MAJOR%
|
||||||
|
echo DCCSI_PY_VERSION_MINOR = %DCCSI_PY_VERSION_MINOR%
|
||||||
|
echo DCCSI_PY_VERSION_RELEASE = %DCCSI_PY_VERSION_RELEASE%
|
||||||
|
echo MAYA_LOCATION = %MAYA_LOCATION%
|
||||||
|
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
||||||
|
|
||||||
|
:: Change to root dir
|
||||||
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||||
|
|
||||||
|
:: Default to the right version of Maya if we can detect it... and launch
|
||||||
|
IF EXIST "%DCCSI_PY_MAYA%" (
|
||||||
|
start "" "%DCCSI_PY_MAYA%" %*
|
||||||
|
) ELSE (
|
||||||
|
Where maya.exe 2> NUL
|
||||||
|
IF ERRORLEVEL 1 (
|
||||||
|
echo MayaPy.exe could not be found
|
||||||
|
pause
|
||||||
|
) ELSE (
|
||||||
|
start "" MayaPy.exe %*
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
ENDLOCAL
|
||||||
|
|
||||||
|
:: Return to starting directory
|
||||||
|
POPD
|
||||||
|
|
||||||
|
:END_OF_FILE
|
||||||
+14
-14
@@ -74,8 +74,8 @@ echo O3DE_PROJECT = %O3DE_PROJECT%
|
|||||||
:: if not set we also use the DCCsi path as stand-in
|
:: if not set we also use the DCCsi path as stand-in
|
||||||
CD /D ..\..\..\
|
CD /D ..\..\..\
|
||||||
:: To Do: remove one of these
|
:: To Do: remove one of these
|
||||||
IF "%O3DE_PROJECT_PATH%"=="" (set O3DE_PROJECT_PATH=%CD%)
|
IF "%PATH_O3DE_PROJECT%"=="" (set PATH_O3DE_PROJECT=%CD%)
|
||||||
echo O3DE_PROJECT_PATH = %O3DE_PROJECT_PATH%
|
echo PATH_O3DE_PROJECT = %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
IF "%ABS_PATH%"=="" (set ABS_PATH=%CD%)
|
IF "%ABS_PATH%"=="" (set ABS_PATH=%CD%)
|
||||||
echo ABS_PATH = %ABS_PATH%
|
echo ABS_PATH = %ABS_PATH%
|
||||||
@@ -84,7 +84,7 @@ echo ABS_PATH = %ABS_PATH%
|
|||||||
pushd %ABS_PATH%
|
pushd %ABS_PATH%
|
||||||
|
|
||||||
:: Change to root Lumberyard dev dir
|
:: Change to root Lumberyard dev dir
|
||||||
CD /d %O3DE_PROJECT_PATH%\%O3DE_REL_PATH%
|
CD /d %PATH_O3DE_PROJECT%\%O3DE_REL_PATH%
|
||||||
IF "%O3DE_DEV%"=="" (set O3DE_DEV=%CD%)
|
IF "%O3DE_DEV%"=="" (set O3DE_DEV=%CD%)
|
||||||
echo O3DE_DEV = %O3DE_DEV%
|
echo O3DE_DEV = %O3DE_DEV%
|
||||||
:: Restore original directory
|
:: Restore original directory
|
||||||
@@ -92,32 +92,32 @@ popd
|
|||||||
|
|
||||||
:: dcc scripting interface gem path
|
:: dcc scripting interface gem path
|
||||||
:: currently know relative path to this gem
|
:: currently know relative path to this gem
|
||||||
set DCCSIG_PATH=%O3DE_DEV%\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface
|
set PATH_DCCSIG=%O3DE_DEV%\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface
|
||||||
echo DCCSIG_PATH = %DCCSIG_PATH%
|
echo PATH_DCCSIG = %PATH_DCCSIG%
|
||||||
|
|
||||||
:: Change to DCCsi root dir
|
:: Change to DCCsi root dir
|
||||||
CD /D %DCCSIG_PATH%
|
CD /D %PATH_DCCSIG%
|
||||||
|
|
||||||
:: per-dcc sdk path
|
:: per-dcc sdk path
|
||||||
set DCCSI_TOOLS_PATH=%DCCSIG_PATH%\Tools
|
set PATH_DCCSI_TOOLS=%PATH_DCCSIG%\Tools
|
||||||
echo DCCSI_TOOLS_PATH = %DCCSI_TOOLS_PATH%
|
echo PATH_DCCSI_TOOLS = %PATH_DCCSI_TOOLS%
|
||||||
|
|
||||||
:: temp log location specific to this gem
|
:: temp log location specific to this gem
|
||||||
set DCCSI_LOG_PATH=%O3DE_PROJECT_PATH%\.temp\logs
|
set DCCSI_LOG_PATH=%PATH_O3DE_PROJECT%\.temp\logs
|
||||||
echo DCCSI_LOG_PATH = %DCCSI_LOG_PATH%
|
echo DCCSI_LOG_PATH = %DCCSI_LOG_PATH%
|
||||||
|
|
||||||
:: O3DE build path
|
:: O3DE build path
|
||||||
IF "%O3DE_BUILD_FOLDER%"=="" (set O3DE_BUILD_FOLDER=build)
|
IF "%O3DE_BUILD_FOLDER%"=="" (set O3DE_BUILD_FOLDER=build)
|
||||||
echo O3DE_BUILD_FOLDER = %O3DE_BUILD_FOLDER%
|
echo O3DE_BUILD_FOLDER = %O3DE_BUILD_FOLDER%
|
||||||
|
|
||||||
IF "%O3DE_BUILD_PATH%"=="" (set O3DE_BUILD_PATH=%O3DE_DEV%\%O3DE_BUILD_FOLDER%)
|
IF "%PATH_O3DE_BUILD%"=="" (set PATH_O3DE_BUILD=%O3DE_DEV%\%O3DE_BUILD_FOLDER%)
|
||||||
echo O3DE_BUILD_PATH = %O3DE_BUILD_PATH%
|
echo PATH_O3DE_BUILD = %PATH_O3DE_BUILD%
|
||||||
|
|
||||||
IF "%O3DE_BIN_PATH%"=="" (set O3DE_BIN_PATH=%O3DE_BUILD_PATH%\bin\profile)
|
IF "%PATH_O3DE_BIN%"=="" (set PATH_O3DE_BIN=%PATH_O3DE_BUILD%\bin\profile)
|
||||||
echo O3DE_BIN_PATH = %O3DE_BIN_PATH%
|
echo PATH_O3DE_BIN = %PATH_O3DE_BIN%
|
||||||
|
|
||||||
:: add to the PATH
|
:: add to the PATH
|
||||||
SET PATH=%O3DE_BIN_PATH%;%DCCSIG_PATH%;%PATH%
|
SET PATH=%PATH_O3DE_BIN%;%PATH_DCCSIG%;%PATH%
|
||||||
|
|
||||||
::ENDLOCAL
|
::ENDLOCAL
|
||||||
|
|
||||||
|
|||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
REM
|
||||||
|
REM Copyright (c) Contributors to the Open 3D Engine Project.
|
||||||
|
REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||||
|
REM
|
||||||
|
REM SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
REM
|
||||||
|
REM
|
||||||
|
|
||||||
|
set DCCSI_CUSTOM=Foo
|
||||||
|
echo DCCSI_CUSTOM = %DCCSI_CUSTOM%
|
||||||
|
|
||||||
|
set O3DE_BUILD_FOLDER=custom_build
|
||||||
|
echo O3DE_BUILD_FOLDER = %O3DE_BUILD_FOLDER%
|
||||||
|
|
||||||
|
set DCCSI_GDEBUG=True
|
||||||
|
set DCCSI_DEV_MODE=True
|
||||||
|
set DCCSI_GDEBUGGER=WING
|
||||||
|
set DCCSI_LOGLEVEL=10
|
||||||
+8
-7
@@ -22,12 +22,13 @@ IF "%DCCSI_ENV_MAYA_INIT%"=="1" GOTO :END_OF_FILE
|
|||||||
cd %~dp0
|
cd %~dp0
|
||||||
PUSHD %~dp0
|
PUSHD %~dp0
|
||||||
|
|
||||||
IF "%DCCSI_PY_VERSION_MAJOR%"=="" (set DCCSI_PY_VERSION_MAJOR=2)
|
:: Maya 2022: 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)]
|
||||||
|
IF "%DCCSI_PY_VERSION_MAJOR%"=="" (set DCCSI_PY_VERSION_MAJOR=3)
|
||||||
IF "%DCCSI_PY_VERSION_MINOR%"=="" (set DCCSI_PY_VERSION_MINOR=7)
|
IF "%DCCSI_PY_VERSION_MINOR%"=="" (set DCCSI_PY_VERSION_MINOR=7)
|
||||||
IF "%DCCSI_PY_VERSION_RELEASE%"=="" (set DCCSI_PY_VERSION_RELEASE=11)
|
IF "%DCCSI_PY_VERSION_RELEASE%"=="" (set DCCSI_PY_VERSION_RELEASE=7)
|
||||||
|
|
||||||
:: Default Maya Version
|
:: Default Maya Version
|
||||||
IF "%DCCSI_MAYA_VERSION%"=="" (set DCCSI_MAYA_VERSION=2020)
|
IF "%MAYA_VERSION%"=="" (set MAYA_VERSION=2022)
|
||||||
|
|
||||||
:: Initialize env
|
:: Initialize env
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0\Env_Core.bat
|
||||||
@@ -43,14 +44,14 @@ echo.
|
|||||||
echo DCCSI_PY_VERSION_MAJOR = %DCCSI_PY_VERSION_MAJOR%
|
echo DCCSI_PY_VERSION_MAJOR = %DCCSI_PY_VERSION_MAJOR%
|
||||||
echo DCCSI_PY_VERSION_MINOR = %DCCSI_PY_VERSION_MINOR%
|
echo DCCSI_PY_VERSION_MINOR = %DCCSI_PY_VERSION_MINOR%
|
||||||
echo DCCSI_PY_VERSION_RELEASE = %DCCSI_PY_VERSION_RELEASE%
|
echo DCCSI_PY_VERSION_RELEASE = %DCCSI_PY_VERSION_RELEASE%
|
||||||
echo DCCSI_MAYA_VERSION = %DCCSI_MAYA_VERSION%
|
echo MAYA_VERSION = %MAYA_VERSION%
|
||||||
|
|
||||||
:::: Set Maya native project acess to this project
|
:::: Set Maya native project acess to this project
|
||||||
IF "%MAYA_PROJECT%"=="" (set MAYA_PROJECT=%O3DE_PROJECT_PATH%)
|
IF "%MAYA_PROJECT%"=="" (set MAYA_PROJECT=%PATH_O3DE_PROJECT%)
|
||||||
echo MAYA_PROJECT = %MAYA_PROJECT%
|
echo MAYA_PROJECT = %MAYA_PROJECT%
|
||||||
|
|
||||||
:: maya sdk path
|
:: maya sdk path
|
||||||
set DCCSI_TOOLS_MAYA_PATH=%DCCSI_TOOLS_PATH%\DCC\Maya
|
set DCCSI_TOOLS_MAYA_PATH=%PATH_DCCSI_TOOLS%\DCC\Maya
|
||||||
echo DCCSI_TOOLS_MAYA_PATH = %DCCSI_TOOLS_MAYA_PATH%
|
echo DCCSI_TOOLS_MAYA_PATH = %DCCSI_TOOLS_MAYA_PATH%
|
||||||
|
|
||||||
set MAYA_MODULE_PATH=%DCCSI_TOOLS_MAYA_PATH%;%MAYA_MODULE_PATH%
|
set MAYA_MODULE_PATH=%DCCSI_TOOLS_MAYA_PATH%;%MAYA_MODULE_PATH%
|
||||||
@@ -59,7 +60,7 @@ echo MAYA_MODULE_PATH = %MAYA_MODULE_PATH%
|
|||||||
:: Maya File Paths, etc
|
:: Maya File Paths, etc
|
||||||
:: https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2015/ENU/Maya/files/Environment-Variables-File-path-variables-htm.html
|
:: https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2015/ENU/Maya/files/Environment-Variables-File-path-variables-htm.html
|
||||||
:::: Set Maya native project acess to this project
|
:::: Set Maya native project acess to this project
|
||||||
IF "%MAYA_LOCATION%"=="" (set MAYA_LOCATION=%ProgramFiles%\Autodesk\Maya%DCCSI_MAYA_VERSION%)
|
IF "%MAYA_LOCATION%"=="" (set MAYA_LOCATION=%ProgramFiles%\Autodesk\Maya%MAYA_VERSION%)
|
||||||
echo MAYA_LOCATION = %MAYA_LOCATION%
|
echo MAYA_LOCATION = %MAYA_LOCATION%
|
||||||
|
|
||||||
IF "%MAYA_BIN_PATH%"=="" (set MAYA_BIN_PATH=%MAYA_LOCATION%\bin)
|
IF "%MAYA_BIN_PATH%"=="" (set MAYA_BIN_PATH=%MAYA_LOCATION%\bin)
|
||||||
|
|||||||
+14
-12
@@ -17,30 +17,32 @@ IF "%DCCSI_ENV_PYCHARM_INIT%"=="1" GOTO :END_OF_FILE
|
|||||||
cd %~dp0
|
cd %~dp0
|
||||||
PUSHD %~dp0
|
PUSHD %~dp0
|
||||||
|
|
||||||
|
:: version Year
|
||||||
|
IF "%PYCHARM_VERSION_YEAR%"=="" (set PYCHARM_VERSION_YEAR=2020)
|
||||||
:: version Major
|
:: version Major
|
||||||
SET PYCHARM_VERSION_YEAR=2020
|
IF "%PYCHARM_VERSION_MAJOR%"=="" (set PYCHARM_VERSION_MAJOR=3)
|
||||||
:: version Major
|
:: version Minor
|
||||||
SET PYCHARM_VERSION_MAJOR=2
|
IF "%PYCHARM_VERSION_MINOR%"=="" (set PYCHARM_VERSION_MINOR=2)
|
||||||
|
|
||||||
|
|
||||||
|
:: PyCharm install paths look something like the following and has changed from release to release
|
||||||
::"C:\Program Files\JetBrains\PyCharm 2019.1.3\bin"
|
::"C:\Program Files\JetBrains\PyCharm 2019.1.3\bin"
|
||||||
|
::"C:\Program Files\JetBrains\PyCharm 2020.3.2\bin" <-- this is mine @HogJonnyAMZN
|
||||||
::"C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.5\bin\pycharm64.exe"
|
::"C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.5\bin\pycharm64.exe"
|
||||||
|
|
||||||
|
:: The version of PyCharm can be updated without altering the install path
|
||||||
|
:: You can set the envar to your local install path in the Env_Dev.bat file to override
|
||||||
|
:: C:< o3de install location >\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\Tools\Dev\Windows\Env_Dev.bat"
|
||||||
|
|
||||||
:: put project env variables/paths here
|
:: put project env variables/paths here
|
||||||
set PYCHARM_HOME=%PROGRAMFILES%\JetBrains\PyCharm %PYCHARM_VERSION_YEAR%.%PYCHARM_VERSION_MAJOR%
|
IF "%PYCHARM_HOME%"=="" (set PYCHARM_HOME=%PROGRAMFILES%\JetBrains\PyCharm %PYCHARM_VERSION_YEAR%.%PYCHARM_VERSION_MAJOR%.%PYCHARM_VERSION_MINOR%)
|
||||||
|
|
||||||
:: Initialize env
|
:: Initialize env
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0\Env_Core.bat
|
||||||
CALL %~dp0\Env_Python.bat
|
CALL %~dp0\Env_Python.bat
|
||||||
CALL %~dp0\Env_Qt.bat
|
CALL %~dp0\Env_Qt.bat
|
||||||
|
|
||||||
:: Wing and other IDEs probably prefer access directly to the python.exe
|
IF "%PYCHARM_PROJ%"=="" (SET PYCHARM_PROJ=%PATH_DCCSIG%\Tools\Dev\Windows\Solutions)
|
||||||
set DCCSI_PY_IDE = %O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python
|
|
||||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
|
||||||
|
|
||||||
:: ide and debugger plug
|
|
||||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_IDE%\python.exe
|
|
||||||
|
|
||||||
SET PYCHARM_PROJ=%DCCSIG_PATH%\Solutions
|
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
|
|||||||
+11
-11
@@ -42,39 +42,39 @@ echo DCCSI_PY_VERSION_RELEASE = %DCCSI_PY_VERSION_RELEASE%
|
|||||||
:: shared location for 64bit python 3.7 DEV location
|
:: shared location for 64bit python 3.7 DEV location
|
||||||
:: this defines a DCCsi sandbox for lib site-packages by version
|
:: this defines a DCCsi sandbox for lib site-packages by version
|
||||||
:: <O3DE>\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\3rdParty\Python\Lib
|
:: <O3DE>\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\3rdParty\Python\Lib
|
||||||
set DCCSI_PYTHON_PATH=%DCCSIG_PATH%\3rdParty\Python
|
set PATH_DCCSI_PYTHON=%PATH_DCCSIG%\3rdParty\Python
|
||||||
echo DCCSI_PYTHON_PATH = %DCCSI_PYTHON_PATH%
|
echo PATH_DCCSI_PYTHON = %PATH_DCCSI_PYTHON%
|
||||||
|
|
||||||
:: add access to a Lib location that matches the py version (example: 3.7.x)
|
:: add access to a Lib location that matches the py version (example: 3.7.x)
|
||||||
:: switch this for other python versions like maya (2.7.x)
|
:: switch this for other python versions like maya (2.7.x)
|
||||||
IF "%DCCSI_PYTHON_LIB_PATH%"=="" (set DCCSI_PYTHON_LIB_PATH=%DCCSI_PYTHON_PATH%\Lib\%DCCSI_PY_VERSION_MAJOR%.x\%DCCSI_PY_VERSION_MAJOR%.%DCCSI_PY_VERSION_MINOR%.x\site-packages)
|
IF "%PATH_DCCSI_PYTHON_LIB%"=="" (set PATH_DCCSI_PYTHON_LIB=%PATH_DCCSI_PYTHON%\Lib\%DCCSI_PY_VERSION_MAJOR%.x\%DCCSI_PY_VERSION_MAJOR%.%DCCSI_PY_VERSION_MINOR%.x\site-packages)
|
||||||
echo DCCSI_PYTHON_LIB_PATH = %DCCSI_PYTHON_LIB_PATH%
|
echo PATH_DCCSI_PYTHON_LIB = %PATH_DCCSI_PYTHON_LIB%
|
||||||
|
|
||||||
:: add to the PATH
|
:: add to the PATH
|
||||||
SET PATH=%DCCSI_PYTHON_LIB_PATH%;%PATH%
|
SET PATH=%PATH_DCCSI_PYTHON_LIB%;%PATH%
|
||||||
|
|
||||||
:: shared location for default O3DE python location
|
:: shared location for default O3DE python location
|
||||||
set O3DE_PYTHON_INSTALL=%O3DE_DEV%\python
|
set PATH_O3DE_PYTHON_INSTALL=%O3DE_DEV%\python
|
||||||
echo O3DE_PYTHON_INSTALL = %O3DE_PYTHON_INSTALL%
|
echo PATH_O3DE_PYTHON_INSTALL = %PATH_O3DE_PYTHON_INSTALL%
|
||||||
|
|
||||||
:: location for O3DE python 3.7 location
|
:: location for O3DE python 3.7 location
|
||||||
:: Note, many DCC tools (like Maya) include thier own python interpretter
|
:: Note, many DCC tools (like Maya) include thier own python interpretter
|
||||||
:: Some DCC apps may not operate correctly if PYTHONHOME is set (this is definitely the case with Maya)
|
:: Some DCC apps may not operate correctly if PYTHONHOME is set (this is definitely the case with Maya)
|
||||||
:: Be aware the python.cmd below does set PYTHONHOME
|
:: Be aware the python.cmd below does set PYTHONHOME
|
||||||
set DCCSI_PY_BASE=%O3DE_PYTHON_INSTALL%\python.cmd
|
set DCCSI_PY_BASE=%PATH_O3DE_PYTHON_INSTALL%\python.cmd
|
||||||
echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
|
echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
|
||||||
|
|
||||||
CALL %O3DE_PYTHON_INSTALL%\get_python_path.bat
|
CALL %PATH_O3DE_PYTHON_INSTALL%\get_python_path.bat
|
||||||
|
|
||||||
:: Some IDEs like Wing, may in some cases need acess directly to the exe to operate correctly
|
:: Some IDEs like Wing, may in some cases need acess directly to the exe to operate correctly
|
||||||
IF "%DCCSI_PY_IDE%"=="" (set DCCSI_PY_IDE=%O3DE_PYTHONHOME%\python.exe)
|
IF "%DCCSI_PY_IDE%"=="" (set DCCSI_PY_IDE=%O3DE_PYTHONHOME%\python.exe)
|
||||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
||||||
|
|
||||||
:: add to the PATH
|
:: add to the PATH
|
||||||
SET PATH=%O3DE_PYTHON_INSTALL%;%O3DE_PYTHONHOME%;%DCCSI_PY_IDE%;%PATH%
|
SET PATH=%PATH_O3DE_PYTHON_INSTALL%;%O3DE_PYTHONHOME%;%DCCSI_PY_IDE%;%PATH%
|
||||||
|
|
||||||
:: add all python related paths to PYTHONPATH for package imports
|
:: add all python related paths to PYTHONPATH for package imports
|
||||||
set PYTHONPATH=%DCCSIG_PATH%;%DCCSI_PYTHON_LIB_PATH%;%O3DE_BUILD_PATH%;%PYTHONPATH%
|
set PYTHONPATH=%PATH_DCCSIG%;%PATH_DCCSI_PYTHON_LIB%;%PATH_O3DE_BUILD%;%PYTHONPATH%
|
||||||
echo PYTHONPATH = %PYTHONPATH%
|
echo PYTHONPATH = %PYTHONPATH%
|
||||||
|
|
||||||
:: Set flag so we don't initialize dccsi environment twice
|
:: Set flag so we don't initialize dccsi environment twice
|
||||||
|
|||||||
+4
-4
@@ -41,16 +41,16 @@ echo QTFORPYTHON_PATH = %QTFORPYTHON_PATH%
|
|||||||
SET PATH=%QTFORPYTHON_PATH%;%PATH%
|
SET PATH=%QTFORPYTHON_PATH%;%PATH%
|
||||||
SET PYTHONPATH=%QTFORPYTHON_PATH%;%PYTHONPATH%
|
SET PYTHONPATH=%QTFORPYTHON_PATH%;%PYTHONPATH%
|
||||||
|
|
||||||
set QT_PLUGIN_PATH=%O3DE_BUILD_PATH%\bin\profile\EditorPlugins
|
set QT_PLUGIN_PATH=%PATH_O3DE_BUILD%\bin\profile\EditorPlugins
|
||||||
echo QT_PLUGIN_PATH = %QT_PLUGIN_PATH%
|
echo QT_PLUGIN_PATH = %QT_PLUGIN_PATH%
|
||||||
|
|
||||||
:: add to the PATH
|
:: add to the PATH
|
||||||
SET PATH=%QT_PLUGIN_PATH%;%PATH%
|
SET PATH=%QT_PLUGIN_PATH%;%PATH%
|
||||||
SET PYTHONPATH=%QT_PLUGIN_PATH%;%PYTHONPATH%
|
SET PYTHONPATH=%QT_PLUGIN_PATH%;%PYTHONPATH%
|
||||||
|
|
||||||
set O3DE_BIN_PATH=%O3DE_BUILD_PATH%\bin\profile
|
set PATH_O3DE_BIN=%PATH_O3DE_BUILD%\bin\profile
|
||||||
echo O3DE_BIN_PATH = %O3DE_BIN_PATH%
|
echo PATH_O3DE_BIN = %PATH_O3DE_BIN%
|
||||||
SET PATH=%O3DE_BIN_PATH%;%PATH%
|
SET PATH=%PATH_O3DE_BIN%;%PATH%
|
||||||
|
|
||||||
::ENDLOCAL
|
::ENDLOCAL
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -31,16 +31,16 @@ echo.
|
|||||||
|
|
||||||
: Substance Designer
|
: Substance Designer
|
||||||
:: maya sdk path
|
:: maya sdk path
|
||||||
set DCCSI_SUBSTANCE_PATH=%DCCSI_TOOLS_PATH%\Substance
|
set PATH_DCCSI_SUBSTANCE=%PATH_DCCSI_TOOLS%\Substance
|
||||||
echo DCCSI_SUBSTANCE_PATH = %DCCSI_SUBSTANCE_PATH%
|
echo PATH_DCCSI_SUBSTANCE = %PATH_DCCSI_SUBSTANCE%
|
||||||
:: https://docs.substance3d.com/sddoc/project-preferences-107118596.html#ProjectPreferences-ConfigurationFile
|
:: https://docs.substance3d.com/sddoc/project-preferences-107118596.html#ProjectPreferences-ConfigurationFile
|
||||||
:: Path to .exe, "C:\Program Files\Allegorithmic\Substance Designer\Substance Designer.exe"
|
:: Path to .exe, "C:\Program Files\Allegorithmic\Substance Designer\Substance Designer.exe"
|
||||||
set SUBSTANCE_PATH="%ProgramFiles%\Allegorithmic\Substance Designer"
|
set PATH_SUBSTANCE_DESIGNER="%ProgramFiles%\Allegorithmic\Substance Designer"
|
||||||
echo SUBSTANCE_PATH = %SUBSTANCE_PATH%
|
echo PATH_SUBSTANCE_DESIGNER = %PATH_SUBSTANCE_DESIGNER%
|
||||||
|
|
||||||
:: default config
|
:: default config
|
||||||
set SUBSTANCE_CFG_PATH=%O3DE_PROJECT_PATH%\DCCsi_default.sbscfg
|
IF "%PATH_SUBSTANCE_DESIGNER_CFG%"=="" (set PATH_SUBSTANCE_DESIGNER_CFG=%PATH_O3DE_PROJECT%\DCCsi_default.sbscfg)
|
||||||
echo SUBSTANCE_CFG_PATH = %SUBSTANCE_CFG_PATH%
|
echo PATH_SUBSTANCE_DESIGNER_CFG = %PATH_SUBSTANCE_DESIGNER_CFG%
|
||||||
|
|
||||||
::ENDLOCAL
|
::ENDLOCAL
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ CALL %~dp0\Env_Qt.bat
|
|||||||
:: that will change the paths assumed in this launcher (assume system install)
|
:: that will change the paths assumed in this launcher (assume system install)
|
||||||
:: vscode envars: https://code.visualstudio.com/docs/editor/variables-reference
|
:: vscode envars: https://code.visualstudio.com/docs/editor/variables-reference
|
||||||
|
|
||||||
SET VSCODE_WRKSPC=%DCCSIG_PATH%\Solutions\.vscode\dccsi.code-workspace
|
IF "%VSCODE_WRKSPC%"=="" (SET VSCODE_WRKSPC=%PATH_DCCSIG%\Solutions\.vscode\dccsi.code-workspace)
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
|
|||||||
+2
-2
@@ -28,8 +28,8 @@ CALL %~dp0\Env_Python.bat
|
|||||||
CALL %~dp0\Env_Qt.bat
|
CALL %~dp0\Env_Qt.bat
|
||||||
|
|
||||||
:: put project env variables/paths here
|
:: put project env variables/paths here
|
||||||
set WINGHOME=%PROGRAMFILES(X86)%\Wing Pro %DCCSI_WING_VERSION_MAJOR%.%DCCSI_WING_VERSION_MINOR%
|
IF "%WINGHOME%"=="" (set WINGHOME=%PROGRAMFILES(X86)%\Wing Pro %DCCSI_WING_VERSION_MAJOR%.%DCCSI_WING_VERSION_MINOR%)
|
||||||
SET WING_PROJ=%DCCSIG_PATH%\Tools\Dev\Windows\Solutions\.wing\DCCsi_%DCCSI_WING_VERSION_MAJOR%x.wpr
|
IF "%WING_PROJ%"=="" (set WING_PROJ=%PATH_DCCSIG%\Tools\Dev\Windows\Solutions\.wing\DCCsi_%DCCSI_WING_VERSION_MAJOR%x.wpr)
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
|
|||||||
+11
-23
@@ -19,10 +19,10 @@ PUSHD %~dp0
|
|||||||
|
|
||||||
:: Constant Vars (Global)
|
:: Constant Vars (Global)
|
||||||
:: global debug (propogates)
|
:: global debug (propogates)
|
||||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||||
:: initiates debugger connection
|
:: initiates debugger connection
|
||||||
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=True)
|
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=False)
|
||||||
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
||||||
:: sets debugger, options: WING, PYCHARM
|
:: sets debugger, options: WING, PYCHARM
|
||||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||||
@@ -34,14 +34,17 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
|||||||
:: INFO:20
|
:: INFO:20
|
||||||
:: DEBUG:10
|
:: DEBUG:10
|
||||||
:: NOTSET:0
|
:: NOTSET:0
|
||||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||||
|
|
||||||
|
:: if the user has set up a custom env call it
|
||||||
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
:: Initialize env
|
:: Initialize env
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0..\Env_Core.bat
|
||||||
CALL %~dp0\Env_Python.bat
|
CALL %~dp0..\Env_Python.bat
|
||||||
CALL %~dp0\Env_PyCharm.bat
|
CALL %~dp0..\Env_PyCharm.bat
|
||||||
CALL %~dp0\Env_Maya.bat
|
CALL %~dp0..\Env_Maya.bat
|
||||||
|
|
||||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||||
|
|
||||||
@@ -58,29 +61,14 @@ echo.
|
|||||||
|
|
||||||
echo O3DE_DEV = %O3DE_DEV%
|
echo O3DE_DEV = %O3DE_DEV%
|
||||||
|
|
||||||
:: shared location for default O3DE python location
|
|
||||||
set O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
|
||||||
echo O3DE_PYTHON_INSTALL = %O3DE_PYTHON_INSTALL%
|
|
||||||
|
|
||||||
:: Wing and other IDEs probably prefer access directly to the python.exe
|
|
||||||
set DCCSI_PY_IDE = %O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python
|
|
||||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
|
||||||
|
|
||||||
:: ide and debugger plug
|
|
||||||
set DCCSI_PY_BASE=%DCCSI_PY_IDE%\python.exe
|
|
||||||
echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
|
|
||||||
|
|
||||||
:: ide and debugger plug
|
:: ide and debugger plug
|
||||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||||
echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT%
|
echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT%
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
IF EXIST "%PYCHARM_HOME%\bin\pycharm64.exe" (
|
IF EXIST "%PYCHARM_HOME%\bin\pycharm64.exe" (
|
||||||
start "" "%PYCHARM_HOME%\bin\pycharm64.exe" "%PYCHARM_PROJ%"
|
start "" "%PYCHARM_HOME%\bin\pycharm64.exe" "%PYCHARM_PROJ%"
|
||||||
+8
-8
@@ -19,13 +19,13 @@ PUSHD %~dp0
|
|||||||
|
|
||||||
:: Constant Vars (Global)
|
:: Constant Vars (Global)
|
||||||
:: global debug (propogates)
|
:: global debug (propogates)
|
||||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||||
:: initiates debugger connection
|
:: initiates debugger connection
|
||||||
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=True)
|
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=False)
|
||||||
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
||||||
:: sets debugger, options: WING, PYCHARM
|
:: sets debugger, options: WING, PYCHARM
|
||||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=PYCHARM)
|
||||||
echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||||
:: Default level logger will handle
|
:: Default level logger will handle
|
||||||
:: CRITICAL:50
|
:: CRITICAL:50
|
||||||
@@ -34,14 +34,14 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
|||||||
:: INFO:20
|
:: INFO:20
|
||||||
:: DEBUG:10
|
:: DEBUG:10
|
||||||
:: NOTSET:0
|
:: NOTSET:0
|
||||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||||
|
|
||||||
:: Initialize env
|
|
||||||
CALL %~dp0\Env_PyCharm.bat
|
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
:: if the user has set up a custom env call it
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
|
:: Initialize env
|
||||||
|
CALL %~dp0\..\Env_PyCharm.bat
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
+16
-15
@@ -29,10 +29,10 @@ PUSHD %~dp0
|
|||||||
|
|
||||||
:: Constant Vars (Global)
|
:: Constant Vars (Global)
|
||||||
:: global debug (propogates)
|
:: global debug (propogates)
|
||||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||||
:: initiates debugger connection
|
:: initiates debugger connection
|
||||||
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=True)
|
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=False)
|
||||||
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
||||||
:: sets debugger, options: WING, PYCHARM
|
:: sets debugger, options: WING, PYCHARM
|
||||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||||
@@ -44,15 +44,19 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
|||||||
:: INFO:20
|
:: INFO:20
|
||||||
:: DEBUG:10
|
:: DEBUG:10
|
||||||
:: NOTSET:0
|
:: NOTSET:0
|
||||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||||
|
|
||||||
:: Initialize envCALL %~dp0\Env_Core.bat
|
:: if the user has set up a custom env call it
|
||||||
CALL %~dp0\Env_Python.bat
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
CALL %~dp0\Env_Qt.bat
|
|
||||||
CALL %~dp0\Env_Maya.bat
|
:: Initialize env
|
||||||
CALL %~dp0\Env_Substance.bat
|
CALL %~dp0\..\Env_Core.bat
|
||||||
CALL %~dp0\Env_VScode.bat
|
CALL %~dp0\..\Env_Python.bat
|
||||||
|
CALL %~dp0\..\Env_Qt.bat
|
||||||
|
CALL %~dp0\..\Env_Maya.bat
|
||||||
|
CALL %~dp0\..\Env_Substance.bat
|
||||||
|
CALL %~dp0\..\Env_VScode.bat
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
@@ -64,11 +68,11 @@ echo.
|
|||||||
echo O3DE_DEV = %O3DE_DEV%
|
echo O3DE_DEV = %O3DE_DEV%
|
||||||
|
|
||||||
:: shared location for default O3DE python location
|
:: shared location for default O3DE python location
|
||||||
set O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
set PATH_O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
||||||
echo O3DE_PYTHON_INSTALL = %O3DE_PYTHON_INSTALL%
|
echo PATH_O3DE_PYTHON_INSTALL = %PATH_O3DE_PYTHON_INSTALL%
|
||||||
|
|
||||||
:: Wing and other IDEs probably prefer access directly to the python.exe
|
:: Wing and other IDEs probably prefer access directly to the python.exe
|
||||||
set DCCSI_PY_IDE = %O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python
|
set DCCSI_PY_IDE = %PATH_O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python
|
||||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
||||||
|
|
||||||
:: ide and debugger plug
|
:: ide and debugger plug
|
||||||
@@ -79,9 +83,6 @@ echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
|
|||||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE%
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE%
|
||||||
echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT%
|
echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT%
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
REM "C:\Program Files\Microsoft VS Code\Code.exe"
|
REM "C:\Program Files\Microsoft VS Code\Code.exe"
|
||||||
+13
-13
@@ -21,14 +21,14 @@ cd %~dp0
|
|||||||
PUSHD %~dp0
|
PUSHD %~dp0
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
:: if the user has set up a custom env call it
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
:: Constant Vars (Global)
|
:: Constant Vars (Global)
|
||||||
:: global debug (propogates)
|
:: global debug (propogates)
|
||||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||||
:: initiates debugger connection
|
:: initiates debugger connection
|
||||||
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=True)
|
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=False)
|
||||||
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
||||||
:: sets debugger, options: WING, PYCHARM
|
:: sets debugger, options: WING, PYCHARM
|
||||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||||
@@ -40,16 +40,16 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
|||||||
:: INFO:20
|
:: INFO:20
|
||||||
:: DEBUG:10
|
:: DEBUG:10
|
||||||
:: NOTSET:0
|
:: NOTSET:0
|
||||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||||
|
|
||||||
:: Initialize env
|
:: Initialize env
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0\..\Env_Core.bat
|
||||||
CALL %~dp0\Env_Python.bat
|
CALL %~dp0\..\Env_Python.bat
|
||||||
CALL %~dp0\Env_Qt.bat
|
CALL %~dp0\..\Env_Qt.bat
|
||||||
CALL %~dp0\Env_Maya.bat
|
CALL %~dp0\..\Env_Maya.bat
|
||||||
CALL %~dp0\Env_Substance.bat
|
CALL %~dp0\..\Env_Substance.bat
|
||||||
CALL %~dp0\Env_WingIDE.bat
|
CALL %~dp0\..\Env_WingIDE.bat
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
echo.
|
echo.
|
||||||
@@ -61,13 +61,13 @@ echo.
|
|||||||
echo O3DE_DEV = %O3DE_DEV%
|
echo O3DE_DEV = %O3DE_DEV%
|
||||||
|
|
||||||
:: shared location for default O3DE python location
|
:: shared location for default O3DE python location
|
||||||
set O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
set PATH_O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
||||||
echo O3DE_PYTHON_INSTALL = %O3DE_PYTHON_INSTALL%
|
echo PATH_O3DE_PYTHON_INSTALL = %PATH_O3DE_PYTHON_INSTALL%
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
IF EXIST "%WINGHOME%\bin\wing.exe" (
|
IF EXIST "%WINGHOME%\bin\wing.exe" (
|
||||||
start "" "%WINGHOME%\bin\wing.exe" "%WING_PROJ%"
|
start "" "%WINGHOME%\bin\wing.exe" "%WING_PROJ%"
|
||||||
+11
-23
@@ -22,10 +22,10 @@ PUSHD %~dp0
|
|||||||
|
|
||||||
:: Constant Vars (Global)
|
:: Constant Vars (Global)
|
||||||
:: global debug (propogates)
|
:: global debug (propogates)
|
||||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||||
:: initiates debugger connection
|
:: initiates debugger connection
|
||||||
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=True)
|
IF "%DCCSI_DEV_MODE%"=="" (set DCCSI_DEV_MODE=False)
|
||||||
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
echo DCCSI_DEV_MODE = %DCCSI_DEV_MODE%
|
||||||
:: sets debugger, options: WING, PYCHARM
|
:: sets debugger, options: WING, PYCHARM
|
||||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||||
@@ -37,14 +37,17 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
|||||||
:: INFO:20
|
:: INFO:20
|
||||||
:: DEBUG:10
|
:: DEBUG:10
|
||||||
:: NOTSET:0
|
:: NOTSET:0
|
||||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||||
|
|
||||||
|
:: if the user has set up a custom env call it
|
||||||
|
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||||
|
|
||||||
:: Initialize env
|
:: Initialize env
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0\..\Env_Core.bat
|
||||||
CALL %~dp0\Env_Python.bat
|
CALL %~dp0\..\Env_Python.bat
|
||||||
CALL %~dp0\Env_WingIDE.bat
|
CALL %~dp0\..\Env_WingIDE.bat
|
||||||
CALL %~dp0\Env_Maya.bat
|
CALL %~dp0\..\Env_Maya.bat
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo _____________________________________________________________________
|
echo _____________________________________________________________________
|
||||||
@@ -57,29 +60,14 @@ echo.
|
|||||||
|
|
||||||
echo O3DE_DEV = %O3DE_DEV%
|
echo O3DE_DEV = %O3DE_DEV%
|
||||||
|
|
||||||
:: shared location for default O3DE python location
|
|
||||||
set O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
|
||||||
echo O3DE_PYTHON_INSTALL = %O3DE_PYTHON_INSTALL%
|
|
||||||
|
|
||||||
:: Wing and other IDEs probably prefer access directly to the python.exe
|
|
||||||
set DCCSI_PY_IDE = %O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python
|
|
||||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
|
||||||
|
|
||||||
:: ide and debugger plug
|
|
||||||
set DCCSI_PY_BASE=%DCCSI_PY_IDE%\python.exe
|
|
||||||
echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
|
|
||||||
|
|
||||||
:: ide and debugger plug
|
:: ide and debugger plug
|
||||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||||
echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT%
|
echo DCCSI_PY_DEFAULT = %DCCSI_PY_DEFAULT%
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
IF EXIST "%WINGHOME%\bin\wing.exe" (
|
IF EXIST "%WINGHOME%\bin\wing.exe" (
|
||||||
start "" "%WINGHOME%\bin\wing.exe" "%WING_PROJ%"
|
start "" "%WINGHOME%\bin\wing.exe" "%WING_PROJ%"
|
||||||
+4
-4
@@ -29,6 +29,9 @@ PUSHD %~dp0
|
|||||||
|
|
||||||
SETLOCAL ENABLEDELAYEDEXPANSION
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||||
|
|
||||||
|
:: if the user has set up a custom env call it
|
||||||
|
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
||||||
|
|
||||||
CALL %~dp0\Env_Core.bat
|
CALL %~dp0\Env_Core.bat
|
||||||
CALL %~dp0\Env_Python.bat
|
CALL %~dp0\Env_Python.bat
|
||||||
CALL %~dp0\Env_Qt.bat
|
CALL %~dp0\Env_Qt.bat
|
||||||
@@ -36,11 +39,8 @@ CALL %~dp0\Env_Maya.bat
|
|||||||
CALL %~dp0\Env_Substance.bat
|
CALL %~dp0\Env_Substance.bat
|
||||||
CALL %~dp0\Env_WingIDE.bat
|
CALL %~dp0\Env_WingIDE.bat
|
||||||
|
|
||||||
:: if the user has set up a custom env call it
|
|
||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
:: Create command prompt with environment
|
:: Create command prompt with environment
|
||||||
CALL %windir%\system32\cmd.exe
|
CALL %windir%\system32\cmd.exe
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ echo _____________________________________________________________________
|
|||||||
echo.
|
echo.
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
:: Create command prompt with environment
|
:: Create command prompt with environment
|
||||||
CALL %windir%\system32\cmd.exe
|
CALL %windir%\system32\cmd.exe
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@ echo _____________________________________________________________________
|
|||||||
echo.
|
echo.
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
:: Create command prompt with environment
|
:: Create command prompt with environment
|
||||||
CALL %windir%\system32\cmd.exe
|
CALL %windir%\system32\cmd.exe
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ CALL %~dp0\Env_Maya.bat
|
|||||||
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
IF EXIST "%~dp0Env_Dev.bat" CALL %~dp0Env_Dev.bat
|
||||||
|
|
||||||
:: Change to root dir
|
:: Change to root dir
|
||||||
CD /D %O3DE_PROJECT_PATH%
|
CD /D %PATH_O3DE_PROJECT%
|
||||||
|
|
||||||
:: Create command prompt with environment
|
:: Create command prompt with environment
|
||||||
CALL %windir%\system32\cmd.exe
|
CALL %windir%\system32\cmd.exe
|
||||||
|
|||||||
+2
-2
@@ -16,9 +16,9 @@ PUSHD %~dp0
|
|||||||
set O3DE_DEV=..\..\..\..\..\..
|
set O3DE_DEV=..\..\..\..\..\..
|
||||||
|
|
||||||
:: shared location for default O3DE python location
|
:: shared location for default O3DE python location
|
||||||
set O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
set PATH_O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
||||||
|
|
||||||
set PY_SITE=%O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python\Lib\site-packages
|
set PY_SITE=%PATH_O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python\Lib\site-packages
|
||||||
|
|
||||||
set PACKAGE_LOC=C:\Depot\3rdParty\packages\openimageio-2.1.16.0-rev1-windows\OpenImageIO\2.1.16.0\win_x64\bin
|
set PACKAGE_LOC=C:\Depot\3rdParty\packages\openimageio-2.1.16.0-rev1-windows\OpenImageIO\2.1.16.0\win_x64\bin
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,2 +1,3 @@
|
|||||||
# Default ignored files
|
# Default ignored files
|
||||||
./workspace.xml
|
./workspace.xml
|
||||||
|
venv
|
||||||
+3
-9
@@ -12,15 +12,9 @@
|
|||||||
<sourceFolder url="file://$MODULE_DIR$/../MockProject" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/../MockProject" type="java-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/../SDK" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/../SDK" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$" type="java-resource" />
|
<sourceFolder url="file://$MODULE_DIR$" type="java-resource" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.idea/venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.7 (Solutions) (2)" jdkType="Python SDK" />
|
<orderEntry type="jdk" jdkName="Python 3.7 (Windows)" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PyNamespacePackagesService">
|
</module>
|
||||||
<option name="namespacePackageFolders">
|
|
||||||
<list>
|
|
||||||
<option value="$MODULE_DIR$/../azpy" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</module>
|
|
||||||
Gems/AtomLyIntegration/TechnicalArt/DccScriptingInterface/Tools/Dev/Windows/Solutions/.idea/misc.xml
Generated
+2
-2
@@ -3,8 +3,8 @@
|
|||||||
<component name="JavaScriptSettings">
|
<component name="JavaScriptSettings">
|
||||||
<option name="languageLevel" value="ES6" />
|
<option name="languageLevel" value="ES6" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (Solutions) (2)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (Windows)" project-jdk-type="Python SDK" />
|
||||||
<component name="PyPackaging">
|
<component name="PyPackaging">
|
||||||
<option name="earlyReleasesAsUpgrades" value="true" />
|
<option name="earlyReleasesAsUpgrades" value="true" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
Generated
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="$PROJECT_DIR$/../../../../.." vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/../../../../../../../.." vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -40,9 +40,9 @@ __all__ = ['config_utils',
|
|||||||
|
|
||||||
# we need to set up basic access to the DCCsi
|
# we need to set up basic access to the DCCsi
|
||||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||||
site.addsitedir(_DCCSIG_PATH)
|
site.addsitedir(_PATH_DCCSIG)
|
||||||
|
|
||||||
# azpy
|
# azpy
|
||||||
import azpy.return_stub as return_stub
|
import azpy.return_stub as return_stub
|
||||||
@@ -52,12 +52,31 @@ import azpy.config_utils as config_utils
|
|||||||
|
|
||||||
_DCCSI_GDEBUG = env_bool.env_bool(constants.ENVAR_DCCSI_GDEBUG, False)
|
_DCCSI_GDEBUG = env_bool.env_bool(constants.ENVAR_DCCSI_GDEBUG, False)
|
||||||
_DCCSI_DEV_MODE = env_bool.env_bool(constants.ENVAR_DCCSI_DEV_MODE, False)
|
_DCCSI_DEV_MODE = env_bool.env_bool(constants.ENVAR_DCCSI_DEV_MODE, False)
|
||||||
_DCCSI_LOGLEVEL = int(env_bool.env_bool(constants.ENVAR_DCCSI_LOGLEVEL, int(20)))
|
_DCCSI_GDEBUGGER = env_bool.env_bool(constants.ENVAR_DCCSI_GDEBUGGER, 'WING')
|
||||||
if _DCCSI_GDEBUG:
|
|
||||||
_DCCSI_LOGLEVEL = int(10)
|
|
||||||
|
|
||||||
|
# default loglevel to info unless set
|
||||||
|
_DCCSI_LOGLEVEL = int(env_bool.env_bool(constants.ENVAR_DCCSI_LOGLEVEL,
|
||||||
|
_logging.INFO))
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
# override loglevel if runnign debug
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
|
||||||
|
# set up module logging
|
||||||
|
for handler in _logging.root.handlers[:]:
|
||||||
|
_logging.root.removeHandler(handler)
|
||||||
|
|
||||||
|
_logging.basicConfig(level=_DCCSI_LOGLEVEL,
|
||||||
|
format=constants.FRMT_LOG_LONG,
|
||||||
|
datefmt='%m-%d %H:%M')
|
||||||
|
|
||||||
|
_LOGGER = _logging.getLogger(_PACKAGENAME)
|
||||||
|
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
# for py2.7 (Maya) we provide this, so we must assume some bootstrapping
|
# for py2.7 (Maya) we provide this, so we must assume some bootstrapping
|
||||||
# has occured, see DccScriptingInterface\\config.py (_DCCSI_PYTHON_LIB_PATH)
|
# has occured, see DccScriptingInterface\\config.py (_PATH_DCCSI_PYTHON_LIB)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import pathlib
|
import pathlib
|
||||||
@@ -69,16 +88,6 @@ if _DCCSI_GDEBUG:
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# set up module logging
|
|
||||||
#for handler in _logging.root.handlers[:]:
|
|
||||||
#_logging.root.removeHandler(handler)
|
|
||||||
_logging.basicConfig(format=constants.FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
|
|
||||||
_LOGGER = _logging.getLogger(_PACKAGENAME)
|
|
||||||
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# get/set the project name
|
# get/set the project name
|
||||||
_O3DE_DEV = Path(os.getenv(constants.ENVAR_O3DE_DEV,
|
_O3DE_DEV = Path(os.getenv(constants.ENVAR_O3DE_DEV,
|
||||||
@@ -86,21 +95,21 @@ _O3DE_DEV = Path(os.getenv(constants.ENVAR_O3DE_DEV,
|
|||||||
check_stub='engine.json')))
|
check_stub='engine.json')))
|
||||||
_LOGGER.debug('_O3DE_DEV" {}'.format(_O3DE_DEV.resolve()))
|
_LOGGER.debug('_O3DE_DEV" {}'.format(_O3DE_DEV.resolve()))
|
||||||
|
|
||||||
_O3DE_PROJECT_PATH = Path(os.getenv(constants.ENVAR_O3DE_PROJECT_PATH,
|
_PATH_O3DE_PROJECT = Path(os.getenv(constants.ENVAR_PATH_O3DE_PROJECT,
|
||||||
config_utils.get_o3de_project_path()))
|
config_utils.get_o3de_project_path()))
|
||||||
_LOGGER.debug('_O3DE_PROJECT_PATH" {}'.format(_O3DE_PROJECT_PATH.resolve()))
|
_LOGGER.debug('_PATH_O3DE_PROJECT" {}'.format(_PATH_O3DE_PROJECT.resolve()))
|
||||||
|
|
||||||
# get/set the project name
|
# get/set the project name
|
||||||
if _O3DE_PROJECT_PATH:
|
if _PATH_O3DE_PROJECT:
|
||||||
_O3DE_PROJECT = str(os.getenv(constants.ENVAR_O3DE_PROJECT,
|
_O3DE_PROJECT = str(os.getenv(constants.ENVAR_O3DE_PROJECT,
|
||||||
_O3DE_PROJECT_PATH.name))
|
_PATH_O3DE_PROJECT.name))
|
||||||
else:
|
else:
|
||||||
_O3DE_PROJECT='o3de'
|
_O3DE_PROJECT='o3de'
|
||||||
|
|
||||||
# project cache log dir path
|
# project cache log dir path
|
||||||
from azpy.constants import TAG_DCCSI_NICKNAME
|
from azpy.constants import TAG_DCCSI_NICKNAME
|
||||||
from azpy.constants import PATH_DCCSI_LOG_PATH
|
from azpy.constants import PATH_DCCSI_LOG_PATH
|
||||||
_DCCSI_LOG_PATH = Path(PATH_DCCSI_LOG_PATH.format(O3DE_PROJECT_PATH=_O3DE_PROJECT_PATH.resolve(),
|
_DCCSI_LOG_PATH = Path(PATH_DCCSI_LOG_PATH.format(PATH_O3DE_PROJECT=_PATH_O3DE_PROJECT.resolve(),
|
||||||
TAG_DCCSI_NICKNAME=TAG_DCCSI_NICKNAME))
|
TAG_DCCSI_NICKNAME=TAG_DCCSI_NICKNAME))
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -214,7 +223,7 @@ if _DCCSI_GDEBUG:
|
|||||||
# debug breadcrumbs to check this module and used paths
|
# debug breadcrumbs to check this module and used paths
|
||||||
_LOGGER.debug('MODULE_PATH: {}'.format(_MODULE_PATH))
|
_LOGGER.debug('MODULE_PATH: {}'.format(_MODULE_PATH))
|
||||||
_LOGGER.debug('O3DE_DEV_PATH: {}'.format(_O3DE_DEV))
|
_LOGGER.debug('O3DE_DEV_PATH: {}'.format(_O3DE_DEV))
|
||||||
_LOGGER.debug('DCCSI_PATH: {}'.format(_DCCSIG_PATH))
|
_LOGGER.debug('PATH_DCCSIG: {}'.format(_PATH_DCCSIG))
|
||||||
_LOGGER.debug('O3DE_PROJECT_TAG: {}'.format(_O3DE_PROJECT))
|
_LOGGER.debug('O3DE_PROJECT_TAG: {}'.format(_O3DE_PROJECT))
|
||||||
_LOGGER.debug('DCCSI_LOG_PATH: {}'.format(_DCCSI_LOG_PATH))
|
_LOGGER.debug('DCCSI_LOG_PATH: {}'.format(_DCCSI_LOG_PATH))
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -258,5 +267,5 @@ if __name__ == '__main__':
|
|||||||
_DCCSI_DEV_MODE = True
|
_DCCSI_DEV_MODE = True
|
||||||
|
|
||||||
if _DCCSI_GDEBUG:
|
if _DCCSI_GDEBUG:
|
||||||
print(_DCCSIG_PATH)
|
print(_PATH_DCCSIG)
|
||||||
test_imports()
|
test_imports()
|
||||||
|
|||||||
@@ -8,7 +8,29 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
# note: this module should reamin py2.7 compatible (Maya) so no f'strings
|
# note: this module should reamin py2.7 compatible (Maya) so no f'strings
|
||||||
# --------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
"""@module docstring
|
||||||
|
This module is part of the O3DE DccScriptingInterface Gem
|
||||||
|
This module is a set of utils related to config.py, it hase several methods
|
||||||
|
that can fullfil discovery of paths for use in standing up a synthetic env.
|
||||||
|
This is particularly useful when the config is used outside of O3DE,
|
||||||
|
in an external standalone tool with PySide2(Qt). Foe example, these paths
|
||||||
|
are discoverable so that we can synthetically derive code access to various
|
||||||
|
aspects of O3DE outside of the executables.
|
||||||
|
|
||||||
|
return_stub_dir() :discover path by walking from module to file stub
|
||||||
|
get_stub_check_path() :discover by walking from known path to file stub
|
||||||
|
get_o3de_engine_root() :combines multiple methods to discover engine root
|
||||||
|
get_o3de_build_path() :searches for the build path using file stub
|
||||||
|
get_dccsi_config() :convenience method to get the dccsi config
|
||||||
|
get_current_project_cfg() :will be depricated (don't use)
|
||||||
|
get_check_global_project() :get global project path from user .o3de data
|
||||||
|
get_o3de_project_path() :get the project path while within editor
|
||||||
|
bootstrap_dccsi_py_libs() :extends code access (mainly used in Maya py27)
|
||||||
|
"""
|
||||||
|
import time
|
||||||
|
start = time.process_time() # start tracking
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
@@ -18,34 +40,60 @@ import logging as _logging
|
|||||||
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# note: this module is called in other root modules
|
|
||||||
# must avoid cyclical imports
|
|
||||||
|
|
||||||
# global scope
|
# global scope
|
||||||
# normally would pull the constant envar string
|
_MODULENAME = 'azpy.config_utils'
|
||||||
# but avoiding cyclical imports here
|
|
||||||
FRMT_LOG_LONG = "[%(name)s][%(levelname)s] >> %(message)s (%(asctime)s; %(filename)s:%(lineno)d)"
|
__all__ = ['get_os',
|
||||||
from azpy.env_bool import env_bool
|
'return_stub',
|
||||||
_DCCSI_GDEBUG = env_bool('DCCSI_GDEBUG', False)
|
'get_stub_check_path',
|
||||||
_DCCSI_LOGLEVEL = env_bool('DCCSI_LOGLEVEL', False)
|
'get_dccsi_config',
|
||||||
_DCCSI_LOGLEVEL = int(env_bool('DCCSI_LOGLEVEL', int(20)))
|
'get_current_project']
|
||||||
if _DCCSI_GDEBUG:
|
|
||||||
_DCCSI_LOGLEVEL = int(10)
|
|
||||||
|
|
||||||
_MODULENAME = __name__
|
# dccsi site/code access
|
||||||
if _MODULENAME is '__main__':
|
#os.environ['PYTHONINSPECT'] = 'True'
|
||||||
_MODULENAME = 'azpy.config_utils'
|
_MODULE_PATH = os.path.abspath(__file__)
|
||||||
|
|
||||||
|
# we don't have access yet to the DCCsi Lib\site-packages
|
||||||
|
# (1) this will give us import access to azpy (always?)
|
||||||
|
# we know where the dccsi root should be from here
|
||||||
|
_PATH_DCCSIG = os.path.abspath(os.path.dirname(os.path.dirname(_MODULE_PATH)))
|
||||||
|
# it can be set or overrriden by dev with envar
|
||||||
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||||
|
# ^ we assume this config is in the root of the DCCsi
|
||||||
|
# if it's not, be sure to set envar 'PATH_DCCSIG' to ensure it
|
||||||
|
site.addsitedir(_PATH_DCCSIG) # must be done for azpy
|
||||||
|
|
||||||
|
# note: this module is called in other root modules
|
||||||
|
# must avoid cyclical imports, no imports from azpy.constants
|
||||||
|
ENVAR_DCCSI_GDEBUG = 'DCCSI_GDEBUG'
|
||||||
|
ENVAR_DCCSI_DEV_MODE = 'DCCSI_DEV_MODE'
|
||||||
|
ENVAR_DCCSI_GDEBUGGER = 'DCCSI_GDEBUGGER'
|
||||||
|
ENVAR_DCCSI_LOGLEVEL = 'DCCSI_LOGLEVEL'
|
||||||
|
FRMT_LOG_LONG = "[%(name)s][%(levelname)s] >> %(message)s (%(asctime)s; %(filename)s:%(lineno)d)"
|
||||||
|
|
||||||
|
from azpy.env_bool import env_bool
|
||||||
|
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
||||||
|
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
||||||
|
_DCCSI_GDEBUGGER = env_bool(ENVAR_DCCSI_GDEBUGGER, 'WING')
|
||||||
|
|
||||||
|
# default loglevel to info unless set
|
||||||
|
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, _logging.INFO))
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
# override loglevel if runnign debug
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
|
||||||
# set up module logging
|
# set up module logging
|
||||||
#for handler in _logging.root.handlers[:]:
|
#for handler in _logging.root.handlers[:]:
|
||||||
#_logging.root.removeHandler(handler)
|
#_logging.root.removeHandler(handler)
|
||||||
_LOGGER = _logging.getLogger(_MODULENAME)
|
|
||||||
#_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
|
# configure basic logger
|
||||||
_LOGGER.propagate = False
|
# note: not using a common logger to reduce cyclical imports
|
||||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
_logging.basicConfig(level=_DCCSI_LOGLEVEL,
|
||||||
|
format=FRMT_LOG_LONG,
|
||||||
|
datefmt='%m-%d %H:%M')
|
||||||
|
|
||||||
__all__ = ['get_os', 'return_stub', 'get_stub_check_path',
|
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||||
'get_dccsi_config', 'get_current_project']
|
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -77,6 +125,56 @@ except Exception as e:
|
|||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
def attach_debugger():
|
||||||
|
_DCCSI_GDEBUG = True
|
||||||
|
os.environ["DYNACONF_DCCSI_GDEBUG"] = str(_DCCSI_GDEBUG)
|
||||||
|
|
||||||
|
_DCCSI_DEV_MODE = True
|
||||||
|
os.environ["DYNACONF_DCCSI_DEV_MODE"] = str(_DCCSI_DEV_MODE)
|
||||||
|
|
||||||
|
from azpy.test.entry_test import connect_wing
|
||||||
|
_debugger = connect_wing()
|
||||||
|
|
||||||
|
return _debugger
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# exapnd the global scope and module CONST
|
||||||
|
|
||||||
|
# this is the DCCsi envar used for discovering the engine path (if set)
|
||||||
|
ENVAR_O3DE_DEV = 'O3DE_DEV'
|
||||||
|
STUB_O3DE_DEV = 'engine.json'
|
||||||
|
|
||||||
|
# this block is related to .o3de data
|
||||||
|
# os.path.expanduser("~") returns different values in py2.7 vs 3
|
||||||
|
# Note: py27 support will be deprecated in the future
|
||||||
|
from os.path import expanduser
|
||||||
|
PATH_USER_HOME = expanduser("~")
|
||||||
|
_LOGGER.debug('user home: {}'.format(PATH_USER_HOME))
|
||||||
|
|
||||||
|
# special case, make sure didn't return <user>\documents
|
||||||
|
user_home_parts = os.path.split(PATH_USER_HOME)
|
||||||
|
|
||||||
|
if str(user_home_parts[1].lower()) == 'documents':
|
||||||
|
PATH_USER_HOME = user_home_parts[0]
|
||||||
|
_LOGGER.debug('user home CORRECTED: {}'.format(PATH_USER_HOME))
|
||||||
|
|
||||||
|
# the global project may be defined in the registry
|
||||||
|
PATH_USER_O3DE = Path(PATH_USER_HOME, '.o3de')
|
||||||
|
PATH_USER_O3DE_REGISTRY = Path(PATH_USER_O3DE, 'Registry')
|
||||||
|
PATH_USER_O3DE_BOOTSTRAP = Path(PATH_USER_O3DE_REGISTRY, 'bootstrap.setreg')
|
||||||
|
|
||||||
|
# this is the DCCsi envar used for discovering the project path (if set)
|
||||||
|
ENVAR_PATH_O3DE_PROJECT = 'PATH_O3DE_PROJECT'
|
||||||
|
|
||||||
|
# python related envars and paths
|
||||||
|
STR_PATH_DCCSI_PYTHON_LIB = '{0}\\3rdParty\\Python\\Lib\\{1}.x\\{1}.{2}.x\\site-packages'
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# first define all the methods for the module
|
||||||
def get_os():
|
def get_os():
|
||||||
"""returns lumberyard dir names used in python path"""
|
"""returns lumberyard dir names used in python path"""
|
||||||
if sys.platform.startswith('win'):
|
if sys.platform.startswith('win'):
|
||||||
@@ -96,7 +194,7 @@ def get_os():
|
|||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
from azpy.core import get_datadir
|
# from azpy.core import get_datadir
|
||||||
# there was a method here refactored out to add py2.7 support for Maya 2020
|
# there was a method here refactored out to add py2.7 support for Maya 2020
|
||||||
#"DccScriptingInterface\azpy\core\py2\utils.py get_datadir()"
|
#"DccScriptingInterface\azpy\core\py2\utils.py get_datadir()"
|
||||||
#"DccScriptingInterface\azpy\core\py3\utils.py get_datadir()"
|
#"DccScriptingInterface\azpy\core\py3\utils.py get_datadir()"
|
||||||
@@ -106,8 +204,10 @@ from azpy.core import get_datadir
|
|||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def return_stub_dir(stub_file='dccsi_stub'):
|
def return_stub_dir(stub_file='dccsi_stub'):
|
||||||
|
'''discover and return path by walking from module to file stub
|
||||||
|
Input: a file name (stub_file)
|
||||||
|
Output: returns the directory of the file (stub_file)'''
|
||||||
_dir_to_last_file = None
|
_dir_to_last_file = None
|
||||||
'''Take a file name (stub_file) and returns the directory of the file (stub_file)'''
|
|
||||||
# To Do: refactor to use pathlib object oriented Path
|
# To Do: refactor to use pathlib object oriented Path
|
||||||
if _dir_to_last_file is None:
|
if _dir_to_last_file is None:
|
||||||
path = os.path.abspath(__file__)
|
path = os.path.abspath(__file__)
|
||||||
@@ -129,12 +229,15 @@ def return_stub_dir(stub_file='dccsi_stub'):
|
|||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def get_stub_check_path(in_path=os.getcwd(), check_stub='engine.json'):
|
def get_stub_check_path(in_path=os.getcwd(), check_stub=STUB_O3DE_DEV):
|
||||||
'''
|
'''
|
||||||
Returns the branch root directory of the dev\\'engine.json'
|
Returns the branch root directory of the dev\\'engine.json'
|
||||||
(... or you can pass it another known stub)
|
(... or you can pass it another known stub) so we can safely build
|
||||||
|
relative filepaths within that branch.
|
||||||
so we can safely build relative filepaths within that branch.
|
|
||||||
|
Input: a starting directory, default is os.getcwd()
|
||||||
|
Input: a file name stub (to search for)
|
||||||
|
Output: a path (the stubs parent directory)
|
||||||
|
|
||||||
If the stub is not found, it returns None
|
If the stub is not found, it returns None
|
||||||
'''
|
'''
|
||||||
@@ -155,7 +258,11 @@ def get_stub_check_path(in_path=os.getcwd(), check_stub='engine.json'):
|
|||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def get_o3de_engine_root(check_stub='engine.json'):
|
def get_o3de_engine_root(check_stub=STUB_O3DE_DEV):
|
||||||
|
'''Discovers the engine root
|
||||||
|
Input: a file name stub, default engine.json
|
||||||
|
Output: engine root path (if found)
|
||||||
|
'''
|
||||||
# get the O3DE engine root folder
|
# get the O3DE engine root folder
|
||||||
# if we are running within O3DE we can ensure which engine is running
|
# if we are running within O3DE we can ensure which engine is running
|
||||||
_O3DE_DEV = None
|
_O3DE_DEV = None
|
||||||
@@ -164,20 +271,61 @@ def get_o3de_engine_root(check_stub='engine.json'):
|
|||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
# if that fails, we can search up
|
# if that fails, we can search up
|
||||||
# search up to get \dev
|
# search up to get \dev
|
||||||
_O3DE_DEV = get_stub_check_path(check_stub='engine.json')
|
_O3DE_DEV = get_stub_check_path(check_stub=STUB_O3DE_DEV)
|
||||||
# To Do: What if engine.json doesn't exist?
|
# To Do: What if engine.json doesn't exist?
|
||||||
else:
|
else:
|
||||||
# execute if no exception
|
# execute if no exception, allow for external ENVAR override
|
||||||
# allow for external ENVAR override
|
|
||||||
from azpy.constants import ENVAR_O3DE_DEV
|
|
||||||
_O3DE_DEV = Path(os.getenv(ENVAR_O3DE_DEV, azlmbr.paths.engroot))
|
_O3DE_DEV = Path(os.getenv(ENVAR_O3DE_DEV, azlmbr.paths.engroot))
|
||||||
finally:
|
finally:
|
||||||
# note: can't use fstrings as this module gets called with py2.7 in maya
|
if _DCCSI_GDEBUG: # to verbose, used often
|
||||||
_LOGGER.info('O3DE engine root: {}'.format(_O3DE_DEV.resolve()))
|
# note: can't use fstrings as this module gets called with py2.7 in maya
|
||||||
|
_LOGGER.info('O3DE engine root: {}'.format(_O3DE_DEV.resolve()))
|
||||||
return _O3DE_DEV
|
return _O3DE_DEV
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
def get_o3de_build_path(root_directory=get_o3de_engine_root(),
|
||||||
|
marker='CMakeCache.txt'):
|
||||||
|
"""Returns a path for the O3DE\build root if found. Searchs down from a
|
||||||
|
known engine root path.
|
||||||
|
Input: a root directory, default is to discover the engine root
|
||||||
|
Output: the path of the build folder (if found)
|
||||||
|
"""
|
||||||
|
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
import time
|
||||||
|
start = time.process_time()
|
||||||
|
|
||||||
|
for root, dirs, files in os.walk(root_directory):
|
||||||
|
if marker in files:
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
_LOGGER.debug('Find PATH_O3DE_BUILD took: {} sec'
|
||||||
|
''.format(time.process_time() - start))
|
||||||
|
return Path(root)
|
||||||
|
else:
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
_LOGGER.debug('Not fidning PATH_O3DE_BUILD took: {} sec'
|
||||||
|
''.format(time.process_time() - start))
|
||||||
|
return None
|
||||||
|
|
||||||
|
# note: if we use this method to find PATH_O3DE_BUILD
|
||||||
|
# by searching for the 'CMakeCache.txt' it can take 1 or more seconds
|
||||||
|
# this will slow down boot times!
|
||||||
|
#
|
||||||
|
# this works fine for a engine dev, but is not really suitable for end users
|
||||||
|
# it assumes that the engine is being built and 'CMakeCache.txt' exists
|
||||||
|
# but the engine could be pre-built or packaged somehow
|
||||||
|
#
|
||||||
|
# other ways to deal with it:
|
||||||
|
# 1 - Use the running application .exe to discover the build path?
|
||||||
|
# 2 - Set PATH_O3DE_BUILD envar in
|
||||||
|
# "C:\Depot\o3de\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\.env"
|
||||||
|
# 3 - Set in commandline (or from .bat file)
|
||||||
|
# 4 - To Do (maybe): Set in a dccsi_configuration.setreg?
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# settings.setenv() # doing this will add the additional DYNACONF_ envars
|
# settings.setenv() # doing this will add the additional DYNACONF_ envars
|
||||||
def get_dccsi_config(dccsi_dirpath=return_stub_dir()):
|
def get_dccsi_config(dccsi_dirpath=return_stub_dir()):
|
||||||
@@ -231,10 +379,8 @@ def get_current_project_cfg(dev_folder=get_stub_check_path()):
|
|||||||
def get_check_global_project():
|
def get_check_global_project():
|
||||||
"""Gets o3de project via .o3de data in user directory"""
|
"""Gets o3de project via .o3de data in user directory"""
|
||||||
|
|
||||||
from azpy.constants import PATH_USER_O3DE_BOOTSTRAP
|
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from box import Box
|
from box import Box
|
||||||
from azpy.core import get_datadir
|
|
||||||
|
|
||||||
bootstrap_box = None
|
bootstrap_box = None
|
||||||
json_file_path = Path(PATH_USER_O3DE_BOOTSTRAP)
|
json_file_path = Path(PATH_USER_O3DE_BOOTSTRAP)
|
||||||
@@ -260,46 +406,44 @@ def get_check_global_project():
|
|||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def get_o3de_project_path():
|
def get_o3de_project_path():
|
||||||
"""figures out the o3de project path
|
"""figures out the o3de project path if not found defaults to the engine folder"""
|
||||||
if not found defaults to the engine folder"""
|
_PATH_O3DE_PROJECT = None
|
||||||
_O3DE_PROJECT_PATH = None
|
|
||||||
try:
|
try:
|
||||||
import azlmbr # this file will fail outside of O3DE
|
import azlmbr # this file will fail outside of O3DE
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
# (fallback 1) this checks if a global project is set
|
# (fallback 1) this checks if a global project is set
|
||||||
# This check user home for .o3de data
|
# This check user home for .o3de data
|
||||||
_O3DE_PROJECT_PATH = get_check_global_project()
|
_PATH_O3DE_PROJECT = get_check_global_project()
|
||||||
else:
|
else:
|
||||||
# execute if no exception, this would indicate we are in O3DE land
|
# execute if no exception, this would indicate we are in O3DE land
|
||||||
# allow for external ENVAR override
|
# allow for external ENVAR override
|
||||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
_PATH_O3DE_PROJECT = Path(os.getenv(ENVAR_PATH_O3DE_PROJECT, azlmbr.paths.projectroot))
|
||||||
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH, azlmbr.paths.projectroot))
|
|
||||||
finally:
|
finally:
|
||||||
# (fallback 2) if None, fallback to engine folder
|
# (fallback 2) if None, fallback to engine folder
|
||||||
if not _O3DE_PROJECT_PATH:
|
if not _PATH_O3DE_PROJECT:
|
||||||
_O3DE_PROJECT_PATH = get_o3de_engine_root()
|
_PATH_O3DE_PROJECT = get_o3de_engine_root()
|
||||||
# note: can't use fstrings as this module gets called with py2.7 in maya
|
|
||||||
_LOGGER.info('O3DE project root: {}'.format(_O3DE_PROJECT_PATH.resolve()))
|
if _DCCSI_GDEBUG: # to verbose, used often
|
||||||
return _O3DE_PROJECT_PATH
|
# note: can't use fstrings as this module gets called with py2.7 in maya
|
||||||
|
_LOGGER.debug('O3DE project root: {}'.format(_PATH_O3DE_PROJECT.resolve()))
|
||||||
|
return _PATH_O3DE_PROJECT
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def bootstrap_dccsi_py_libs(dccsi_dirpath=return_stub_dir()):
|
def bootstrap_dccsi_py_libs(dccsi_dirpath=return_stub_dir()):
|
||||||
"""Builds and adds local site dir libs based on py version"""
|
"""Builds and adds local site dir libs based on py version"""
|
||||||
|
_PATH_DCCSI_PYTHON_LIB = Path(STR_PATH_DCCSI_PYTHON_LIB.format(dccsi_dirpath,
|
||||||
from azpy.constants import STR_DCCSI_PYTHON_LIB_PATH # a path string constructor
|
|
||||||
_DCCSI_PYTHON_LIB_PATH = Path(STR_DCCSI_PYTHON_LIB_PATH.format(dccsi_dirpath,
|
|
||||||
sys.version_info[0],
|
sys.version_info[0],
|
||||||
sys.version_info[1]))
|
sys.version_info[1]))
|
||||||
|
|
||||||
if _DCCSI_PYTHON_LIB_PATH.exists():
|
if _PATH_DCCSI_PYTHON_LIB.exists():
|
||||||
site.addsitedir(_DCCSI_PYTHON_LIB_PATH.resolve()) # PYTHONPATH
|
site.addsitedir(_PATH_DCCSI_PYTHON_LIB.resolve()) # PYTHONPATH
|
||||||
_LOGGER.debug('Performed site.addsitedir({})'
|
_LOGGER.debug('Performed site.addsitedir({})'
|
||||||
''.format(_DCCSI_PYTHON_LIB_PATH.resolve()))
|
''.format(_PATH_DCCSI_PYTHON_LIB.resolve()))
|
||||||
return _DCCSI_PYTHON_LIB_PATH
|
return _PATH_DCCSI_PYTHON_LIB
|
||||||
else:
|
else:
|
||||||
message = "Doesn't exist: {}".format(_DCCSI_PYTHON_LIB_PATH)
|
message = "Doesn't exist: {}".format(_PATH_DCCSI_PYTHON_LIB)
|
||||||
_LOGGER.error(message)
|
_LOGGER.error(message)
|
||||||
raise NotADirectoryError(message)
|
raise NotADirectoryError(message)
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -309,27 +453,87 @@ def bootstrap_dccsi_py_libs(dccsi_dirpath=return_stub_dir()):
|
|||||||
# Main Code Block, runs this script as main (testing)
|
# Main Code Block, runs this script as main (testing)
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
"""Run this file as a standalone cli script for testing/debugging"""
|
||||||
|
|
||||||
|
# global scope
|
||||||
|
_MODULENAME = 'azpy.config_utils'
|
||||||
|
|
||||||
|
# enable debug
|
||||||
|
_DCCSI_GDEBUG = False # enable here to force temporarily
|
||||||
|
_DCCSI_DEV_MODE = False
|
||||||
|
_DCCSI_LOGLEVEL = _logging.INFO
|
||||||
|
|
||||||
|
# parse the command line args
|
||||||
|
import argparse
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description='O3DE DCCsi: {}'.format(_MODULENAME),
|
||||||
|
epilog="Coomandline args enable deeper testing and info from commandline")
|
||||||
|
|
||||||
|
parser.add_argument('-gd', '--global-debug',
|
||||||
|
type=bool,
|
||||||
|
required=False,
|
||||||
|
help='Enables global debug flag.')
|
||||||
|
|
||||||
|
parser.add_argument('-sd', '--set-debugger',
|
||||||
|
type=str,
|
||||||
|
required=False,
|
||||||
|
help='Default debugger: WING, others: PYCHARM, VSCODE (not yet implemented).')
|
||||||
|
|
||||||
|
parser.add_argument('-dm', '--developer-mode',
|
||||||
|
type=bool,
|
||||||
|
required=False,
|
||||||
|
help='Enables dev mode for early auto attaching debugger.')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# easy overrides
|
||||||
|
if args.global_debug:
|
||||||
|
_DCCSI_GDEBUG = True
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
_LOGGER.setLevel(_DCCSI_LOGLEVEL)
|
||||||
|
|
||||||
|
if args.set_debugger:
|
||||||
|
_LOGGER.info('Setting and switching debugger type not implemented (default=WING)')
|
||||||
|
# To Do: implement debugger plugin pattern
|
||||||
|
|
||||||
|
if args.developer_mode or _DCCSI_DEV_MODE:
|
||||||
|
_DCCSI_DEV_MODE = True
|
||||||
|
attach_debugger() # attempts to start debugger
|
||||||
|
|
||||||
# happy print
|
# happy print
|
||||||
_LOGGER.info("# {0} #".format('-' * 72))
|
_LOGGER.info("# {0} #".format('-' * 72))
|
||||||
_LOGGER.info('~ config_utils.py ... Running script as __main__')
|
_LOGGER.info('~ config_utils.py ... Running script as __main__')
|
||||||
_LOGGER.info("# {0} #".format('-' * 72))
|
_LOGGER.info("# {0} #".format('-' * 72))
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# built in simple tests and info from commandline
|
||||||
_LOGGER.info('Current Work dir: {0}'.format(os.getcwd()))
|
_LOGGER.info('Current Work dir: {0}'.format(os.getcwd()))
|
||||||
|
|
||||||
_LOGGER.info('OS: {}'.format(get_os()))
|
_LOGGER.info('OS: {}'.format(get_os()))
|
||||||
|
|
||||||
|
_PATH_DCCSIG = Path(return_stub_dir('dccsi_stub'))
|
||||||
|
_LOGGER.info('PATH_DCCSIG: {}'.format(_PATH_DCCSIG.resolve()))
|
||||||
|
|
||||||
_LOGGER.info('DCCSIG_PATH: {}'.format(return_stub_dir('dccsi_stub')))
|
_O3DE_DEV = get_o3de_engine_root(check_stub='engine.json')
|
||||||
|
_LOGGER.info('O3DE_DEV: {}'.format(_O3DE_DEV.resolve()))
|
||||||
_config = get_dccsi_config()
|
|
||||||
_LOGGER.info('DCCSI_CONFIG_PATH: {}'.format(_config))
|
_PATH_O3DE_BUILD = get_o3de_build_path(_O3DE_DEV, 'CMakeCache.txt')
|
||||||
|
_LOGGER.info('PATH_O3DE_BUILD: {}'.format(_PATH_O3DE_BUILD.resolve()))
|
||||||
_LOGGER.info('O3DE_DEV: {}'.format(get_o3de_engine_root(check_stub='engine.json')))
|
|
||||||
|
|
||||||
# new o3de version
|
# new o3de version
|
||||||
_LOGGER.info('O3DE_PROJECT: {}'.format(get_check_global_project()))
|
_PATH_O3DE_PROJECT = get_check_global_project()
|
||||||
|
_LOGGER.info('PATH_O3DE_PROJECT: {}'.format(_PATH_O3DE_PROJECT.resolve()))
|
||||||
|
|
||||||
_LOGGER.info('DCCSI_PYTHON_LIB_PATH: {}'.format(bootstrap_dccsi_py_libs(return_stub_dir('dccsi_stub'))))
|
_PATH_DCCSI_PYTHON_LIB = bootstrap_dccsi_py_libs(_PATH_DCCSIG)
|
||||||
|
_LOGGER.info('PATH_DCCSI_PYTHON_LIB: {}'.format(_PATH_DCCSI_PYTHON_LIB.resolve()))
|
||||||
|
|
||||||
|
_DCCSI_CONFIG = get_dccsi_config(_PATH_DCCSIG)
|
||||||
|
_LOGGER.info('PATH_DCCSI_CONFIG: {}'.format(_DCCSI_CONFIG))
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
# custom prompt
|
# custom prompt
|
||||||
sys.ps1 = "[azpy]>>"
|
sys.ps1 = "[azpy]>>"
|
||||||
|
|
||||||
|
_LOGGER.debug('DCCsi: config_utils.py took: {} sec'.format(time.process_time() - start))
|
||||||
|
# --- END -----------------------------------------------------------------
|
||||||
@@ -23,6 +23,7 @@ So we can make an update here once that is used elsewhere.
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import site
|
import site
|
||||||
|
import time
|
||||||
from os.path import expanduser
|
from os.path import expanduser
|
||||||
import logging as _logging
|
import logging as _logging
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -30,22 +31,23 @@ import logging as _logging
|
|||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# global scope
|
# global scope
|
||||||
_MODULENAME = __name__
|
_MODULENAME = 'azpy.constants'
|
||||||
if _MODULENAME is '__main__':
|
|
||||||
_MODULENAME = 'azpy.constants'
|
start = time.process_time() # start tracking
|
||||||
|
|
||||||
os.environ['PYTHONINSPECT'] = 'True'
|
os.environ['PYTHONINSPECT'] = 'True'
|
||||||
# for this module to perform standalone
|
# for this module to perform standalone
|
||||||
# we need to set up basic access to the DCCsi
|
# we need to set up basic access to the DCCsi
|
||||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||||
site.addsitedir(_DCCSIG_PATH)
|
site.addsitedir(_PATH_DCCSIG)
|
||||||
|
|
||||||
# now we have azpy api access
|
# now we have azpy api access
|
||||||
import azpy
|
import azpy
|
||||||
from azpy.env_bool import env_bool
|
from azpy.env_bool import env_bool
|
||||||
from azpy.config_utils import return_stub_dir
|
from azpy.config_utils import return_stub_dir
|
||||||
|
from azpy.config_utils import get_stub_check_path
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -65,18 +67,23 @@ FRMT_LOG_SHRT = "[%(asctime)s][%(name)s][%(levelname)s] >> %(message)s"
|
|||||||
# global debug stuff
|
# global debug stuff
|
||||||
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
||||||
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
||||||
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, int(20)))
|
# default loglevel to info unless set
|
||||||
|
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, _logging.INFO))
|
||||||
if _DCCSI_GDEBUG:
|
if _DCCSI_GDEBUG:
|
||||||
_DCCSI_LOGLEVEL = int(10)
|
# override loglevel if runnign debug
|
||||||
# -------------------------------------------------------------------------
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# set up module logging
|
# set up module logging
|
||||||
for handler in _logging.root.handlers[:]:
|
#for handler in _logging.root.handlers[:]:
|
||||||
_logging.root.removeHandler(handler)
|
#_logging.root.removeHandler(handler)
|
||||||
|
|
||||||
|
# configure basic logger
|
||||||
|
# note: not using a common logger to reduce cyclical imports
|
||||||
|
_logging.basicConfig(level=_DCCSI_LOGLEVEL,
|
||||||
|
format=FRMT_LOG_LONG,
|
||||||
|
datefmt='%m-%d %H:%M')
|
||||||
|
|
||||||
_LOGGER = _logging.getLogger(_MODULENAME)
|
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||||
_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
|
|
||||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -107,6 +114,7 @@ TAG_DCCSI_CONFIG = str('dccsiconfiguration.setreg')
|
|||||||
|
|
||||||
# filesystem markers, stub file names.
|
# filesystem markers, stub file names.
|
||||||
STUB_O3DE_DEV = str('engine.json')
|
STUB_O3DE_DEV = str('engine.json')
|
||||||
|
STUB_O3DE_BUILD = str('CMakeCache.txt')
|
||||||
STUB_O3DE_ROOT_DCCSI = str('dccsi_stub')
|
STUB_O3DE_ROOT_DCCSI = str('dccsi_stub')
|
||||||
STUB_O3DE_DCCSI_AZPY = str('dccsi_azpy_stub')
|
STUB_O3DE_DCCSI_AZPY = str('dccsi_azpy_stub')
|
||||||
STUB_O3DE_DCCSI_TOOLS = str('dccsi_tools_stub')
|
STUB_O3DE_DCCSI_TOOLS = str('dccsi_tools_stub')
|
||||||
@@ -147,27 +155,27 @@ PATH_PROGRAMFILES_X64 = str(os.environ['PROGRAMFILES'])
|
|||||||
|
|
||||||
# base env var key as str
|
# base env var key as str
|
||||||
ENVAR_COMPANY = str('COMPANY')
|
ENVAR_COMPANY = str('COMPANY')
|
||||||
ENVAR_O3DE_PROJECT = str('O3DE_PROJECT')
|
ENVAR_O3DE_PROJECT = str('O3DE_PROJECT') # project name
|
||||||
ENVAR_O3DE_PROJECT_PATH = str('O3DE_PROJECT_PATH')
|
ENVAR_PATH_O3DE_PROJECT = str('PATH_O3DE_PROJECT') # path to project
|
||||||
ENVAR_O3DE_DEV = str('O3DE_DEV')
|
ENVAR_O3DE_DEV = str('O3DE_DEV')
|
||||||
ENVAR_DCCSIG_PATH = str('DCCSIG_PATH')
|
ENVAR_PATH_DCCSIG = str('PATH_DCCSIG')
|
||||||
ENVAR_DCCSI_AZPY_PATH = str('DCCSI_AZPY_PATH')
|
ENVAR_DCCSI_AZPY_PATH = str('DCCSI_AZPY_PATH')
|
||||||
ENVAR_DCCSI_TOOLS_PATH = str('DCCSI_TOOLS_PATH')
|
ENVAR_PATH_DCCSI_TOOLS = str('PATH_DCCSI_TOOLS')
|
||||||
ENVAR_O3DE_BUILD_DIR_NAME = str('O3DE_BUILD_DIR_NAME')
|
ENVAR_O3DE_BUILD_DIR_NAME = str('O3DE_BUILD_DIR_NAME')
|
||||||
|
|
||||||
ENVAR_O3DE_BUILD_PATH = str('O3DE_BUILD_PATH')
|
ENVAR_PATH_O3DE_BUILD = str('PATH_O3DE_BUILD')
|
||||||
ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
|
ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
|
||||||
ENVAR_QTFORPYTHON_PATH = str('QTFORPYTHON_PATH')
|
ENVAR_QTFORPYTHON_PATH = str('QTFORPYTHON_PATH')
|
||||||
ENVAR_O3DE_BIN_PATH = str('O3DE_BIN_PATH')
|
ENVAR_PATH_O3DE_BIN = str('PATH_O3DE_BIN')
|
||||||
|
|
||||||
ENVAR_DCCSI_LOG_PATH = str('DCCSI_LOG_PATH')
|
ENVAR_DCCSI_LOG_PATH = str('DCCSI_LOG_PATH')
|
||||||
ENVAR_DCCSI_LAUNCHERS_PATH = str('DCCSI_LAUNCHERS_PATH')
|
ENVAR_DCCSI_LAUNCHERS_PATH = str('DCCSI_LAUNCHERS_PATH')
|
||||||
|
|
||||||
ENVAR_DCCSI_PY_VERSION_MAJOR = str('DCCSI_PY_VERSION_MAJOR')
|
ENVAR_DCCSI_PY_VERSION_MAJOR = str('DCCSI_PY_VERSION_MAJOR')
|
||||||
ENVAR_DCCSI_PY_VERSION_MINOR = str('DCCSI_PY_VERSION_MINOR')
|
ENVAR_DCCSI_PY_VERSION_MINOR = str('DCCSI_PY_VERSION_MINOR')
|
||||||
ENVAR_DCCSI_PYTHON_PATH = str('DCCSI_PYTHON_PATH')
|
ENVAR_PATH_DCCSI_PYTHON = str('PATH_DCCSI_PYTHON')
|
||||||
ENVAR_DCCSI_PYTHON_LIB_PATH = str('DCCSI_PYTHON_LIB_PATH')
|
ENVAR_PATH_DCCSI_PYTHON_LIB = str('PATH_DCCSI_PYTHON_LIB')
|
||||||
ENVAR_O3DE_PYTHON_INSTALL = str('O3DE_PYTHON_INSTALL')
|
ENVAR_PATH_O3DE_PYTHON_INSTALL = str('PATH_O3DE_PYTHON_INSTALL')
|
||||||
|
|
||||||
ENVAR_WINGHOME = str('WINGHOME')
|
ENVAR_WINGHOME = str('WINGHOME')
|
||||||
ENVAR_DCCSI_WING_VERSION_MAJOR = str('DCCSI_WING_VERSION_MAJOR')
|
ENVAR_DCCSI_WING_VERSION_MAJOR = str('DCCSI_WING_VERSION_MAJOR')
|
||||||
@@ -178,7 +186,7 @@ ENVAR_DCCSI_PY_DCCSI = str('DCCSI_PY_DCCSI')
|
|||||||
ENVAR_DCCSI_PY_MAYA = str('DCCSI_PY_MAYA')
|
ENVAR_DCCSI_PY_MAYA = str('DCCSI_PY_MAYA')
|
||||||
ENVAR_DCCSI_PY_DEFAULT = str('DCCSI_PY_DEFAULT')
|
ENVAR_DCCSI_PY_DEFAULT = str('DCCSI_PY_DEFAULT')
|
||||||
|
|
||||||
ENVAR_DCCSI_MAYA_VERSION = str('DCCSI_MAYA_VERSION')
|
ENVAR_MAYA_VERSION = str('MAYA_VERSION')
|
||||||
ENVAR_MAYA_LOCATION = str('MAYA_LOCATION')
|
ENVAR_MAYA_LOCATION = str('MAYA_LOCATION')
|
||||||
|
|
||||||
ENVAR_DCCSI_TOOLS_MAYA_PATH = str('DCCSI_TOOLS_MAYA_PATH')
|
ENVAR_DCCSI_TOOLS_MAYA_PATH = str('DCCSI_TOOLS_MAYA_PATH')
|
||||||
@@ -206,27 +214,29 @@ TAG_MAYA_WORKSPACE = 'workspace.mel'
|
|||||||
|
|
||||||
# dcc scripting interface common and default paths
|
# dcc scripting interface common and default paths
|
||||||
PATH_O3DE_DEV = str(return_stub_dir(STUB_O3DE_DEV))
|
PATH_O3DE_DEV = str(return_stub_dir(STUB_O3DE_DEV))
|
||||||
PATH_DCCSIG_PATH = str(return_stub_dir(STUB_O3DE_ROOT_DCCSI))
|
PATH_DCCSIG = str(return_stub_dir(STUB_O3DE_ROOT_DCCSI))
|
||||||
PATH_DCCSI_AZPY_PATH = str(return_stub_dir(STUB_O3DE_DCCSI_AZPY))
|
PATH_DCCSI_AZPY_PATH = str(return_stub_dir(STUB_O3DE_DCCSI_AZPY))
|
||||||
PATH_DCCSI_TOOLS_PATH = str('{0}\\{1}'.format(PATH_DCCSIG_PATH, TAG_DIR_DCCSI_TOOLS))
|
PATH_DCCSI_TOOLS = str('{0}\\{1}'.format(PATH_DCCSIG, TAG_DIR_DCCSI_TOOLS))
|
||||||
|
|
||||||
# logging into the cache
|
# logging into the cache
|
||||||
PATH_DCCSI_LOG_PATH = str('{O3DE_PROJECT_PATH}\\user\\log\{TAG_DCCSI_NICKNAME}')
|
PATH_DCCSI_LOG_PATH = str('{PATH_O3DE_PROJECT}\\user\\log\{TAG_DCCSI_NICKNAME}')
|
||||||
|
|
||||||
# dev \ <build> \
|
# dev \ <build> \
|
||||||
STR_CONSTRUCT_O3DE_BUILD_PATH = str('{0}\\{1}')
|
STR_CONSTRUCT_PATH_O3DE_BUILD = str('{0}\\{1}')
|
||||||
PATH_O3DE_BUILD_PATH = str(STR_CONSTRUCT_O3DE_BUILD_PATH.format(PATH_O3DE_DEV,
|
PATH_O3DE_BUILD = str(STR_CONSTRUCT_PATH_O3DE_BUILD.format(PATH_O3DE_DEV,
|
||||||
TAG_DIR_O3DE_BUILD_FOLDER))
|
TAG_DIR_O3DE_BUILD_FOLDER))
|
||||||
|
|
||||||
# ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
|
# ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
|
||||||
STR_QTPLUGIN_DIR = str('{0}\\bin\\profile\\EditorPlugins')
|
STR_QTPLUGIN_DIR = str('{0}\\bin\\profile\\EditorPlugins')
|
||||||
STR_QTFORPYTHON_PATH = str('{0}\\Gems\\QtForPython\\3rdParty\\pyside2\\windows\\release')
|
STR_QTFORPYTHON_PATH = str('{0}\\Gems\\QtForPython\\3rdParty\\pyside2\\windows\\release')
|
||||||
STR_O3DE_BIN_PATH = str('{0}\\bin\\profile')
|
STR_PATH_O3DE_BIN = str('{0}\\bin\\profile')
|
||||||
|
|
||||||
|
STR_PATH_O3DE_BUILD = str('{0}\\{1}')
|
||||||
|
PATH_O3DE_BUILD = STR_PATH_O3DE_BUILD.format(PATH_O3DE_DEV, TAG_DIR_O3DE_BUILD_FOLDER)
|
||||||
|
|
||||||
PATH_O3DE_BUILD_PATH = str('{0}\\{1}'.format(PATH_O3DE_DEV, TAG_DIR_O3DE_BUILD_FOLDER))
|
|
||||||
PATH_QTFORPYTHON_PATH = str(STR_QTFORPYTHON_PATH.format(PATH_O3DE_DEV))
|
PATH_QTFORPYTHON_PATH = str(STR_QTFORPYTHON_PATH.format(PATH_O3DE_DEV))
|
||||||
PATH_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_O3DE_BUILD_PATH)
|
PATH_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_O3DE_BUILD)
|
||||||
PATH_O3DE_BIN_PATH = str(STR_O3DE_BIN_PATH).format(PATH_O3DE_BUILD_PATH)
|
PATH_O3DE_BIN = str(STR_PATH_O3DE_BIN).format(PATH_O3DE_BUILD)
|
||||||
|
|
||||||
# py path string, parts, etc.
|
# py path string, parts, etc.
|
||||||
TAG_DEFAULT_PY = str('Launch_pyBASE.bat')
|
TAG_DEFAULT_PY = str('Launch_pyBASE.bat')
|
||||||
@@ -266,21 +276,21 @@ TAG_DCCSI_PY_VERSION_RELEASE = str(10)
|
|||||||
TAG_PYTHON_EXE = str('python.exe')
|
TAG_PYTHON_EXE = str('python.exe')
|
||||||
TAG_TOOLS_DIR = str('Tools\\Python')
|
TAG_TOOLS_DIR = str('Tools\\Python')
|
||||||
TAG_PLATFORM = str('windows')
|
TAG_PLATFORM = str('windows')
|
||||||
STR_CONSTRUCT_O3DE_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
|
STR_CONSTRUCT_PATH_O3DE_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
|
||||||
PATH_DCCSI_PYTHON_PATH = str(STR_CONSTRUCT_O3DE_PYTHON_INSTALL.format(PATH_O3DE_DEV,
|
PATH_DCCSI_PYTHON = str(STR_CONSTRUCT_PATH_O3DE_PYTHON_INSTALL.format(PATH_O3DE_DEV,
|
||||||
TAG_TOOLS_DIR,
|
TAG_TOOLS_DIR,
|
||||||
TAG_DCCSI_PY_VERSION_MAJOR,
|
TAG_DCCSI_PY_VERSION_MAJOR,
|
||||||
TAG_DCCSI_PY_VERSION_MINOR,
|
TAG_DCCSI_PY_VERSION_MINOR,
|
||||||
TAG_DCCSI_PY_VERSION_RELEASE,
|
TAG_DCCSI_PY_VERSION_RELEASE,
|
||||||
TAG_PLATFORM))
|
TAG_PLATFORM))
|
||||||
PATH_DCCSI_PY_BASE = str('{0}\\{1}').format(PATH_DCCSI_PYTHON_PATH, TAG_PYTHON_EXE)
|
PATH_DCCSI_PY_BASE = str('{0}\\{1}').format(PATH_DCCSI_PYTHON, TAG_PYTHON_EXE)
|
||||||
PATH_DCCSI_PY_DEFAULT = PATH_DCCSI_PY_BASE
|
PATH_DCCSI_PY_DEFAULT = PATH_DCCSI_PY_BASE
|
||||||
|
|
||||||
# bootstrap site-packages by version
|
# bootstrap site-packages by version
|
||||||
TAG_PY_MAJOR = str(sys.version_info.major) # future proof
|
TAG_PY_MAJOR = str(sys.version_info.major) # future proof
|
||||||
TAG_PY_MINOR = str(sys.version_info.minor)
|
TAG_PY_MINOR = str(sys.version_info.minor)
|
||||||
STR_DCCSI_PYTHON_LIB_PATH = str('{0}\\3rdParty\\Python\\Lib\\{1}.x\\{1}.{2}.x\\site-packages')
|
STR_PATH_DCCSI_PYTHON_LIB = str('{0}\\3rdParty\\Python\\Lib\\{1}.x\\{1}.{2}.x\\site-packages')
|
||||||
PATH_DCCSI_PYTHON_LIB_PATH = STR_DCCSI_PYTHON_LIB_PATH.format(PATH_DCCSIG_PATH,
|
PATH_DCCSI_PYTHON_LIB = STR_PATH_DCCSI_PYTHON_LIB.format(PATH_DCCSIG,
|
||||||
TAG_PY_MAJOR,
|
TAG_PY_MAJOR,
|
||||||
TAG_PY_MINOR)
|
TAG_PY_MINOR)
|
||||||
# default path strings (and afe associated attributes)
|
# default path strings (and afe associated attributes)
|
||||||
@@ -334,14 +344,14 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
_stash_dict = {}
|
_stash_dict = {}
|
||||||
_stash_dict['O3DE_DEV'] = Path(PATH_O3DE_DEV)
|
_stash_dict['O3DE_DEV'] = Path(PATH_O3DE_DEV)
|
||||||
_stash_dict['DCCSIG_PATH'] = Path(PATH_DCCSIG_PATH)
|
_stash_dict['PATH_DCCSIG'] = Path(PATH_DCCSIG)
|
||||||
_stash_dict['DCCSI_AZPY_PATH'] = Path(PATH_DCCSI_AZPY_PATH)
|
_stash_dict['DCCSI_AZPY_PATH'] = Path(PATH_DCCSI_AZPY_PATH)
|
||||||
_stash_dict['DCCSI_TOOLS_PATH'] = Path(PATH_DCCSI_TOOLS_PATH)
|
_stash_dict['PATH_DCCSI_TOOLS'] = Path(PATH_DCCSI_TOOLS)
|
||||||
_stash_dict['DCCSI_PYTHON_PATH'] = Path(PATH_DCCSI_PYTHON_PATH)
|
_stash_dict['PATH_DCCSI_PYTHON'] = Path(PATH_DCCSI_PYTHON)
|
||||||
_stash_dict['DCCSI_PY_BASE'] = Path(PATH_DCCSI_PY_BASE)
|
_stash_dict['DCCSI_PY_BASE'] = Path(PATH_DCCSI_PY_BASE)
|
||||||
_stash_dict['DCCSI_PYTHON_LIB_PATH'] = Path(PATH_DCCSI_PYTHON_LIB_PATH)
|
_stash_dict['PATH_DCCSI_PYTHON_LIB'] = Path(PATH_DCCSI_PYTHON_LIB)
|
||||||
_stash_dict['O3DE_BUILD_PATH'] = Path(PATH_O3DE_BUILD_PATH)
|
_stash_dict['PATH_O3DE_BUILD'] = Path(PATH_O3DE_BUILD)
|
||||||
_stash_dict['O3DE_BIN_PATH'] = Path(PATH_O3DE_BIN_PATH)
|
_stash_dict['PATH_O3DE_BIN'] = Path(PATH_O3DE_BIN)
|
||||||
_stash_dict['QTFORPYTHON_PATH'] = Path(PATH_QTFORPYTHON_PATH)
|
_stash_dict['QTFORPYTHON_PATH'] = Path(PATH_QTFORPYTHON_PATH)
|
||||||
_stash_dict['QT_PLUGIN_PATH'] = Path(PATH_QT_PLUGIN_PATH)
|
_stash_dict['QT_PLUGIN_PATH'] = Path(PATH_QT_PLUGIN_PATH)
|
||||||
_stash_dict['SAT_INSTALL_PATH'] = Path(PATH_SAT_INSTALL_PATH)
|
_stash_dict['SAT_INSTALL_PATH'] = Path(PATH_SAT_INSTALL_PATH)
|
||||||
@@ -363,3 +373,6 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# custom prompt
|
# custom prompt
|
||||||
sys.ps1 = "[azpy]>>"
|
sys.ps1 = "[azpy]>>"
|
||||||
|
|
||||||
|
_LOGGER.debug('{0} took: {1} sec'.format(_MODULENAME, time.process_time() - start))
|
||||||
|
# --- END -----------------------------------------------------------------
|
||||||
@@ -69,11 +69,11 @@ _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT] = '${0}'.format(ENVAR_O3DE_PROJECT)
|
|||||||
|
|
||||||
# paths
|
# paths
|
||||||
_BASE_ENVVAR_DICT[ENVAR_O3DE_DEV] = Path('${0}'.format(ENVAR_O3DE_DEV))
|
_BASE_ENVVAR_DICT[ENVAR_O3DE_DEV] = Path('${0}'.format(ENVAR_O3DE_DEV))
|
||||||
_BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH] = Path('${0}'.format(ENVAR_O3DE_PROJECT_PATH))
|
_BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT] = Path('${0}'.format(ENVAR_PATH_O3DE_PROJECT))
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSIG_PATH] = Path('${0}'.format(ENVAR_DCCSIG_PATH))
|
_BASE_ENVVAR_DICT[ENVAR_PATH_DCCSIG] = Path('${0}'.format(ENVAR_PATH_DCCSIG))
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_LOG_PATH] = Path('${0}'.format(ENVAR_DCCSI_LOG_PATH))
|
_BASE_ENVVAR_DICT[ENVAR_DCCSI_LOG_PATH] = Path('${0}'.format(ENVAR_DCCSI_LOG_PATH))
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH] = Path('${0}'.format(ENVAR_DCCSI_AZPY_PATH))
|
_BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH] = Path('${0}'.format(ENVAR_DCCSI_AZPY_PATH))
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_TOOLS_PATH] = Path('${0}'.format(ENVAR_DCCSI_TOOLS_PATH))
|
_BASE_ENVVAR_DICT[ENVAR_PATH_DCCSI_TOOLS] = Path('${0}'.format(ENVAR_PATH_DCCSI_TOOLS))
|
||||||
|
|
||||||
# dev env flags
|
# dev env flags
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_GDEBUG] = '${0}'.format(ENVAR_DCCSI_GDEBUG)
|
_BASE_ENVVAR_DICT[ENVAR_DCCSI_GDEBUG] = '${0}'.format(ENVAR_DCCSI_GDEBUG)
|
||||||
@@ -83,8 +83,8 @@ _BASE_ENVVAR_DICT[ENVAR_DCCSI_GDEBUGGER] = '${0}'.format(ENVAR_DCCSI_GDEBUGGER)
|
|||||||
# default python dist
|
# default python dist
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_PY_VERSION_MAJOR] = '${0}'.format(ENVAR_DCCSI_PY_VERSION_MAJOR)
|
_BASE_ENVVAR_DICT[ENVAR_DCCSI_PY_VERSION_MAJOR] = '${0}'.format(ENVAR_DCCSI_PY_VERSION_MAJOR)
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_PY_VERSION_MINOR] = '${0}'.format(ENVAR_DCCSI_PY_VERSION_MINOR)
|
_BASE_ENVVAR_DICT[ENVAR_DCCSI_PY_VERSION_MINOR] = '${0}'.format(ENVAR_DCCSI_PY_VERSION_MINOR)
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_PYTHON_PATH] = '${0}'.format(ENVAR_DCCSI_PYTHON_PATH)
|
_BASE_ENVVAR_DICT[ENVAR_PATH_DCCSI_PYTHON] = '${0}'.format(ENVAR_PATH_DCCSI_PYTHON)
|
||||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_PYTHON_LIB_PATH] = '${0}'.format(ENVAR_DCCSI_PYTHON_LIB_PATH)
|
_BASE_ENVVAR_DICT[ENVAR_PATH_DCCSI_PYTHON_LIB] = '${0}'.format(ENVAR_PATH_DCCSI_PYTHON_LIB)
|
||||||
|
|
||||||
# try to fetch and set the base values from the environment
|
# try to fetch and set the base values from the environment
|
||||||
# this makes sure all envars set, are resolved on import
|
# this makes sure all envars set, are resolved on import
|
||||||
|
|||||||
@@ -42,9 +42,9 @@ Configures several useful environment config settings and paths,
|
|||||||
# this is the required base environment
|
# this is the required base environment
|
||||||
O3DE_PROJECT : name of project (project directory)
|
O3DE_PROJECT : name of project (project directory)
|
||||||
O3DE_DEV : path to Lumberyard \dev root
|
O3DE_DEV : path to Lumberyard \dev root
|
||||||
O3DE_PROJECT_PATH : path to project dir
|
PATH_O3DE_PROJECT : path to project dir
|
||||||
DCCSIG_PATH : path to the DCCsi Gem root
|
PATH_DCCSIG : path to the DCCsi Gem root
|
||||||
DCCSI_TOOLS_PATH : path to associated (non-api code) DCC SDK
|
PATH_DCCSI_TOOLS : path to associated (non-api code) DCC SDK
|
||||||
|
|
||||||
# nice to haves in base env to define core support
|
# nice to haves in base env to define core support
|
||||||
DCCSI_GDEBUG : sets global debug prints
|
DCCSI_GDEBUG : sets global debug prints
|
||||||
@@ -58,7 +58,7 @@ Configures several useful environment config settings and paths,
|
|||||||
|
|
||||||
:: Default version py37 has a launcher
|
:: Default version py37 has a launcher
|
||||||
(activates the env, starts py interpreter)
|
(activates the env, starts py interpreter)
|
||||||
set DCCSI_PY_BASE=%O3DE_PYTHON_INSTALL%\python.exe
|
set DCCSI_PY_BASE=%PATH_O3DE_PYTHON_INSTALL%\python.exe
|
||||||
|
|
||||||
:: shared location for 64bit python 3.7 BASE location
|
:: shared location for 64bit python 3.7 BASE location
|
||||||
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%\Launch_pyBASE.bat
|
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%\Launch_pyBASE.bat
|
||||||
@@ -107,9 +107,9 @@ from collections import OrderedDict
|
|||||||
os.environ['PYTHONINSPECT'] = 'True'
|
os.environ['PYTHONINSPECT'] = 'True'
|
||||||
|
|
||||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||||
site.addsitedir(_DCCSIG_PATH)
|
site.addsitedir(_PATH_DCCSIG)
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ _LOGGER = _logging.getLogger(_PACKAGENAME)
|
|||||||
_logging.basicConfig(format=FRMT_LOG_LONG)
|
_logging.basicConfig(format=FRMT_LOG_LONG)
|
||||||
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
|
_LOGGER.debug('Initializing: {0}.'.format({_PACKAGENAME}))
|
||||||
|
|
||||||
_LOGGER.debug('_DCCSIG_PATH: {}'.format(_DCCSIG_PATH))
|
_LOGGER.debug('_PATH_DCCSIG: {}'.format(_PATH_DCCSIG))
|
||||||
_LOGGER.debug('_DCCSI_GDEBUG: {}'.format(_DCCSI_GDEBUG))
|
_LOGGER.debug('_DCCSI_GDEBUG: {}'.format(_DCCSI_GDEBUG))
|
||||||
_LOGGER.debug('_DCCSI_DEV_MODE: {}'.format(_DCCSI_DEV_MODE))
|
_LOGGER.debug('_DCCSI_DEV_MODE: {}'.format(_DCCSI_DEV_MODE))
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ if _DCCSI_DEV_MODE:
|
|||||||
# we can go ahead and just make sure the the DCCsi env is set
|
# we can go ahead and just make sure the the DCCsi env is set
|
||||||
# config is SO generic this ensures we are importing a specific one
|
# config is SO generic this ensures we are importing a specific one
|
||||||
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi.config",
|
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi.config",
|
||||||
Path(_DCCSIG_PATH,
|
Path(_PATH_DCCSIG,
|
||||||
"config.py"))
|
"config.py"))
|
||||||
_dccsi_config = importlib.util.module_from_spec(_spec_dccsi_config)
|
_dccsi_config = importlib.util.module_from_spec(_spec_dccsi_config)
|
||||||
_spec_dccsi_config.loader.exec_module(_dccsi_config)
|
_spec_dccsi_config.loader.exec_module(_dccsi_config)
|
||||||
@@ -159,12 +159,12 @@ from azpy.constants import *
|
|||||||
from azpy.shared.common.core_utils import walk_up_dir
|
from azpy.shared.common.core_utils import walk_up_dir
|
||||||
from azpy.shared.common.core_utils import get_stub_check_path
|
from azpy.shared.common.core_utils import get_stub_check_path
|
||||||
|
|
||||||
_DCCSI_PYTHON_LIB_PATH = os.getenv(ENVAR_DCCSI_PYTHON_LIB_PATH,
|
_PATH_DCCSI_PYTHON_LIB = os.getenv(ENVAR_PATH_DCCSI_PYTHON_LIB,
|
||||||
PATH_DCCSI_PYTHON_LIB_PATH)
|
PATH_DCCSI_PYTHON_LIB)
|
||||||
_LOGGER.debug('Dccsi Lib Path: {0}'.format(_DCCSI_PYTHON_LIB_PATH))
|
_LOGGER.debug('Dccsi Lib Path: {0}'.format(_PATH_DCCSI_PYTHON_LIB))
|
||||||
|
|
||||||
if os.path.exists(_DCCSI_PYTHON_LIB_PATH):
|
if os.path.exists(_PATH_DCCSI_PYTHON_LIB):
|
||||||
site.addsitedir(_DCCSI_PYTHON_LIB_PATH) # add access
|
site.addsitedir(_PATH_DCCSI_PYTHON_LIB) # add access
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# post-bootstrap global space
|
# post-bootstrap global space
|
||||||
@@ -404,53 +404,53 @@ def stash_env(_SYNTH_ENV_DICT = OrderedDict()):
|
|||||||
# so we guess based on how I set up the original dev environment
|
# so we guess based on how I set up the original dev environment
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
_O3DE_BUILD_PATH = Path(os.getenv(ENVAR_O3DE_BUILD_PATH,
|
_PATH_O3DE_BUILD = Path(os.getenv(ENVAR_PATH_O3DE_BUILD,
|
||||||
PATH_O3DE_BUILD_PATH))
|
PATH_O3DE_BUILD))
|
||||||
_SYNTH_ENV_DICT[ENVAR_O3DE_BUILD_PATH] = _O3DE_BUILD_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_PATH_O3DE_BUILD] = _PATH_O3DE_BUILD.as_posix()
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
_O3DE_BIN_PATH = Path(os.getenv(ENVAR_O3DE_BIN_PATH,
|
_PATH_O3DE_BIN = Path(os.getenv(ENVAR_PATH_O3DE_BIN,
|
||||||
PATH_O3DE_BIN_PATH))
|
PATH_O3DE_BIN))
|
||||||
# some of these need hard checks
|
# some of these need hard checks
|
||||||
if not _O3DE_BIN_PATH.exists():
|
if not _PATH_O3DE_BIN.exists():
|
||||||
raise Exception('O3DE_BIN_PATH does NOT exist: {0}'.format(_O3DE_BIN_PATH))
|
raise Exception('PATH_O3DE_BIN does NOT exist: {0}'.format(_PATH_O3DE_BIN))
|
||||||
else:
|
else:
|
||||||
_SYNTH_ENV_DICT[ENVAR_O3DE_BIN_PATH] = _O3DE_BIN_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_PATH_O3DE_BIN] = _PATH_O3DE_BIN.as_posix()
|
||||||
# adding to sys.path apparently doesn't work for .dll locations like Qt
|
# adding to sys.path apparently doesn't work for .dll locations like Qt
|
||||||
os.environ['PATH'] = _O3DE_BIN_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = _PATH_O3DE_BIN.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
# if that stub marker doesn't exist assume DCCsi path (fallback 1)
|
# if that stub marker doesn't exist assume DCCsi path (fallback 1)
|
||||||
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH,
|
_PATH_O3DE_PROJECT = Path(os.getenv(ENVAR_PATH_O3DE_PROJECT,
|
||||||
Path(_O3DE_DEV, _O3DE_PROJECT)))
|
Path(_O3DE_DEV, _O3DE_PROJECT)))
|
||||||
_SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH] = _O3DE_PROJECT_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT] = _PATH_O3DE_PROJECT.as_posix()
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
_DCCSIG_PATH = resolve_envar_path(ENVAR_DCCSIG_PATH, # envar
|
_PATH_DCCSIG = resolve_envar_path(ENVAR_PATH_DCCSIG, # envar
|
||||||
_THIS_MODULE_PATH, # search path
|
_THIS_MODULE_PATH, # search path
|
||||||
STUB_O3DE_ROOT_DCCSI, # stub name
|
STUB_O3DE_ROOT_DCCSI, # stub name
|
||||||
TAG_DEFAULT_PROJECT) # dir
|
TAG_DEFAULT_PROJECT) # dir
|
||||||
_SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH] = _DCCSIG_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG] = _PATH_DCCSIG.as_posix()
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
_AZPY_PATH = Path(os.getenv(ENVAR_DCCSI_AZPY_PATH,
|
_AZPY_PATH = Path(os.getenv(ENVAR_DCCSI_AZPY_PATH,
|
||||||
Path(_DCCSIG_PATH, TAG_DIR_DCCSI_AZPY)))
|
Path(_PATH_DCCSIG, TAG_DIR_DCCSI_AZPY)))
|
||||||
_SYNTH_ENV_DICT[ENVAR_DCCSI_AZPY_PATH] = _AZPY_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_DCCSI_AZPY_PATH] = _AZPY_PATH.as_posix()
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
_DCCSI_TOOLS_PATH = Path(os.getenv(ENVAR_DCCSI_TOOLS_PATH,
|
_PATH_DCCSI_TOOLS = Path(os.getenv(ENVAR_PATH_DCCSI_TOOLS,
|
||||||
Path(_DCCSIG_PATH, TAG_DIR_DCCSI_TOOLS)))
|
Path(_PATH_DCCSIG, TAG_DIR_DCCSI_TOOLS)))
|
||||||
_SYNTH_ENV_DICT[ENVAR_DCCSI_TOOLS_PATH] = _DCCSI_TOOLS_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_PATH_DCCSI_TOOLS] = _PATH_DCCSI_TOOLS.as_posix()
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
# external dccsi site-packages
|
# external dccsi site-packages
|
||||||
_DCCSI_PYTHON_LIB_PATH = Path(os.getenv(ENVAR_DCCSI_PYTHON_LIB_PATH,
|
_PATH_DCCSI_PYTHON_LIB = Path(os.getenv(ENVAR_PATH_DCCSI_PYTHON_LIB,
|
||||||
PATH_DCCSI_PYTHON_LIB_PATH))
|
PATH_DCCSI_PYTHON_LIB))
|
||||||
_SYNTH_ENV_DICT[ENVAR_DCCSI_PYTHON_LIB_PATH] = _DCCSI_PYTHON_LIB_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_PATH_DCCSI_PYTHON_LIB] = _PATH_DCCSI_PYTHON_LIB.as_posix()
|
||||||
|
|
||||||
# -- envar --
|
# -- envar --
|
||||||
# extend to py36 (conda env) and interpreter (wrapped as a .bat file)
|
# extend to py36 (conda env) and interpreter (wrapped as a .bat file)
|
||||||
_DEFAULT_PY_PATH = Path(_DCCSIG_PATH, TAG_DEFAULT_PY)
|
_DEFAULT_PY_PATH = Path(_PATH_DCCSIG, TAG_DEFAULT_PY)
|
||||||
_DEFAULT_PY_PATH = Path(os.getenv(ENVAR_DCCSI_PY_DEFAULT,
|
_DEFAULT_PY_PATH = Path(os.getenv(ENVAR_DCCSI_PY_DEFAULT,
|
||||||
_DEFAULT_PY_PATH))
|
_DEFAULT_PY_PATH))
|
||||||
_SYNTH_ENV_DICT[ENVAR_DCCSI_PY_DEFAULT] = _DEFAULT_PY_PATH.as_posix()
|
_SYNTH_ENV_DICT[ENVAR_DCCSI_PY_DEFAULT] = _DEFAULT_PY_PATH.as_posix()
|
||||||
@@ -507,16 +507,16 @@ def init_ly_pyside(env_dict=_SYNTH_ENV_DICT):
|
|||||||
sys.path.insert(1, str(QTFORPYTHON_PATH))
|
sys.path.insert(1, str(QTFORPYTHON_PATH))
|
||||||
site.addsitedir(str(QTFORPYTHON_PATH))
|
site.addsitedir(str(QTFORPYTHON_PATH))
|
||||||
|
|
||||||
O3DE_BIN_PATH = Path.joinpath(O3DE_DEV,
|
PATH_O3DE_BIN = Path.joinpath(O3DE_DEV,
|
||||||
'windows',
|
'windows',
|
||||||
'bin',
|
'bin',
|
||||||
'profile').resolve()
|
'profile').resolve()
|
||||||
os.environ["DYNACONF_O3DE_BIN_PATH"] = str(O3DE_BIN_PATH)
|
os.environ["DYNACONF_PATH_O3DE_BIN"] = str(PATH_O3DE_BIN)
|
||||||
os.environ["O3DE_BIN_PATH"] = str(O3DE_BIN_PATH)
|
os.environ["PATH_O3DE_BIN"] = str(PATH_O3DE_BIN)
|
||||||
site.addsitedir(str(O3DE_BIN_PATH))
|
site.addsitedir(str(PATH_O3DE_BIN))
|
||||||
sys.path.insert(1, str(O3DE_BIN_PATH))
|
sys.path.insert(1, str(PATH_O3DE_BIN))
|
||||||
|
|
||||||
QT_PLUGIN_PATH = Path.joinpath(O3DE_BIN_PATH,
|
QT_PLUGIN_PATH = Path.joinpath(PATH_O3DE_BIN,
|
||||||
'EditorPlugins').resolve()
|
'EditorPlugins').resolve()
|
||||||
os.environ["DYNACONF_QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH)
|
os.environ["DYNACONF_QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH)
|
||||||
os.environ["QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH)
|
os.environ["QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH)
|
||||||
@@ -534,7 +534,7 @@ def init_ly_pyside(env_dict=_SYNTH_ENV_DICT):
|
|||||||
if sys.platform.startswith('win'):
|
if sys.platform.startswith('win'):
|
||||||
path = os.environ['PATH']
|
path = os.environ['PATH']
|
||||||
newPath = ''
|
newPath = ''
|
||||||
newPath += str(O3DE_BIN_PATH) + os.pathsep
|
newPath += str(PATH_O3DE_BIN) + os.pathsep
|
||||||
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
|
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
|
||||||
'shiboken2').resolve()) + os.pathsep
|
'shiboken2').resolve()) + os.pathsep
|
||||||
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
|
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
|
||||||
@@ -675,7 +675,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
if _DCCSI_GDEBUG:
|
if _DCCSI_GDEBUG:
|
||||||
|
|
||||||
tempBoxJsonFilePath = Path(_SYNTH_ENV_DICT['DCCSIG_PATH'], '.temp')
|
tempBoxJsonFilePath = Path(_SYNTH_ENV_DICT['PATH_DCCSIG'], '.temp')
|
||||||
tempBoxJsonFilePath = Path(tempBoxJsonFilePath, 'boxDumpTest.json')
|
tempBoxJsonFilePath = Path(tempBoxJsonFilePath, 'boxDumpTest.json')
|
||||||
_LOGGER.info(f'tempBoxJsonFilePath: {tempBoxJsonFilePath}')
|
_LOGGER.info(f'tempBoxJsonFilePath: {tempBoxJsonFilePath}')
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,8 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# -- This line is 75 characters -------------------------------------------
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
from __future__ import unicode_literals
|
||||||
import os
|
import os
|
||||||
import site
|
import site
|
||||||
import logging as _logging
|
import logging as _logging
|
||||||
@@ -19,27 +17,42 @@ import logging as _logging
|
|||||||
# See example:
|
# See example:
|
||||||
#"dev\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\SDK\Lumberyard\Scripts\set_menu.py"
|
#"dev\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\SDK\Lumberyard\Scripts\set_menu.py"
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
# global scope
|
||||||
|
_MODULENAME = 'azpy.test.entry_test'
|
||||||
_BOOT_CHECK = False # set true to test breakpoint in this module directly
|
_BOOT_CHECK = False # set true to test breakpoint in this module directly
|
||||||
|
|
||||||
import azpy.env_bool as env_bool
|
from azpy.env_bool import env_bool
|
||||||
from azpy.constants import ENVAR_DCCSI_GDEBUG
|
from azpy.constants import ENVAR_DCCSI_GDEBUG
|
||||||
from azpy.constants import ENVAR_DCCSI_DEV_MODE
|
from azpy.constants import ENVAR_DCCSI_DEV_MODE
|
||||||
|
from azpy.constants import ENVAR_DCCSI_LOGLEVEL
|
||||||
|
from azpy.constants import ENVAR_DCCSI_GDEBUGGER
|
||||||
from azpy.constants import FRMT_LOG_LONG
|
from azpy.constants import FRMT_LOG_LONG
|
||||||
|
|
||||||
_DCCSI_GDEBUG = env_bool.env_bool(ENVAR_DCCSI_GDEBUG, False)
|
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
||||||
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
||||||
|
_DCCSI_GDEBUGGER = env_bool(ENVAR_DCCSI_GDEBUGGER, 'WING')
|
||||||
_MODULENAME = __name__
|
|
||||||
if _MODULENAME is '__main__':
|
|
||||||
_MODULENAME = 'azpy.test.entry_test'
|
|
||||||
|
|
||||||
|
# default loglevel to info unless set
|
||||||
|
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, _logging.INFO))
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
# override loglevel if runnign debug
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
|
||||||
# set up module logging
|
# set up module logging
|
||||||
for handler in _logging.root.handlers[:]:
|
#for handler in _logging.root.handlers[:]:
|
||||||
_logging.root.removeHandler(handler)
|
#_logging.root.removeHandler(handler)
|
||||||
|
|
||||||
|
# configure basic logger
|
||||||
|
# note: not using a common logger to reduce cyclical imports
|
||||||
|
_logging.basicConfig(level=_DCCSI_LOGLEVEL,
|
||||||
|
format=FRMT_LOG_LONG,
|
||||||
|
datefmt='%m-%d %H:%M')
|
||||||
|
|
||||||
_LOGGER = _logging.getLogger(_MODULENAME)
|
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||||
_logging.basicConfig(format=FRMT_LOG_LONG)
|
|
||||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,63 @@ except:
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# global scope
|
||||||
|
_MODULENAME = 'DCCsi.config'
|
||||||
|
|
||||||
|
#os.environ['PYTHONINSPECT'] = 'True'
|
||||||
|
_MODULE_PATH = os.path.abspath(__file__)
|
||||||
|
|
||||||
|
# we don't have access yet to the DCCsi Lib\site-packages
|
||||||
|
# (1) this will give us import access to azpy (always?)
|
||||||
|
_PATH_DCCSIG = os.getenv('PATH_DCCSIG',
|
||||||
|
os.path.abspath(os.path.dirname(_MODULE_PATH)))
|
||||||
|
os. environ['PATH_DCCSIG'] = _PATH_DCCSIG
|
||||||
|
# ^ we assume this config is in the root of the DCCsi
|
||||||
|
# if it's not, be sure to set envar 'PATH_DCCSIG' to ensure it
|
||||||
|
site.addsitedir(_PATH_DCCSIG) # must be done for azpy
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# now we have azpy api access
|
||||||
|
import azpy
|
||||||
|
from azpy.env_bool import env_bool
|
||||||
|
from azpy.constants import ENVAR_DCCSI_GDEBUG
|
||||||
|
from azpy.constants import ENVAR_DCCSI_DEV_MODE
|
||||||
|
from azpy.constants import ENVAR_DCCSI_LOGLEVEL
|
||||||
|
from azpy.constants import ENVAR_DCCSI_GDEBUGGER
|
||||||
|
from azpy.constants import FRMT_LOG_LONG
|
||||||
|
|
||||||
|
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
||||||
|
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
||||||
|
_DCCSI_GDEBUGGER = env_bool(ENVAR_DCCSI_GDEBUGGER, 'WING')
|
||||||
|
|
||||||
|
# default loglevel to info unless set
|
||||||
|
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, _logging.INFO))
|
||||||
|
if _DCCSI_GDEBUG:
|
||||||
|
# override loglevel if runnign debug
|
||||||
|
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||||
|
|
||||||
|
# set up module logging
|
||||||
|
#for handler in _logging.root.handlers[:]:
|
||||||
|
#_logging.root.removeHandler(handler)
|
||||||
|
|
||||||
|
# configure basic logger
|
||||||
|
# note: not using a common logger to reduce cyclical imports
|
||||||
|
_logging.basicConfig(level=_DCCSI_LOGLEVEL,
|
||||||
|
format=FRMT_LOG_LONG,
|
||||||
|
datefmt='%m-%d %H:%M')
|
||||||
|
|
||||||
|
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||||
|
_LOGGER.debug('Initializing: {}.'.format({_MODULENAME}))
|
||||||
|
_LOGGER.debug('site.addsitedir({})'.format(_PATH_DCCSIG))
|
||||||
|
_LOGGER.debug('_DCCSI_GDEBUG: {}'.format(_DCCSI_GDEBUG))
|
||||||
|
_LOGGER.debug('_DCCSI_DEV_MODE: {}'.format(_DCCSI_DEV_MODE))
|
||||||
|
_LOGGER.debug('_DCCSI_LOGLEVEL: {}'.format(_DCCSI_LOGLEVEL))
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def attach_debugger():
|
def attach_debugger():
|
||||||
_DCCSI_GDEBUG = True
|
_DCCSI_GDEBUG = True
|
||||||
@@ -53,63 +110,9 @@ def attach_debugger():
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
# global scope
|
|
||||||
_MODULENAME = __name__
|
|
||||||
if _MODULENAME is '__main__':
|
|
||||||
_MODULENAME = 'DCCsi.config'
|
|
||||||
|
|
||||||
#os.environ['PYTHONINSPECT'] = 'True'
|
|
||||||
_MODULE_PATH = os.path.abspath(__file__)
|
|
||||||
|
|
||||||
# we don't have access yet to the DCCsi Lib\site-packages
|
|
||||||
# (1) this will give us import access to azpy (always?)
|
|
||||||
_DCCSI_PATH = os.getenv('DCCSI_PATH',
|
|
||||||
os.path.abspath(os.path.dirname(_MODULE_PATH)))
|
|
||||||
# ^ we assume this config is in the root of the DCCsi
|
|
||||||
# if it's not, be sure to set envar 'DCCSI_PATH' to ensure it
|
|
||||||
site.addsitedir(_DCCSI_PATH) # must be done for azpy
|
|
||||||
|
|
||||||
# now we have azpy api access
|
|
||||||
import azpy
|
|
||||||
from azpy.env_bool import env_bool
|
|
||||||
from azpy.constants import ENVAR_DCCSI_GDEBUG
|
|
||||||
from azpy.constants import ENVAR_DCCSI_DEV_MODE
|
|
||||||
from azpy.constants import ENVAR_DCCSI_LOGLEVEL
|
|
||||||
|
|
||||||
# set up global space, logging etc.
|
|
||||||
# set these true if you want them set globally for debugging
|
|
||||||
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
|
|
||||||
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
|
||||||
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, int(20)))
|
|
||||||
if _DCCSI_GDEBUG:
|
|
||||||
_DCCSI_LOGLEVEL = int(10)
|
|
||||||
|
|
||||||
# early attach WingIDE debugger (can refactor to include other IDEs later)
|
|
||||||
# requires externally enabling via ENVAR
|
|
||||||
if _DCCSI_DEV_MODE:
|
|
||||||
_debugger = attach_debugger()
|
|
||||||
# to do: ^ this should be replaced with full featured azpy.dev.util
|
|
||||||
# that supports additional debuggers (pycharm, vscode, etc.)
|
|
||||||
|
|
||||||
# set up module logging
|
|
||||||
for handler in _logging.root.handlers[:]:
|
|
||||||
_logging.root.removeHandler(handler)
|
|
||||||
|
|
||||||
_LOGGER = azpy.initialize_logger(_MODULENAME,
|
|
||||||
log_to_file=_DCCSI_GDEBUG,
|
|
||||||
default_log_level=_DCCSI_LOGLEVEL)
|
|
||||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
|
||||||
_LOGGER.info('site.addsitedir({})'.format(_DCCSI_PATH))
|
|
||||||
_LOGGER.debug('_DCCSI_GDEBUG: {}'.format(_DCCSI_GDEBUG))
|
|
||||||
_LOGGER.debug('_DCCSI_DEV_MODE: {}'.format(_DCCSI_DEV_MODE))
|
|
||||||
_LOGGER.debug('_DCCSI_LOGLEVEL: {}'.format(_DCCSI_LOGLEVEL))
|
|
||||||
# -------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# this will give us import access to additional modules we provide with DCCsi
|
# this will give us import access to additional modules we provide with DCCsi
|
||||||
_DCCSI_PYTHON_LIB_PATH = azpy.config_utils.bootstrap_dccsi_py_libs(_DCCSI_PATH)
|
_PATH_DCCSI_PYTHON_LIB = azpy.config_utils.bootstrap_dccsi_py_libs(_PATH_DCCSIG)
|
||||||
|
|
||||||
# Now we should be able to just carry on with pth lib and dynaconf
|
# Now we should be able to just carry on with pth lib and dynaconf
|
||||||
from dynaconf import Dynaconf
|
from dynaconf import Dynaconf
|
||||||
@@ -119,60 +122,56 @@ except:
|
|||||||
import pathlib2 as pathlib
|
import pathlib2 as pathlib
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
_DCCSI_PATH = Path(_DCCSI_PATH) # pathify
|
_PATH_DCCSIG = Path(_PATH_DCCSIG) # pathify
|
||||||
_DCCSI_PYTHON_PATH = Path(_DCCSI_PATH,'3rdParty','Python')
|
_PATH_DCCSI_PYTHON = Path(_PATH_DCCSIG,'3rdParty','Python')
|
||||||
_DCCSI_PYTHON_LIB_PATH = Path(_DCCSI_PYTHON_LIB_PATH)
|
_PATH_DCCSI_PYTHON_LIB = Path(_PATH_DCCSI_PYTHON_LIB)
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# start locally prepping known default values for dyanmic environment settings
|
# start locally prepping known default values for dyanmic environment settings
|
||||||
_O3DE_DCCSI_PATH = os.environ['PATH']
|
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||||
|
|
||||||
# this will retreive the O3DE engine root
|
# this will retreive the O3DE engine root
|
||||||
_O3DE_DEV = azpy.config_utils.get_o3de_engine_root()
|
_O3DE_DEV = azpy.config_utils.get_o3de_engine_root()
|
||||||
# set up dynamic config envars
|
# set up dynamic config envars
|
||||||
os.environ["DYNACONF_O3DE_DEV"] = str(_O3DE_DEV.resolve())
|
os.environ["DYNACONF_O3DE_DEV"] = str(_O3DE_DEV.resolve())
|
||||||
|
|
||||||
from azpy.constants import TAG_DIR_O3DE_BUILD_FOLDER
|
_PATH_O3DE_BUILD = azpy.config_utils.get_o3de_build_path(_O3DE_DEV,'CMakeCache.txt')
|
||||||
_O3DE_BUILD_FOLDER = TAG_DIR_O3DE_BUILD_FOLDER
|
|
||||||
os.environ["DYNACONF_O3DE_BUILD_FOLDER"] = str(_O3DE_BUILD_FOLDER)
|
|
||||||
_O3DE_BUILD_PATH = Path(_O3DE_DEV, TAG_DIR_O3DE_BUILD_FOLDER)
|
|
||||||
os.environ["DYNACONF_O3DE_BUILD_PATH"] = str(_O3DE_BUILD_PATH.resolve())
|
|
||||||
|
|
||||||
from azpy.constants import STR_O3DE_BIN_PATH
|
from azpy.constants import STR_PATH_O3DE_BIN
|
||||||
_O3DE_BIN_PATH = Path(STR_O3DE_BIN_PATH.format(_O3DE_BUILD_PATH))
|
_PATH_O3DE_BIN = Path(STR_PATH_O3DE_BIN.format(_PATH_O3DE_BUILD))
|
||||||
os.environ["DYNACONF_O3DE_BIN_PATH"] = str(_O3DE_BIN_PATH.resolve())
|
os.environ["DYNACONF_PATH_O3DE_BIN"] = str(_PATH_O3DE_BIN.resolve())
|
||||||
|
|
||||||
# this in most cases will return the project folder
|
# this in most cases will return the project folder
|
||||||
# if it returns a matching engine folder then we don't know the project folder
|
# if it returns a matching engine folder then we don't know the project folder
|
||||||
_O3DE_PROJECT_PATH = azpy.config_utils.get_o3de_project_path()
|
_PATH_O3DE_PROJECT = azpy.config_utils.get_o3de_project_path()
|
||||||
os.environ["DYNACONF_O3DE_PROJECT_PATH"] = str(_O3DE_PROJECT_PATH.resolve())
|
os.environ["DYNACONF_PATH_O3DE_PROJECT"] = str(_PATH_O3DE_PROJECT.resolve())
|
||||||
|
|
||||||
# special, a home for stashing PYTHONPATHs into managed settings
|
# special, a home for stashing PYTHONPATHs into managed settings
|
||||||
_O3DE_PYTHONPATH = list()
|
_O3DE_PYTHONPATH = list()
|
||||||
_O3DE_PYTHONPATH.append(_DCCSI_PATH)
|
_O3DE_PYTHONPATH.append(_PATH_DCCSIG)
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def init_o3de_pyside2(dccsi_path=_DCCSI_PATH,
|
def init_o3de_pyside2(dccsi_path=_PATH_DCCSIG,
|
||||||
engine_bin=_O3DE_BIN_PATH):
|
engine_bin=_PATH_O3DE_BIN):
|
||||||
"""Initialize the DCCsi Qt/PySide dynamic env and settings
|
"""Initialize the DCCsi Qt/PySide dynamic env and settings
|
||||||
sets access to lumberyards Qt dlls and PySide"""
|
sets access to lumberyards Qt dlls and PySide"""
|
||||||
|
|
||||||
_DCCSI_PATH = Path(dccsi_path)
|
_PATH_DCCSIG = Path(dccsi_path)
|
||||||
_O3DE_BIN_PATH = Path(engine_bin)
|
_PATH_O3DE_BIN = Path(engine_bin)
|
||||||
|
|
||||||
if not _O3DE_BIN_PATH.exists():
|
if not _PATH_O3DE_BIN.exists():
|
||||||
raise Exception('_O3DE_BIN_PATH does NOT exist: {0}'.format(_O3DE_BIN_PATH))
|
raise Exception('_PATH_O3DE_BIN does NOT exist: {0}'.format(_PATH_O3DE_BIN))
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# python config
|
# python config
|
||||||
_DCCSI_PYTHON_PATH = Path(_DCCSI_PATH,'3rdParty','Python')
|
_PATH_DCCSI_PYTHON = Path(_PATH_DCCSIG,'3rdParty','Python')
|
||||||
os.environ["DYNACONF_DCCSI_PYTHON_PATH"] = str(_DCCSI_PYTHON_PATH.resolve())
|
os.environ["DYNACONF_PATH_DCCSI_PYTHON"] = str(_PATH_DCCSI_PYTHON.resolve())
|
||||||
|
|
||||||
# # allows to retreive from settings.QTFORPYTHON_PATH
|
# # allows to retreive from settings.QTFORPYTHON_PATH
|
||||||
# from azpy.constants import STR_QTFORPYTHON_PATH # a path string constructor
|
# from azpy.constants import STR_QTFORPYTHON_PATH # a path string constructor
|
||||||
@@ -180,7 +179,7 @@ def init_o3de_pyside2(dccsi_path=_DCCSI_PATH,
|
|||||||
# os.environ["DYNACONF_QTFORPYTHON_PATH"] = str(QTFORPYTHON_PATH)
|
# os.environ["DYNACONF_QTFORPYTHON_PATH"] = str(QTFORPYTHON_PATH)
|
||||||
# site.addsitedir(str(QTFORPYTHON_PATH)) # PYTHONPATH
|
# site.addsitedir(str(QTFORPYTHON_PATH)) # PYTHONPATH
|
||||||
|
|
||||||
QT_PLUGIN_PATH = Path.joinpath(_O3DE_BIN_PATH,'EditorPlugins')
|
QT_PLUGIN_PATH = Path.joinpath(_PATH_O3DE_BIN,'EditorPlugins')
|
||||||
os.environ["DYNACONF_QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH.resolve())
|
os.environ["DYNACONF_QT_PLUGIN_PATH"] = str(QT_PLUGIN_PATH.resolve())
|
||||||
os.environ['PATH'] = QT_PLUGIN_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = QT_PLUGIN_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
|
|
||||||
@@ -224,7 +223,7 @@ def init_o3de_pyside2(dccsi_path=_DCCSI_PATH,
|
|||||||
# have not done that yet as I really want to get legal approval and
|
# have not done that yet as I really want to get legal approval and
|
||||||
# add this to the QtForPython Gem
|
# add this to the QtForPython Gem
|
||||||
# please pass this in current code reviews
|
# please pass this in current code reviews
|
||||||
_DCCSI_PYSIDE2_TOOLS = Path(_DCCSI_PYTHON_PATH,'pyside2-tools')
|
_DCCSI_PYSIDE2_TOOLS = Path(_PATH_DCCSI_PYTHON,'pyside2-tools')
|
||||||
if _DCCSI_PYSIDE2_TOOLS.exists():
|
if _DCCSI_PYSIDE2_TOOLS.exists():
|
||||||
os.environ["DYNACONF_DCCSI_PYSIDE2_TOOLS"] = str(_DCCSI_PYSIDE2_TOOLS.resolve())
|
os.environ["DYNACONF_DCCSI_PYSIDE2_TOOLS"] = str(_DCCSI_PYSIDE2_TOOLS.resolve())
|
||||||
os.environ['PATH'] = _DCCSI_PYSIDE2_TOOLS.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = _DCCSI_PYSIDE2_TOOLS.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
@@ -242,10 +241,10 @@ def init_o3de_pyside2(dccsi_path=_DCCSI_PATH,
|
|||||||
status = False
|
status = False
|
||||||
raise(e)
|
raise(e)
|
||||||
else:
|
else:
|
||||||
_LOGGER.warning('~ No PySide2 Tools: {}'.format(_DCCSI_PYSIDE2_TOOLS.resolve))
|
_LOGGER.warning('~ No PySide2 Tools: {}'.format(_DCCSI_PYSIDE2_TOOLS.resolve()))
|
||||||
|
|
||||||
_O3DE_DCCSI_PATH = os.environ['PATH']
|
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||||
|
|
||||||
try:
|
try:
|
||||||
_DCCSI_PYTHONPATH = os.environ['PYTHONPATH']
|
_DCCSI_PYTHONPATH = os.environ['PYTHONPATH']
|
||||||
@@ -287,9 +286,8 @@ def test_pyside2():
|
|||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def init_o3de_core(engine_path=_O3DE_DEV,
|
def init_o3de_core(engine_path=_O3DE_DEV,
|
||||||
build_folder=_O3DE_BUILD_FOLDER,
|
|
||||||
project_name=None,
|
project_name=None,
|
||||||
project_path=_O3DE_PROJECT_PATH):
|
project_path=_PATH_O3DE_PROJECT):
|
||||||
"""Initialize the DCCsi Core dynamic env and settings"""
|
"""Initialize the DCCsi Core dynamic env and settings"""
|
||||||
# `envvar_prefix` = export envvars with `export DYNACONF_FOO=bar`.
|
# `envvar_prefix` = export envvars with `export DYNACONF_FOO=bar`.
|
||||||
# `settings_files` = Load this files in the order.
|
# `settings_files` = Load this files in the order.
|
||||||
@@ -306,70 +304,69 @@ def init_o3de_core(engine_path=_O3DE_DEV,
|
|||||||
os.environ["DYNACONF_DCCSI_DEV_MODE"] = str(_DCCSI_DEV_MODE)
|
os.environ["DYNACONF_DCCSI_DEV_MODE"] = str(_DCCSI_DEV_MODE)
|
||||||
os.environ['DYNACONF_DCCSI_LOGLEVEL'] = str(_DCCSI_LOGLEVEL)
|
os.environ['DYNACONF_DCCSI_LOGLEVEL'] = str(_DCCSI_LOGLEVEL)
|
||||||
|
|
||||||
os.environ["DYNACONF_DCCSI_PATH"] = str(_DCCSI_PATH.resolve())
|
os.environ["DYNACONF_PATH_DCCSIG"] = str(_PATH_DCCSIG.resolve())
|
||||||
os.environ['PATH'] = _DCCSI_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = _PATH_DCCSIG.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
|
|
||||||
# we already defaulted to discovering these two early because of importance
|
# we already defaulted to discovering these two early because of importance
|
||||||
#os.environ["DYNACONF_O3DE_DEV"] = str(_O3DE_DEV.resolve())
|
#os.environ["DYNACONF_O3DE_DEV"] = str(_O3DE_DEV.resolve())
|
||||||
#os.environ["DYNACONF_O3DE_PROJECT_PATH"] = str(_O3DE_PROJECT_PATH)
|
#os.environ["DYNACONF_PATH_O3DE_PROJECT"] = str(_PATH_O3DE_PROJECT)
|
||||||
# we also already added them to DYNACONF_
|
# we also already added them to DYNACONF_
|
||||||
# this in an explicit pass in
|
# this in an explicit pass in
|
||||||
if project_path:
|
if project_path:
|
||||||
_project_path = Path(project_path)
|
_project_path = Path(project_path)
|
||||||
try:
|
try:
|
||||||
_project_path.exists()
|
_project_path.exists()
|
||||||
_O3DE_PROJECT_PATH = _project_path
|
_PATH_O3DE_PROJECT = _project_path
|
||||||
os.environ["DYNACONF_O3DE_PROJECT_PATH"] = str(_O3DE_PROJECT_PATH.resolve())
|
os.environ["DYNACONF_PATH_O3DE_PROJECT"] = str(_PATH_O3DE_PROJECT.resolve())
|
||||||
except FileExistsError as e:
|
except FileExistsError as e:
|
||||||
_LOGGER.error('~ The project path specified does not appear to exist!')
|
_LOGGER.error('~ The project path specified does not appear to exist!')
|
||||||
_LOGGER.warning('~ project_path: {}'.format(project_path))
|
_LOGGER.warning('~ project_path: {}'.format(project_path))
|
||||||
_LOGGER.warning('~ fallback to engine root: {}'.format())
|
_LOGGER.warning('~ fallback to engine root: {}'.format())
|
||||||
project_path = _O3DE_DEV
|
project_path = _O3DE_DEV
|
||||||
os.environ["DYNACONF_O3DE_PROJECT_PATH"] = str(_O3DE_DEV.resolve())
|
os.environ["DYNACONF_PATH_O3DE_PROJECT"] = str(_O3DE_DEV.resolve())
|
||||||
|
|
||||||
# we can pull the O3DE_PROJECT (name) from the project path
|
# we can pull the O3DE_PROJECT (name) from the project path
|
||||||
if not project_name:
|
if not project_name:
|
||||||
project_name = Path(_O3DE_PROJECT_PATH).name
|
project_name = Path(_PATH_O3DE_PROJECT).name
|
||||||
os.environ["DYNACONF_O3DE_PROJECT"] = str(project_name)
|
os.environ["DYNACONF_O3DE_PROJECT"] = str(project_name)
|
||||||
# To Do: there might be a project namespace in the project.json?
|
# To Do: there might be a project namespace in the project.json?
|
||||||
|
|
||||||
# -- O3DE build -- set up \bin\path (for Qt dll access)
|
# -- O3DE build -- set up \bin\path (for Qt dll access)
|
||||||
os.environ["DYNACONF_O3DE_BUILD_FOLDER"] = str(build_folder)
|
_PATH_O3DE_BUILD = Path(azpy.config_utils.get_o3de_build_path(_O3DE_DEV,
|
||||||
_O3DE_BUILD_PATH = Path(_O3DE_DEV, build_folder)
|
'CMakeCache.txt'))
|
||||||
|
os.environ["DYNACONF_PATH_O3DE_BUILD"] = str(_PATH_O3DE_BUILD.resolve())
|
||||||
|
|
||||||
os.environ["DYNACONF_O3DE_BUILD_PATH"] = str(_O3DE_BUILD_PATH.resolve())
|
_PATH_O3DE_BIN = Path(STR_PATH_O3DE_BIN.format(_PATH_O3DE_BUILD))
|
||||||
|
os.environ["DYNACONF_PATH_O3DE_BIN"] = str(_PATH_O3DE_BIN.resolve())
|
||||||
_O3DE_BIN_PATH = Path(STR_O3DE_BIN_PATH.format(_O3DE_BUILD_PATH))
|
|
||||||
os.environ["DYNACONF_O3DE_BIN_PATH"] = str(_O3DE_BIN_PATH.resolve())
|
|
||||||
|
|
||||||
# hard check
|
# hard check
|
||||||
if not _O3DE_BIN_PATH.exists():
|
if not _PATH_O3DE_BIN.exists():
|
||||||
raise Exception('O3DE_BIN_PATH does NOT exist: {0}'.format(_O3DE_BIN_PATH))
|
raise Exception('PATH_O3DE_BIN does NOT exist: {0}'.format(_PATH_O3DE_BIN))
|
||||||
else:
|
else:
|
||||||
# adding to sys.path apparently doesn't work for .dll locations like Qt
|
# adding to sys.path apparently doesn't work for .dll locations like Qt
|
||||||
os.environ['PATH'] = _O3DE_BIN_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = _PATH_O3DE_BIN.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
# --
|
# --
|
||||||
|
|
||||||
from azpy.constants import TAG_DIR_DCCSI_TOOLS
|
from azpy.constants import TAG_DIR_DCCSI_TOOLS
|
||||||
_DCCSI_TOOLS_PATH = Path(_DCCSI_PATH, TAG_DIR_DCCSI_TOOLS)
|
_PATH_DCCSI_TOOLS = Path(_PATH_DCCSIG, TAG_DIR_DCCSI_TOOLS)
|
||||||
os.environ["DYNACONF_DCCSI_TOOLS_PATH"] = str(_DCCSI_TOOLS_PATH.resolve())
|
os.environ["DYNACONF_PATH_DCCSI_TOOLS"] = str(_PATH_DCCSI_TOOLS.resolve())
|
||||||
|
|
||||||
from azpy.constants import TAG_DCCSI_NICKNAME
|
from azpy.constants import TAG_DCCSI_NICKNAME
|
||||||
from azpy.constants import PATH_DCCSI_LOG_PATH
|
from azpy.constants import PATH_DCCSI_LOG_PATH
|
||||||
_DCCSI_LOG_PATH = Path(PATH_DCCSI_LOG_PATH.format(O3DE_PROJECT_PATH=project_path,
|
_DCCSI_LOG_PATH = Path(PATH_DCCSI_LOG_PATH.format(PATH_O3DE_PROJECT=project_path,
|
||||||
TAG_DCCSI_NICKNAME=TAG_DCCSI_NICKNAME))
|
TAG_DCCSI_NICKNAME=TAG_DCCSI_NICKNAME))
|
||||||
os.environ["DYNACONF_DCCSI_LOG_PATH"] = str(_DCCSI_LOG_PATH)
|
os.environ["DYNACONF_DCCSI_LOG_PATH"] = str(_DCCSI_LOG_PATH)
|
||||||
|
|
||||||
from azpy.constants import TAG_DIR_REGISTRY, TAG_DCCSI_CONFIG
|
from azpy.constants import TAG_DIR_REGISTRY, TAG_DCCSI_CONFIG
|
||||||
_DCCSI_CONFIG_PATH = Path(project_path, TAG_DIR_REGISTRY, TAG_DCCSI_CONFIG)
|
_PATH_DCCSI_CONFIG = Path(project_path, TAG_DIR_REGISTRY, TAG_DCCSI_CONFIG)
|
||||||
os.environ["DYNACONF_DCCSI_CONFIG_PATH"] = str(_DCCSI_CONFIG_PATH.resolve())
|
os.environ["DYNACONF_PATH_DCCSI_CONFIG"] = str(_PATH_DCCSI_CONFIG.resolve())
|
||||||
|
|
||||||
from azpy.constants import TAG_DIR_DCCSI_TOOLS
|
from azpy.constants import TAG_DIR_DCCSI_TOOLS
|
||||||
_DCCSIG_TOOLS_PATH = Path.joinpath(_DCCSI_PATH, TAG_DIR_DCCSI_TOOLS)
|
_DCCSIG_TOOLS_PATH = Path.joinpath(_PATH_DCCSIG, TAG_DIR_DCCSI_TOOLS)
|
||||||
os.environ["DYNACONF_DCCSIG_TOOLS_PATH"] = str(_DCCSIG_TOOLS_PATH.resolve())
|
os.environ["DYNACONF_DCCSIG_TOOLS_PATH"] = str(_DCCSIG_TOOLS_PATH.resolve())
|
||||||
|
|
||||||
_O3DE_DCCSI_PATH = os.environ['PATH']
|
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||||
|
|
||||||
from dynaconf import settings
|
from dynaconf import settings
|
||||||
|
|
||||||
@@ -381,26 +378,26 @@ def init_o3de_core(engine_path=_O3DE_DEV,
|
|||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
def init_o3de_python(engine_path=_O3DE_DEV,
|
def init_o3de_python(engine_path=_O3DE_DEV,
|
||||||
engine_bin=_O3DE_BIN_PATH,
|
engine_bin=_PATH_O3DE_BIN,
|
||||||
dccsi_path=_DCCSI_PATH):
|
dccsi_path=_PATH_DCCSIG):
|
||||||
|
|
||||||
# pathify
|
# pathify
|
||||||
_O3DE_DEV = Path(engine_path)
|
_O3DE_DEV = Path(engine_path)
|
||||||
_O3DE_BIN_PATH = Path(engine_bin)
|
_PATH_O3DE_BIN = Path(engine_bin)
|
||||||
_DCCSI_PATH = Path(dccsi_path)
|
_PATH_DCCSIG = Path(dccsi_path)
|
||||||
|
|
||||||
# python config
|
# python config
|
||||||
_DCCSI_PYTHON_PATH = Path(_DCCSI_PATH,'3rdParty','Python')
|
_PATH_DCCSI_PYTHON = Path(_PATH_DCCSIG,'3rdParty','Python')
|
||||||
os.environ["DYNACONF_DCCSI_PYTHON_PATH"] = str(_DCCSI_PYTHON_PATH.resolve())
|
os.environ["DYNACONF_PATH_DCCSI_PYTHON"] = str(_PATH_DCCSI_PYTHON.resolve())
|
||||||
|
|
||||||
_DCCSI_PYTHON_LIB_PATH = azpy.config_utils.bootstrap_dccsi_py_libs(_DCCSI_PATH)
|
_PATH_DCCSI_PYTHON_LIB = azpy.config_utils.bootstrap_dccsi_py_libs(_PATH_DCCSIG)
|
||||||
os.environ["DYNACONF_DCCSI_PYTHON_LIB_PATH"] = str(_DCCSI_PYTHON_LIB_PATH.resolve())
|
os.environ["DYNACONF_PATH_DCCSI_PYTHON_LIB"] = str(_PATH_DCCSI_PYTHON_LIB.resolve())
|
||||||
os.environ['PATH'] = _DCCSI_PYTHON_LIB_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = _PATH_DCCSI_PYTHON_LIB.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
site.addsitedir(_DCCSI_PYTHON_LIB_PATH)
|
site.addsitedir(_PATH_DCCSI_PYTHON_LIB)
|
||||||
_O3DE_PYTHONPATH.append(_DCCSI_PYTHON_LIB_PATH.resolve())
|
_O3DE_PYTHONPATH.append(_PATH_DCCSI_PYTHON_LIB.resolve())
|
||||||
|
|
||||||
site.addsitedir(_O3DE_BIN_PATH)
|
site.addsitedir(_PATH_O3DE_BIN)
|
||||||
_O3DE_PYTHONPATH.append(_O3DE_BIN_PATH.resolve())
|
_O3DE_PYTHONPATH.append(_PATH_O3DE_BIN.resolve())
|
||||||
|
|
||||||
_O3DE_PY_EXE = Path(sys.executable)
|
_O3DE_PY_EXE = Path(sys.executable)
|
||||||
_DCCSI_PY_IDE = Path(_O3DE_PY_EXE)
|
_DCCSI_PY_IDE = Path(_O3DE_PY_EXE)
|
||||||
@@ -411,24 +408,24 @@ def init_o3de_python(engine_path=_O3DE_DEV,
|
|||||||
os.environ['PATH'] = _O3DE_PYTHONHOME.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = _O3DE_PYTHONHOME.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
_LOGGER.info('~ O3DE_PYTHONHOME - is now the folder containing O3DE python executable')
|
_LOGGER.info('~ O3DE_PYTHONHOME - is now the folder containing O3DE python executable')
|
||||||
|
|
||||||
_O3DE_PYTHON_INSTALL = Path(_O3DE_DEV, 'python')
|
_PATH_O3DE_PYTHON_INSTALL = Path(_O3DE_DEV, 'python')
|
||||||
os.environ["DYNACONF_O3DE_PYTHON_INSTALL"] = str(_O3DE_PYTHON_INSTALL.resolve())
|
os.environ["DYNACONF_PATH_O3DE_PYTHON_INSTALL"] = str(_PATH_O3DE_PYTHON_INSTALL.resolve())
|
||||||
os.environ['PATH'] = _O3DE_PYTHON_INSTALL.as_posix() + os.pathsep + os.environ['PATH']
|
os.environ['PATH'] = _PATH_O3DE_PYTHON_INSTALL.as_posix() + os.pathsep + os.environ['PATH']
|
||||||
|
|
||||||
if sys.platform.startswith('win'):
|
if sys.platform.startswith('win'):
|
||||||
_DCCSI_PY_BASE = Path(_O3DE_PYTHON_INSTALL, 'python.cmd')
|
_DCCSI_PY_BASE = Path(_PATH_O3DE_PYTHON_INSTALL, 'python.cmd')
|
||||||
elif sys.platform == "linux":
|
elif sys.platform == "linux":
|
||||||
_DCCSI_PY_BASE = Path(_O3DE_PYTHON_INSTALL, 'python.sh')
|
_DCCSI_PY_BASE = Path(_PATH_O3DE_PYTHON_INSTALL, 'python.sh')
|
||||||
elif sys.platform == "darwin":
|
elif sys.platform == "darwin":
|
||||||
_DCCSI_PY_BASE = Path(_O3DE_PYTHON_INSTALL, 'python.sh')
|
_DCCSI_PY_BASE = Path(_PATH_O3DE_PYTHON_INSTALL, 'python.sh')
|
||||||
else:
|
else:
|
||||||
_DCCSI_PY_BASE = None
|
_DCCSI_PY_BASE = None
|
||||||
|
|
||||||
if _DCCSI_PY_BASE:
|
if _DCCSI_PY_BASE:
|
||||||
os.environ["DYNACONF_DCCSI_PY_BASE"] = str(_DCCSI_PY_BASE.resolve())
|
os.environ["DYNACONF_DCCSI_PY_BASE"] = str(_DCCSI_PY_BASE.resolve())
|
||||||
|
|
||||||
_O3DE_DCCSI_PATH = os.environ['PATH']
|
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||||
|
|
||||||
try:
|
try:
|
||||||
_DCCSI_PYTHONPATH = os.environ['PYTHONPATH']
|
_DCCSI_PYTHONPATH = os.environ['PYTHONPATH']
|
||||||
@@ -447,23 +444,21 @@ def init_o3de_python(engine_path=_O3DE_DEV,
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# settings.setenv() # doing this will add the additional DYNACONF_ envars
|
# settings.setenv() # doing this will add the additional DYNACONF_ envars
|
||||||
def get_config_settings(engine_path=_O3DE_DEV,
|
def get_config_settings(engine_path=_O3DE_DEV,
|
||||||
build_folder=_O3DE_BUILD_FOLDER,
|
|
||||||
project_name=None,
|
project_name=None,
|
||||||
project_path=_O3DE_PROJECT_PATH,
|
project_path=_PATH_O3DE_PROJECT,
|
||||||
enable_o3de_python=None,
|
enable_o3de_python=None,
|
||||||
enable_o3de_pyside2=None,
|
enable_o3de_pyside2=None,
|
||||||
set_env=True):
|
set_env=True):
|
||||||
"""Convenience method to initialize and retreive settings directly from module."""
|
"""Convenience method to initialize and retreive settings directly from module."""
|
||||||
|
|
||||||
settings = init_o3de_core(engine_path,
|
settings = init_o3de_core(engine_path,
|
||||||
build_folder,
|
|
||||||
project_name,
|
project_name,
|
||||||
project_path)
|
project_path)
|
||||||
|
|
||||||
if enable_o3de_python:
|
if enable_o3de_python:
|
||||||
settings = init_o3de_python(settings.O3DE_DEV,
|
settings = init_o3de_python(settings.O3DE_DEV,
|
||||||
settings.O3DE_BIN_PATH,
|
settings.PATH_O3DE_BIN,
|
||||||
settings.DCCSI_PATH)
|
settings.PATH_DCCSIG)
|
||||||
|
|
||||||
# These should ONLY be set for O3DE and non-DCC environments
|
# These should ONLY be set for O3DE and non-DCC environments
|
||||||
# They will most likely cause other Qt/PySide DCC apps to fail
|
# They will most likely cause other Qt/PySide DCC apps to fail
|
||||||
@@ -474,8 +469,8 @@ def get_config_settings(engine_path=_O3DE_DEV,
|
|||||||
# assume our standalone python tools wants this access?
|
# assume our standalone python tools wants this access?
|
||||||
# it's safe to do this for dev and from ide
|
# it's safe to do this for dev and from ide
|
||||||
if enable_o3de_pyside2:
|
if enable_o3de_pyside2:
|
||||||
settings = init_o3de_pyside2(settings.DCCSI_PATH,
|
settings = init_o3de_pyside2(settings.PATH_DCCSIG,
|
||||||
settings.O3DE_BIN_PATH)
|
settings.PATH_O3DE_BIN)
|
||||||
|
|
||||||
# now standalone we can validate the config. env, settings.
|
# now standalone we can validate the config. env, settings.
|
||||||
from dynaconf import settings
|
from dynaconf import settings
|
||||||
@@ -489,11 +484,11 @@ def get_config_settings(engine_path=_O3DE_DEV,
|
|||||||
# Main Code Block, runs this script as main (testing)
|
# Main Code Block, runs this script as main (testing)
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
"""Run this file as a standalone cli script"""
|
"""Run this file as a standalone cli script for testing/debugging"""
|
||||||
|
import time
|
||||||
|
start = time.process_time() # start tracking
|
||||||
|
|
||||||
_MODULENAME = __name__
|
_MODULENAME = 'DCCsi.config'
|
||||||
if _MODULENAME is '__main__':
|
|
||||||
_MODULENAME = 'DCCsi.config'
|
|
||||||
|
|
||||||
from azpy.constants import STR_CROSSBAR
|
from azpy.constants import STR_CROSSBAR
|
||||||
|
|
||||||
@@ -508,7 +503,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# happy print
|
# happy print
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
_LOGGER.info('~ constants.py ... Running script as __main__')
|
_LOGGER.info('~ {}.py ... Running script as __main__'.format(_MODULENAME))
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
|
|
||||||
# go ahead and run the rest of the configuration
|
# go ahead and run the rest of the configuration
|
||||||
@@ -521,6 +516,10 @@ if __name__ == '__main__':
|
|||||||
type=bool,
|
type=bool,
|
||||||
required=False,
|
required=False,
|
||||||
help='Enables global debug flag.')
|
help='Enables global debug flag.')
|
||||||
|
parser.add_argument('-sd', '--set-debugger',
|
||||||
|
type=str,
|
||||||
|
required=False,
|
||||||
|
help='Default debugger: WING, others: PYCHARM, VSCODE (not yet implemented).')
|
||||||
parser.add_argument('-dm', '--developer-mode',
|
parser.add_argument('-dm', '--developer-mode',
|
||||||
type=bool,
|
type=bool,
|
||||||
required=False,
|
required=False,
|
||||||
@@ -549,10 +548,6 @@ if __name__ == '__main__':
|
|||||||
type=bool,
|
type=bool,
|
||||||
required=False,
|
required=False,
|
||||||
help='Enables O3DE Qt\PySide2 access.')
|
help='Enables O3DE Qt\PySide2 access.')
|
||||||
parser.add_argument('-sd', '--set-debugger',
|
|
||||||
type=str,
|
|
||||||
required=False,
|
|
||||||
help='Default debugger: WING, others: PYCHARM, VSCODE (not yet implemented).')
|
|
||||||
parser.add_argument('-pc', '--project-config',
|
parser.add_argument('-pc', '--project-config',
|
||||||
type=bool,
|
type=bool,
|
||||||
required=False,
|
required=False,
|
||||||
@@ -575,13 +570,15 @@ if __name__ == '__main__':
|
|||||||
if args.global_debug:
|
if args.global_debug:
|
||||||
_DCCSI_GDEBUG = True
|
_DCCSI_GDEBUG = True
|
||||||
os.environ["DYNACONF_DCCSI_GDEBUG"] = str(_DCCSI_GDEBUG)
|
os.environ["DYNACONF_DCCSI_GDEBUG"] = str(_DCCSI_GDEBUG)
|
||||||
if args.developer_mode:
|
|
||||||
attach_debugger() # attempts to start debugger
|
|
||||||
|
|
||||||
if args.set_debugger:
|
if args.set_debugger:
|
||||||
_LOGGER.info('Setting and switching debugger type from WingIDE not implemented.')
|
_LOGGER.info('Setting and switching debugger type not implemented (default=WING)')
|
||||||
# To Do: implement debugger plugin pattern
|
# To Do: implement debugger plugin pattern
|
||||||
|
|
||||||
|
if args.developer_mode:
|
||||||
|
_DCCSI_DEV_MODE = True
|
||||||
|
attach_debugger() # attempts to start debugger
|
||||||
|
|
||||||
# need to do a little plumbing
|
# need to do a little plumbing
|
||||||
if not args.engine_path:
|
if not args.engine_path:
|
||||||
args.engine_path=_O3DE_DEV
|
args.engine_path=_O3DE_DEV
|
||||||
@@ -589,7 +586,7 @@ if __name__ == '__main__':
|
|||||||
from azpy.constants import TAG_DIR_O3DE_BUILD_FOLDER
|
from azpy.constants import TAG_DIR_O3DE_BUILD_FOLDER
|
||||||
args.build_folder = TAG_DIR_O3DE_BUILD_FOLDER
|
args.build_folder = TAG_DIR_O3DE_BUILD_FOLDER
|
||||||
if not args.project_path:
|
if not args.project_path:
|
||||||
args.project_path=_O3DE_PROJECT_PATH
|
args.project_path=_PATH_O3DE_PROJECT
|
||||||
|
|
||||||
if _DCCSI_GDEBUG:
|
if _DCCSI_GDEBUG:
|
||||||
args.enable_python = True
|
args.enable_python = True
|
||||||
@@ -597,7 +594,6 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# now standalone we can validate the config. env, settings.
|
# now standalone we can validate the config. env, settings.
|
||||||
settings = get_config_settings(engine_path=args.engine_path,
|
settings = get_config_settings(engine_path=args.engine_path,
|
||||||
build_folder=args.build_folder,
|
|
||||||
project_name=args.project_name,
|
project_name=args.project_name,
|
||||||
project_path=args.project_path,
|
project_path=args.project_path,
|
||||||
enable_o3de_python=args.enable_python,
|
enable_o3de_python=args.enable_python,
|
||||||
@@ -612,47 +608,54 @@ if __name__ == '__main__':
|
|||||||
_LOGGER.info('DCCSI_OS_FOLDER: {}'.format(settings.DCCSI_OS_FOLDER))
|
_LOGGER.info('DCCSI_OS_FOLDER: {}'.format(settings.DCCSI_OS_FOLDER))
|
||||||
|
|
||||||
_LOGGER.info('O3DE_DEV: {}'.format(settings.O3DE_DEV))
|
_LOGGER.info('O3DE_DEV: {}'.format(settings.O3DE_DEV))
|
||||||
_LOGGER.info('O3DE_O3DE_BUILD_FOLDER: {}'.format(settings.O3DE_BUILD_PATH))
|
_LOGGER.info('O3DE_O3DE_BUILD_FOLDER: {}'.format(settings.PATH_O3DE_BUILD))
|
||||||
_LOGGER.info('O3DE_BUILD_PATH: {}'.format(settings.O3DE_BUILD_PATH))
|
_LOGGER.info('PATH_O3DE_BUILD: {}'.format(settings.PATH_O3DE_BUILD))
|
||||||
_LOGGER.info('O3DE_BIN_PATH: {}'.format(settings.O3DE_BIN_PATH))
|
_LOGGER.info('PATH_O3DE_BIN: {}'.format(settings.PATH_O3DE_BIN))
|
||||||
|
|
||||||
_LOGGER.info('O3DE_PROJECT: {}'.format(settings.O3DE_PROJECT))
|
_LOGGER.info('O3DE_PROJECT: {}'.format(settings.O3DE_PROJECT))
|
||||||
_LOGGER.info('O3DE_PROJECT_PATH: {}'.format(settings.O3DE_PROJECT_PATH))
|
_LOGGER.info('PATH_O3DE_PROJECT: {}'.format(settings.PATH_O3DE_PROJECT))
|
||||||
|
|
||||||
_LOGGER.info('DCCSI_PATH: {}'.format(settings.DCCSI_PATH))
|
_LOGGER.info('PATH_DCCSIG: {}'.format(settings.PATH_DCCSIG))
|
||||||
_LOGGER.info('DCCSI_LOG_PATH: {}'.format(settings.DCCSI_LOG_PATH))
|
_LOGGER.info('DCCSI_LOG_PATH: {}'.format(settings.DCCSI_LOG_PATH))
|
||||||
_LOGGER.info('DCCSI_CONFIG_PATH: {}'.format(settings.DCCSI_CONFIG_PATH))
|
_LOGGER.info('PATH_DCCSI_CONFIG: {}'.format(settings.PATH_DCCSI_CONFIG))
|
||||||
|
|
||||||
if settings.O3DE_DCCSI_ENV_TEST:
|
try:
|
||||||
|
settings.O3DE_DCCSI_ENV_TEST
|
||||||
_LOGGER.info('O3DE_DCCSI_ENV_TEST: {}'.format(settings.O3DE_DCCSI_ENV_TEST))
|
_LOGGER.info('O3DE_DCCSI_ENV_TEST: {}'.format(settings.O3DE_DCCSI_ENV_TEST))
|
||||||
|
except:
|
||||||
|
pass # don't exist
|
||||||
|
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
_LOGGER.info('')
|
_LOGGER.info('')
|
||||||
|
|
||||||
if args.enable_python:
|
if args.enable_python:
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
_LOGGER.info('DCCSI_PYTHON_PATH'.format(settings.DCCSI_PYTHON_PATH))
|
_LOGGER.info('PATH_DCCSI_PYTHON'.format(settings.PATH_DCCSI_PYTHON))
|
||||||
_LOGGER.info('DCCSI_PYTHON_LIB_PATH: {}'.format(settings.DCCSI_PYTHON_LIB_PATH))
|
_LOGGER.info('PATH_DCCSI_PYTHON_LIB: {}'.format(settings.PATH_DCCSI_PYTHON_LIB))
|
||||||
_LOGGER.info('DCCSI_PY_IDE'.format(settings.DCCSI_PY_IDE))
|
_LOGGER.info('DCCSI_PY_IDE'.format(settings.DCCSI_PY_IDE))
|
||||||
_LOGGER.info('O3DE_PYTHONHOME'.format(settings.O3DE_PYTHONHOME))
|
_LOGGER.info('O3DE_PYTHONHOME'.format(settings.O3DE_PYTHONHOME))
|
||||||
_LOGGER.info('O3DE_PYTHON_INSTALL'.format(settings.O3DE_PYTHON_INSTALL))
|
_LOGGER.info('PATH_O3DE_PYTHON_INSTALL'.format(settings.PATH_O3DE_PYTHON_INSTALL))
|
||||||
_LOGGER.info('DCCSI_PY_BASE: {}'.format(settings.DCCSI_PY_BASE))
|
_LOGGER.info('DCCSI_PY_BASE: {}'.format(settings.DCCSI_PY_BASE))
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
_LOGGER.info('')
|
_LOGGER.info('')
|
||||||
else:
|
else:
|
||||||
_LOGGER.info('Tip: add arg --enable-python to extend the environment with O3DE python access')
|
_LOGGER.info('Tip: add arg --enable-python (-py) to extend the environment with O3DE python access')
|
||||||
|
|
||||||
if args.enable_qt:
|
if args.enable_qt:
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
# _LOGGER.info('QTFORPYTHON_PATH: {}'.format(settings.QTFORPYTHON_PATH))
|
# _LOGGER.info('QTFORPYTHON_PATH: {}'.format(settings.QTFORPYTHON_PATH))
|
||||||
_LOGGER.info('QT_PLUGIN_PATH: {}'.format(settings.QT_PLUGIN_PATH))
|
_LOGGER.info('QT_PLUGIN_PATH: {}'.format(settings.QT_PLUGIN_PATH))
|
||||||
_LOGGER.info('QT_QPA_PLATFORM_PLUGIN_PATH: {}'.format(settings.QT_QPA_PLATFORM_PLUGIN_PATH))
|
_LOGGER.info('QT_QPA_PLATFORM_PLUGIN_PATH: {}'.format(settings.QT_QPA_PLATFORM_PLUGIN_PATH))
|
||||||
_LOGGER.info('DCCSI_PYSIDE2_TOOLS: {}'.format(settings.DCCSI_PYSIDE2_TOOLS))
|
try:
|
||||||
|
settings.DCCSI_PYSIDE2_TOOLS
|
||||||
|
_LOGGER.info('DCCSI_PYSIDE2_TOOLS: {}'.format(settings.DCCSI_PYSIDE2_TOOLS))
|
||||||
|
except:
|
||||||
|
pass # don't exist
|
||||||
_LOGGER.info(STR_CROSSBAR)
|
_LOGGER.info(STR_CROSSBAR)
|
||||||
_LOGGER.info('')
|
_LOGGER.info('')
|
||||||
else:
|
else:
|
||||||
|
_LOGGER.info('Tip: add arg --enable-qt (-qt) to extend the environment with O3DE Qt/PySide2 support')
|
||||||
_LOGGER.info('Tip: add arg --enable-qt to extend the environment with O3DE Qt/PySide2 support')
|
_LOGGER.info('Tip: add arg --test-pyside2 (-tp) to test the O3DE Qt/PySide2 support')
|
||||||
|
|
||||||
settings.setenv() # doing this will add/set the additional DYNACONF_ envars
|
settings.setenv() # doing this will add/set the additional DYNACONF_ envars
|
||||||
|
|
||||||
@@ -695,14 +698,9 @@ if __name__ == '__main__':
|
|||||||
_LOGGER.warning("Could not import 'pyside2uic'")
|
_LOGGER.warning("Could not import 'pyside2uic'")
|
||||||
_LOGGER.warning("Refer to: '< local DCCsi >\3rdParty\Python\README.txt'")
|
_LOGGER.warning("Refer to: '< local DCCsi >\3rdParty\Python\README.txt'")
|
||||||
_LOGGER.error(e)
|
_LOGGER.error(e)
|
||||||
|
|
||||||
|
_LOGGER.info('DCCsi: config.py took: {} sec'.format(time.process_time() - start))
|
||||||
|
|
||||||
# return
|
# return
|
||||||
sys.exit()
|
sys.exit()
|
||||||
# --- END -----------------------------------------------------------------
|
# --- END -----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -219,7 +219,7 @@ namespace ScriptCanvasEditor
|
|||||||
|
|
||||||
if (scriptCanvasSlot && scriptCanvasSlot->IsVisible())
|
if (scriptCanvasSlot && scriptCanvasSlot->IsVisible())
|
||||||
{
|
{
|
||||||
int& index = (scriptCanvasSlot->IsData() && scriptCanvasSlot->IsOutput()) ? paramIndex : outputIndex;
|
int& index = (scriptCanvasSlot->IsData() && scriptCanvasSlot->IsOutput()) ? outputIndex : paramIndex;
|
||||||
|
|
||||||
auto graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot), index);
|
auto graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot), index);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user