| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include <AzCore/Serialization/SerializeContext.h>
- #include <GraphCanvas/Components/GridBus.h>
- #include <GraphCanvas/Components/SceneBus.h>
- #include <GraphCanvas/Components/VisualBus.h>
- #include "CreateNodeMimeEvent.h"
- #include "ScriptCanvas/Bus/RequestBus.h"
- namespace ScriptCanvasEditor
- {
- ////////////////////////
- // CreateNodeMimeEvent
- ////////////////////////
- void CreateNodeMimeEvent::Reflect(AZ::ReflectContext* reflectContext)
- {
- AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(reflectContext);
- if (serializeContext)
- {
- serializeContext->Class<CreateNodeMimeEvent, GraphCanvas::CreateSplicingNodeMimeEvent>()
- ->Version(0)
- ;
- }
- }
- const ScriptCanvasEditor::NodeIdPair& CreateNodeMimeEvent::GetCreatedPair() const
- {
- return m_nodeIdPair;
- }
-
- bool CreateNodeMimeEvent::ExecuteEvent(const AZ::Vector2&, AZ::Vector2& sceneDropPosition, const AZ::EntityId& graphCanvasGraphId)
- {
- ScriptCanvas::ScriptCanvasId scriptCanvasId;
- GeneralRequestBus::BroadcastResult(scriptCanvasId, &GeneralRequests::GetScriptCanvasId, graphCanvasGraphId);
- if (!scriptCanvasId.IsValid() || !graphCanvasGraphId.IsValid())
- {
- return false;
- }
- m_nodeIdPair = CreateNode(scriptCanvasId);
- if (m_nodeIdPair.m_graphCanvasId.IsValid() && m_nodeIdPair.m_scriptCanvasId.IsValid())
- {
- m_createdNodeId = m_nodeIdPair.m_graphCanvasId;
- GraphCanvas::SceneRequestBus::Event(graphCanvasGraphId, &GraphCanvas::SceneRequests::AddNode, m_nodeIdPair.m_graphCanvasId, sceneDropPosition, false);
- GraphCanvas::SceneMemberUIRequestBus::Event(m_nodeIdPair.m_graphCanvasId, &GraphCanvas::SceneMemberUIRequests::SetSelected, true);
- ScriptCanvasEditor::NodeCreationNotificationBus::Event(scriptCanvasId, &ScriptCanvasEditor::NodeCreationNotifications::OnGraphCanvasNodeCreated, m_nodeIdPair.m_graphCanvasId);
- AZ::EntityId gridId;
- GraphCanvas::SceneRequestBus::EventResult(gridId, graphCanvasGraphId, &GraphCanvas::SceneRequests::GetGrid);
- AZ_Assert(gridId.IsValid(), "Grid must be valid, graphCanvasGraphId is likely incorrect");
- AZ::Vector2 offset;
- GraphCanvas::GridRequestBus::EventResult(offset, gridId, &GraphCanvas::GridRequests::GetMinorPitch);
- sceneDropPosition += offset;
- return true;
- }
- else
- {
- if (m_nodeIdPair.m_graphCanvasId.IsValid())
- {
- AZ::ComponentApplicationBus::Broadcast(&AZ::ComponentApplicationBus::Events::DeleteEntity, m_nodeIdPair.m_graphCanvasId);
- }
- if (m_nodeIdPair.m_scriptCanvasId.IsValid())
- {
- AZ::ComponentApplicationBus::Broadcast(&AZ::ComponentApplicationBus::Events::DeleteEntity, m_nodeIdPair.m_scriptCanvasId);
- }
- }
- return false;
- }
- AZ::EntityId CreateNodeMimeEvent::CreateSplicingNode(const AZ::EntityId& graphCanvasGraphId)
- {
- ScriptCanvas::ScriptCanvasId scriptCanvasId;
- GeneralRequestBus::BroadcastResult(scriptCanvasId, &GeneralRequests::GetScriptCanvasId, graphCanvasGraphId);
- ScriptCanvasEditor::NodeIdPair idPair = CreateNode(scriptCanvasId);
- if (idPair.m_graphCanvasId.IsValid() && idPair.m_scriptCanvasId.IsValid())
- {
- return idPair.m_graphCanvasId;
- }
- return AZ::EntityId();
- }
- ///////////////////////////////////
- // SpecializedCreateNodeMimeEvent
- ///////////////////////////////////
- void SpecializedCreateNodeMimeEvent::Reflect(AZ::ReflectContext* reflectContext)
- {
- AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(reflectContext);
- if (serializeContext)
- {
- serializeContext->Class<SpecializedCreateNodeMimeEvent, GraphCanvas::GraphCanvasMimeEvent>()
- ->Version(0)
- ;
- }
- }
- /////////////////////////////
- // MultiCreateNodeMimeEvent
- /////////////////////////////
- void MultiCreateNodeMimeEvent::Reflect(AZ::ReflectContext* reflectContext)
- {
- AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(reflectContext);
- if (serializeContext)
- {
- serializeContext->Class<MultiCreateNodeMimeEvent, SpecializedCreateNodeMimeEvent>()
- ->Version(0)
- ;
- }
- }
- }
|