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); }
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)); }
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); }
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; }
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); }
private void UpdateNameText() { var packageName = "unnamed"; if (!string.IsNullOrEmpty(LoadedPackagePath)) { packageName = HaxxisPackage.GetRelativePath(LoadedPackagePath); } FilenameTextComponent.text = packageName == ""?"External Path: " + LoadedPackagePath : packageName; }
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; } }