private void RoomObjectsTree_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Delete) { UndertaleRoom room = this.DataContext as UndertaleRoom; UndertaleObject selectedObj = ObjectEditor.Content as UndertaleObject; if (selectedObj is UndertaleRoom.Background) { UndertaleRoom.Background bg = selectedObj as UndertaleRoom.Background; bg.Enabled = false; bg.BackgroundDefinition = null; ObjectEditor.Content = null; } else if (selectedObj is UndertaleRoom.View) { UndertaleRoom.View view = selectedObj as UndertaleRoom.View; view.Enabled = false; ObjectEditor.Content = null; } else if (selectedObj is UndertaleRoom.Tile) { UndertaleRoom.Tile tile = selectedObj as UndertaleRoom.Tile; room.Tiles.Remove(tile); ObjectEditor.Content = null; } else if (selectedObj is UndertaleRoom.GameObject) { UndertaleRoom.GameObject gameObj = selectedObj as UndertaleRoom.GameObject; room.GameObjects.Remove(gameObj); ObjectEditor.Content = null; } } }
private void Canvas_DragOver(object sender, DragEventArgs e) { UndertaleObject sourceItem = e.Data.GetData(e.Data.GetFormats()[e.Data.GetFormats().Length - 1]) as UndertaleObject; // TODO: make this more reliable e.Effects = e.AllowedEffects.HasFlag(DragDropEffects.Link) && sourceItem != null && (sourceItem is UndertaleGameObject || sourceItem is UndertalePath) ? DragDropEffects.Link : DragDropEffects.None; e.Handled = true; }
private void Canvas_Drop(object sender, DragEventArgs e) { UndertaleObject sourceItem = e.Data.GetData(e.Data.GetFormats()[e.Data.GetFormats().Length - 1]) as UndertaleObject; e.Effects = e.AllowedEffects.HasFlag(DragDropEffects.Link) && sourceItem != null && (sourceItem is UndertaleGameObject || sourceItem is UndertalePath) ? DragDropEffects.Link : DragDropEffects.None; if (e.Effects == DragDropEffects.Link) { if (sourceItem is UndertaleGameObject) { UndertaleGameObject droppedObject = sourceItem as UndertaleGameObject; var mousePos = e.GetPosition(RoomGraphics); UndertaleRoom room = this.DataContext as UndertaleRoom; var obj = new UndertaleRoom.GameObject() { X = (int)mousePos.X, Y = (int)mousePos.Y, ObjectDefinition = droppedObject, InstanceID = (Application.Current.MainWindow as MainWindow).Data.GeneralInfo.LastObj++ }; room.GameObjects.Add(obj); SelectObject(obj); } if (sourceItem is UndertalePath) { PreviewPath = sourceItem as UndertalePath; } } e.Handled = true; }
private void TreeView_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { DragDropEffects effects = DragDropEffects.Move | DragDropEffects.Link; UndertaleObject draggedItem = Highlighted as UndertaleObject; if (draggedItem != null) { DataObject data = new DataObject(draggedItem); //data.SetText(draggedItem.ToString()); /*if (draggedItem is UndertaleEmbeddedTexture) * { * UndertaleEmbeddedTexture tex = draggedItem as UndertaleEmbeddedTexture; * MemoryStream ms = new MemoryStream(tex.TextureData.TextureBlob); * PngBitmapDecoder decoder = new PngBitmapDecoder(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); * data.SetImage(decoder.Frames[0]); * Debug.WriteLine("PNG data attached"); * effects |= DragDropEffects.Copy; * }*/ DragDrop.DoDragDrop(MainTree, data, effects); } } }
private void SelectObject(UndertaleObject obj) { // TODO: This sometimes fails to open objects in non-expanded tree // Note that this prefers to select the object inside a layer than the 'floating' one in GameObjects foreach (var child in (RoomObjectsTree.Items[0] as TreeViewItem).Items) { foreach (var layer in (child as TreeViewItem).Items) { var layer_twi = (child as TreeViewItem).ItemContainerGenerator.ContainerFromItem(layer) as TreeViewItem; if (layer_twi == null) { continue; } var obj_twi = layer_twi.ItemContainerGenerator.ContainerFromItem(obj) as TreeViewItem; if (obj_twi != null) { obj_twi.BringIntoView(); obj_twi.Focus(); return; } } } foreach (var child in (RoomObjectsTree.Items[0] as TreeViewItem).Items) { var twi = (child as TreeViewItem).ItemContainerGenerator.ContainerFromItem(obj) as TreeViewItem; if (twi != null) { twi.BringIntoView(); twi.Focus(); return; } } }
private void TextBox_DragOver(object sender, DragEventArgs e) { UndertaleObject sourceItem = e.Data.GetData(e.Data.GetFormats()[0]) as UndertaleObject; e.Effects = GroupID == 0 && e.AllowedEffects.HasFlag(DragDropEffects.Link) && sourceItem != null && sourceItem.GetType() == typeof(UndertaleEmbeddedAudio) ? DragDropEffects.Link : DragDropEffects.None; e.Handled = true; }
private void TextBox_Drop(object sender, DragEventArgs e) { UndertaleObject sourceItem = e.Data.GetData(e.Data.GetFormats()[0]) as UndertaleObject; e.Effects = e.AllowedEffects.HasFlag(DragDropEffects.Link) && sourceItem != null && sourceItem.GetType() == ObjectType ? DragDropEffects.Link : DragDropEffects.None; if (e.Effects == DragDropEffects.Link) { ObjectReference = sourceItem; } e.Handled = true; }
private void SelectObject(UndertaleObject obj) { foreach (var child in RoomObjectsTree.Items) { var twi = (child as TreeViewItem).ItemContainerGenerator.ContainerFromItem(obj) as TreeViewItem; if (twi != null) { twi.Focus(); } } }
private void MainTree_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Delete) { if (Selected != null && Selected is UndertaleObject) { UndertaleObject obj = Selected as UndertaleObject; DeleteItem(obj); } } }
private TreeViewItem GetTreeViewItemFor(UndertaleObject obj) { foreach (var child in (MainTree.Items[0] as TreeViewItem).Items) { var twi = (child as TreeViewItem).ItemContainerGenerator.ContainerFromItem(obj) as TreeViewItem; if (twi != null) { return(twi); } } return(null); }
private void Canvas_Drop(object sender, DragEventArgs e) { UndertaleObject sourceItem = e.Data.GetData(e.Data.GetFormats()[e.Data.GetFormats().Length - 1]) as UndertaleObject; e.Effects = e.AllowedEffects.HasFlag(DragDropEffects.Link) && sourceItem != null && (sourceItem is UndertaleGameObject || sourceItem is UndertalePath) ? DragDropEffects.Link : DragDropEffects.None; if (e.Effects == DragDropEffects.Link) { if (sourceItem is UndertaleBackground) { } else if (sourceItem is UndertaleGameObject) { UndertaleGameObject droppedObject = sourceItem as UndertaleGameObject; var mousePos = e.GetPosition(RoomGraphics); UndertaleRoom room = this.DataContext as UndertaleRoom; UndertaleRoom.Layer layer = ObjectEditor.Content as UndertaleRoom.Layer; if ((Application.Current.MainWindow as MainWindow).IsGMS2 == Visibility.Visible && layer == null) { MessageBox.Show("Must have a layer selected", "UndertaleModTool", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (layer != null && layer.InstancesData == null) { MessageBox.Show("Must be on an instances layer", "UndertaleModTool", MessageBoxButton.OK, MessageBoxImage.Error); return; } var obj = new UndertaleRoom.GameObject() { X = (int)mousePos.X, Y = (int)mousePos.Y, ObjectDefinition = droppedObject, InstanceID = (Application.Current.MainWindow as MainWindow).Data.GeneralInfo.LastObj++ }; room.GameObjects.Add(obj); if (layer != null) { layer.InstancesData.Instances.Add(obj); } SelectObject(obj); } if (sourceItem is UndertalePath) { PreviewPath = sourceItem as UndertalePath; } } e.Handled = true; (this.DataContext as UndertaleRoom)?.SetupRoom(); }
public void Command_Copy(object sender, ExecutedRoutedEventArgs e) { UndertaleObject selectedObj = ObjectEditor.Content as UndertaleObject; if (selectedObj != null) { Debug.WriteLine("Copy"); /*Clipboard.Clear(); * Clipboard.SetDataObject(new DataObject(selectedObj));*/ copied = selectedObj; } }
private void TreeView_DragOver(object sender, DragEventArgs e) { UndertaleObject sourceItem = e.Data.GetData(e.Data.GetFormats()[e.Data.GetFormats().Length - 1]) as UndertaleObject; // TODO: make this more reliable foreach (var s in e.Data.GetFormats()) { Debug.WriteLine(s); } TreeViewItem targetTreeItem = VisualUpwardSearch <TreeViewItem>(e.OriginalSource as UIElement); UndertaleObject targetItem = targetTreeItem.DataContext as UndertaleObject; e.Effects = e.AllowedEffects.HasFlag(DragDropEffects.Move) && sourceItem != null && targetItem != null && sourceItem != targetItem && sourceItem.GetType() == targetItem.GetType() ? DragDropEffects.Move : DragDropEffects.None; e.Handled = true; }
private void TreeView_Drop(object sender, DragEventArgs e) { UndertaleObject sourceItem = e.Data.GetData(e.Data.GetFormats()[e.Data.GetFormats().Length - 1]) as UndertaleObject; TreeViewItem targetTreeItem = VisualUpwardSearch <TreeViewItem>(e.OriginalSource as UIElement); UndertaleObject targetItem = targetTreeItem.DataContext as UndertaleObject; e.Effects = e.AllowedEffects.HasFlag(DragDropEffects.Move) && sourceItem != null && targetItem != null && sourceItem != targetItem && sourceItem.GetType() == targetItem.GetType() ? DragDropEffects.Move : DragDropEffects.None; if (e.Effects == DragDropEffects.Move) { object source = GetNearestParent <TreeViewItem>(targetTreeItem).ItemsSource; IList list = ((source as ICollectionView)?.SourceCollection as IList) ?? (source as IList); int sourceIndex = list.IndexOf(sourceItem); int targetIndex = list.IndexOf(targetItem); Debug.Assert(sourceIndex >= 0 && targetIndex >= 0); list[sourceIndex] = targetItem; list[targetIndex] = sourceItem; } e.Handled = true; }
private void DeleteItem(UndertaleObject obj) { TreeViewItem container = GetNearestParent <TreeViewItem>(GetTreeViewItemFor(obj)); object source = container.ItemsSource; IList list = ((source as ICollectionView)?.SourceCollection as IList) ?? (source as IList); bool isLast = list.IndexOf(obj) == list.Count - 1; if (MessageBox.Show("Delete " + obj.ToString() + "?" + (!isLast ? "\n\nNote that the code often references objects by ID, so this operation is likely to break stuff because other items will shift up!" : ""), "Confirmation", MessageBoxButton.YesNo, isLast ? MessageBoxImage.Question : MessageBoxImage.Warning) == MessageBoxResult.Yes) { list.Remove(obj); while (SelectionHistory.Remove(obj)) { ; } if (Selected == obj) { ChangeSelection(null); } if (Highlighted == obj) { Highlighted = null; } } }
private void Rectangle_MouseDown(object sender, MouseButtonEventArgs e) { UndertaleObject clickedObj = (sender as Rectangle).DataContext as UndertaleObject; UndertaleObject selectedObj = ObjectEditor.Content as UndertaleObject; SelectObject(clickedObj); var mousePos = e.GetPosition(RoomGraphics); if (selectedObj is UndertaleRoom.GameObject || selectedObj is UndertaleRoom.Tile) { movingObj = clickedObj; if (movingObj is UndertaleRoom.GameObject) { hotpointX = mousePos.X - (movingObj as UndertaleRoom.GameObject).X; hotpointY = mousePos.Y - (movingObj as UndertaleRoom.GameObject).Y; } else if (movingObj is UndertaleRoom.Tile) { hotpointX = mousePos.X - (movingObj as UndertaleRoom.Tile).X; hotpointY = mousePos.Y - (movingObj as UndertaleRoom.Tile).Y; } } }
public UndertaleObject DeepCopy(UndertaleObject obj) { }
private void RoomObjectsTree_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Delete) { UndertaleRoom room = this.DataContext as UndertaleRoom; UndertaleObject selectedObj = ObjectEditor.Content as UndertaleObject; if (selectedObj is UndertaleRoom.Background) { UndertaleRoom.Background bg = selectedObj as UndertaleRoom.Background; bg.Enabled = false; bg.BackgroundDefinition = null; ObjectEditor.Content = null; } else if (selectedObj is UndertaleRoom.View) { UndertaleRoom.View view = selectedObj as UndertaleRoom.View; view.Enabled = false; ObjectEditor.Content = null; } else if (selectedObj is UndertaleRoom.Tile) { UndertaleRoom.Tile tile = selectedObj as UndertaleRoom.Tile; if ((Application.Current.MainWindow as MainWindow).IsGMS2 == Visibility.Visible) { foreach (var layer in room.Layers) { if (layer.AssetsData != null) { layer.AssetsData.LegacyTiles.Remove(tile); } } } room.Tiles.Remove(tile); ObjectEditor.Content = null; } else if (selectedObj is UndertaleRoom.GameObject) { UndertaleRoom.GameObject gameObj = selectedObj as UndertaleRoom.GameObject; if ((Application.Current.MainWindow as MainWindow).IsGMS2 == Visibility.Visible) { foreach (var layer in room.Layers) { if (layer.InstancesData != null) { layer.InstancesData.Instances.Remove(gameObj); } } } room.GameObjects.Remove(gameObj); ObjectEditor.Content = null; } else if (selectedObj is UndertaleRoom.Layer) { UndertaleRoom.Layer layer = selectedObj as UndertaleRoom.Layer; if (layer.InstancesData != null) { foreach (var go in layer.InstancesData.Instances) { room.GameObjects.Remove(go); } } room.Layers.Remove(layer); ObjectEditor.Content = null; } } }
private void Rectangle_MouseUp(object sender, MouseButtonEventArgs e) { movingObj = null; }
public UndertaleObject DeepCopy(UndertaleObject obj) { obj = System.ObjectExtensions.Copy(obj); if (obj is UndertaleAnimationCurve) { ((UndertaleAnimationCurve)obj).Name = Data.Strings.MakeString(((UndertaleAnimationCurve)obj).Name.Content); foreach (UndertaleAnimationCurve.Channel chan in ((UndertaleAnimationCurve)obj).Channels) { chan.Name = Data.Strings.MakeString(chan.Name.Content); } return(obj); } else if (obj is UndertaleAudioGroup) { ((UndertaleAudioGroup)obj).Name = Data.Strings.MakeString(((UndertaleAudioGroup)obj).Name.Content); return(obj); } else if (obj is UndertaleBackground) { ((UndertaleBackground)obj).Name = Data.Strings.MakeString(((UndertaleBackground)obj).Name.Content); return(obj); } else if (obj is UndertaleCode) { ((UndertaleCode)obj).Name = Data.Strings.MakeString(((UndertaleCode)obj).Name.Content); return(obj); } else if (obj is UndertaleCodeLocals) { ((UndertaleCodeLocals)obj).Name = Data.Strings.MakeString(((UndertaleCodeLocals)obj).Name.Content); foreach (UndertaleCodeLocals.LocalVar locvar in ((UndertaleCodeLocals)obj).Locals) { locvar.Name = Data.Strings.MakeString(locvar.Name.Content); } return(obj); } else if (obj is UndertaleEmbeddedImage) { return(obj); } else if (obj is UndertaleEmbeddedAudio) { return(obj); } else if (obj is UndertaleEmbeddedTexture) { return(obj); } else if (obj is UndertaleExtension) { ((UndertaleExtension)obj).Name = Data.Strings.MakeString(((UndertaleExtension)obj).Name.Content); ((UndertaleExtension)obj).FolderName = Data.Strings.MakeString(((UndertaleExtension)obj).FolderName.Content); ((UndertaleExtension)obj).Name = Data.Strings.MakeString(((UndertaleExtension)obj).Name.Content); ((UndertaleExtension)obj).ClassName = Data.Strings.MakeString(((UndertaleExtension)obj).ClassName.Content); foreach (UndertaleExtensionFile exFile in ((UndertaleExtension)obj).Files) { exFile.Filename = Data.Strings.MakeString(exFile.Filename.Content); exFile.CleanupScript = Data.Strings.MakeString(exFile.CleanupScript.Content); exFile.InitScript = Data.Strings.MakeString(exFile.InitScript.Content); foreach (UndertaleExtensionFunction exFunc in exFile.Functions) { exFunc.Name = Data.Strings.MakeString(exFunc.Name.Content); exFunc.ExtName = Data.Strings.MakeString(exFunc.ExtName.Content); } } return(obj); } else if (obj is UndertaleFont) { ((UndertaleFont)obj).Name = Data.Strings.MakeString(((UndertaleFont)obj).Name.Content); ((UndertaleFont)obj).DisplayName = Data.Strings.MakeString(((UndertaleFont)obj).DisplayName.Content); return(obj); } else if (obj is UndertaleFunction) { ((UndertaleFunction)obj).Name = Data.Strings.MakeString(((UndertaleFunction)obj).Name.Content); return(obj); } else if (obj is UndertaleGameObject) { ((UndertaleGameObject)obj).Name = Data.Strings.MakeString(((UndertaleGameObject)obj).Name.Content); try { for (var i = 0; i < ((UndertaleGameObject)obj).Events.Count; i++) { foreach (UndertaleGameObject.Event evnt in ((UndertaleGameObject)obj).Events[i]) { foreach (UndertaleGameObject.EventAction action in evnt.Actions) { action.ActionName = Data.Strings.MakeString(action.ActionName?.Content); } } } } catch { // Something went wrong, but probably because it's trying to check something non-existent // Just keep going } return(obj); } else if (obj is UndertaleGeneralInfo) { ((UndertaleGeneralInfo)obj).Filename = Data.Strings.MakeString(((UndertaleGeneralInfo)obj).Filename.Content); ((UndertaleGeneralInfo)obj).Config = Data.Strings.MakeString(((UndertaleGeneralInfo)obj).Config.Content); ((UndertaleGeneralInfo)obj).Name = Data.Strings.MakeString(((UndertaleGeneralInfo)obj).Name.Content); ((UndertaleGeneralInfo)obj).DisplayName = Data.Strings.MakeString(((UndertaleGeneralInfo)obj).DisplayName.Content); return(obj); } else if (obj is UndertaleLanguage) { for (var i = 0; i < ((UndertaleLanguage)obj).EntryIDs.Count; i++) { ((UndertaleLanguage)obj).EntryIDs[i] = Data.Strings.MakeString(((UndertaleLanguage)obj).EntryIDs[i].Content); } for (var i = 0; i < ((UndertaleLanguage)obj).Languages.Count; i++) { ((UndertaleLanguage)obj).Languages[i].Name = Data.Strings.MakeString(((UndertaleLanguage)obj).Languages[i].Name.Content); ((UndertaleLanguage)obj).Languages[i].Region = Data.Strings.MakeString(((UndertaleLanguage)obj).Languages[i].Region.Content); } return(obj); } else if (obj is UndertaleOptions) { foreach (UndertaleOptions.Constant constant in ((UndertaleOptions)obj).Constants) { constant.Name = Data.Strings.MakeString(constant.Name.Content); constant.Value = Data.Strings.MakeString(constant.Value.Content); } return(obj); } else if (obj is UndertalePath) { ((UndertalePath)obj).Name = Data.Strings.MakeString(((UndertalePath)obj).Name.Content); return(obj); } else if (obj is UndertaleRoom) { ((UndertaleRoom)obj).Name = Data.Strings.MakeString(((UndertaleRoom)obj).Name.Content); if (((UndertaleRoom)obj).Caption != null) { ((UndertaleRoom)obj).Caption = Data.Strings.MakeString(((UndertaleRoom)obj).Caption.Content); } for (var i = 0; i < ((UndertaleRoom)obj).Layers.Count; i++) { ((UndertaleRoom)obj).Layers[i].LayerName = Data.Strings.MakeString(((UndertaleRoom)obj).Layers[i].LayerName.Content); if (((UndertaleRoom)obj).Layers[i].AssetsData != null) { for (var j = 0; j < ((UndertaleRoom)obj).Layers[i].AssetsData.Sprites.Count; j++) { ((UndertaleRoom)obj).Layers[i].AssetsData.Sprites[j].Name = Data.Strings.MakeString(((UndertaleRoom)obj).Layers[i].AssetsData.Sprites[j].Name.Content); } for (var j = 0; j < ((UndertaleRoom)obj).Layers[i].AssetsData.Sequences.Count; j++) { ((UndertaleRoom)obj).Layers[i].AssetsData.Sequences[j].Name = Data.Strings.MakeString(((UndertaleRoom)obj).Layers[i].AssetsData.Sequences[j].Name.Content); } for (var j = 0; j < ((UndertaleRoom)obj).Layers[i].AssetsData.NineSlices.Count; j++) { ((UndertaleRoom)obj).Layers[i].AssetsData.NineSlices[j].Name = Data.Strings.MakeString(((UndertaleRoom)obj).Layers[i].AssetsData.NineSlices[j].Name.Content); } } } return(obj); } else if (obj is UndertaleScript) { ((UndertaleScript)obj).Name = Data.Strings.MakeString(((UndertaleScript)obj).Name.Content); return(obj); } else if (obj is UndertaleSequence) { (obj as UndertaleSequence).Name = Data.Strings.MakeString(((UndertaleSequence)obj).Name.Content); for (var i = 0; i < ((UndertaleSequence)obj).Moments.Count; i++) { for (var j = 0; j < ((UndertaleSequence)obj).Moments[i].Channels.Count; j++) { ((UndertaleSequence)obj).Moments[i].Channels[j].Event = Data.Strings.MakeString(((UndertaleSequence)obj).Moments[i].Channels[j].Event.Content); } } for (var i = 0; i < ((UndertaleSequence)obj).Tracks.Count; i++) { ((UndertaleSequence)obj).Tracks[i] = RecurseTracks(((UndertaleSequence)obj).Tracks[i]); } return(obj); } else if (obj is UndertaleShader) { ((UndertaleShader)obj).Name = Data.Strings.MakeString(((UndertaleShader)obj).Name.Content); ((UndertaleShader)obj).GLSL_ES_Fragment = Data.Strings.MakeString(((UndertaleShader)obj).GLSL_ES_Fragment.Content); ((UndertaleShader)obj).GLSL_ES_Vertex = Data.Strings.MakeString(((UndertaleShader)obj).GLSL_ES_Vertex.Content); ((UndertaleShader)obj).GLSL_Fragment = Data.Strings.MakeString(((UndertaleShader)obj).GLSL_Fragment.Content); ((UndertaleShader)obj).GLSL_Vertex = Data.Strings.MakeString(((UndertaleShader)obj).GLSL_Vertex.Content); ((UndertaleShader)obj).HLSL9_Fragment = Data.Strings.MakeString(((UndertaleShader)obj).HLSL9_Fragment.Content); ((UndertaleShader)obj).HLSL9_Vertex = Data.Strings.MakeString(((UndertaleShader)obj).HLSL9_Vertex.Content); for (var i = 0; i < ((UndertaleShader)obj).VertexShaderAttributes.Count; i++) { ((UndertaleShader)obj).VertexShaderAttributes[i].Name = Data.Strings.MakeString(((UndertaleShader)obj).VertexShaderAttributes[i].Name.Content); } return(obj); } else if (obj is UndertaleSound) { ((UndertaleSound)obj).Name = Data.Strings.MakeString(((UndertaleSound)obj).Name.Content); ((UndertaleSound)obj).Type = Data.Strings.MakeString(((UndertaleSound)obj).Type.Content); ((UndertaleSound)obj).File = Data.Strings.MakeString(((UndertaleSound)obj).File.Content); return(obj); } else if (obj is UndertaleSprite) { ((UndertaleSprite)obj).Name = Data.Strings.MakeString(((UndertaleSprite)obj).Name.Content); return(obj); } else if (obj is UndertaleTextureGroupInfo) { ((UndertaleTextureGroupInfo)obj).Name = Data.Strings.MakeString(((UndertaleTextureGroupInfo)obj).Name.Content); return(obj); } else if (obj is UndertaleTimeline) { ((UndertaleTimeline)obj).Name = Data.Strings.MakeString(((UndertaleTimeline)obj).Name.Content); return(obj); } else if (obj is UndertaleTexturePageItem) { return(obj); } else if (obj is UndertaleVariable) { ((UndertaleVariable)obj).Name = Data.Strings.MakeString(((UndertaleVariable)obj).Name.Content); return(obj); } return(obj); }