Пример #1
0
        public static bool Go(NodeEvents evts, List <IQKnodeModule> modules)
        {
            foreach (IQKnodeModule curr in modules)
            {
                try
                {
                    if (!curr.Init(evts))
                    {
                        Debug.LogError(string.Format("模块 {0} 初始化失败!", curr.ModuleName));
                        return(false);
                    }
                }
                catch (Exception ex)
                {
                    Debug.LogError(string.Format("模块 {0} 初始化失败! {1}", curr.ModuleName, ex.ToString()));
                    return(false);
                }
            }

            return(true);
        }
 public static void PollEvents(Event e)
 {
     NodeEvents.PollEvents(e);
 }
 public static void Release(object obj)
 {
     NodeEvents.Release(obj);
 }
 public static void SetSelected(object obj)
 {
     NodeEvents.SetSelected(obj);
 }
Пример #5
0
            void doNodeEvents(NodeEvents nodeEvent, Option <TimelineNode> timelineNodeOpt, float mousePositionSeconds)
            {
                var snappingEnabled = !Event.current.shift && snapping;

                //Cleaning up nodes list from nodes without element.element
                funNodes = funNodes.Where(funNode => funNode.element.element != null).ToList();

                switch (nodeEvent)
                {
                case NodeEvents.RemoveSelected:
                    removeoAllSelectedNodes();
                    selectedNodesList.Clear();
                    importTimeline();
                    break;

                case NodeEvents.SelectAll:
                    selectedNodesList.Clear();
                    foreach (var node in funNodes)
                    {
                        selectedNodesList.Add(node);
                    }
                    break;

                case NodeEvents.ResizeStart:
                    foreach (var timelineNode in timelineNodeOpt)
                    {
                        removeRootNodeIfHasNoElement();
                        manageSelectedNode(timelineNode, Event.current);
                        rootSelectedNodeOpt = timelineNodeOpt;
                        resizeNodeStart     = true;
                    }
                    break;

                case NodeEvents.ResizeEnd:
                    foreach (var timelineNode in timelineNodeOpt)
                    {
                        removeRootNodeIfHasNoElement();
                        manageSelectedNode(timelineNode, Event.current);
                        rootSelectedNodeOpt = timelineNodeOpt;
                        resizeNodeEnd       = true;
                    }
                    break;

                case NodeEvents.NodeClicked_MB1:
                    foreach (var timelineNode in timelineNodeOpt)
                    {
                        removeRootNodeIfHasNoElement();
                        timeClickOffset     = timelineNode.startTime - mousePositionSeconds;
                        dragNode            = true;
                        rootSelectedNodeOpt = timelineNodeOpt;
                        manageSelectedNode(timelineNode, Event.current);
                    }

                    break;

                case NodeEvents.NodeClicked_MB2:
                    foreach (var timelineNode in timelineNodeOpt)
                    {
                        removeRootNodeIfHasNoElement();
                        rootSelectedNodeOpt = timelineNodeOpt;
                        manageSelectedNode(timelineNode, Event.current);
                        var genericMenu = new GenericMenu();
                        genericMenu.AddItem(new GUIContent("Remove"), false, removeSelectedNode, timelineNode);
                        genericMenu.AddItem(new GUIContent("Unselect"), false, deselect, timelineNode);
                        genericMenu.ShowAsContext();
                    }
                    break;

                case NodeEvents.Drag:
                    if (rootSelectedNodeOpt.valueOut(out var rootSelected))
                    {
                        if (resizeNodeStart)
                        {
                            var selectedNodeEnd = rootSelected.getEnd();
                            if (selectedNodeEnd < mousePositionSeconds)
                            {
                                break;
                            }

                            rootSelected.setStartTime(mousePositionSeconds);

                            if (rootSelected.startTime > 0 && !isStartSnapped)
                            {
                                rootSelected.setDuration(selectedNodeEnd - rootSelected.startTime);
                            }

                            if (snappingEnabled)
                            {
                                snapStart(rootSelected, selectedNodeEnd);
                            }

                            foreach (var selected in selectedNodesList)
                            {
                                if (selected != rootSelected)
                                {
                                    var nodeEnd = selected.getEnd();
                                    selected.setStartTime(rootSelected.startTime);
                                    selected.setDuration(nodeEnd - selected.startTime);
                                }
                            }
                        }

                        if (resizeNodeEnd)
                        {
                            if (rootSelected.startTime > mousePositionSeconds)
                            {
                                break;
                            }

                            rootSelected.setDuration(mousePositionSeconds - rootSelected.startTime);

                            if (snappingEnabled)
                            {
                                snapEnd(rootSelected);
                            }

                            foreach (var node in selectedNodesList)
                            {
                                if (node != rootSelected)
                                {
                                    node.setDuration(rootSelected.duration - (node.startTime - rootSelected.startTime));
                                }
                                updateLinkedNodeStartTimes(node);
                            }
                            timelineVisuals.recalculateTimelineWidth(funNodes);
                        }

                        //Draging the node
                        if (dragNode && !resizeNodeStart && !resizeNodeEnd || resizeNodeEnd && resizeNodeStart)
                        {
                            foreach (var selected in selectedNodesList)
                            {
                                diffList.Add(selected.startTime - rootSelected.startTime);
                            }

                            var clampLimit =
                                selectedNodesList.find(node => node.startTime <= 0).isSome
                    ? rootSelected.startTime
                    : 0;

                            rootSelected.setStartTime(mousePositionSeconds + timeClickOffset, clampLimit);

                            isEndSnapped   = false;
                            isStartSnapped = false;

                            if (snappingEnabled)
                            {
                                snapDrag(rootSelected, selectedNodesList);
                            }

                            //setting multiselected nodes starttimes
                            for (var i = 0; i < selectedNodesList.Count; i++)
                            {
                                var node = selectedNodesList[i];
                                node.setStartTime(rootSelected.startTime + diffList[i]);

                                updateLinkedNodeStartTimes(node);
                            }

                            diffList.Clear();

                            if (Event.current.mousePosition.y > rootSelected.channel * 20 + 25)
                            {
                                foreach (var node in selectedNodesList)
                                {
                                    updateLinkedNodeChannels(node, _ => _.increaseChannel());
                                    if (node == rootSelected)
                                    {
                                        node.unlink();
                                    }
                                }
                            }

                            if (Event.current.mousePosition.y < rootSelected.channel * 20 - 5 &&
                                selectedNodesList.find(node => node.channel == 0).isNone)
                            {
                                foreach (var node in selectedNodesList)
                                {
                                    updateLinkedNodeChannels(node, _ => _.decreaseChannel());
                                    if (node == rootSelected)
                                    {
                                        node.unlink();
                                    }
                                }
                            }

                            void updateLinkedNodeChannels(TimelineNode node, Act <TimelineNode> changeChannel)
                            {
                                getLinkedRightNode(node, node).voidFold(
                                    () => { },
                                    rightNode => { updateLinkedNodeChannels(rightNode, changeChannel); }
                                    );

                                changeChannel(node);
                            }
                        }
                    }
                    break;

                case NodeEvents.DeselectAll:
                    if (!dragNode && !resizeNodeStart && !resizeNodeEnd)
                    {
                        selectedNodesList.Clear();
                    }
                    break;

                case NodeEvents.Refresh:
                    if (dragNode || resizeNodeEnd || resizeNodeStart)
                    {
                        exportTimelineToTweenManager();
                        importTimeline();
                        timelineVisuals.recalculateTimelineWidth(funNodes);
                    }

                    unlinkNodesWithBrokenLink();
                    isEndSnapped     = false;
                    isStartSnapped   = false;
                    dragNode         = false;
                    resizeNodeStart  = false;
                    resizeNodeEnd    = false;
                    nodeSnappedToOpt = F.none_;
                    break;
                }
            }