コード例 #1
0
ファイル: ItemDeletes.cs プロジェクト: voidALPHA/cgc_viz
        public override void DoUndo()
        {
            var respawn = JsonConvert.DeserializeObject <ChainNode>(json,
                                                                    HaxxisPackage.GetSerializationSettings(TypeNameHandling.All));

            if (respawn == null)
            {
                throw new InvalidOperationException("Deserializer could not respawn node!");
            }
            respawn.InitializeSchema();
            respawn.JsonId        = jsonid;
            respawn.SuppressUndos = true;

            var groupView =
                ChainView.Instance.RootGroupView.RecursiveGroupViewsEnumerable.First(
                    cgv => cgv.BackgroundPanel.Draggable.DragID == groupDragId);

            groupView.Group.AddNode(respawn, false);
            var nodeView = groupView.NodeViewsEnumerable.First(cnv => cnv.ChainNode == respawn);

            nodeView.transform.position = initialLocation;
            nodeView.Draggable.DragID   = nodeDragId;

            respawn.SuppressUndos = false;
            JobManager.Instance.StartJob(RelinkRouterJob(respawn), jobName: "Relink Routers", maxExecutionsPerFrame: 1);
        }
コード例 #2
0
ファイル: ItemDeletes.cs プロジェクト: voidALPHA/cgc_viz
        public NodeDelete(ChainNode deletedNode)
        {
            var recievingGroup =
                ChainView.Instance.RootGroupView.RecursiveGroupViewsEnumerable.First(
                    cgv => cgv.Group.Nodes.Contains(deletedNode));
            var chainNodeView = recievingGroup.NodeViewsEnumerable.First(cnv => cnv.ChainNode == deletedNode);

            jsonid          = deletedNode.JsonId;
            nodeDragId      = chainNodeView.Draggable.DragID;
            groupDragId     = recievingGroup.BackgroundPanel.Draggable.DragID;
            initialLocation = chainNodeView.transform.position;

            try
            {
                var parent = StateRouter.NodeParents[deletedNode];
                parentJsonID = parent.Node.JsonId;
                parentStates = parent.States.Select(s => s.Name).ToArray();
            }
            catch (KeyNotFoundException)
            {
                parentJsonID = -1;
                parentStates = new string[] { };
            }
            router = new Dictionary <string, int[]>();
            foreach (var state in deletedNode.Router.SelectionStatesEnumerable)
            {
                router[state.Name] = state.TargetsEnumerable.Select(cn => cn.JsonId).ToArray();
            }
            deletedNode.Router.UntargetAllTargets();
            deletedNode.RequestUntargeting();

            json = JsonConvert.SerializeObject(deletedNode, Formatting.Indented,
                                               HaxxisPackage.GetSerializationSettings(TypeNameHandling.All));
        }
コード例 #3
0
        public void Fix()
        {
            if (string.IsNullOrEmpty(NewTypeString))
            {
                Debug.Log("NewTypeString is not valid.");
                return;
            }

            var foundType = Type.GetType(NewTypeString);

            if (foundType == null)
            {
                Debug.Log("Could not find type " + NewTypeString + ".");
                return;
            }

            var jObject = JToken as JObject;

            if (jObject == null)
            {
                Debug.Log("jObject null");
                return;
            }


            jObject.Property("$type").Value = foundType.ShortAssemblyQualifiedName();


            var serializer = JsonSerializer.Create(HaxxisPackage.GetSerializationSettings());

            var item = serializer.Deserialize <Step>(jObject.CreateReader());

            RequestReplacement(item);
        }
コード例 #4
0
        private void HandleNodeViewDuplicationRequested(ChainNodeView nodeView, bool recurse)
        {
            var settings = HaxxisPackage.GetSerializationSettings(TypeNameHandling.All);

            var originalWrapper = new NodeDupeSerializationWrapper(nodeView.ChainNode, ChainView.Instance.GetNodeViewModels(nodeView.ChainNode, recurse));

            var wrapperJson = JsonConvert.SerializeObject(originalWrapper, Formatting.Indented, settings);

            var duplicateWrapper = JsonConvert.DeserializeObject <NodeDupeSerializationWrapper>(wrapperJson, settings);

            // Should this go in Group.AddNode?
            duplicateWrapper.Node.InitializeSchema();

            if (!recurse)
            {
                duplicateWrapper.Node.Router.UntargetAllTargets();
            }

            Group.AddNode(duplicateWrapper.Node, recurse: recurse, isTransfer: false);

            foreach (var vm in duplicateWrapper.ViewModels)
            {
                vm.Position += new Vector3(20.0f, -20.0f, 0.0f);
            }

            ChainView.Instance.SetNodeViewModels(duplicateWrapper.ViewModels);

            BoundsDirty = true;
        }
コード例 #5
0
        private void HandleStepDuplicationRequested(Step step)
        {
            var settings = HaxxisPackage.GetSerializationSettings(TypeNameHandling.All);

            var json = JsonConvert.SerializeObject(step, Formatting.Indented, settings);
            var dupe = JsonConvert.DeserializeObject <Step>(json, settings);

            AddTarget(dupe);
        }
コード例 #6
0
        private void UpdateNameText()
        {
            var packageName = "unnamed";

            if (!string.IsNullOrEmpty(LoadedPackagePath))
            {
                packageName = HaxxisPackage.GetRelativePath(LoadedPackagePath);
            }

            FilenameTextComponent.text = packageName == ""?"External Path: " + LoadedPackagePath : packageName;
        }
コード例 #7
0
        public void RefreshDirtyState()
        {
            if (ChainView.Instance.IsBusy)
            {
                return;
            }

            if (TimelineViewBehaviour.Instance == null)
            {
                return;
            }

            if (TimelineViewBehaviour.Instance.Timeline.IsBusy)
            {
                return;
            }

            if (HaxxisGlobalSettings.Instance.IsVgsJob == true)
            {
                return;
            }

            if (HaxxisGlobalSettings.Instance.DisableEditor == true)
            {
                return;
            }

            if (string.IsNullOrEmpty(LoadedPackagePath))
            {
                var hasChildren = GroupViews.Any() || NodeViews.Any();

                DirtyIndicatorComponent.gameObject.SetActive(hasChildren);

                return;
            }

            try
            {
                ChainGroup.SerializingGroup = Group;

                var hp = ChainView.GetHaxxisPackageForGroupView(this);

                var hasChanged = HaxxisPackage.IsChanged(hp, LoadedPackagePath);

                DirtyIndicatorComponent.gameObject.SetActive(hasChanged);
            }
            finally
            {
                ChainGroup.SerializingGroup = null;
            }
        }