Merge branch 'development' into Atom/dmcdiar/ATOM-16956
This commit is contained in:
@@ -1281,6 +1281,8 @@ void OutlinerWidget::OnSearchTextChanged(const QString& activeTextFilter)
|
||||
|
||||
m_listModel->SearchStringChanged(filterString);
|
||||
m_proxyModel->UpdateFilter();
|
||||
|
||||
m_gui->m_objectTree->expandAll();
|
||||
}
|
||||
|
||||
void OutlinerWidget::OnFilterChanged(const AzQtComponents::SearchTypeFilterList& activeTypeFilters)
|
||||
|
||||
@@ -105,6 +105,8 @@ void ScriptContextDebug::ConnectHook()
|
||||
void ScriptContextDebug::DisconnectHook()
|
||||
{
|
||||
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->m_currentStackLevel--;
|
||||
|
||||
if (context->m_currentStackLevel == -1)
|
||||
{
|
||||
context->m_stepStackLevel = -1;
|
||||
}
|
||||
}
|
||||
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_breakCallback(context, bp);
|
||||
|
||||
@@ -62,6 +62,7 @@ namespace AZ
|
||||
TimeSystem::TimeSystem()
|
||||
{
|
||||
m_lastInvokedTimeUs = static_cast<TimeUs>(AZStd::GetTimeNowMicroSecond());
|
||||
m_realLastInvokedTimeUs = static_cast<TimeUs>(AZStd::GetTimeNowMicroSecond());
|
||||
AZ::Interface<ITime>::Register(this);
|
||||
ITimeRequestBus::Handler::BusConnect();
|
||||
}
|
||||
@@ -101,7 +102,11 @@ namespace AZ
|
||||
|
||||
TimeUs TimeSystem::GetRealElapsedTimeUs() const
|
||||
{
|
||||
return static_cast<TimeUs>(AZStd::GetTimeNowMicroSecond());
|
||||
const TimeUs currentTime = static_cast<TimeUs>(AZStd::GetTimeNowMicroSecond());
|
||||
m_realAccumulatedTimeUs += currentTime - m_realLastInvokedTimeUs;
|
||||
m_realLastInvokedTimeUs = currentTime;
|
||||
|
||||
return m_realAccumulatedTimeUs;
|
||||
}
|
||||
|
||||
TimeUs TimeSystem::GetSimulationTickDeltaTimeUs() const
|
||||
|
||||
@@ -64,6 +64,14 @@ namespace AZ
|
||||
//! Mutable to allow GetElapsedTimeMs/TimeUs() to be a const functions.
|
||||
mutable TimeUs m_accumulatedTimeUs = AZ::Time::ZeroTimeUs;
|
||||
|
||||
//! Used to calculate the delta time between calls to GetRealElapsedTimeMs/TimeUs().
|
||||
//! Mutable to allow GetRealElapsedTimeMs/TimeUs() to be a const functions.
|
||||
mutable TimeUs m_realLastInvokedTimeUs = AZ::Time::ZeroTimeUs;
|
||||
|
||||
//! Accumulates the delta time of GetRealElapsedTimeMs/TimeUs() calls.
|
||||
//! Mutable to allow GetRealElapsedTimeMs/TimeUs() to be a const functions.
|
||||
mutable TimeUs m_realAccumulatedTimeUs = AZ::Time::ZeroTimeUs;
|
||||
|
||||
//! The current game tick delta time.
|
||||
//! Can be affected by time system cvars.
|
||||
//! Updated in AdvanceTickDeltaTimes().
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
|
||||
#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");
|
||||
|
||||
namespace AzFramework::AssetSystem::Platform
|
||||
|
||||
+35
-12
@@ -26,7 +26,9 @@
|
||||
#include <AzToolsFramework/Entity/EditorEntityTransformBus.h>
|
||||
#include <AzToolsFramework/API/EntityPropertyEditorRequestsBus.h>
|
||||
#include <AzToolsFramework/API/ToolsApplicationAPI.h>
|
||||
#include <AzToolsFramework/ContainerEntity/ContainerEntityInterface.h>
|
||||
#include <AzToolsFramework/Entity/EditorEntityContextBus.h>
|
||||
#include <AzToolsFramework/Entity/ReadOnly/ReadOnlyEntityInterface.h>
|
||||
#include <AzToolsFramework/Prefab/PrefabPublicInterface.h>
|
||||
#include <AzToolsFramework/ToolsComponents/TransformComponentBus.h>
|
||||
#include <AzToolsFramework/ToolsComponents/TransformComponentSerializer.h>
|
||||
@@ -35,9 +37,8 @@
|
||||
#include <AzToolsFramework/ViewportSelection/EditorSelectionUtil.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportMessages.h>
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
@@ -662,7 +663,6 @@ namespace AzToolsFramework
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Prevent this from parenting to its own child. Check if this entity is in the new parent's hierarchy.
|
||||
auto potentialParentTransformComponent = GetTransformComponent(parentId);
|
||||
if (potentialParentTransformComponent && potentialParentTransformComponent->IsEntityInHierarchy(GetEntityId()))
|
||||
@@ -931,14 +931,27 @@ namespace AzToolsFramework
|
||||
{
|
||||
return AZ::Failure(AZStd::string("You cannot set an entity's parent to itself!"));
|
||||
}
|
||||
else
|
||||
|
||||
// Don't allow the change if it will result in a cycle hierarchy
|
||||
auto potentialParentTransformComponent = GetTransformComponent(actualValue);
|
||||
if (potentialParentTransformComponent && potentialParentTransformComponent->IsEntityInHierarchy(GetEntityId()))
|
||||
{
|
||||
// Don't allow the change if it will result in a cycle hierarchy
|
||||
auto potentialParentTransformComponent = GetTransformComponent(actualValue);
|
||||
if (potentialParentTransformComponent && potentialParentTransformComponent->IsEntityInHierarchy(GetEntityId()))
|
||||
{
|
||||
return AZ::Failure(AZStd::string("You cannot set an entity to be a child of one of its own children!"));
|
||||
}
|
||||
return AZ::Failure(AZStd::string("You cannot set an entity to be a child of one of its own children!"));
|
||||
}
|
||||
|
||||
// Don't allow read-only entities to be re-parented at all.
|
||||
// Also don't allow entities to be parented under read-only entities.
|
||||
if (auto readOnlyEntityPublicInterface = AZ::Interface<ReadOnlyEntityPublicInterface>::Get();
|
||||
readOnlyEntityPublicInterface->IsReadOnly(GetEntityId()) || readOnlyEntityPublicInterface->IsReadOnly(actualValue))
|
||||
{
|
||||
return AZ::Failure(AZStd::string("You cannot set an entity to be a child of a read-only entity!"));
|
||||
}
|
||||
|
||||
// Don't allow entities to be parented under closed containers.
|
||||
if (auto containerEntityInterface = AZ::Interface<ContainerEntityInterface>::Get();
|
||||
!containerEntityInterface->IsContainerOpen(actualValue))
|
||||
{
|
||||
return AZ::Failure(AZStd::string("You cannot set an entity to be a child of a closed container!"));
|
||||
}
|
||||
|
||||
return AZ::Success();
|
||||
@@ -1245,6 +1258,15 @@ namespace AzToolsFramework
|
||||
|
||||
void TransformComponent::AddContextMenuActions(QMenu* menu)
|
||||
{
|
||||
bool parentEntityIsReadOnly = false;
|
||||
|
||||
// If the parent entity is marked as read-only, don't allow actions on this transform.
|
||||
if (auto readOnlyEntityPublicInterface = AZ::Interface<ReadOnlyEntityPublicInterface>::Get();
|
||||
readOnlyEntityPublicInterface->IsReadOnly(GetEntityId()))
|
||||
{
|
||||
parentEntityIsReadOnly = true;
|
||||
}
|
||||
|
||||
if (menu)
|
||||
{
|
||||
if (!menu->actions().empty())
|
||||
@@ -1266,10 +1288,10 @@ namespace AzToolsFramework
|
||||
|
||||
AzToolsFramework::ToolsApplicationEvents::Bus::Broadcast(&AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, AzToolsFramework::Refresh_Values);
|
||||
});
|
||||
resetAction->setEnabled(!m_editorTransform.m_locked);
|
||||
resetAction->setEnabled(!m_editorTransform.m_locked && !parentEntityIsReadOnly);
|
||||
|
||||
QString lockString = m_editorTransform.m_locked ? "Unlock transform values" : "Lock transform values";
|
||||
menu->addAction(lockString, [this, lockString]()
|
||||
QAction* lockAction = menu->addAction(lockString, [this, lockString]()
|
||||
{
|
||||
{
|
||||
AzToolsFramework::ScopedUndoBatch undo(lockString.toUtf8().data());
|
||||
@@ -1278,6 +1300,7 @@ namespace AzToolsFramework
|
||||
}
|
||||
AzToolsFramework::ToolsApplicationEvents::Bus::Broadcast(&AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, AzToolsFramework::Refresh_AttributesAndValues);
|
||||
});
|
||||
lockAction->setEnabled(!parentEntityIsReadOnly);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
-2
@@ -620,6 +620,7 @@ namespace ImageProcessingAtom
|
||||
{
|
||||
PresetName emptyPreset;
|
||||
|
||||
|
||||
//get file mask of this image file
|
||||
AZStd::string fileMask = GetFileMask(imageFilePath);
|
||||
|
||||
@@ -636,8 +637,17 @@ namespace ImageProcessingAtom
|
||||
}
|
||||
|
||||
if (outPreset == emptyPreset)
|
||||
{
|
||||
outPreset = m_defaultPreset;
|
||||
{
|
||||
auto image = IImageObjectPtr(LoadImageFromFile(imageFilePath));
|
||||
if (image->GetAlphaContent() == EAlphaContent::eAlphaContent_Absent
|
||||
|| image->GetAlphaContent() == EAlphaContent::eAlphaContent_OnlyWhite)
|
||||
{
|
||||
outPreset = m_defaultPreset;
|
||||
}
|
||||
else
|
||||
{
|
||||
outPreset = m_defaultPresetAlpha;
|
||||
}
|
||||
}
|
||||
|
||||
return outPreset;
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace ImageProcessingAtom
|
||||
builderDescriptor.m_busId = azrtti_typeid<ImageBuilderWorker>();
|
||||
builderDescriptor.m_createJobFunction = AZStd::bind(&ImageBuilderWorker::CreateJobs, &m_imageBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
builderDescriptor.m_processJobFunction = AZStd::bind(&ImageBuilderWorker::ProcessJob, &m_imageBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
builderDescriptor.m_version = 26; // [ATOM-15086]
|
||||
builderDescriptor.m_version = 27; // [ATOM-16958]
|
||||
builderDescriptor.m_analysisFingerprint = ImageProcessingAtom::BuilderSettingManager::Instance()->GetAnalysisFingerprint();
|
||||
m_imageBuilder.BusConnect(builderDescriptor.m_busId);
|
||||
AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBusTraits::RegisterBuilderInformation, builderDescriptor);
|
||||
@@ -284,6 +284,10 @@ namespace ImageProcessingAtom
|
||||
return;
|
||||
}
|
||||
|
||||
// Full path of the image file
|
||||
AZStd::string fullPath;
|
||||
AzFramework::StringFunc::Path::Join(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, true, true);
|
||||
|
||||
// Get the extension of the file
|
||||
AZStd::string ext;
|
||||
AzFramework::StringFunc::Path::GetExtension(request.m_sourceFile.c_str(), ext, false);
|
||||
@@ -306,13 +310,11 @@ namespace ImageProcessingAtom
|
||||
// add source dependency for .assetinfo file
|
||||
AssetBuilderSDK::SourceFileDependency sourceFileDependency;
|
||||
sourceFileDependency.m_sourceDependencyType = AssetBuilderSDK::SourceFileDependency::SourceFileDependencyType::Absolute;
|
||||
sourceFileDependency.m_sourceFileDependencyPath = request.m_sourceFile + TextureSettings::ExtensionName;
|
||||
sourceFileDependency.m_sourceFileDependencyPath = fullPath + TextureSettings::ExtensionName;
|
||||
response.m_sourceFileDependencyList.push_back(sourceFileDependency);
|
||||
|
||||
// add source dependencies for .preset files
|
||||
// Get the preset for this file
|
||||
AZ::IO::FixedMaxPath fullPath(request.m_watchFolder);
|
||||
fullPath /= request.m_sourceFile;
|
||||
// Get the preset for this file
|
||||
auto presetName = GetImagePreset(fullPath.c_str());
|
||||
HandlePresetDependency(presetName, response.m_sourceFileDependencyList);
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ namespace ImageProcessingAtom
|
||||
}
|
||||
|
||||
m_image->Get()->Swizzle(swizzle.c_str());
|
||||
if (!m_input->m_presetSetting.m_discardAlpha)
|
||||
if (m_input->m_presetSetting.m_discardAlpha)
|
||||
{
|
||||
m_alphaContent = EAlphaContent::eAlphaContent_Absent;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,12 @@
|
||||
{
|
||||
"Name": "DepthStencilInput",
|
||||
"SlotType": "Input",
|
||||
"ScopeAttachmentUsage": "DepthStencil"
|
||||
"ScopeAttachmentUsage": "DepthStencil",
|
||||
"ImageViewDesc": {
|
||||
"AspectFlags": [
|
||||
"Depth"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Output",
|
||||
|
||||
@@ -81,10 +81,10 @@ def start():
|
||||
try:
|
||||
_TAG_LY_BUILD_PATH = os.getenv('TAG_LY_BUILD_PATH', 'build')
|
||||
_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))
|
||||
os.environ['O3DE_BIN_PATH'] = _O3DE_BIN_PATH.as_posix()
|
||||
_LOGGER.debug(f'O3DE_BIN_PATH is: {_O3DE_BIN_PATH}')
|
||||
site.addsitedir(_O3DE_BIN_PATH.resolve())
|
||||
_PATH_O3DE_BIN = Path(os.getenv('PATH_O3DE_BIN', _DEFAULT_BIN_PATH))
|
||||
os.environ['PATH_O3DE_BIN'] = _PATH_O3DE_BIN.as_posix()
|
||||
_LOGGER.debug(f'PATH_O3DE_BIN is: {_PATH_O3DE_BIN}')
|
||||
site.addsitedir(_PATH_O3DE_BIN.resolve())
|
||||
except EnvironmentError as e:
|
||||
_LOGGER.error('O3DE bin folder not set or found')
|
||||
raise e
|
||||
@@ -94,10 +94,10 @@ def start():
|
||||
os.environ['O3DE_DEV'] = _O3DE_DEV.as_posix()
|
||||
_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()))
|
||||
os.environ['O3DE_BIN'] = _O3DE_BIN_PATH.as_posix()
|
||||
_O3DE_BIN = Path(os.getenv('O3DE_BIN', _PATH_O3DE_BIN.resolve()))
|
||||
os.environ['O3DE_BIN'] = _PATH_O3DE_BIN.as_posix()
|
||||
|
||||
_LOGGER.debug(_O3DE_BIN)
|
||||
|
||||
|
||||
@@ -56,7 +56,6 @@ namespace AZ
|
||||
{
|
||||
return true;
|
||||
}
|
||||
AZ_PROFILE_FUNCTION(RHI);
|
||||
ValidateViewContext context;
|
||||
context.m_scopeName = m_scope->GetId().GetCStr();
|
||||
context.m_srgName = shaderResourceGroup.GetName().GetCStr();
|
||||
|
||||
@@ -248,8 +248,6 @@ namespace AZ
|
||||
|
||||
void ShaderResourceGroupPool::CompileGroupsForInterval(Interval interval)
|
||||
{
|
||||
AZ_PROFILE_SCOPE(RHI, "CompileGroupsForInterval");
|
||||
|
||||
AZ_Assert(m_isCompiling, "You must call CompileGroupsBegin() first!");
|
||||
AZ_Assert(
|
||||
interval.m_max >= interval.m_min &&
|
||||
@@ -259,6 +257,8 @@ namespace AZ
|
||||
for (uint32_t i = interval.m_min; i < interval.m_max; ++i)
|
||||
{
|
||||
ShaderResourceGroup* group = m_groupsToCompile[i];
|
||||
AZ_PROFILE_SCOPE(RHI, "CompileGroupsForInterval %s", group->GetName().GetCStr());
|
||||
|
||||
CompileGroupInternal(*group, group->GetData());
|
||||
group->m_isQueuedForCompile = false;
|
||||
}
|
||||
|
||||
@@ -390,7 +390,6 @@ namespace AZ
|
||||
}
|
||||
|
||||
const PipelineLayout& pipelineLayout = pipelineState->GetPipelineLayout();
|
||||
const RHI::PipelineLayoutDescriptor& pipelineLayoutDescriptor = pipelineLayout.GetPipelineLayoutDescriptor();
|
||||
|
||||
// Pull from slot bindings dictated by the pipeline layout. Re-bind anything that has changed
|
||||
// at the flat index level.
|
||||
@@ -499,12 +498,15 @@ namespace AZ
|
||||
}
|
||||
}
|
||||
|
||||
#if defined (AZ_RHI_ENABLE_VALIDATION)
|
||||
if (updatePipelineState || updateSRG)
|
||||
{
|
||||
const RHI::PipelineLayoutDescriptor& pipelineLayoutDescriptor = pipelineLayout.GetPipelineLayoutDescriptor();
|
||||
m_validator.ValidateShaderResourceGroup(
|
||||
*shaderResourceGroup,
|
||||
pipelineLayoutDescriptor.GetShaderResourceGroupBindingInfo(srgIndex));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
+3
-5
@@ -53,14 +53,12 @@ namespace AtomToolsFramework
|
||||
const AZ::RPI::MaterialTypeSourceData::PropertyDefinition& propertyDefinition,
|
||||
AZ::RPI::MaterialPropertyValue& propertyValue);
|
||||
|
||||
//! Generate a file path from the exported file to the external reference.
|
||||
//! 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.
|
||||
//! Generate a file path that is relative to either the source asset root or the export path
|
||||
//! @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 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(
|
||||
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
|
||||
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 <QMessageBox>
|
||||
#include <QString>
|
||||
#include <QTimer>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
namespace AtomToolsFramework
|
||||
@@ -121,7 +122,6 @@ namespace AtomToolsFramework
|
||||
|
||||
void AtomToolsDocumentSystemComponent::Deactivate()
|
||||
{
|
||||
AZ::TickBus::Handler::BusDisconnect();
|
||||
AtomToolsDocumentNotificationBus::Handler::BusDisconnect();
|
||||
AtomToolsDocumentSystemRequestBus::Handler::BusDisconnect();
|
||||
m_documentMap.clear();
|
||||
@@ -160,25 +160,30 @@ namespace AtomToolsFramework
|
||||
void AtomToolsDocumentSystemComponent::OnDocumentExternallyModified(const AZ::Uuid& documentId)
|
||||
{
|
||||
m_documentIdsWithExternalChanges.insert(documentId);
|
||||
if (!AZ::TickBus::Handler::BusIsConnected())
|
||||
{
|
||||
AZ::TickBus::Handler::BusConnect();
|
||||
}
|
||||
QueueReopenDocuments();
|
||||
}
|
||||
|
||||
void AtomToolsDocumentSystemComponent::OnDocumentDependencyModified(const AZ::Uuid& 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)
|
||||
{
|
||||
m_documentIdsWithDependencyChanges.erase(documentId);
|
||||
|
||||
AZStd::string documentPath;
|
||||
AtomToolsDocumentRequestBus::EventResult(documentPath, documentId, &AtomToolsDocumentRequestBus::Events::GetAbsolutePath);
|
||||
|
||||
@@ -191,8 +196,6 @@ namespace AtomToolsFramework
|
||||
continue;
|
||||
}
|
||||
|
||||
m_documentIdsWithDependencyChanges.erase(documentId);
|
||||
|
||||
AtomToolsFramework::TraceRecorder traceRecorder(m_maxMessageBoxLineCount);
|
||||
|
||||
bool openResult = false;
|
||||
@@ -235,7 +238,7 @@ namespace AtomToolsFramework
|
||||
|
||||
m_documentIdsWithDependencyChanges.clear();
|
||||
m_documentIdsWithExternalChanges.clear();
|
||||
AZ::TickBus::Handler::BusDisconnect();
|
||||
m_queueReopenDocuments = false;
|
||||
}
|
||||
|
||||
AZ::Uuid AtomToolsDocumentSystemComponent::OpenDocument(AZStd::string_view sourcePath)
|
||||
|
||||
+3
-6
@@ -9,7 +9,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/Component/Component.h>
|
||||
#include <AzCore/Component/TickBus.h>
|
||||
#include <AzCore/std/smart_ptr/shared_ptr.h>
|
||||
#include <AzCore/Asset/AssetCommon.h>
|
||||
|
||||
@@ -28,7 +27,6 @@ namespace AtomToolsFramework
|
||||
//! AtomToolsDocumentSystemComponent is the central component of the Material Editor Core gem
|
||||
class AtomToolsDocumentSystemComponent
|
||||
: public AZ::Component
|
||||
, private AZ::TickBus::Handler
|
||||
, private AtomToolsDocumentNotificationBus::Handler
|
||||
, private AtomToolsDocumentSystemRequestBus::Handler
|
||||
{
|
||||
@@ -59,10 +57,8 @@ namespace AtomToolsFramework
|
||||
void OnDocumentExternallyModified(const AZ::Uuid& documentId) override;
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// AZ::TickBus::Handler overrides...
|
||||
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
void QueueReopenDocuments();
|
||||
void ReopenDocuments();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// AtomToolsDocumentSystemRequestBus::Handler overrides...
|
||||
@@ -87,6 +83,7 @@ namespace AtomToolsFramework
|
||||
AZStd::unordered_map<AZ::Uuid, AZStd::shared_ptr<AtomToolsDocument>> m_documentMap;
|
||||
AZStd::unordered_set<AZ::Uuid> m_documentIdsWithExternalChanges;
|
||||
AZStd::unordered_set<AZ::Uuid> m_documentIdsWithDependencyChanges;
|
||||
bool m_queueReopenDocuments = false;
|
||||
const size_t m_maxMessageBoxLineCount = 15;
|
||||
};
|
||||
} // namespace AtomToolsFramework
|
||||
|
||||
@@ -222,31 +222,15 @@ namespace AtomToolsFramework
|
||||
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())
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
AZ::IO::BasicPath<AZStd::string> exportFolder(exportPath);
|
||||
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)
|
||||
if (!relativeToExportPath)
|
||||
{
|
||||
AZStd::string watchFolder;
|
||||
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)
|
||||
|
||||
@@ -62,6 +62,8 @@ namespace AtomToolsFramework
|
||||
const QFileInfo initialFileInfo(initialPath);
|
||||
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(
|
||||
QApplication::activeWindow(),
|
||||
"Save File",
|
||||
@@ -82,7 +84,9 @@ namespace AtomToolsFramework
|
||||
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)
|
||||
|
||||
@@ -66,15 +66,15 @@ namespace UnitTest
|
||||
|
||||
TEST_F(AtomToolsFrameworkTest, GetExteralReferencePath_Succeeds)
|
||||
{
|
||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("", "", 2), "");
|
||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/condor.material", "", 2), "");
|
||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/talisman.material", "", 2), "");
|
||||
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", 0), "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", 2), "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", 0), "materials/condor.material");
|
||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("", "", true), "");
|
||||
ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/materials/condor.material", "", true), "");
|
||||
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", true), "../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", true), "../../../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", false), "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);
|
||||
|
||||
@@ -555,7 +555,7 @@ namespace MaterialEditor
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
+8
-12
@@ -6,25 +6,21 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Window/CreateMaterialDialog/CreateMaterialDialog.h>
|
||||
|
||||
#include <AzFramework/Application/Application.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
#include <AzQtComponents/Components/Widgets/FileDialog.h>
|
||||
|
||||
#include <AtomToolsFramework/Util/Util.h>
|
||||
|
||||
#include <Atom/Document/MaterialDocumentSettings.h>
|
||||
#include <Atom/RPI.Edit/Common/AssetUtils.h>
|
||||
#include <Atom/RPI.Edit/Material/MaterialSourceData.h>
|
||||
#include <Atom/RPI.Edit/Material/MaterialTypeSourceData.h>
|
||||
|
||||
#include <Atom/Document/MaterialDocumentSettings.h>
|
||||
#include <AtomToolsFramework/Util/Util.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
|
||||
{
|
||||
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 <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
||||
#include <AtomToolsFramework/Util/Util.h>
|
||||
#include <AzCore/Utils/Utils.h>
|
||||
#include <AzCore/std/string/wildcard.h>
|
||||
#include <AzQtComponents/Utilities/DesktopUtilities.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||
@@ -106,8 +107,8 @@ namespace MaterialEditor
|
||||
menu->addAction("Create Material...", [entry]()
|
||||
{
|
||||
const QString defaultPath = AtomToolsFramework::GetUniqueFileInfo(
|
||||
QString(AZ::IO::FileIOBase::GetInstance()->GetAlias("@projectroot@")) +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Materials" +
|
||||
QString(AZ::Utils::GetProjectPath().c_str()) +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Assets" +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "untitled." +
|
||||
AZ::RPI::MaterialSourceData::Extension).absoluteFilePath();
|
||||
|
||||
@@ -182,8 +183,8 @@ namespace MaterialEditor
|
||||
menu->addAction("Create Child Material...", [entry]()
|
||||
{
|
||||
const QString defaultPath = AtomToolsFramework::GetUniqueFileInfo(
|
||||
QString(AZ::IO::FileIOBase::GetInstance()->GetAlias("@projectroot@")) +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Materials" +
|
||||
QString(AZ::Utils::GetProjectPath().c_str()) +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Assets" +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "untitled." +
|
||||
AZ::RPI::MaterialSourceData::Extension).absoluteFilePath();
|
||||
|
||||
|
||||
+6
-8
@@ -6,10 +6,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Atom/RPI.Reflect/Model/ModelAsset.h>
|
||||
#include <Atom/Viewport/MaterialViewportRequestBus.h>
|
||||
#include <AtomToolsFramework/Inspector/InspectorPropertyGroupWidget.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/ModelPresetBrowserDialog.h>
|
||||
#include <Window/ViewportSettingsInspector/ViewportSettingsInspector.h>
|
||||
@@ -346,13 +347,10 @@ namespace MaterialEditor
|
||||
|
||||
AZStd::string ViewportSettingsInspector::GetDefaultUniqueSaveFilePath(const AZStd::string& baseName) const
|
||||
{
|
||||
AZStd::string savePath = AZ::IO::FileIOBase::GetInstance()->GetAlias("@projectroot@");
|
||||
savePath += AZ_CORRECT_FILESYSTEM_SEPARATOR;
|
||||
savePath += "Materials";
|
||||
savePath += AZ_CORRECT_FILESYSTEM_SEPARATOR;
|
||||
savePath += baseName;
|
||||
savePath = AtomToolsFramework::GetUniqueFileInfo(savePath.c_str()).absoluteFilePath().toUtf8().constData();
|
||||
return savePath;
|
||||
return AtomToolsFramework::GetUniqueFileInfo(
|
||||
QString(AZ::Utils::GetProjectPath().c_str()) +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + "Assets" +
|
||||
AZ_CORRECT_FILESYSTEM_SEPARATOR + baseName.c_str()).absoluteFilePath().toUtf8().constData();
|
||||
}
|
||||
|
||||
AZ::Crc32 ViewportSettingsInspector::GetGroupSaveStateKey(const AZStd::string& groupName) const
|
||||
|
||||
@@ -326,6 +326,9 @@ namespace EMStudio
|
||||
Camera::Configuration cameraConfig;
|
||||
cameraConfig.m_fovRadians = AZ::DegToRad(m_renderOptions->GetFOV());
|
||||
cameraConfig.m_nearClipDistance = m_renderOptions->GetNearClipPlaneDistance();
|
||||
cameraConfig.m_farClipDistance = m_renderOptions->GetFarClipPlaneDistance();
|
||||
cameraConfig.m_frustumWidth = DefaultFrustumDimension;
|
||||
cameraConfig.m_frustumHeight = DefaultFrustumDimension;
|
||||
|
||||
preset->ApplyLightingPreset(
|
||||
iblFeatureProcessor, m_skyboxFeatureProcessor, exposureControlSettingInterface, m_directionalLightFeatureProcessor,
|
||||
|
||||
@@ -89,6 +89,7 @@ namespace EMStudio
|
||||
AZStd::vector<AZ::Entity*> m_actorEntities;
|
||||
const RenderOptions* m_renderOptions;
|
||||
|
||||
const float DefaultFrustumDimension = 128.0f;
|
||||
AZStd::vector<AZ::Render::DirectionalLightFeatureProcessorInterface::LightHandle> m_lightHandles;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -162,6 +162,7 @@ namespace EMStudio
|
||||
|
||||
const bool isChecked = settings.value("CameraFollowUp", false).toBool();
|
||||
m_followCharacterAction->setChecked(isChecked);
|
||||
AnimViewportRequestBus::Broadcast(&AnimViewportRequestBus::Events::SetFollowCharacter, isChecked);
|
||||
}
|
||||
|
||||
void AnimViewportToolBar::SaveSettings()
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
export DYNACONF_COMPANY=Amazon
|
||||
# if a O3DE project isn't set use this gem
|
||||
export DYNACONF_O3DE_PROJECT=DccScriptingInterface
|
||||
export DYNACONF_O3DE_PROJECT_PATH=`pwd`
|
||||
export DYNACONF_O3DE_DEV=${O3DE_PROJECT_PATH}\..\..\..\..
|
||||
export DYNACONF_PATH_O3DE_PROJECT=`pwd`
|
||||
export DYNACONF_O3DE_DEV=${PATH_O3DE_PROJECT}\..\..\..\..
|
||||
|
||||
# LY build folder
|
||||
export DYNACONF_O3DE_BUILD_PATH=${O3DE_DEV}\build
|
||||
export DYNACONF_O3DE_BIN_PATH=${O3DE_BUILD_PATH}\bin\profile
|
||||
export DYNACONF_PATH_O3DE_BUILD=${O3DE_DEV}\build
|
||||
export DYNACONF_PATH_O3DE_BIN=${PATH_O3DE_BUILD}\bin\profile
|
||||
|
||||
# default IDE and debug settings
|
||||
#export DYNACONF_DCCSI_GDEBUG=false
|
||||
@@ -24,7 +24,7 @@ export DYNACONF_DCCSI_GDEBUGGER=WING
|
||||
export DYNACONF_DCCSI_LOGLEVEL=20
|
||||
|
||||
# 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)
|
||||
# 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_RELEASE=11
|
||||
# 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)
|
||||
# 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')
|
||||
export DYNACONF_O3DE_PYTHON_INSTALL=${O3DE_DEV}\python
|
||||
export DYNACONF_DCCSI_PY_BASE=${O3DE_PYTHON_INSTALL}\python.cmd
|
||||
export DYNACONF_PATH_O3DE_PYTHON_INSTALL=${O3DE_DEV}\python
|
||||
export DYNACONF_DCCSI_PY_BASE=${PATH_O3DE_PYTHON_INSTALL}\python.cmd
|
||||
|
||||
# set up Qt / PySide2
|
||||
# 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
|
||||
# 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_QT_PLUGIN_PATH=${O3DE_BUILD_PATH}\bin\profile\EditorPlugins
|
||||
#export DYNACONF_QT_QPA_PLATFORM_PLUGIN_PATH=${O3DE_BUILD_PATH}\bin\profile\EditorPlugins\platforms
|
||||
#export DYNACONF_QT_PLUGIN_PATH=${PATH_O3DE_BUILD}\bin\profile\EditorPlugins
|
||||
#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
|
||||
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
|
||||
from add_dccsi.py, as a temporty measure related to this Jira:
|
||||
SPEC-2581"""
|
||||
|
||||
# test bootstrap execution time
|
||||
import time
|
||||
_START = time.process_time() # start tracking
|
||||
|
||||
# standard imports
|
||||
import sys
|
||||
import os
|
||||
import site
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
import logging as _logging
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
_O3DE_RUNNING=None
|
||||
try:
|
||||
import azlmbr
|
||||
_O3DE_RUNNING=True
|
||||
except:
|
||||
_O3DE_RUNNING=False
|
||||
# -------------------------------------------------------------------------
|
||||
_MODULENAME = 'O3DE.DCCsi.bootstrap'
|
||||
|
||||
# we don't use dynaconf setting here as we might not yet have access
|
||||
# we need to set up basic access to the DCCsi
|
||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||
_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
|
||||
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
|
||||
|
||||
# set up global space, logging etc.
|
||||
# set these true if you want them set globally for debugging
|
||||
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_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, int(20)))
|
||||
if _DCCSI_GDEBUG:
|
||||
_DCCSI_LOGLEVEL = int(10)
|
||||
_DCCSI_GDEBUGGER = env_bool(ENVAR_DCCSI_GDEBUGGER, 'WING')
|
||||
|
||||
_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}))
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
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
|
||||
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."""
|
||||
|
||||
# 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
|
||||
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi._config",
|
||||
Path(DCCSI_PATH,
|
||||
Path(PATH_DCCSIG,
|
||||
"config.py"))
|
||||
_dccsi_config = importlib.util.module_from_spec(_spec_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
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
# 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:
|
||||
_config.attach_debugger() # attempts to start debugger
|
||||
# done with basic setup
|
||||
# --- END -----------------------------------------------------------------
|
||||
foo = attach_debugger() # attempts to start debugger
|
||||
|
||||
# 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)
|
||||
# -------------------------------------------------------------------------
|
||||
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
|
||||
try:
|
||||
import azlmbr
|
||||
_O3DE_RUNNING=True
|
||||
except:
|
||||
_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
|
||||
_DCCSI_GDEBUG = True
|
||||
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}')
|
||||
# ---------------------------------------------------------------------
|
||||
# this is a simple commandline interface for running and testing externally
|
||||
if not _O3DE_RUNNING: # external tool or commandline
|
||||
|
||||
_LOGGER.info(f'DCCSI_PATH: {_settings.DCCSI_PATH}')
|
||||
_LOGGER.info(f'DCCSI_PYTHON_LIB_PATH: {_settings.DCCSI_PYTHON_LIB_PATH}')
|
||||
_LOGGER.info(f'DCCSI_PY_BASE: {_settings.DCCSI_PY_BASE}')
|
||||
# parse the command line args
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(
|
||||
description='O3DE DCCsi Boostrap (Test)',
|
||||
epilog="Will externally test the DCCsi boostrap")
|
||||
|
||||
if _DCCSI_GDEBUG or args.test_pyside2:
|
||||
try:
|
||||
import PySide2
|
||||
except:
|
||||
# set up Qt/PySide2 access and test
|
||||
_settings = _config.get_config_settings(enable_o3de_pyside2=True)
|
||||
import PySide2
|
||||
|
||||
_LOGGER.info(f'PySide2: {PySide2}')
|
||||
_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}')
|
||||
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).')
|
||||
|
||||
_config.test_pyside2()
|
||||
|
||||
if not _O3DE_RUNNING:
|
||||
# return
|
||||
sys.exit()
|
||||
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
|
||||
_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 -----------------------------------------------------------------
|
||||
|
||||
+1
-1
@@ -118,7 +118,7 @@ def clicked_launch_sub_builder():
|
||||
print(debug_msg)
|
||||
_LOGGER.debug(debug_msg)
|
||||
|
||||
_SUB_BUILDER_PATH = Path(settings.DCCSIG_PATH,
|
||||
_SUB_BUILDER_PATH = Path(settings.PATH_DCCSIG,
|
||||
'SDK',
|
||||
'Substance',
|
||||
'builder')
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@ print(_config)
|
||||
# this is an alternative to "from dynaconf import settings" with Qt
|
||||
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)
|
||||
from box import Box
|
||||
@@ -507,7 +507,7 @@ class FBXConverter(QtWidgets.QDialog):
|
||||
_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
|
||||
material_file = Path(settings.DCCSIG_PATH,
|
||||
material_file = Path(settings.PATH_DCCSIG,
|
||||
'SDK', 'Maya', 'Scripts', 'Python', 'kitbash_converter',
|
||||
material_file).resolve()
|
||||
|
||||
|
||||
+5
-5
@@ -18,14 +18,14 @@ import site
|
||||
_MODULE_PATH = os.path.abspath(__file__)
|
||||
|
||||
_DCCSIG_REL_PATH = "../../../.."
|
||||
_DCCSIG_PATH = os.path.join(_MODULE_PATH, _DCCSIG_REL_PATH)
|
||||
_DCCSIG_PATH = os.path.normpath(_DCCSIG_PATH)
|
||||
_PATH_DCCSIG = os.path.join(_MODULE_PATH, _DCCSIG_REL_PATH)
|
||||
_PATH_DCCSIG = os.path.normpath(_PATH_DCCSIG)
|
||||
|
||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH',
|
||||
os.path.abspath(_DCCSIG_PATH))
|
||||
_PATH_DCCSIG = os.getenv('PATH_DCCSIG',
|
||||
os.path.abspath(_PATH_DCCSIG))
|
||||
|
||||
# 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
|
||||
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
|
||||
# bootstrap site-packages by version
|
||||
from azpy.constants import PATH_DCCSI_PYTHON_LIB_PATH
|
||||
from azpy.constants import PATH_DCCSI_PYTHON_LIB
|
||||
|
||||
try:
|
||||
os.path.exists(PATH_DCCSI_PYTHON_LIB_PATH)
|
||||
site.addsitedir(PATH_DCCSI_PYTHON_LIB_PATH)
|
||||
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB_PATH))
|
||||
os.path.exists(PATH_DCCSI_PYTHON_LIB)
|
||||
site.addsitedir(PATH_DCCSI_PYTHON_LIB)
|
||||
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB))
|
||||
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
|
||||
|
||||
# 3rdparty
|
||||
@@ -175,15 +175,15 @@ try:
|
||||
except Exception as e:
|
||||
_LOGGER.critical(_STR_ERROR_ENVAR.format(_BASE_ENVVAR_DICT[ENVAR_DCCSI_SDK_PATH]))
|
||||
|
||||
_O3DE_PROJECT_PATH = None
|
||||
_PATH_O3DE_PROJECT = None
|
||||
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:
|
||||
_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)
|
||||
_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_AZPY_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH]
|
||||
# -------------------------------------------------------------------------
|
||||
@@ -270,18 +270,18 @@ def post_startup():
|
||||
install_fix_paths()
|
||||
|
||||
# set the project workspace
|
||||
#_O3DE_PROJECT_PATH = _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]
|
||||
_project_workspace = os.path.join(_O3DE_PROJECT_PATH, TAG_MAYA_WORKSPACE)
|
||||
#_PATH_O3DE_PROJECT = _BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||
_project_workspace = os.path.join(_PATH_O3DE_PROJECT, TAG_MAYA_WORKSPACE)
|
||||
if os.path.isfile(_project_workspace):
|
||||
try:
|
||||
# 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))
|
||||
maya.cmds.workspace(_O3DE_PROJECT_PATH, update=True)
|
||||
maya.cmds.workspace(_PATH_O3DE_PROJECT, update=True)
|
||||
except Exception as e:
|
||||
_LOGGER.error(e)
|
||||
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
|
||||
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
|
||||
# the DCCsi
|
||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../../../..'))
|
||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
||||
site.addsitedir(_DCCSIG_PATH)
|
||||
# print(_DCCSIG_PATH)
|
||||
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../../../..'))
|
||||
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||
site.addsitedir(_PATH_DCCSIG)
|
||||
# print(_PATH_DCCSIG)
|
||||
|
||||
# Lumberyard DCCsi site extensions
|
||||
from pathlib import Path
|
||||
@@ -46,7 +46,7 @@ _LOGGER = azpy.initialize_logger(_PACKAGENAME,
|
||||
log_to_file=True,
|
||||
default_log_level=_log_level)
|
||||
_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('_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
|
||||
# config is SO generic this ensures we are importing a specific one
|
||||
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi.config",
|
||||
Path(_DCCSIG_PATH,
|
||||
Path(_PATH_DCCSIG,
|
||||
"config.py"))
|
||||
_dccsi_config = importlib.util.module_from_spec(_spec_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,
|
||||
settings.O3DE_DEV)).resolve()
|
||||
|
||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
||||
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH,
|
||||
settings.O3DE_PROJECT_PATH)).resolve()
|
||||
from azpy.constants import ENVAR_PATH_O3DE_PROJECT
|
||||
_PATH_O3DE_PROJECT = Path(os.getenv(ENVAR_PATH_O3DE_PROJECT,
|
||||
settings.PATH_O3DE_PROJECT)).resolve()
|
||||
|
||||
from azpy.constants import ENVAR_DCCSI_SDK_PATH
|
||||
_DCCSI_SDK_PATH = Path(os.getenv(ENVAR_DCCSI_SDK_PATH,
|
||||
settings.DCCSIG_SDK_PATH)).resolve()
|
||||
|
||||
# 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()
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
@@ -117,7 +117,7 @@ if __name__ == "__main__":
|
||||
"""Run this file as main"""
|
||||
|
||||
_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('_PYSBS_DIR_PATH: {}'.format(_PYSBS_DIR_PATH))
|
||||
|
||||
+12
-12
@@ -76,7 +76,7 @@ settings.setenv() # for standalone
|
||||
|
||||
# log debug info about Qt/PySide2
|
||||
_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_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
|
||||
_O3DE_PROJECT = os.getenv(ENVAR_O3DE_PROJECT, None)
|
||||
|
||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
||||
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH, None)).resolve()
|
||||
from azpy.constants import ENVAR_PATH_O3DE_PROJECT
|
||||
_PATH_O3DE_PROJECT = Path(os.getenv(ENVAR_PATH_O3DE_PROJECT, None)).resolve()
|
||||
|
||||
from azpy.constants import ENVAR_DCCSI_SDK_PATH
|
||||
_DCCSI_SDK_PATH = Path(os.getenv(ENVAR_DCCSI_SDK_PATH, None)).resolve()
|
||||
|
||||
# build some reuseable path parts
|
||||
_PROJECT_ASSET_PATH = Path(_O3DE_PROJECT_PATH).resolve()
|
||||
_PROJECT_ASSETS_PATH = Path(_O3DE_PROJECT_PATH, 'Materials').resolve()
|
||||
_PROJECT_ASSET_PATH = Path(_PATH_O3DE_PROJECT).resolve()
|
||||
_PROJECT_ASSETS_PATH = Path(_PATH_O3DE_PROJECT, 'Materials').resolve()
|
||||
|
||||
# To Do: figure out a proper way to deal with Lumberyard game projects
|
||||
_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
|
||||
_WATCHER_SCRIPT_PATH = Path(_DCCSI_SDK_PATH, 'substance', 'builder', 'watchdog', '__init__.py').resolve()
|
||||
|
||||
_TEX_RNDR_PATH = Path(_O3DE_PROJECT_PATH, 'Materials', 'Substance').resolve()
|
||||
_MAT_OUTPUT_PATH = Path(_O3DE_PROJECT_PATH, 'Materials', 'Substance').resolve()
|
||||
_SBSAR_COOK_PATH = Path(_O3DE_PROJECT_PATH, 'Materials', 'Substance').resolve()
|
||||
_TEX_RNDR_PATH = Path(_PATH_O3DE_PROJECT, 'Materials', 'Substance').resolve()
|
||||
_MAT_OUTPUT_PATH = Path(_PATH_O3DE_PROJECT, '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
|
||||
if project_path is None:
|
||||
self.project_path = str(_O3DE_PROJECT_PATH)
|
||||
self.project_path = str(_PATH_O3DE_PROJECT)
|
||||
else:
|
||||
self.project_path = Path(project_path)
|
||||
|
||||
if default_material_path is None:
|
||||
self._default_material_path = Path(_DCCSIG_PATH,
|
||||
self._default_material_path = Path(_PATH_DCCSIG,
|
||||
'sdk',
|
||||
'substance',
|
||||
'resources',
|
||||
@@ -672,7 +672,7 @@ class Window(QtWidgets.QDialog):
|
||||
|
||||
# if you want relative paths here is a better way
|
||||
# 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()
|
||||
rel_tex_path = None
|
||||
@@ -928,7 +928,7 @@ def substance_builder_launcher():
|
||||
_LOGGER.info('file: {}'.format(__file__)) # *might* come back relative
|
||||
|
||||
# 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',
|
||||
'ui', 'stylesheets', 'LYstyle.qss').resolve().absolute()
|
||||
window.setStyleSheet(qss_filepath.read_text())
|
||||
|
||||
+3
-3
@@ -67,11 +67,11 @@ from collections import OrderedDict
|
||||
_SYNTH_ENV_DICT = OrderedDict()
|
||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||
# grab a specific path from the base_env
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||
|
||||
# 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_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
||||
|
||||
+3
-3
@@ -87,11 +87,11 @@ from collections import OrderedDict
|
||||
_SYNTH_ENV_DICT = OrderedDict()
|
||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||
# grab a specific path from the base_env
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||
|
||||
# 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_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
||||
|
||||
+3
-3
@@ -65,11 +65,11 @@ from collections import OrderedDict
|
||||
_SYNTH_ENV_DICT = OrderedDict()
|
||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||
# grab a specific path from the base_env
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||
|
||||
# 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_SBS = Path(_PATH_MOCK_SUBLIB, 'sbs').norm()
|
||||
|
||||
+5
-5
@@ -189,16 +189,16 @@ if __name__ == "__main__":
|
||||
from azpy import synthetic_env
|
||||
_SYNTH_ENV_DICT = synthetic_env.stash_env()
|
||||
|
||||
from azpy.constants import ENVAR_DCCSIG_PATH
|
||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
||||
from azpy.constants import ENVAR_PATH_DCCSIG
|
||||
from azpy.constants import ENVAR_PATH_O3DE_PROJECT
|
||||
|
||||
# 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
|
||||
_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()
|
||||
|
||||
# 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 = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||
# grab a specific path from the base_env
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_DCCSIG_PATH]
|
||||
_O3DE_PROJECT_PATH = _SYNTH_ENV_DICT[ENVAR_O3DE_PROJECT_PATH]
|
||||
_PATH_DCCSI = _SYNTH_ENV_DICT[ENVAR_PATH_DCCSIG]
|
||||
_PATH_O3DE_PROJECT = _SYNTH_ENV_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||
|
||||
# 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_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
|
||||
# (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)
|
||||
site.addsitedir(_DCCSIG_PATH)
|
||||
site.addsitedir(_PATH_DCCSIG)
|
||||
|
||||
# Lumberyard extensions
|
||||
from azpy.env_bool import env_bool
|
||||
@@ -72,7 +72,7 @@ from collections import OrderedDict
|
||||
_SYNTH_ENV_DICT = OrderedDict()
|
||||
_SYNTH_ENV_DICT = azpy.synthetic_env.stash_env(_SYNTH_ENV_DICT)
|
||||
_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.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)
|
||||
|
||||
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
|
||||
# bootstrap site-packages by version
|
||||
from azpy.constants import PATH_DCCSI_PYTHON_LIB_PATH
|
||||
from azpy.constants import PATH_DCCSI_PYTHON_LIB
|
||||
|
||||
try:
|
||||
os.path.exists(PATH_DCCSI_PYTHON_LIB_PATH)
|
||||
site.addsitedir(PATH_DCCSI_PYTHON_LIB_PATH)
|
||||
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB_PATH))
|
||||
os.path.exists(PATH_DCCSI_PYTHON_LIB)
|
||||
site.addsitedir(PATH_DCCSI_PYTHON_LIB)
|
||||
_LOGGER.info('azpy 3rdPary site-packages: is: {0}'.format(PATH_DCCSI_PYTHON_LIB))
|
||||
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
|
||||
|
||||
# 3rdparty
|
||||
@@ -171,22 +171,22 @@ _LOGGER.info('_MODULENAME: {}'.format(_MODULENAME))
|
||||
# -------------------------------------------------------------------------
|
||||
# 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}"
|
||||
_DCCSI_TOOLS_PATH = None
|
||||
_PATH_DCCSI_TOOLS = None
|
||||
# To Do: needs to be updated to use dynaconf and config.py
|
||||
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:
|
||||
_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:
|
||||
_O3DE_PROJECT_PATH = _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]
|
||||
_PATH_O3DE_PROJECT = _BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||
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)
|
||||
_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_AZPY_PATH = _BASE_ENVVAR_DICT[ENVAR_DCCSI_AZPY_PATH]
|
||||
# -------------------------------------------------------------------------
|
||||
@@ -216,8 +216,8 @@ def startup():
|
||||
# get known paths
|
||||
_KNOWN_PATHS = site._init_pathinfo()
|
||||
|
||||
if os.path.isdir(_DCCSI_TOOLS_PATH):
|
||||
site.addsitedir(_DCCSI_TOOLS_PATH, _KNOWN_PATHS)
|
||||
if os.path.isdir(_PATH_DCCSI_TOOLS):
|
||||
site.addsitedir(_PATH_DCCSI_TOOLS, _KNOWN_PATHS)
|
||||
try:
|
||||
import azpy.test
|
||||
_LOGGER.info('SUCCESS, import azpy.test')
|
||||
@@ -273,18 +273,18 @@ def post_startup():
|
||||
install_fix_paths()
|
||||
|
||||
# set the project workspace
|
||||
#_O3DE_PROJECT_PATH = _BASE_ENVVAR_DICT[ENVAR_O3DE_PROJECT_PATH]
|
||||
_project_workspace = os.path.join(_O3DE_PROJECT_PATH, TAG_MAYA_WORKSPACE)
|
||||
#_PATH_O3DE_PROJECT = _BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT]
|
||||
_project_workspace = os.path.join(_PATH_O3DE_PROJECT, TAG_MAYA_WORKSPACE)
|
||||
if os.path.isfile(_project_workspace):
|
||||
try:
|
||||
# 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))
|
||||
maya.cmds.workspace(_O3DE_PROJECT_PATH, update=True)
|
||||
maya.cmds.workspace(_PATH_O3DE_PROJECT, update=True)
|
||||
except Exception as e:
|
||||
_LOGGER.error(e)
|
||||
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
|
||||
from set_defaults import set_defaults
|
||||
|
||||
+7
-7
@@ -14,15 +14,18 @@ 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=2020
|
||||
set DCCSI_PY_VERSION_MAJOR=2
|
||||
set DCCSI_PY_VERSION_MINOR=7
|
||||
set DCCSI_PY_VERSION_RELEASE=11
|
||||
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_Maya.bat
|
||||
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%
|
||||
@@ -32,9 +35,6 @@ set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%Launch_mayaPy_2020.bat
|
||||
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.
|
||||
@@ -50,7 +50,7 @@ echo MAYA_LOCATION = %MAYA_LOCATION%
|
||||
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
||||
|
||||
:: 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
|
||||
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
|
||||
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=2020
|
||||
set DCCSI_PY_VERSION_MAJOR=2
|
||||
set DCCSI_PY_VERSION_MINOR=7
|
||||
set DCCSI_PY_VERSION_RELEASE=11
|
||||
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.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
|
||||
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%
|
||||
@@ -48,7 +48,7 @@ echo MAYA_LOCATION = %MAYA_LOCATION%
|
||||
echo MAYA_BIN_PATH = %MAYA_BIN_PATH%
|
||||
|
||||
:: Change to root dir
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||
|
||||
@@ -58,10 +58,10 @@ IF EXIST "%DCCSI_PY_MAYA%" (
|
||||
) ELSE (
|
||||
Where maya.exe 2> NUL
|
||||
IF ERRORLEVEL 1 (
|
||||
echo Maya.exe could not be found
|
||||
echo MayaPy.exe could not be found
|
||||
pause
|
||||
) 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
|
||||
CD /D ..\..\..\
|
||||
:: To Do: remove one of these
|
||||
IF "%O3DE_PROJECT_PATH%"=="" (set O3DE_PROJECT_PATH=%CD%)
|
||||
echo O3DE_PROJECT_PATH = %O3DE_PROJECT_PATH%
|
||||
IF "%PATH_O3DE_PROJECT%"=="" (set PATH_O3DE_PROJECT=%CD%)
|
||||
echo PATH_O3DE_PROJECT = %PATH_O3DE_PROJECT%
|
||||
|
||||
IF "%ABS_PATH%"=="" (set ABS_PATH=%CD%)
|
||||
echo ABS_PATH = %ABS_PATH%
|
||||
@@ -84,7 +84,7 @@ echo ABS_PATH = %ABS_PATH%
|
||||
pushd %ABS_PATH%
|
||||
|
||||
:: 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%)
|
||||
echo O3DE_DEV = %O3DE_DEV%
|
||||
:: Restore original directory
|
||||
@@ -92,32 +92,32 @@ popd
|
||||
|
||||
:: dcc scripting interface gem path
|
||||
:: currently know relative path to this gem
|
||||
set DCCSIG_PATH=%O3DE_DEV%\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface
|
||||
echo DCCSIG_PATH = %DCCSIG_PATH%
|
||||
set PATH_DCCSIG=%O3DE_DEV%\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface
|
||||
echo PATH_DCCSIG = %PATH_DCCSIG%
|
||||
|
||||
:: Change to DCCsi root dir
|
||||
CD /D %DCCSIG_PATH%
|
||||
CD /D %PATH_DCCSIG%
|
||||
|
||||
:: per-dcc sdk path
|
||||
set DCCSI_TOOLS_PATH=%DCCSIG_PATH%\Tools
|
||||
echo DCCSI_TOOLS_PATH = %DCCSI_TOOLS_PATH%
|
||||
set PATH_DCCSI_TOOLS=%PATH_DCCSIG%\Tools
|
||||
echo PATH_DCCSI_TOOLS = %PATH_DCCSI_TOOLS%
|
||||
|
||||
:: 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%
|
||||
|
||||
:: O3DE build path
|
||||
IF "%O3DE_BUILD_FOLDER%"=="" (set O3DE_BUILD_FOLDER=build)
|
||||
echo O3DE_BUILD_FOLDER = %O3DE_BUILD_FOLDER%
|
||||
|
||||
IF "%O3DE_BUILD_PATH%"=="" (set O3DE_BUILD_PATH=%O3DE_DEV%\%O3DE_BUILD_FOLDER%)
|
||||
echo O3DE_BUILD_PATH = %O3DE_BUILD_PATH%
|
||||
IF "%PATH_O3DE_BUILD%"=="" (set PATH_O3DE_BUILD=%O3DE_DEV%\%O3DE_BUILD_FOLDER%)
|
||||
echo PATH_O3DE_BUILD = %PATH_O3DE_BUILD%
|
||||
|
||||
IF "%O3DE_BIN_PATH%"=="" (set O3DE_BIN_PATH=%O3DE_BUILD_PATH%\bin\profile)
|
||||
echo O3DE_BIN_PATH = %O3DE_BIN_PATH%
|
||||
IF "%PATH_O3DE_BIN%"=="" (set PATH_O3DE_BIN=%PATH_O3DE_BUILD%\bin\profile)
|
||||
echo PATH_O3DE_BIN = %PATH_O3DE_BIN%
|
||||
|
||||
:: add to the PATH
|
||||
SET PATH=%O3DE_BIN_PATH%;%DCCSIG_PATH%;%PATH%
|
||||
SET PATH=%PATH_O3DE_BIN%;%PATH_DCCSIG%;%PATH%
|
||||
|
||||
::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
|
||||
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_RELEASE%"=="" (set DCCSI_PY_VERSION_RELEASE=11)
|
||||
IF "%DCCSI_PY_VERSION_RELEASE%"=="" (set DCCSI_PY_VERSION_RELEASE=7)
|
||||
|
||||
:: Default Maya Version
|
||||
IF "%DCCSI_MAYA_VERSION%"=="" (set DCCSI_MAYA_VERSION=2020)
|
||||
IF "%MAYA_VERSION%"=="" (set MAYA_VERSION=2022)
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\Env_Core.bat
|
||||
@@ -43,14 +44,14 @@ echo.
|
||||
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 DCCSI_MAYA_VERSION = %DCCSI_MAYA_VERSION%
|
||||
echo MAYA_VERSION = %MAYA_VERSION%
|
||||
|
||||
:::: 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%
|
||||
|
||||
:: 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%
|
||||
|
||||
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
|
||||
:: 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
|
||||
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%
|
||||
|
||||
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
|
||||
PUSHD %~dp0
|
||||
|
||||
:: version Year
|
||||
IF "%PYCHARM_VERSION_YEAR%"=="" (set PYCHARM_VERSION_YEAR=2020)
|
||||
:: version Major
|
||||
SET PYCHARM_VERSION_YEAR=2020
|
||||
:: version Major
|
||||
SET PYCHARM_VERSION_MAJOR=2
|
||||
IF "%PYCHARM_VERSION_MAJOR%"=="" (set PYCHARM_VERSION_MAJOR=3)
|
||||
:: version Minor
|
||||
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 2020.3.2\bin" <-- this is mine @HogJonnyAMZN
|
||||
::"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
|
||||
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
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_Qt.bat
|
||||
|
||||
:: 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_DEFAULT=%DCCSI_PY_IDE%\python.exe
|
||||
|
||||
SET PYCHARM_PROJ=%DCCSIG_PATH%\Solutions
|
||||
IF "%PYCHARM_PROJ%"=="" (SET PYCHARM_PROJ=%PATH_DCCSIG%\Tools\Dev\Windows\Solutions)
|
||||
|
||||
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
|
||||
:: this defines a DCCsi sandbox for lib site-packages by version
|
||||
:: <O3DE>\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\3rdParty\Python\Lib
|
||||
set DCCSI_PYTHON_PATH=%DCCSIG_PATH%\3rdParty\Python
|
||||
echo DCCSI_PYTHON_PATH = %DCCSI_PYTHON_PATH%
|
||||
set PATH_DCCSI_PYTHON=%PATH_DCCSIG%\3rdParty\Python
|
||||
echo PATH_DCCSI_PYTHON = %PATH_DCCSI_PYTHON%
|
||||
|
||||
:: 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)
|
||||
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)
|
||||
echo DCCSI_PYTHON_LIB_PATH = %DCCSI_PYTHON_LIB_PATH%
|
||||
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 PATH_DCCSI_PYTHON_LIB = %PATH_DCCSI_PYTHON_LIB%
|
||||
|
||||
:: 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
|
||||
set O3DE_PYTHON_INSTALL=%O3DE_DEV%\python
|
||||
echo O3DE_PYTHON_INSTALL = %O3DE_PYTHON_INSTALL%
|
||||
set PATH_O3DE_PYTHON_INSTALL=%O3DE_DEV%\python
|
||||
echo PATH_O3DE_PYTHON_INSTALL = %PATH_O3DE_PYTHON_INSTALL%
|
||||
|
||||
:: location for O3DE python 3.7 location
|
||||
:: 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)
|
||||
:: 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%
|
||||
|
||||
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
|
||||
IF "%DCCSI_PY_IDE%"=="" (set DCCSI_PY_IDE=%O3DE_PYTHONHOME%\python.exe)
|
||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
||||
|
||||
:: 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
|
||||
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%
|
||||
|
||||
:: 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 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%
|
||||
|
||||
:: add to the PATH
|
||||
SET PATH=%QT_PLUGIN_PATH%;%PATH%
|
||||
SET PYTHONPATH=%QT_PLUGIN_PATH%;%PYTHONPATH%
|
||||
|
||||
set O3DE_BIN_PATH=%O3DE_BUILD_PATH%\bin\profile
|
||||
echo O3DE_BIN_PATH = %O3DE_BIN_PATH%
|
||||
SET PATH=%O3DE_BIN_PATH%;%PATH%
|
||||
set PATH_O3DE_BIN=%PATH_O3DE_BUILD%\bin\profile
|
||||
echo PATH_O3DE_BIN = %PATH_O3DE_BIN%
|
||||
SET PATH=%PATH_O3DE_BIN%;%PATH%
|
||||
|
||||
::ENDLOCAL
|
||||
|
||||
|
||||
+6
-6
@@ -31,16 +31,16 @@ echo.
|
||||
|
||||
: Substance Designer
|
||||
:: maya sdk path
|
||||
set DCCSI_SUBSTANCE_PATH=%DCCSI_TOOLS_PATH%\Substance
|
||||
echo DCCSI_SUBSTANCE_PATH = %DCCSI_SUBSTANCE_PATH%
|
||||
set PATH_DCCSI_SUBSTANCE=%PATH_DCCSI_TOOLS%\Substance
|
||||
echo PATH_DCCSI_SUBSTANCE = %PATH_DCCSI_SUBSTANCE%
|
||||
:: https://docs.substance3d.com/sddoc/project-preferences-107118596.html#ProjectPreferences-ConfigurationFile
|
||||
:: Path to .exe, "C:\Program Files\Allegorithmic\Substance Designer\Substance Designer.exe"
|
||||
set SUBSTANCE_PATH="%ProgramFiles%\Allegorithmic\Substance Designer"
|
||||
echo SUBSTANCE_PATH = %SUBSTANCE_PATH%
|
||||
set PATH_SUBSTANCE_DESIGNER="%ProgramFiles%\Allegorithmic\Substance Designer"
|
||||
echo PATH_SUBSTANCE_DESIGNER = %PATH_SUBSTANCE_DESIGNER%
|
||||
|
||||
:: default config
|
||||
set SUBSTANCE_CFG_PATH=%O3DE_PROJECT_PATH%\DCCsi_default.sbscfg
|
||||
echo SUBSTANCE_CFG_PATH = %SUBSTANCE_CFG_PATH%
|
||||
IF "%PATH_SUBSTANCE_DESIGNER_CFG%"=="" (set PATH_SUBSTANCE_DESIGNER_CFG=%PATH_O3DE_PROJECT%\DCCsi_default.sbscfg)
|
||||
echo PATH_SUBSTANCE_DESIGNER_CFG = %PATH_SUBSTANCE_DESIGNER_CFG%
|
||||
|
||||
::ENDLOCAL
|
||||
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ CALL %~dp0\Env_Qt.bat
|
||||
:: that will change the paths assumed in this launcher (assume system install)
|
||||
:: 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 _____________________________________________________________________
|
||||
|
||||
+2
-2
@@ -28,8 +28,8 @@ CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_Qt.bat
|
||||
|
||||
:: put project env variables/paths here
|
||||
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 "%WINGHOME%"=="" (set WINGHOME=%PROGRAMFILES(X86)%\Wing Pro %DCCSI_WING_VERSION_MAJOR%.%DCCSI_WING_VERSION_MINOR%)
|
||||
IF "%WING_PROJ%"=="" (set WING_PROJ=%PATH_DCCSIG%\Tools\Dev\Windows\Solutions\.wing\DCCsi_%DCCSI_WING_VERSION_MAJOR%x.wpr)
|
||||
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
|
||||
+11
-23
@@ -19,10 +19,10 @@ PUSHD %~dp0
|
||||
|
||||
:: Constant Vars (Global)
|
||||
:: global debug (propogates)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||
:: 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%
|
||||
:: sets debugger, options: WING, PYCHARM
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||
@@ -34,14 +34,17 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: INFO:20
|
||||
:: DEBUG:10
|
||||
:: NOTSET:0
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||
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
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_PyCharm.bat
|
||||
CALL %~dp0\Env_Maya.bat
|
||||
CALL %~dp0..\Env_Core.bat
|
||||
CALL %~dp0..\Env_Python.bat
|
||||
CALL %~dp0..\Env_PyCharm.bat
|
||||
CALL %~dp0..\Env_Maya.bat
|
||||
|
||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||
|
||||
@@ -58,29 +61,14 @@ echo.
|
||||
|
||||
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
|
||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||
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.
|
||||
|
||||
:: Change to root dir
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
IF EXIST "%PYCHARM_HOME%\bin\pycharm64.exe" (
|
||||
start "" "%PYCHARM_HOME%\bin\pycharm64.exe" "%PYCHARM_PROJ%"
|
||||
+8
-8
@@ -19,13 +19,13 @@ PUSHD %~dp0
|
||||
|
||||
:: Constant Vars (Global)
|
||||
:: global debug (propogates)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||
:: 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%
|
||||
:: sets debugger, options: WING, PYCHARM
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=PYCHARM)
|
||||
echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: Default level logger will handle
|
||||
:: CRITICAL:50
|
||||
@@ -34,14 +34,14 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: INFO:20
|
||||
:: DEBUG:10
|
||||
:: NOTSET:0
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\Env_PyCharm.bat
|
||||
|
||||
:: 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 _____________________________________________________________________
|
||||
+16
-15
@@ -29,10 +29,10 @@ PUSHD %~dp0
|
||||
|
||||
:: Constant Vars (Global)
|
||||
:: global debug (propogates)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||
:: 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%
|
||||
:: sets debugger, options: WING, PYCHARM
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||
@@ -44,15 +44,19 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: INFO:20
|
||||
:: DEBUG:10
|
||||
:: NOTSET:0
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||
|
||||
:: Initialize envCALL %~dp0\Env_Core.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
|
||||
:: if the user has set up a custom env call it
|
||||
IF EXIST "%~dp0..\Env_Dev.bat" CALL %~dp0..\Env_Dev.bat
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\..\Env_Core.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 _____________________________________________________________________
|
||||
@@ -64,11 +68,11 @@ echo.
|
||||
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%
|
||||
set PATH_O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
||||
echo PATH_O3DE_PYTHON_INSTALL = %PATH_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
|
||||
set DCCSI_PY_IDE = %PATH_O3DE_PYTHON_INSTALL%\runtime\python-3.7.10-rev2-windows\python
|
||||
echo DCCSI_PY_IDE = %DCCSI_PY_IDE%
|
||||
|
||||
:: ide and debugger plug
|
||||
@@ -79,9 +83,6 @@ echo DCCSI_PY_BASE = %DCCSI_PY_BASE%
|
||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE%
|
||||
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.
|
||||
|
||||
REM "C:\Program Files\Microsoft VS Code\Code.exe"
|
||||
+13
-13
@@ -21,14 +21,14 @@ cd %~dp0
|
||||
PUSHD %~dp0
|
||||
|
||||
:: 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)
|
||||
:: global debug (propogates)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||
:: 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%
|
||||
:: sets debugger, options: WING, PYCHARM
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||
@@ -40,16 +40,16 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: INFO:20
|
||||
:: DEBUG:10
|
||||
:: NOTSET:0
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||
echo DCCSI_LOGLEVEL = %DCCSI_LOGLEVEL%
|
||||
|
||||
:: Initialize env
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_Qt.bat
|
||||
CALL %~dp0\Env_Maya.bat
|
||||
CALL %~dp0\Env_Substance.bat
|
||||
CALL %~dp0\Env_WingIDE.bat
|
||||
CALL %~dp0\..\Env_Core.bat
|
||||
CALL %~dp0\..\Env_Python.bat
|
||||
CALL %~dp0\..\Env_Qt.bat
|
||||
CALL %~dp0\..\Env_Maya.bat
|
||||
CALL %~dp0\..\Env_Substance.bat
|
||||
CALL %~dp0\..\Env_WingIDE.bat
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
echo.
|
||||
@@ -61,13 +61,13 @@ echo.
|
||||
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%
|
||||
set PATH_O3DE_PYTHON_INSTALL=%O3DE_DEV%\Python
|
||||
echo PATH_O3DE_PYTHON_INSTALL = %PATH_O3DE_PYTHON_INSTALL%
|
||||
|
||||
echo.
|
||||
|
||||
:: Change to root dir
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
IF EXIST "%WINGHOME%\bin\wing.exe" (
|
||||
start "" "%WINGHOME%\bin\wing.exe" "%WING_PROJ%"
|
||||
+11
-23
@@ -22,10 +22,10 @@ PUSHD %~dp0
|
||||
|
||||
:: Constant Vars (Global)
|
||||
:: global debug (propogates)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=True)
|
||||
IF "%DCCSI_GDEBUG%"=="" (set DCCSI_GDEBUG=False)
|
||||
echo DCCSI_GDEBUG = %DCCSI_GDEBUG%
|
||||
:: 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%
|
||||
:: sets debugger, options: WING, PYCHARM
|
||||
IF "%DCCSI_GDEBUGGER%"=="" (set DCCSI_GDEBUGGER=WING)
|
||||
@@ -37,14 +37,17 @@ echo DCCSI_GDEBUGGER = %DCCSI_GDEBUGGER%
|
||||
:: INFO:20
|
||||
:: DEBUG:10
|
||||
:: NOTSET:0
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=10)
|
||||
IF "%DCCSI_LOGLEVEL%"=="" (set DCCSI_LOGLEVEL=20)
|
||||
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
|
||||
CALL %~dp0\Env_Core.bat
|
||||
CALL %~dp0\Env_Python.bat
|
||||
CALL %~dp0\Env_WingIDE.bat
|
||||
CALL %~dp0\Env_Maya.bat
|
||||
CALL %~dp0\..\Env_Core.bat
|
||||
CALL %~dp0\..\Env_Python.bat
|
||||
CALL %~dp0\..\Env_WingIDE.bat
|
||||
CALL %~dp0\..\Env_Maya.bat
|
||||
|
||||
echo.
|
||||
echo _____________________________________________________________________
|
||||
@@ -57,29 +60,14 @@ echo.
|
||||
|
||||
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
|
||||
set DCCSI_PY_DEFAULT=%DCCSI_PY_MAYA%
|
||||
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.
|
||||
|
||||
:: Change to root dir
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
IF EXIST "%WINGHOME%\bin\wing.exe" (
|
||||
start "" "%WINGHOME%\bin\wing.exe" "%WING_PROJ%"
|
||||
+4
-4
@@ -29,6 +29,9 @@ PUSHD %~dp0
|
||||
|
||||
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_Python.bat
|
||||
CALL %~dp0\Env_Qt.bat
|
||||
@@ -36,11 +39,8 @@ CALL %~dp0\Env_Maya.bat
|
||||
CALL %~dp0\Env_Substance.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
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
:: Create command prompt with environment
|
||||
CALL %windir%\system32\cmd.exe
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
:: Change to root dir
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
:: Create command prompt with environment
|
||||
CALL %windir%\system32\cmd.exe
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ echo _____________________________________________________________________
|
||||
echo.
|
||||
|
||||
:: Change to root dir
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
:: Create command prompt with environment
|
||||
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
|
||||
|
||||
:: Change to root dir
|
||||
CD /D %O3DE_PROJECT_PATH%
|
||||
CD /D %PATH_O3DE_PROJECT%
|
||||
|
||||
:: Create command prompt with environment
|
||||
CALL %windir%\system32\cmd.exe
|
||||
|
||||
+2
-2
@@ -16,9 +16,9 @@ PUSHD %~dp0
|
||||
set O3DE_DEV=..\..\..\..\..\..
|
||||
|
||||
:: 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
|
||||
|
||||
|
||||
+2
-1
@@ -1,2 +1,3 @@
|
||||
# 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$/../SDK" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$" type="java-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.idea/venv" />
|
||||
</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" />
|
||||
</component>
|
||||
<component name="PyNamespacePackagesService">
|
||||
<option name="namespacePackageFolders">
|
||||
<list>
|
||||
<option value="$MODULE_DIR$/../azpy" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</module>
|
||||
</module>
|
||||
Gems/AtomLyIntegration/TechnicalArt/DccScriptingInterface/Tools/Dev/Windows/Solutions/.idea/misc.xml
Generated
+2
-2
@@ -3,8 +3,8 @@
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
</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">
|
||||
<option name="earlyReleasesAsUpgrades" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
</project>
|
||||
Generated
+2
-2
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/../../../../.." vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/../../../../../../../.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
</project>
|
||||
@@ -40,9 +40,9 @@ __all__ = ['config_utils',
|
||||
|
||||
# we need to set up basic access to the DCCsi
|
||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
||||
site.addsitedir(_DCCSIG_PATH)
|
||||
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||
site.addsitedir(_PATH_DCCSIG)
|
||||
|
||||
# azpy
|
||||
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_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)))
|
||||
if _DCCSI_GDEBUG:
|
||||
_DCCSI_LOGLEVEL = int(10)
|
||||
_DCCSI_GDEBUGGER = env_bool.env_bool(constants.ENVAR_DCCSI_GDEBUGGER, 'WING')
|
||||
|
||||
# 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
|
||||
# has occured, see DccScriptingInterface\\config.py (_DCCSI_PYTHON_LIB_PATH)
|
||||
# has occured, see DccScriptingInterface\\config.py (_PATH_DCCSI_PYTHON_LIB)
|
||||
|
||||
try:
|
||||
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
|
||||
_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')))
|
||||
_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()))
|
||||
_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
|
||||
if _O3DE_PROJECT_PATH:
|
||||
if _PATH_O3DE_PROJECT:
|
||||
_O3DE_PROJECT = str(os.getenv(constants.ENVAR_O3DE_PROJECT,
|
||||
_O3DE_PROJECT_PATH.name))
|
||||
_PATH_O3DE_PROJECT.name))
|
||||
else:
|
||||
_O3DE_PROJECT='o3de'
|
||||
|
||||
# project cache log dir path
|
||||
from azpy.constants import TAG_DCCSI_NICKNAME
|
||||
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))
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
@@ -214,7 +223,7 @@ if _DCCSI_GDEBUG:
|
||||
# debug breadcrumbs to check this module and used paths
|
||||
_LOGGER.debug('MODULE_PATH: {}'.format(_MODULE_PATH))
|
||||
_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('DCCSI_LOG_PATH: {}'.format(_DCCSI_LOG_PATH))
|
||||
# -------------------------------------------------------------------------
|
||||
@@ -258,5 +267,5 @@ if __name__ == '__main__':
|
||||
_DCCSI_DEV_MODE = True
|
||||
|
||||
if _DCCSI_GDEBUG:
|
||||
print(_DCCSIG_PATH)
|
||||
print(_PATH_DCCSIG)
|
||||
test_imports()
|
||||
|
||||
@@ -8,7 +8,29 @@
|
||||
#
|
||||
#
|
||||
# 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 os
|
||||
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
|
||||
# normally would pull the constant envar string
|
||||
# but avoiding cyclical imports here
|
||||
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('DCCSI_GDEBUG', False)
|
||||
_DCCSI_LOGLEVEL = env_bool('DCCSI_LOGLEVEL', False)
|
||||
_DCCSI_LOGLEVEL = int(env_bool('DCCSI_LOGLEVEL', int(20)))
|
||||
if _DCCSI_GDEBUG:
|
||||
_DCCSI_LOGLEVEL = int(10)
|
||||
_MODULENAME = 'azpy.config_utils'
|
||||
|
||||
__all__ = ['get_os',
|
||||
'return_stub',
|
||||
'get_stub_check_path',
|
||||
'get_dccsi_config',
|
||||
'get_current_project']
|
||||
|
||||
_MODULENAME = __name__
|
||||
if _MODULENAME is '__main__':
|
||||
_MODULENAME = 'azpy.config_utils'
|
||||
# dccsi site/code access
|
||||
#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?)
|
||||
# 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
|
||||
#for handler in _logging.root.handlers[:]:
|
||||
#_logging.root.removeHandler(handler)
|
||||
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||
#_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
|
||||
_LOGGER.propagate = False
|
||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
||||
|
||||
# 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')
|
||||
|
||||
__all__ = ['get_os', 'return_stub', 'get_stub_check_path',
|
||||
'get_dccsi_config', 'get_current_project']
|
||||
_LOGGER = _logging.getLogger(_MODULENAME)
|
||||
_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():
|
||||
"""returns lumberyard dir names used in python path"""
|
||||
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
|
||||
#"DccScriptingInterface\azpy\core\py2\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'):
|
||||
'''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
|
||||
'''Take a file name (stub_file) and returns the directory of the file (stub_file)'''
|
||||
# To Do: refactor to use pathlib object oriented Path
|
||||
if _dir_to_last_file is None:
|
||||
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'
|
||||
(... or you can pass it another known stub)
|
||||
|
||||
so we can safely build relative filepaths within that branch.
|
||||
(... or you can pass it another known stub) 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
|
||||
'''
|
||||
@@ -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
|
||||
# if we are running within O3DE we can ensure which engine is running
|
||||
_O3DE_DEV = None
|
||||
@@ -164,20 +271,61 @@ def get_o3de_engine_root(check_stub='engine.json'):
|
||||
except ImportError as e:
|
||||
# if that fails, we can search up
|
||||
# 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?
|
||||
else:
|
||||
# execute if no exception
|
||||
# allow for external ENVAR override
|
||||
from azpy.constants import ENVAR_O3DE_DEV
|
||||
# execute if no exception, allow for external ENVAR override
|
||||
_O3DE_DEV = Path(os.getenv(ENVAR_O3DE_DEV, azlmbr.paths.engroot))
|
||||
finally:
|
||||
# note: can't use fstrings as this module gets called with py2.7 in maya
|
||||
_LOGGER.info('O3DE engine root: {}'.format(_O3DE_DEV.resolve()))
|
||||
if _DCCSI_GDEBUG: # to verbose, used often
|
||||
# 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
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
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
|
||||
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():
|
||||
"""Gets o3de project via .o3de data in user directory"""
|
||||
|
||||
from azpy.constants import PATH_USER_O3DE_BOOTSTRAP
|
||||
from collections import OrderedDict
|
||||
from box import Box
|
||||
from azpy.core import get_datadir
|
||||
|
||||
bootstrap_box = None
|
||||
json_file_path = Path(PATH_USER_O3DE_BOOTSTRAP)
|
||||
@@ -260,46 +406,44 @@ def get_check_global_project():
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def get_o3de_project_path():
|
||||
"""figures out the o3de project path
|
||||
if not found defaults to the engine folder"""
|
||||
_O3DE_PROJECT_PATH = None
|
||||
"""figures out the o3de project path if not found defaults to the engine folder"""
|
||||
_PATH_O3DE_PROJECT = None
|
||||
try:
|
||||
import azlmbr # this file will fail outside of O3DE
|
||||
except ImportError as e:
|
||||
# (fallback 1) this checks if a global project is set
|
||||
# This check user home for .o3de data
|
||||
_O3DE_PROJECT_PATH = get_check_global_project()
|
||||
_PATH_O3DE_PROJECT = get_check_global_project()
|
||||
else:
|
||||
# execute if no exception, this would indicate we are in O3DE land
|
||||
# allow for external ENVAR override
|
||||
from azpy.constants import ENVAR_O3DE_PROJECT_PATH
|
||||
_O3DE_PROJECT_PATH = Path(os.getenv(ENVAR_O3DE_PROJECT_PATH, azlmbr.paths.projectroot))
|
||||
_PATH_O3DE_PROJECT = Path(os.getenv(ENVAR_PATH_O3DE_PROJECT, azlmbr.paths.projectroot))
|
||||
finally:
|
||||
# (fallback 2) if None, fallback to engine folder
|
||||
if not _O3DE_PROJECT_PATH:
|
||||
_O3DE_PROJECT_PATH = 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()))
|
||||
return _O3DE_PROJECT_PATH
|
||||
if not _PATH_O3DE_PROJECT:
|
||||
_PATH_O3DE_PROJECT = get_o3de_engine_root()
|
||||
|
||||
if _DCCSI_GDEBUG: # to verbose, used often
|
||||
# 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()):
|
||||
"""Builds and adds local site dir libs based on py version"""
|
||||
|
||||
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,
|
||||
_PATH_DCCSI_PYTHON_LIB = Path(STR_PATH_DCCSI_PYTHON_LIB.format(dccsi_dirpath,
|
||||
sys.version_info[0],
|
||||
sys.version_info[1]))
|
||||
|
||||
if _DCCSI_PYTHON_LIB_PATH.exists():
|
||||
site.addsitedir(_DCCSI_PYTHON_LIB_PATH.resolve()) # PYTHONPATH
|
||||
if _PATH_DCCSI_PYTHON_LIB.exists():
|
||||
site.addsitedir(_PATH_DCCSI_PYTHON_LIB.resolve()) # PYTHONPATH
|
||||
_LOGGER.debug('Performed site.addsitedir({})'
|
||||
''.format(_DCCSI_PYTHON_LIB_PATH.resolve()))
|
||||
return _DCCSI_PYTHON_LIB_PATH
|
||||
''.format(_PATH_DCCSI_PYTHON_LIB.resolve()))
|
||||
return _PATH_DCCSI_PYTHON_LIB
|
||||
else:
|
||||
message = "Doesn't exist: {}".format(_DCCSI_PYTHON_LIB_PATH)
|
||||
message = "Doesn't exist: {}".format(_PATH_DCCSI_PYTHON_LIB)
|
||||
_LOGGER.error(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)
|
||||
# -------------------------------------------------------------------------
|
||||
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
|
||||
_LOGGER.info("# {0} #".format('-' * 72))
|
||||
_LOGGER.info('~ config_utils.py ... Running script as __main__')
|
||||
_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('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')))
|
||||
|
||||
_config = get_dccsi_config()
|
||||
_LOGGER.info('DCCSI_CONFIG_PATH: {}'.format(_config))
|
||||
|
||||
_LOGGER.info('O3DE_DEV: {}'.format(get_o3de_engine_root(check_stub='engine.json')))
|
||||
_O3DE_DEV = get_o3de_engine_root(check_stub='engine.json')
|
||||
_LOGGER.info('O3DE_DEV: {}'.format(_O3DE_DEV.resolve()))
|
||||
|
||||
_PATH_O3DE_BUILD = get_o3de_build_path(_O3DE_DEV, 'CMakeCache.txt')
|
||||
_LOGGER.info('PATH_O3DE_BUILD: {}'.format(_PATH_O3DE_BUILD.resolve()))
|
||||
|
||||
# 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
|
||||
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 sys
|
||||
import site
|
||||
import time
|
||||
from os.path import expanduser
|
||||
import logging as _logging
|
||||
# -------------------------------------------------------------------------
|
||||
@@ -30,22 +31,23 @@ import logging as _logging
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# global scope
|
||||
_MODULENAME = __name__
|
||||
if _MODULENAME is '__main__':
|
||||
_MODULENAME = 'azpy.constants'
|
||||
_MODULENAME = 'azpy.constants'
|
||||
|
||||
start = time.process_time() # start tracking
|
||||
|
||||
os.environ['PYTHONINSPECT'] = 'True'
|
||||
# for this module to perform standalone
|
||||
# we need to set up basic access to the DCCsi
|
||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
||||
site.addsitedir(_DCCSIG_PATH)
|
||||
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||
site.addsitedir(_PATH_DCCSIG)
|
||||
|
||||
# now we have azpy api access
|
||||
import azpy
|
||||
from azpy.env_bool import env_bool
|
||||
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
|
||||
_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)))
|
||||
# default loglevel to info unless set
|
||||
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, _logging.INFO))
|
||||
if _DCCSI_GDEBUG:
|
||||
_DCCSI_LOGLEVEL = int(10)
|
||||
# -------------------------------------------------------------------------
|
||||
# override loglevel if runnign debug
|
||||
_DCCSI_LOGLEVEL = _logging.DEBUG
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# set up module logging
|
||||
for handler in _logging.root.handlers[:]:
|
||||
_logging.root.removeHandler(handler)
|
||||
#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)
|
||||
_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
|
||||
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
@@ -107,6 +114,7 @@ TAG_DCCSI_CONFIG = str('dccsiconfiguration.setreg')
|
||||
|
||||
# filesystem markers, stub file names.
|
||||
STUB_O3DE_DEV = str('engine.json')
|
||||
STUB_O3DE_BUILD = str('CMakeCache.txt')
|
||||
STUB_O3DE_ROOT_DCCSI = str('dccsi_stub')
|
||||
STUB_O3DE_DCCSI_AZPY = str('dccsi_azpy_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
|
||||
ENVAR_COMPANY = str('COMPANY')
|
||||
ENVAR_O3DE_PROJECT = str('O3DE_PROJECT')
|
||||
ENVAR_O3DE_PROJECT_PATH = str('O3DE_PROJECT_PATH')
|
||||
ENVAR_O3DE_PROJECT = str('O3DE_PROJECT') # project name
|
||||
ENVAR_PATH_O3DE_PROJECT = str('PATH_O3DE_PROJECT') # path to project
|
||||
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_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_PATH = str('O3DE_BUILD_PATH')
|
||||
ENVAR_PATH_O3DE_BUILD = str('PATH_O3DE_BUILD')
|
||||
ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_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_LAUNCHERS_PATH = str('DCCSI_LAUNCHERS_PATH')
|
||||
|
||||
ENVAR_DCCSI_PY_VERSION_MAJOR = str('DCCSI_PY_VERSION_MAJOR')
|
||||
ENVAR_DCCSI_PY_VERSION_MINOR = str('DCCSI_PY_VERSION_MINOR')
|
||||
ENVAR_DCCSI_PYTHON_PATH = str('DCCSI_PYTHON_PATH')
|
||||
ENVAR_DCCSI_PYTHON_LIB_PATH = str('DCCSI_PYTHON_LIB_PATH')
|
||||
ENVAR_O3DE_PYTHON_INSTALL = str('O3DE_PYTHON_INSTALL')
|
||||
ENVAR_PATH_DCCSI_PYTHON = str('PATH_DCCSI_PYTHON')
|
||||
ENVAR_PATH_DCCSI_PYTHON_LIB = str('PATH_DCCSI_PYTHON_LIB')
|
||||
ENVAR_PATH_O3DE_PYTHON_INSTALL = str('PATH_O3DE_PYTHON_INSTALL')
|
||||
|
||||
ENVAR_WINGHOME = str('WINGHOME')
|
||||
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_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_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
|
||||
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_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
|
||||
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> \
|
||||
STR_CONSTRUCT_O3DE_BUILD_PATH = str('{0}\\{1}')
|
||||
PATH_O3DE_BUILD_PATH = str(STR_CONSTRUCT_O3DE_BUILD_PATH.format(PATH_O3DE_DEV,
|
||||
STR_CONSTRUCT_PATH_O3DE_BUILD = str('{0}\\{1}')
|
||||
PATH_O3DE_BUILD = str(STR_CONSTRUCT_PATH_O3DE_BUILD.format(PATH_O3DE_DEV,
|
||||
TAG_DIR_O3DE_BUILD_FOLDER))
|
||||
|
||||
# ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
|
||||
STR_QTPLUGIN_DIR = str('{0}\\bin\\profile\\EditorPlugins')
|
||||
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_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_O3DE_BUILD_PATH)
|
||||
PATH_O3DE_BIN_PATH = str(STR_O3DE_BIN_PATH).format(PATH_O3DE_BUILD_PATH)
|
||||
PATH_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_O3DE_BUILD)
|
||||
PATH_O3DE_BIN = str(STR_PATH_O3DE_BIN).format(PATH_O3DE_BUILD)
|
||||
|
||||
# py path string, parts, etc.
|
||||
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_TOOLS_DIR = str('Tools\\Python')
|
||||
TAG_PLATFORM = str('windows')
|
||||
STR_CONSTRUCT_O3DE_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
|
||||
PATH_DCCSI_PYTHON_PATH = str(STR_CONSTRUCT_O3DE_PYTHON_INSTALL.format(PATH_O3DE_DEV,
|
||||
STR_CONSTRUCT_PATH_O3DE_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
|
||||
PATH_DCCSI_PYTHON = str(STR_CONSTRUCT_PATH_O3DE_PYTHON_INSTALL.format(PATH_O3DE_DEV,
|
||||
TAG_TOOLS_DIR,
|
||||
TAG_DCCSI_PY_VERSION_MAJOR,
|
||||
TAG_DCCSI_PY_VERSION_MINOR,
|
||||
TAG_DCCSI_PY_VERSION_RELEASE,
|
||||
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
|
||||
|
||||
# bootstrap site-packages by version
|
||||
TAG_PY_MAJOR = str(sys.version_info.major) # future proof
|
||||
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')
|
||||
PATH_DCCSI_PYTHON_LIB_PATH = STR_DCCSI_PYTHON_LIB_PATH.format(PATH_DCCSIG_PATH,
|
||||
STR_PATH_DCCSI_PYTHON_LIB = str('{0}\\3rdParty\\Python\\Lib\\{1}.x\\{1}.{2}.x\\site-packages')
|
||||
PATH_DCCSI_PYTHON_LIB = STR_PATH_DCCSI_PYTHON_LIB.format(PATH_DCCSIG,
|
||||
TAG_PY_MAJOR,
|
||||
TAG_PY_MINOR)
|
||||
# default path strings (and afe associated attributes)
|
||||
@@ -334,14 +344,14 @@ if __name__ == '__main__':
|
||||
|
||||
_stash_dict = {}
|
||||
_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_TOOLS_PATH'] = Path(PATH_DCCSI_TOOLS_PATH)
|
||||
_stash_dict['DCCSI_PYTHON_PATH'] = Path(PATH_DCCSI_PYTHON_PATH)
|
||||
_stash_dict['PATH_DCCSI_TOOLS'] = Path(PATH_DCCSI_TOOLS)
|
||||
_stash_dict['PATH_DCCSI_PYTHON'] = Path(PATH_DCCSI_PYTHON)
|
||||
_stash_dict['DCCSI_PY_BASE'] = Path(PATH_DCCSI_PY_BASE)
|
||||
_stash_dict['DCCSI_PYTHON_LIB_PATH'] = Path(PATH_DCCSI_PYTHON_LIB_PATH)
|
||||
_stash_dict['O3DE_BUILD_PATH'] = Path(PATH_O3DE_BUILD_PATH)
|
||||
_stash_dict['O3DE_BIN_PATH'] = Path(PATH_O3DE_BIN_PATH)
|
||||
_stash_dict['PATH_DCCSI_PYTHON_LIB'] = Path(PATH_DCCSI_PYTHON_LIB)
|
||||
_stash_dict['PATH_O3DE_BUILD'] = Path(PATH_O3DE_BUILD)
|
||||
_stash_dict['PATH_O3DE_BIN'] = Path(PATH_O3DE_BIN)
|
||||
_stash_dict['QTFORPYTHON_PATH'] = Path(PATH_QTFORPYTHON_PATH)
|
||||
_stash_dict['QT_PLUGIN_PATH'] = Path(PATH_QT_PLUGIN_PATH)
|
||||
_stash_dict['SAT_INSTALL_PATH'] = Path(PATH_SAT_INSTALL_PATH)
|
||||
@@ -363,3 +373,6 @@ if __name__ == '__main__':
|
||||
|
||||
# custom prompt
|
||||
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
|
||||
_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_DCCSIG_PATH] = Path('${0}'.format(ENVAR_DCCSIG_PATH))
|
||||
_BASE_ENVVAR_DICT[ENVAR_PATH_O3DE_PROJECT] = Path('${0}'.format(ENVAR_PATH_O3DE_PROJECT))
|
||||
_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_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
|
||||
_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
|
||||
_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_PYTHON_PATH] = '${0}'.format(ENVAR_DCCSI_PYTHON_PATH)
|
||||
_BASE_ENVVAR_DICT[ENVAR_DCCSI_PYTHON_LIB_PATH] = '${0}'.format(ENVAR_DCCSI_PYTHON_LIB_PATH)
|
||||
_BASE_ENVVAR_DICT[ENVAR_PATH_DCCSI_PYTHON] = '${0}'.format(ENVAR_PATH_DCCSI_PYTHON)
|
||||
_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
|
||||
# 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
|
||||
O3DE_PROJECT : name of project (project directory)
|
||||
O3DE_DEV : path to Lumberyard \dev root
|
||||
O3DE_PROJECT_PATH : path to project dir
|
||||
DCCSIG_PATH : path to the DCCsi Gem root
|
||||
DCCSI_TOOLS_PATH : path to associated (non-api code) DCC SDK
|
||||
PATH_O3DE_PROJECT : path to project dir
|
||||
PATH_DCCSIG : path to the DCCsi Gem root
|
||||
PATH_DCCSI_TOOLS : path to associated (non-api code) DCC SDK
|
||||
|
||||
# nice to haves in base env to define core support
|
||||
DCCSI_GDEBUG : sets global debug prints
|
||||
@@ -58,7 +58,7 @@ Configures several useful environment config settings and paths,
|
||||
|
||||
:: Default version py37 has a launcher
|
||||
(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
|
||||
set DCCSI_PY_DCCSI=%DCCSI_LAUNCHERS_PATH%\Launch_pyBASE.bat
|
||||
@@ -107,9 +107,9 @@ from collections import OrderedDict
|
||||
os.environ['PYTHONINSPECT'] = 'True'
|
||||
|
||||
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
|
||||
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
|
||||
site.addsitedir(_DCCSIG_PATH)
|
||||
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
|
||||
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
|
||||
site.addsitedir(_PATH_DCCSIG)
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ _LOGGER = _logging.getLogger(_PACKAGENAME)
|
||||
_logging.basicConfig(format=FRMT_LOG_LONG)
|
||||
_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_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
|
||||
# config is SO generic this ensures we are importing a specific one
|
||||
_spec_dccsi_config = importlib.util.spec_from_file_location("dccsi.config",
|
||||
Path(_DCCSIG_PATH,
|
||||
Path(_PATH_DCCSIG,
|
||||
"config.py"))
|
||||
_dccsi_config = importlib.util.module_from_spec(_spec_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 get_stub_check_path
|
||||
|
||||
_DCCSI_PYTHON_LIB_PATH = os.getenv(ENVAR_DCCSI_PYTHON_LIB_PATH,
|
||||
PATH_DCCSI_PYTHON_LIB_PATH)
|
||||
_LOGGER.debug('Dccsi Lib Path: {0}'.format(_DCCSI_PYTHON_LIB_PATH))
|
||||
_PATH_DCCSI_PYTHON_LIB = os.getenv(ENVAR_PATH_DCCSI_PYTHON_LIB,
|
||||
PATH_DCCSI_PYTHON_LIB)
|
||||
_LOGGER.debug('Dccsi Lib Path: {0}'.format(_PATH_DCCSI_PYTHON_LIB))
|
||||
|
||||
if os.path.exists(_DCCSI_PYTHON_LIB_PATH):
|
||||
site.addsitedir(_DCCSI_PYTHON_LIB_PATH) # add access
|
||||
if os.path.exists(_PATH_DCCSI_PYTHON_LIB):
|
||||
site.addsitedir(_PATH_DCCSI_PYTHON_LIB) # add access
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 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
|
||||
|
||||
# -- envar --
|
||||
_O3DE_BUILD_PATH = Path(os.getenv(ENVAR_O3DE_BUILD_PATH,
|
||||
PATH_O3DE_BUILD_PATH))
|
||||
_SYNTH_ENV_DICT[ENVAR_O3DE_BUILD_PATH] = _O3DE_BUILD_PATH.as_posix()
|
||||
_PATH_O3DE_BUILD = Path(os.getenv(ENVAR_PATH_O3DE_BUILD,
|
||||
PATH_O3DE_BUILD))
|
||||
_SYNTH_ENV_DICT[ENVAR_PATH_O3DE_BUILD] = _PATH_O3DE_BUILD.as_posix()
|
||||
|
||||
# -- envar --
|
||||
_O3DE_BIN_PATH = Path(os.getenv(ENVAR_O3DE_BIN_PATH,
|
||||
PATH_O3DE_BIN_PATH))
|
||||
_PATH_O3DE_BIN = Path(os.getenv(ENVAR_PATH_O3DE_BIN,
|
||||
PATH_O3DE_BIN))
|
||||
# some of these need hard checks
|
||||
if not _O3DE_BIN_PATH.exists():
|
||||
raise Exception('O3DE_BIN_PATH does NOT exist: {0}'.format(_O3DE_BIN_PATH))
|
||||
if not _PATH_O3DE_BIN.exists():
|
||||
raise Exception('PATH_O3DE_BIN does NOT exist: {0}'.format(_PATH_O3DE_BIN))
|
||||
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
|
||||
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 --
|
||||
# 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)))
|
||||
_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 --
|
||||
_DCCSIG_PATH = resolve_envar_path(ENVAR_DCCSIG_PATH, # envar
|
||||
_PATH_DCCSIG = resolve_envar_path(ENVAR_PATH_DCCSIG, # envar
|
||||
_THIS_MODULE_PATH, # search path
|
||||
STUB_O3DE_ROOT_DCCSI, # stub name
|
||||
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 --
|
||||
_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()
|
||||
|
||||
# -- envar --
|
||||
_DCCSI_TOOLS_PATH = Path(os.getenv(ENVAR_DCCSI_TOOLS_PATH,
|
||||
Path(_DCCSIG_PATH, TAG_DIR_DCCSI_TOOLS)))
|
||||
_SYNTH_ENV_DICT[ENVAR_DCCSI_TOOLS_PATH] = _DCCSI_TOOLS_PATH.as_posix()
|
||||
_PATH_DCCSI_TOOLS = Path(os.getenv(ENVAR_PATH_DCCSI_TOOLS,
|
||||
Path(_PATH_DCCSIG, TAG_DIR_DCCSI_TOOLS)))
|
||||
_SYNTH_ENV_DICT[ENVAR_PATH_DCCSI_TOOLS] = _PATH_DCCSI_TOOLS.as_posix()
|
||||
|
||||
# -- envar --
|
||||
# external dccsi site-packages
|
||||
_DCCSI_PYTHON_LIB_PATH = Path(os.getenv(ENVAR_DCCSI_PYTHON_LIB_PATH,
|
||||
PATH_DCCSI_PYTHON_LIB_PATH))
|
||||
_SYNTH_ENV_DICT[ENVAR_DCCSI_PYTHON_LIB_PATH] = _DCCSI_PYTHON_LIB_PATH.as_posix()
|
||||
_PATH_DCCSI_PYTHON_LIB = Path(os.getenv(ENVAR_PATH_DCCSI_PYTHON_LIB,
|
||||
PATH_DCCSI_PYTHON_LIB))
|
||||
_SYNTH_ENV_DICT[ENVAR_PATH_DCCSI_PYTHON_LIB] = _PATH_DCCSI_PYTHON_LIB.as_posix()
|
||||
|
||||
# -- envar --
|
||||
# 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))
|
||||
_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))
|
||||
site.addsitedir(str(QTFORPYTHON_PATH))
|
||||
|
||||
O3DE_BIN_PATH = Path.joinpath(O3DE_DEV,
|
||||
PATH_O3DE_BIN = Path.joinpath(O3DE_DEV,
|
||||
'windows',
|
||||
'bin',
|
||||
'profile').resolve()
|
||||
os.environ["DYNACONF_O3DE_BIN_PATH"] = str(O3DE_BIN_PATH)
|
||||
os.environ["O3DE_BIN_PATH"] = str(O3DE_BIN_PATH)
|
||||
site.addsitedir(str(O3DE_BIN_PATH))
|
||||
sys.path.insert(1, str(O3DE_BIN_PATH))
|
||||
os.environ["DYNACONF_PATH_O3DE_BIN"] = str(PATH_O3DE_BIN)
|
||||
os.environ["PATH_O3DE_BIN"] = str(PATH_O3DE_BIN)
|
||||
site.addsitedir(str(PATH_O3DE_BIN))
|
||||
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()
|
||||
os.environ["DYNACONF_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'):
|
||||
path = os.environ['PATH']
|
||||
newPath = ''
|
||||
newPath += str(O3DE_BIN_PATH) + os.pathsep
|
||||
newPath += str(PATH_O3DE_BIN) + os.pathsep
|
||||
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
|
||||
'shiboken2').resolve()) + os.pathsep
|
||||
newPath += str(Path.joinpath(QTFORPYTHON_PATH,
|
||||
@@ -675,7 +675,7 @@ if __name__ == '__main__':
|
||||
|
||||
if _DCCSI_GDEBUG:
|
||||
|
||||
tempBoxJsonFilePath = Path(_SYNTH_ENV_DICT['DCCSIG_PATH'], '.temp')
|
||||
tempBoxJsonFilePath = Path(_SYNTH_ENV_DICT['PATH_DCCSIG'], '.temp')
|
||||
tempBoxJsonFilePath = Path(tempBoxJsonFilePath, 'boxDumpTest.json')
|
||||
_LOGGER.info(f'tempBoxJsonFilePath: {tempBoxJsonFilePath}')
|
||||
|
||||
|
||||
@@ -7,10 +7,8 @@
|
||||
# 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 site
|
||||
import logging as _logging
|
||||
@@ -19,27 +17,42 @@ import logging as _logging
|
||||
# See example:
|
||||
#"dev\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\SDK\Lumberyard\Scripts\set_menu.py"
|
||||
from pathlib import Path
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# global scope
|
||||
_MODULENAME = 'azpy.test.entry_test'
|
||||
_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_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.env_bool(ENVAR_DCCSI_GDEBUG, False)
|
||||
_DCCSI_DEV_MODE = env_bool.env_bool(ENVAR_DCCSI_DEV_MODE, False)
|
||||
|
||||
_MODULENAME = __name__
|
||||
if _MODULENAME is '__main__':
|
||||
_MODULENAME = 'azpy.test.entry_test'
|
||||
_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)
|
||||
#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)
|
||||
_logging.basicConfig(format=FRMT_LOG_LONG)
|
||||
_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():
|
||||
_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
|
||||
_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
|
||||
from dynaconf import Dynaconf
|
||||
@@ -119,60 +122,56 @@ except:
|
||||
import pathlib2 as pathlib
|
||||
from pathlib import Path
|
||||
|
||||
_DCCSI_PATH = Path(_DCCSI_PATH) # pathify
|
||||
_DCCSI_PYTHON_PATH = Path(_DCCSI_PATH,'3rdParty','Python')
|
||||
_DCCSI_PYTHON_LIB_PATH = Path(_DCCSI_PYTHON_LIB_PATH)
|
||||
_PATH_DCCSIG = Path(_PATH_DCCSIG) # pathify
|
||||
_PATH_DCCSI_PYTHON = Path(_PATH_DCCSIG,'3rdParty','Python')
|
||||
_PATH_DCCSI_PYTHON_LIB = Path(_PATH_DCCSI_PYTHON_LIB)
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# start locally prepping known default values for dyanmic environment settings
|
||||
_O3DE_DCCSI_PATH = os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
||||
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||
|
||||
# this will retreive the O3DE engine root
|
||||
_O3DE_DEV = azpy.config_utils.get_o3de_engine_root()
|
||||
# set up dynamic config envars
|
||||
os.environ["DYNACONF_O3DE_DEV"] = str(_O3DE_DEV.resolve())
|
||||
|
||||
from azpy.constants import TAG_DIR_O3DE_BUILD_FOLDER
|
||||
_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())
|
||||
_PATH_O3DE_BUILD = azpy.config_utils.get_o3de_build_path(_O3DE_DEV,'CMakeCache.txt')
|
||||
|
||||
from azpy.constants import STR_O3DE_BIN_PATH
|
||||
_O3DE_BIN_PATH = Path(STR_O3DE_BIN_PATH.format(_O3DE_BUILD_PATH))
|
||||
os.environ["DYNACONF_O3DE_BIN_PATH"] = str(_O3DE_BIN_PATH.resolve())
|
||||
from azpy.constants import STR_PATH_O3DE_BIN
|
||||
_PATH_O3DE_BIN = Path(STR_PATH_O3DE_BIN.format(_PATH_O3DE_BUILD))
|
||||
os.environ["DYNACONF_PATH_O3DE_BIN"] = str(_PATH_O3DE_BIN.resolve())
|
||||
|
||||
# this in most cases will return 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()
|
||||
os.environ["DYNACONF_O3DE_PROJECT_PATH"] = str(_O3DE_PROJECT_PATH.resolve())
|
||||
_PATH_O3DE_PROJECT = azpy.config_utils.get_o3de_project_path()
|
||||
os.environ["DYNACONF_PATH_O3DE_PROJECT"] = str(_PATH_O3DE_PROJECT.resolve())
|
||||
|
||||
# special, a home for stashing PYTHONPATHs into managed settings
|
||||
_O3DE_PYTHONPATH = list()
|
||||
_O3DE_PYTHONPATH.append(_DCCSI_PATH)
|
||||
_O3DE_PYTHONPATH.append(_PATH_DCCSIG)
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def init_o3de_pyside2(dccsi_path=_DCCSI_PATH,
|
||||
engine_bin=_O3DE_BIN_PATH):
|
||||
def init_o3de_pyside2(dccsi_path=_PATH_DCCSIG,
|
||||
engine_bin=_PATH_O3DE_BIN):
|
||||
"""Initialize the DCCsi Qt/PySide dynamic env and settings
|
||||
sets access to lumberyards Qt dlls and PySide"""
|
||||
|
||||
_DCCSI_PATH = Path(dccsi_path)
|
||||
_O3DE_BIN_PATH = Path(engine_bin)
|
||||
_PATH_DCCSIG = Path(dccsi_path)
|
||||
_PATH_O3DE_BIN = Path(engine_bin)
|
||||
|
||||
if not _O3DE_BIN_PATH.exists():
|
||||
raise Exception('_O3DE_BIN_PATH does NOT exist: {0}'.format(_O3DE_BIN_PATH))
|
||||
if not _PATH_O3DE_BIN.exists():
|
||||
raise Exception('_PATH_O3DE_BIN does NOT exist: {0}'.format(_PATH_O3DE_BIN))
|
||||
else:
|
||||
pass
|
||||
|
||||
# python config
|
||||
_DCCSI_PYTHON_PATH = Path(_DCCSI_PATH,'3rdParty','Python')
|
||||
os.environ["DYNACONF_DCCSI_PYTHON_PATH"] = str(_DCCSI_PYTHON_PATH.resolve())
|
||||
_PATH_DCCSI_PYTHON = Path(_PATH_DCCSIG,'3rdParty','Python')
|
||||
os.environ["DYNACONF_PATH_DCCSI_PYTHON"] = str(_PATH_DCCSI_PYTHON.resolve())
|
||||
|
||||
# # allows to retreive from settings.QTFORPYTHON_PATH
|
||||
# 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)
|
||||
# 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['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
|
||||
# add this to the QtForPython Gem
|
||||
# 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():
|
||||
os.environ["DYNACONF_DCCSI_PYSIDE2_TOOLS"] = str(_DCCSI_PYSIDE2_TOOLS.resolve())
|
||||
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
|
||||
raise(e)
|
||||
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']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
||||
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||
|
||||
try:
|
||||
_DCCSI_PYTHONPATH = os.environ['PYTHONPATH']
|
||||
@@ -287,9 +286,8 @@ def test_pyside2():
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def init_o3de_core(engine_path=_O3DE_DEV,
|
||||
build_folder=_O3DE_BUILD_FOLDER,
|
||||
project_name=None,
|
||||
project_path=_O3DE_PROJECT_PATH):
|
||||
project_path=_PATH_O3DE_PROJECT):
|
||||
"""Initialize the DCCsi Core dynamic env and settings"""
|
||||
# `envvar_prefix` = export envvars with `export DYNACONF_FOO=bar`.
|
||||
# `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_LOGLEVEL'] = str(_DCCSI_LOGLEVEL)
|
||||
|
||||
os.environ["DYNACONF_DCCSI_PATH"] = str(_DCCSI_PATH.resolve())
|
||||
os.environ['PATH'] = _DCCSI_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH_DCCSIG"] = str(_PATH_DCCSIG.resolve())
|
||||
os.environ['PATH'] = _PATH_DCCSIG.as_posix() + os.pathsep + os.environ['PATH']
|
||||
|
||||
# we already defaulted to discovering these two early because of importance
|
||||
#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_
|
||||
# this in an explicit pass in
|
||||
if project_path:
|
||||
_project_path = Path(project_path)
|
||||
try:
|
||||
_project_path.exists()
|
||||
_O3DE_PROJECT_PATH = _project_path
|
||||
os.environ["DYNACONF_O3DE_PROJECT_PATH"] = str(_O3DE_PROJECT_PATH.resolve())
|
||||
_PATH_O3DE_PROJECT = _project_path
|
||||
os.environ["DYNACONF_PATH_O3DE_PROJECT"] = str(_PATH_O3DE_PROJECT.resolve())
|
||||
except FileExistsError as e:
|
||||
_LOGGER.error('~ The project path specified does not appear to exist!')
|
||||
_LOGGER.warning('~ project_path: {}'.format(project_path))
|
||||
_LOGGER.warning('~ fallback to engine root: {}'.format())
|
||||
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
|
||||
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)
|
||||
# To Do: there might be a project namespace in the project.json?
|
||||
|
||||
# -- O3DE build -- set up \bin\path (for Qt dll access)
|
||||
os.environ["DYNACONF_O3DE_BUILD_FOLDER"] = str(build_folder)
|
||||
_O3DE_BUILD_PATH = Path(_O3DE_DEV, build_folder)
|
||||
_PATH_O3DE_BUILD = Path(azpy.config_utils.get_o3de_build_path(_O3DE_DEV,
|
||||
'CMakeCache.txt'))
|
||||
os.environ["DYNACONF_PATH_O3DE_BUILD"] = str(_PATH_O3DE_BUILD.resolve())
|
||||
|
||||
os.environ["DYNACONF_O3DE_BUILD_PATH"] = str(_O3DE_BUILD_PATH.resolve())
|
||||
|
||||
_O3DE_BIN_PATH = Path(STR_O3DE_BIN_PATH.format(_O3DE_BUILD_PATH))
|
||||
os.environ["DYNACONF_O3DE_BIN_PATH"] = str(_O3DE_BIN_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())
|
||||
|
||||
# hard check
|
||||
if not _O3DE_BIN_PATH.exists():
|
||||
raise Exception('O3DE_BIN_PATH does NOT exist: {0}'.format(_O3DE_BIN_PATH))
|
||||
if not _PATH_O3DE_BIN.exists():
|
||||
raise Exception('PATH_O3DE_BIN does NOT exist: {0}'.format(_PATH_O3DE_BIN))
|
||||
else:
|
||||
# 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
|
||||
_DCCSI_TOOLS_PATH = Path(_DCCSI_PATH, TAG_DIR_DCCSI_TOOLS)
|
||||
os.environ["DYNACONF_DCCSI_TOOLS_PATH"] = str(_DCCSI_TOOLS_PATH.resolve())
|
||||
_PATH_DCCSI_TOOLS = Path(_PATH_DCCSIG, TAG_DIR_DCCSI_TOOLS)
|
||||
os.environ["DYNACONF_PATH_DCCSI_TOOLS"] = str(_PATH_DCCSI_TOOLS.resolve())
|
||||
|
||||
from azpy.constants import TAG_DCCSI_NICKNAME
|
||||
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))
|
||||
os.environ["DYNACONF_DCCSI_LOG_PATH"] = str(_DCCSI_LOG_PATH)
|
||||
|
||||
from azpy.constants import TAG_DIR_REGISTRY, TAG_DCCSI_CONFIG
|
||||
_DCCSI_CONFIG_PATH = Path(project_path, TAG_DIR_REGISTRY, TAG_DCCSI_CONFIG)
|
||||
os.environ["DYNACONF_DCCSI_CONFIG_PATH"] = str(_DCCSI_CONFIG_PATH.resolve())
|
||||
_PATH_DCCSI_CONFIG = Path(project_path, TAG_DIR_REGISTRY, TAG_DCCSI_CONFIG)
|
||||
os.environ["DYNACONF_PATH_DCCSI_CONFIG"] = str(_PATH_DCCSI_CONFIG.resolve())
|
||||
|
||||
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())
|
||||
|
||||
_O3DE_DCCSI_PATH = os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
||||
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||
|
||||
from dynaconf import settings
|
||||
|
||||
@@ -381,26 +378,26 @@ def init_o3de_core(engine_path=_O3DE_DEV,
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
def init_o3de_python(engine_path=_O3DE_DEV,
|
||||
engine_bin=_O3DE_BIN_PATH,
|
||||
dccsi_path=_DCCSI_PATH):
|
||||
engine_bin=_PATH_O3DE_BIN,
|
||||
dccsi_path=_PATH_DCCSIG):
|
||||
|
||||
# pathify
|
||||
_O3DE_DEV = Path(engine_path)
|
||||
_O3DE_BIN_PATH = Path(engine_bin)
|
||||
_DCCSI_PATH = Path(dccsi_path)
|
||||
_PATH_O3DE_BIN = Path(engine_bin)
|
||||
_PATH_DCCSIG = Path(dccsi_path)
|
||||
|
||||
# python config
|
||||
_DCCSI_PYTHON_PATH = Path(_DCCSI_PATH,'3rdParty','Python')
|
||||
os.environ["DYNACONF_DCCSI_PYTHON_PATH"] = str(_DCCSI_PYTHON_PATH.resolve())
|
||||
_PATH_DCCSI_PYTHON = Path(_PATH_DCCSIG,'3rdParty','Python')
|
||||
os.environ["DYNACONF_PATH_DCCSI_PYTHON"] = str(_PATH_DCCSI_PYTHON.resolve())
|
||||
|
||||
_DCCSI_PYTHON_LIB_PATH = azpy.config_utils.bootstrap_dccsi_py_libs(_DCCSI_PATH)
|
||||
os.environ["DYNACONF_DCCSI_PYTHON_LIB_PATH"] = str(_DCCSI_PYTHON_LIB_PATH.resolve())
|
||||
os.environ['PATH'] = _DCCSI_PYTHON_LIB_PATH.as_posix() + os.pathsep + os.environ['PATH']
|
||||
site.addsitedir(_DCCSI_PYTHON_LIB_PATH)
|
||||
_O3DE_PYTHONPATH.append(_DCCSI_PYTHON_LIB_PATH.resolve())
|
||||
_PATH_DCCSI_PYTHON_LIB = azpy.config_utils.bootstrap_dccsi_py_libs(_PATH_DCCSIG)
|
||||
os.environ["DYNACONF_PATH_DCCSI_PYTHON_LIB"] = str(_PATH_DCCSI_PYTHON_LIB.resolve())
|
||||
os.environ['PATH'] = _PATH_DCCSI_PYTHON_LIB.as_posix() + os.pathsep + os.environ['PATH']
|
||||
site.addsitedir(_PATH_DCCSI_PYTHON_LIB)
|
||||
_O3DE_PYTHONPATH.append(_PATH_DCCSI_PYTHON_LIB.resolve())
|
||||
|
||||
site.addsitedir(_O3DE_BIN_PATH)
|
||||
_O3DE_PYTHONPATH.append(_O3DE_BIN_PATH.resolve())
|
||||
site.addsitedir(_PATH_O3DE_BIN)
|
||||
_O3DE_PYTHONPATH.append(_PATH_O3DE_BIN.resolve())
|
||||
|
||||
_O3DE_PY_EXE = Path(sys.executable)
|
||||
_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']
|
||||
_LOGGER.info('~ O3DE_PYTHONHOME - is now the folder containing O3DE python executable')
|
||||
|
||||
_O3DE_PYTHON_INSTALL = Path(_O3DE_DEV, 'python')
|
||||
os.environ["DYNACONF_O3DE_PYTHON_INSTALL"] = str(_O3DE_PYTHON_INSTALL.resolve())
|
||||
os.environ['PATH'] = _O3DE_PYTHON_INSTALL.as_posix() + os.pathsep + os.environ['PATH']
|
||||
_PATH_O3DE_PYTHON_INSTALL = Path(_O3DE_DEV, 'python')
|
||||
os.environ["DYNACONF_PATH_O3DE_PYTHON_INSTALL"] = str(_PATH_O3DE_PYTHON_INSTALL.resolve())
|
||||
os.environ['PATH'] = _PATH_O3DE_PYTHON_INSTALL.as_posix() + os.pathsep + os.environ['PATH']
|
||||
|
||||
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":
|
||||
_DCCSI_PY_BASE = Path(_O3DE_PYTHON_INSTALL, 'python.sh')
|
||||
_DCCSI_PY_BASE = Path(_PATH_O3DE_PYTHON_INSTALL, 'python.sh')
|
||||
elif sys.platform == "darwin":
|
||||
_DCCSI_PY_BASE = Path(_O3DE_PYTHON_INSTALL, 'python.sh')
|
||||
_DCCSI_PY_BASE = Path(_PATH_O3DE_PYTHON_INSTALL, 'python.sh')
|
||||
else:
|
||||
_DCCSI_PY_BASE = None
|
||||
|
||||
if _DCCSI_PY_BASE:
|
||||
os.environ["DYNACONF_DCCSI_PY_BASE"] = str(_DCCSI_PY_BASE.resolve())
|
||||
|
||||
_O3DE_DCCSI_PATH = os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_DCCSI_PATH
|
||||
_O3DE_PATH_DCCSIG = os.environ['PATH']
|
||||
os.environ["DYNACONF_PATH"] = _O3DE_PATH_DCCSIG
|
||||
|
||||
try:
|
||||
_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
|
||||
def get_config_settings(engine_path=_O3DE_DEV,
|
||||
build_folder=_O3DE_BUILD_FOLDER,
|
||||
project_name=None,
|
||||
project_path=_O3DE_PROJECT_PATH,
|
||||
project_path=_PATH_O3DE_PROJECT,
|
||||
enable_o3de_python=None,
|
||||
enable_o3de_pyside2=None,
|
||||
set_env=True):
|
||||
"""Convenience method to initialize and retreive settings directly from module."""
|
||||
|
||||
settings = init_o3de_core(engine_path,
|
||||
build_folder,
|
||||
project_name,
|
||||
project_path)
|
||||
|
||||
if enable_o3de_python:
|
||||
settings = init_o3de_python(settings.O3DE_DEV,
|
||||
settings.O3DE_BIN_PATH,
|
||||
settings.DCCSI_PATH)
|
||||
settings.PATH_O3DE_BIN,
|
||||
settings.PATH_DCCSIG)
|
||||
|
||||
# These should ONLY be set for O3DE and non-DCC environments
|
||||
# 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?
|
||||
# it's safe to do this for dev and from ide
|
||||
if enable_o3de_pyside2:
|
||||
settings = init_o3de_pyside2(settings.DCCSI_PATH,
|
||||
settings.O3DE_BIN_PATH)
|
||||
settings = init_o3de_pyside2(settings.PATH_DCCSIG,
|
||||
settings.PATH_O3DE_BIN)
|
||||
|
||||
# now standalone we can validate the config. env, 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)
|
||||
# -------------------------------------------------------------------------
|
||||
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__
|
||||
if _MODULENAME is '__main__':
|
||||
_MODULENAME = 'DCCsi.config'
|
||||
_MODULENAME = 'DCCsi.config'
|
||||
|
||||
from azpy.constants import STR_CROSSBAR
|
||||
|
||||
@@ -508,7 +503,7 @@ if __name__ == '__main__':
|
||||
|
||||
# happy print
|
||||
_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)
|
||||
|
||||
# go ahead and run the rest of the configuration
|
||||
@@ -521,6 +516,10 @@ if __name__ == '__main__':
|
||||
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,
|
||||
@@ -549,10 +548,6 @@ if __name__ == '__main__':
|
||||
type=bool,
|
||||
required=False,
|
||||
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',
|
||||
type=bool,
|
||||
required=False,
|
||||
@@ -575,13 +570,15 @@ if __name__ == '__main__':
|
||||
if args.global_debug:
|
||||
_DCCSI_GDEBUG = True
|
||||
os.environ["DYNACONF_DCCSI_GDEBUG"] = str(_DCCSI_GDEBUG)
|
||||
if args.developer_mode:
|
||||
attach_debugger() # attempts to start 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
|
||||
|
||||
if args.developer_mode:
|
||||
_DCCSI_DEV_MODE = True
|
||||
attach_debugger() # attempts to start debugger
|
||||
|
||||
# need to do a little plumbing
|
||||
if not args.engine_path:
|
||||
args.engine_path=_O3DE_DEV
|
||||
@@ -589,7 +586,7 @@ if __name__ == '__main__':
|
||||
from azpy.constants import TAG_DIR_O3DE_BUILD_FOLDER
|
||||
args.build_folder = TAG_DIR_O3DE_BUILD_FOLDER
|
||||
if not args.project_path:
|
||||
args.project_path=_O3DE_PROJECT_PATH
|
||||
args.project_path=_PATH_O3DE_PROJECT
|
||||
|
||||
if _DCCSI_GDEBUG:
|
||||
args.enable_python = True
|
||||
@@ -597,7 +594,6 @@ if __name__ == '__main__':
|
||||
|
||||
# now standalone we can validate the config. env, settings.
|
||||
settings = get_config_settings(engine_path=args.engine_path,
|
||||
build_folder=args.build_folder,
|
||||
project_name=args.project_name,
|
||||
project_path=args.project_path,
|
||||
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('O3DE_DEV: {}'.format(settings.O3DE_DEV))
|
||||
_LOGGER.info('O3DE_O3DE_BUILD_FOLDER: {}'.format(settings.O3DE_BUILD_PATH))
|
||||
_LOGGER.info('O3DE_BUILD_PATH: {}'.format(settings.O3DE_BUILD_PATH))
|
||||
_LOGGER.info('O3DE_BIN_PATH: {}'.format(settings.O3DE_BIN_PATH))
|
||||
_LOGGER.info('O3DE_O3DE_BUILD_FOLDER: {}'.format(settings.PATH_O3DE_BUILD))
|
||||
_LOGGER.info('PATH_O3DE_BUILD: {}'.format(settings.PATH_O3DE_BUILD))
|
||||
_LOGGER.info('PATH_O3DE_BIN: {}'.format(settings.PATH_O3DE_BIN))
|
||||
|
||||
_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_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))
|
||||
except:
|
||||
pass # don't exist
|
||||
|
||||
_LOGGER.info(STR_CROSSBAR)
|
||||
_LOGGER.info('')
|
||||
|
||||
if args.enable_python:
|
||||
_LOGGER.info(STR_CROSSBAR)
|
||||
_LOGGER.info('DCCSI_PYTHON_PATH'.format(settings.DCCSI_PYTHON_PATH))
|
||||
_LOGGER.info('DCCSI_PYTHON_LIB_PATH: {}'.format(settings.DCCSI_PYTHON_LIB_PATH))
|
||||
_LOGGER.info('PATH_DCCSI_PYTHON'.format(settings.PATH_DCCSI_PYTHON))
|
||||
_LOGGER.info('PATH_DCCSI_PYTHON_LIB: {}'.format(settings.PATH_DCCSI_PYTHON_LIB))
|
||||
_LOGGER.info('DCCSI_PY_IDE'.format(settings.DCCSI_PY_IDE))
|
||||
_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(STR_CROSSBAR)
|
||||
_LOGGER.info('')
|
||||
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:
|
||||
_LOGGER.info(STR_CROSSBAR)
|
||||
# _LOGGER.info('QTFORPYTHON_PATH: {}'.format(settings.QTFORPYTHON_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('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('')
|
||||
else:
|
||||
|
||||
_LOGGER.info('Tip: add arg --enable-qt to extend the environment with O3DE Qt/PySide2 support')
|
||||
_LOGGER.info('Tip: add arg --enable-qt (-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
|
||||
|
||||
@@ -695,14 +698,9 @@ if __name__ == '__main__':
|
||||
_LOGGER.warning("Could not import 'pyside2uic'")
|
||||
_LOGGER.warning("Refer to: '< local DCCsi >\3rdParty\Python\README.txt'")
|
||||
_LOGGER.error(e)
|
||||
|
||||
_LOGGER.info('DCCsi: config.py took: {} sec'.format(time.process_time() - start))
|
||||
|
||||
# return
|
||||
sys.exit()
|
||||
# --- END -----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# --- END -----------------------------------------------------------------
|
||||
@@ -35,14 +35,14 @@ enum
|
||||
// convert from a QString into an AZStd::string
|
||||
MCORE_INLINE AZStd::string FromQtString(const QString& s)
|
||||
{
|
||||
return {s.toUtf8().data(), static_cast<size_t>(s.size())};
|
||||
return { s.toUtf8().data(), static_cast<size_t>(s.toUtf8().length()) };
|
||||
}
|
||||
|
||||
|
||||
// convert from a QString into an AZStd::string
|
||||
MCORE_INLINE void FromQtString(const QString& s, AZStd::string* result)
|
||||
{
|
||||
*result = AZStd::string{s.toUtf8().data(), static_cast<size_t>(s.size())};
|
||||
*result = AZStd::string{ s.toUtf8().data(), static_cast<size_t>(s.toUtf8().length()) };
|
||||
}
|
||||
|
||||
inline QString FromStdString(AZStd::string_view s)
|
||||
|
||||
+1
-1
@@ -219,7 +219,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user