FBX -> Scene, part 2. Code changes, file renames (#1704)
* First pass FBX -> Scene File conversion. This is the simple pass, minimizing code changes and focused on comments. Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com> * Step 1 of part 2 of the FBX -> Scene rename Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com> * Renaming FbxSceneBuilder folder to SceneBuilder Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com> * Renamed files Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com> * More FBX -> Scene Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <SceneAPI/SceneBuilder/ImportContexts/AssImpImportContexts.h>
|
||||
#include <SceneAPI/SDKWrapper/AssImpNodeWrapper.h>
|
||||
#include <SceneAPI/SceneCore/Events/ImportEventContext.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
namespace SceneAPI
|
||||
{
|
||||
namespace SceneBuilder
|
||||
{
|
||||
AssImpImportContext::AssImpImportContext(const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode)
|
||||
: m_sourceScene(sourceScene)
|
||||
, m_sourceSceneSystem(sourceSceneSystem)
|
||||
, m_sourceNode(sourceNode)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpNodeEncounteredContext::AssImpNodeEncounteredContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode)
|
||||
: AssImpImportContext(sourceScene, sourceSceneSystem, sourceNode)
|
||||
, NodeEncounteredContext(scene, currentGraphPosition, nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpNodeEncounteredContext::AssImpNodeEncounteredContext(
|
||||
Events::ImportEventContext& parent,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode)
|
||||
: AssImpImportContext(sourceScene, sourceSceneSystem, sourceNode)
|
||||
, NodeEncounteredContext(parent.GetScene(), currentGraphPosition, nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneDataPopulatedContext::AssImpSceneDataPopulatedContext(AssImpNodeEncounteredContext& parent,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& graphData, const AZStd::string& dataName)
|
||||
: AssImpImportContext(parent.m_sourceScene, parent.m_sourceSceneSystem, parent.m_sourceNode)
|
||||
, SceneDataPopulatedContextBase(parent, graphData, dataName)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneDataPopulatedContext::AssImpSceneDataPopulatedContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData, const AZStd::string& dataName)
|
||||
: AssImpImportContext(sourceScene, sourceSceneSystem, sourceNode)
|
||||
, SceneDataPopulatedContextBase(scene, currentGraphPosition, nodeNameMap, nodeData, dataName)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneNodeAppendedContext::AssImpSceneNodeAppendedContext(AssImpSceneDataPopulatedContext& parent,
|
||||
Containers::SceneGraph::NodeIndex newIndex)
|
||||
: AssImpImportContext(parent.m_sourceScene, parent.m_sourceSceneSystem, parent.m_sourceNode)
|
||||
, SceneNodeAppendedContextBase(parent.m_scene, newIndex, parent.m_nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneNodeAppendedContext::AssImpSceneNodeAppendedContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap, AssImpSDKWrapper::AssImpNodeWrapper& sourceNode)
|
||||
: AssImpImportContext(sourceScene, sourceSceneSystem, sourceNode)
|
||||
, SceneNodeAppendedContextBase(scene, currentGraphPosition, nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneAttributeDataPopulatedContext::AssImpSceneAttributeDataPopulatedContext(AssImpSceneNodeAppendedContext& parent, const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData, const Containers::SceneGraph::NodeIndex attributeNodeIndex, const AZStd::string& dataName)
|
||||
: AssImpImportContext(parent.m_sourceScene, parent.m_sourceSceneSystem, parent.m_sourceNode)
|
||||
, SceneAttributeDataPopulatedContextBase(parent, nodeData, attributeNodeIndex, dataName)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneAttributeNodeAppendedContext::AssImpSceneAttributeNodeAppendedContext(AssImpSceneAttributeDataPopulatedContext& parent, Containers::SceneGraph::NodeIndex newIndex)
|
||||
: AssImpImportContext(parent.m_sourceScene, parent.m_sourceSceneSystem, parent.m_sourceNode)
|
||||
, SceneAttributeNodeAppendedContextBase(parent, newIndex)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneNodeAddedAttributesContext::AssImpSceneNodeAddedAttributesContext(AssImpSceneNodeAppendedContext& parent)
|
||||
: AssImpImportContext(parent.m_sourceScene, parent.m_sourceSceneSystem, parent.m_sourceNode)
|
||||
, SceneNodeAddedAttributesContextBase(parent)
|
||||
{
|
||||
}
|
||||
|
||||
AssImpSceneNodeFinalizeContext::AssImpSceneNodeFinalizeContext(AssImpSceneNodeAddedAttributesContext& parent)
|
||||
: AssImpImportContext(parent.m_sourceScene, parent.m_sourceSceneSystem, parent.m_sourceNode)
|
||||
, SceneNodeFinalizeContextBase(parent)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
AssImpFinalizeSceneContext::AssImpFinalizeSceneContext(Containers::Scene& scene,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap)
|
||||
: FinalizeSceneContextBase(scene, nodeNameMap)
|
||||
, m_sourceScene(sourceScene)
|
||||
, m_sourceSceneSystem(sourceSceneSystem)
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace SceneAPI
|
||||
} // namespace SceneBuilder
|
||||
} // namespace AZ
|
||||
@@ -0,0 +1,182 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/RTTI/RTTI.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
#include <SceneAPI/SceneBuilder/ImportContexts/ImportContexts.h>
|
||||
#include <SceneAPI/SceneCore/Containers/SceneGraph.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
namespace AssImpSDKWrapper
|
||||
{
|
||||
class AssImpNodeWrapper;
|
||||
class AssImpSceneWrapper;
|
||||
}
|
||||
|
||||
namespace SceneAPI
|
||||
{
|
||||
class SceneSystem;
|
||||
namespace SceneBuilder
|
||||
{
|
||||
class RenamedNodesMap;
|
||||
|
||||
// AssImpImportContext
|
||||
// Base structure containing common data needed for all import contexts
|
||||
// Member Variables:
|
||||
// m_sourceNode - AssImp node being used for data processing.
|
||||
struct AssImpImportContext
|
||||
{
|
||||
AZ_RTTI(AssImpImportContext, "{B1076AFF-991B-423C-8D3E-D5C9230434AB}");
|
||||
|
||||
AssImpImportContext(const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode);
|
||||
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& m_sourceScene;
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& m_sourceNode;
|
||||
const SceneSystem& m_sourceSceneSystem; // Needed for unit and axis conversion
|
||||
};
|
||||
|
||||
// AssImpNodeEncounteredContext
|
||||
// Context pushed to indicate that a new AssImp Node has been found and any
|
||||
// importers that have means to process the contained data should do so
|
||||
struct AssImpNodeEncounteredContext
|
||||
: public AssImpImportContext
|
||||
, public NodeEncounteredContext
|
||||
{
|
||||
AZ_RTTI(AssImpNodeEncounteredContext, "{C2305BC5-EAEC-4515-BAD6-45E63C3FBD3D}", AssImpImportContext, NodeEncounteredContext);
|
||||
|
||||
AssImpNodeEncounteredContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode);
|
||||
|
||||
AssImpNodeEncounteredContext(Events::ImportEventContext& parent,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode);
|
||||
};
|
||||
|
||||
// AssImpSceneDataPopulatedContext
|
||||
// Context pushed to indicate that a piece of scene data has been fully
|
||||
// processed and any importers that wish to place it within the scene graph
|
||||
// may now do so.
|
||||
struct AssImpSceneDataPopulatedContext
|
||||
: public AssImpImportContext
|
||||
, public SceneDataPopulatedContextBase
|
||||
{
|
||||
AZ_RTTI(AssImpSceneDataPopulatedContext, "{888DA37E-4234-4990-AD50-E6E54AFA9C35}", AssImpImportContext, SceneDataPopulatedContextBase);
|
||||
|
||||
AssImpSceneDataPopulatedContext(AssImpNodeEncounteredContext& parent,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData,
|
||||
const AZStd::string& dataName);
|
||||
|
||||
AssImpSceneDataPopulatedContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData,
|
||||
const AZStd::string& dataName);
|
||||
};
|
||||
|
||||
// AssImpSceneNodeAppendedContext
|
||||
// Context pushed to indicate that data has been added to the scene graph.
|
||||
// Generally created due to the insertion of a node during SceneDataPopulatedContext
|
||||
// processing.
|
||||
struct AssImpSceneNodeAppendedContext
|
||||
: public AssImpImportContext
|
||||
, public SceneNodeAppendedContextBase
|
||||
{
|
||||
AZ_RTTI(AssImpSceneNodeAppendedContext, "{9C8B688E-8ECD-4EF0-9AC6-21BBCFE8F5A3}", AssImpImportContext, SceneNodeAppendedContextBase);
|
||||
|
||||
AssImpSceneNodeAppendedContext(AssImpSceneDataPopulatedContext& parent, Containers::SceneGraph::NodeIndex newIndex);
|
||||
AssImpSceneNodeAppendedContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
AssImpSDKWrapper::AssImpNodeWrapper& sourceNode);
|
||||
};
|
||||
|
||||
// AssImpSceneAttributeDataPopulatedContext
|
||||
// Context pushed to indicate that attribute data has been found and processed
|
||||
struct AssImpSceneAttributeDataPopulatedContext
|
||||
: public AssImpImportContext
|
||||
, public SceneAttributeDataPopulatedContextBase
|
||||
{
|
||||
AZ_RTTI(AssImpSceneAttributeDataPopulatedContext, "{A5EFB485-2F36-4214-972B-0EFF4EFBF33D}", AssImpImportContext, SceneAttributeDataPopulatedContextBase);
|
||||
|
||||
AssImpSceneAttributeDataPopulatedContext(AssImpSceneNodeAppendedContext& parent,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData,
|
||||
const Containers::SceneGraph::NodeIndex attributeNodeIndex,const AZStd::string& dataName);
|
||||
};
|
||||
|
||||
// AssImpSceneAttributeNodeAppendedContext
|
||||
// Context pushed to indicate that an attribute node has been added to the scene graph
|
||||
struct AssImpSceneAttributeNodeAppendedContext
|
||||
: public AssImpImportContext
|
||||
, public SceneAttributeNodeAppendedContextBase
|
||||
{
|
||||
AZ_RTTI(AssImpSceneAttributeNodeAppendedContext, "{96FDC405-2D3B-4030-A301-B3A2B5432498}", AssImpImportContext, SceneAttributeNodeAppendedContextBase);
|
||||
|
||||
AssImpSceneAttributeNodeAppendedContext(AssImpSceneAttributeDataPopulatedContext& parent, Containers::SceneGraph::NodeIndex newIndex);
|
||||
};
|
||||
|
||||
// AssImpSceneNodeAddedAttributesContext
|
||||
// Context pushed to indicate that all attribute processors have completed their
|
||||
// work for a specific data node.
|
||||
struct AssImpSceneNodeAddedAttributesContext
|
||||
: public AssImpImportContext
|
||||
, public SceneNodeAddedAttributesContextBase
|
||||
{
|
||||
AZ_RTTI(AssImpSceneNodeAddedAttributesContext, "{D305EAA5-5F16-4AAD-805D-DF07A1B355B9}", AssImpImportContext, SceneNodeAddedAttributesContextBase);
|
||||
|
||||
AssImpSceneNodeAddedAttributesContext(AssImpSceneNodeAppendedContext& parent);
|
||||
};
|
||||
|
||||
// AssImpSceneNodeFinalizeContext
|
||||
// Context pushed last after all other contexts for a scene node to allow any
|
||||
// post-processing needed for an importer.
|
||||
struct AssImpSceneNodeFinalizeContext
|
||||
: public AssImpImportContext
|
||||
, public SceneNodeFinalizeContextBase
|
||||
{
|
||||
AZ_RTTI(AssImpSceneNodeFinalizeContext, "{FD8B4AD5-3735-4D55-9455-504AB1DCA655}", AssImpImportContext, SceneNodeFinalizeContextBase);
|
||||
|
||||
AssImpSceneNodeFinalizeContext(AssImpSceneNodeAddedAttributesContext& parent);
|
||||
};
|
||||
|
||||
// AssImpFinalizeSceneContext
|
||||
// Context pushed after the scene has been fully created. This can be used to finalize pending work
|
||||
// such as resolving named links.
|
||||
struct AssImpFinalizeSceneContext
|
||||
: public FinalizeSceneContextBase
|
||||
{
|
||||
AZ_RTTI(AssImpFinalizeSceneContext, "{6B23A54A-44BF-4661-A130-6B4D06A57B9F}", FinalizeSceneContextBase);
|
||||
|
||||
AssImpFinalizeSceneContext(
|
||||
Containers::Scene& scene,
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& sourceScene,
|
||||
const SceneSystem& sourceSceneSystem,
|
||||
RenamedNodesMap& nodeNameMap);
|
||||
|
||||
const AssImpSDKWrapper::AssImpSceneWrapper& m_sourceScene;
|
||||
const SceneSystem& m_sourceSceneSystem; // Needed for unit and axis conversion
|
||||
};
|
||||
} // namespace SceneBuilder
|
||||
} // namespace SceneAPI
|
||||
} // namespace AZ
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <SceneAPI/SceneBuilder/ImportContexts/ImportContexts.h>
|
||||
#include <SceneAPI/SceneCore/Events/ImportEventContext.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
namespace SceneAPI
|
||||
{
|
||||
namespace SceneBuilder
|
||||
{
|
||||
ImportContext::ImportContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap)
|
||||
: m_scene(scene)
|
||||
, m_currentGraphPosition(currentGraphPosition)
|
||||
, m_nodeNameMap(nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
ImportContext::ImportContext(Containers::Scene& scene, RenamedNodesMap& nodeNameMap)
|
||||
: m_scene(scene)
|
||||
, m_nodeNameMap(nodeNameMap)
|
||||
{
|
||||
m_currentGraphPosition = Containers::SceneGraph::NodeIndex();
|
||||
}
|
||||
|
||||
NodeEncounteredContext::NodeEncounteredContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap)
|
||||
: ImportContext(scene, currentGraphPosition, nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
NodeEncounteredContext::NodeEncounteredContext(
|
||||
Events::ImportEventContext& parent, Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap)
|
||||
: ImportContext(parent.GetScene(), currentGraphPosition, nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
SceneDataPopulatedContextBase::SceneDataPopulatedContextBase(NodeEncounteredContext& parent,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& graphData, const AZStd::string& dataName)
|
||||
: ImportContext(parent.m_scene, parent.m_currentGraphPosition, parent.m_nodeNameMap)
|
||||
, m_graphData(graphData)
|
||||
, m_dataName(dataName)
|
||||
{
|
||||
}
|
||||
|
||||
SceneDataPopulatedContextBase::SceneDataPopulatedContextBase(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData, const AZStd::string& dataName)
|
||||
: ImportContext(scene, currentGraphPosition, nodeNameMap)
|
||||
, m_graphData(nodeData)
|
||||
, m_dataName(dataName)
|
||||
{
|
||||
}
|
||||
|
||||
SceneNodeAppendedContextBase::SceneNodeAppendedContextBase(SceneDataPopulatedContextBase& parent,
|
||||
Containers::SceneGraph::NodeIndex newIndex)
|
||||
: ImportContext(parent.m_scene, newIndex, parent.m_nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
SceneNodeAppendedContextBase::SceneNodeAppendedContextBase(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition, RenamedNodesMap& nodeNameMap)
|
||||
: ImportContext(scene, currentGraphPosition, nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
SceneAttributeDataPopulatedContextBase::SceneAttributeDataPopulatedContextBase(SceneNodeAppendedContextBase& parent,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData,
|
||||
const Containers::SceneGraph::NodeIndex attributeNodeIndex, const AZStd::string& dataName)
|
||||
: ImportContext(parent.m_scene, attributeNodeIndex, parent.m_nodeNameMap)
|
||||
, m_graphData(nodeData)
|
||||
, m_dataName(dataName)
|
||||
{
|
||||
}
|
||||
|
||||
SceneAttributeNodeAppendedContextBase::SceneAttributeNodeAppendedContextBase(SceneAttributeDataPopulatedContextBase& parent, Containers::SceneGraph::NodeIndex newIndex)
|
||||
: ImportContext(parent.m_scene, newIndex, parent.m_nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
SceneNodeAddedAttributesContextBase::SceneNodeAddedAttributesContextBase(SceneNodeAppendedContextBase& parent)
|
||||
: ImportContext(parent.m_scene, parent.m_currentGraphPosition, parent.m_nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
SceneNodeFinalizeContextBase::SceneNodeFinalizeContextBase(SceneNodeAddedAttributesContextBase& parent)
|
||||
: ImportContext(parent.m_scene, parent.m_currentGraphPosition, parent.m_nodeNameMap)
|
||||
{
|
||||
}
|
||||
|
||||
FinalizeSceneContextBase::FinalizeSceneContextBase(Containers::Scene& scene, RenamedNodesMap& nodeNameMap)
|
||||
: ImportContext(scene, nodeNameMap)
|
||||
{
|
||||
}
|
||||
} // namespace SceneAPI
|
||||
} // namespace SceneBuilder
|
||||
} // namespace AZ
|
||||
@@ -0,0 +1,179 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/RTTI/RTTI.h>
|
||||
#include <AzCore/std/string/string.h>
|
||||
#include <SceneAPI/SceneCore/Events/CallProcessorBus.h>
|
||||
#include <SceneAPI/SceneCore/Containers/SceneGraph.h>
|
||||
#include <SceneAPI/SceneCore/Containers/Scene.h>
|
||||
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
namespace SceneAPI
|
||||
{
|
||||
namespace Containers
|
||||
{
|
||||
class Scene;
|
||||
}
|
||||
|
||||
namespace DataTypes
|
||||
{
|
||||
class IGraphObject;
|
||||
}
|
||||
|
||||
namespace Events
|
||||
{
|
||||
class ImportEventContext;
|
||||
}
|
||||
|
||||
namespace SceneBuilder
|
||||
{
|
||||
class RenamedNodesMap;
|
||||
|
||||
// ImportContext
|
||||
// Base structure containing common data needed for all import contexts
|
||||
struct ImportContext
|
||||
: public Events::ICallContext
|
||||
{
|
||||
AZ_RTTI(ImportContext, "{68E546D5-9B79-4293-AD37-4A4BA688892F}", Events::ICallContext);
|
||||
|
||||
ImportContext(Containers::Scene& scene, Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap);
|
||||
ImportContext(Containers::Scene& scene, RenamedNodesMap& nodeNameMap);
|
||||
|
||||
Containers::Scene& m_scene;
|
||||
Containers::SceneGraph::NodeIndex m_currentGraphPosition;
|
||||
RenamedNodesMap& m_nodeNameMap; // Map of the nodes that have received a new name.
|
||||
};
|
||||
|
||||
// NodeEncounteredContext
|
||||
// Context pushed to indicate that a new Node has been found and any
|
||||
// importers that have means to process the contained data should do so
|
||||
// Member Variables:
|
||||
// m_createdData - out container that importers must add their created data
|
||||
// to.
|
||||
struct NodeEncounteredContext
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(NodeEncounteredContext, "{40C31D76-7101-4ACD-8849-0D6D0AF62855}", ImportContext);
|
||||
|
||||
NodeEncounteredContext(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap);
|
||||
|
||||
NodeEncounteredContext(Events::ImportEventContext& parent,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap);
|
||||
|
||||
AZStd::vector<AZStd::shared_ptr<DataTypes::IGraphObject>> m_createdData;
|
||||
};
|
||||
|
||||
// SceneDataPopulatedContextBase
|
||||
// Context pushed to indicate that a piece of scene data has been fully
|
||||
// processed and any importers that wish to place it within the scene graph
|
||||
// may now do so.
|
||||
// Member Variables:
|
||||
// m_graphData - the piece of data that should be inserted in the graph
|
||||
// m_dataName - the name that should be used as the basis for the scene node
|
||||
// name
|
||||
struct SceneDataPopulatedContextBase
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(SceneDataPopulatedContextBase, "{5F4CE8D2-EEAC-49F7-8065-0B6372162D6F}", ImportContext);
|
||||
|
||||
SceneDataPopulatedContextBase(NodeEncounteredContext& parent,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData,
|
||||
const AZStd::string& dataName);
|
||||
|
||||
SceneDataPopulatedContextBase(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition,
|
||||
RenamedNodesMap& nodeNameMap,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData, const AZStd::string& dataName);
|
||||
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& m_graphData;
|
||||
const AZStd::string m_dataName;
|
||||
};
|
||||
|
||||
// SceneNodeAppendedContextBase
|
||||
// Context pushed to indicate that data has been added to the scene graph.
|
||||
// Generally created due to the insertion of a node during SceneDataPopulatedContextBase
|
||||
// processing.
|
||||
struct SceneNodeAppendedContextBase
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(SceneNodeAppendedContextBase, "{0A69FB6C-2B1B-46E7-AEC3-C4B8ABBFDD69}", ImportContext);
|
||||
|
||||
SceneNodeAppendedContextBase(SceneDataPopulatedContextBase& parent, Containers::SceneGraph::NodeIndex newIndex);
|
||||
SceneNodeAppendedContextBase(Containers::Scene& scene,
|
||||
Containers::SceneGraph::NodeIndex currentGraphPosition, RenamedNodesMap& nodeNameMap);
|
||||
};
|
||||
|
||||
// SceneAttributeDataPopulatedContextBase
|
||||
// Context pushed to indicate that attribute data has been found and processed
|
||||
struct SceneAttributeDataPopulatedContextBase
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(SceneAttributeDataPopulatedContextBase, "{DA133E14-0770-435B-9A4E-38679367F56C}", ImportContext);
|
||||
|
||||
SceneAttributeDataPopulatedContextBase(SceneNodeAppendedContextBase& parent,
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& nodeData,
|
||||
const Containers::SceneGraph::NodeIndex attributeNodeIndex, const AZStd::string& dataName);
|
||||
|
||||
const AZStd::shared_ptr<DataTypes::IGraphObject>& m_graphData;
|
||||
const AZStd::string m_dataName;
|
||||
};
|
||||
|
||||
// SceneAttributeNodeAppendedContextBase
|
||||
// Context pushed to indicate that an attribute node has been added to the scene graph
|
||||
struct SceneAttributeNodeAppendedContextBase
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(SceneAttributeNodeAppendedContextBase, "{8A382A1E-CFE7-47D2-BA5B-CFDF1FB9F03D}", ImportContext);
|
||||
|
||||
SceneAttributeNodeAppendedContextBase(SceneAttributeDataPopulatedContextBase& parent,
|
||||
Containers::SceneGraph::NodeIndex newIndex);
|
||||
};
|
||||
|
||||
// SceneNodeAddedAttributesContextBase
|
||||
// Context pushed to indicate that all attribute processors have completed their
|
||||
// work for a specific data node.
|
||||
struct SceneNodeAddedAttributesContextBase
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(SceneNodeAddedAttributesContextBase, "{65B97E48-16A0-4BBD-B364-CFDA9E3600B6}", ImportContext);
|
||||
|
||||
SceneNodeAddedAttributesContextBase(SceneNodeAppendedContextBase& parent);
|
||||
};
|
||||
|
||||
// SceneNodeFinalizeContextBase
|
||||
// Context pushed last after all other contexts for a scene node to allow any
|
||||
// post-processing needed for an importer.
|
||||
struct SceneNodeFinalizeContextBase
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(SceneNodeFinalizeContextBase, "{F2C7D1BC-8065-423E-9212-241EB426A2BB}", ImportContext);
|
||||
|
||||
SceneNodeFinalizeContextBase(SceneNodeAddedAttributesContextBase& parent);
|
||||
};
|
||||
|
||||
// FinalizeSceneContextBase
|
||||
// Context pushed after the scene has been fully created. This can be used to finalize pending work
|
||||
// such as resolving named links.
|
||||
struct FinalizeSceneContextBase
|
||||
: public ImportContext
|
||||
{
|
||||
AZ_RTTI(FinalizeSceneContextBase, "{91C54F51-9B4D-4C61-956C-9D530725D737}", ImportContext);
|
||||
|
||||
FinalizeSceneContextBase(Containers::Scene& scene, RenamedNodesMap& nodeNameMap);
|
||||
};
|
||||
} // namespace SceneBuilder
|
||||
} // namespace SceneAPI
|
||||
} // namespace AZ
|
||||
|
||||
Reference in New Issue
Block a user