Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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;
                }
            }
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
 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();
         }
     }
 }
Ejemplo n.º 9
0
 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);
         }
     }
 }
Ejemplo n.º 10
0
 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();
        }
Ejemplo n.º 12
0
        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;
            }
        }
Ejemplo n.º 13
0
        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;
        }
Ejemplo n.º 14
0
        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;
        }
Ejemplo n.º 15
0
        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;
                }
            }
        }
Ejemplo n.º 16
0
        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;
                }
            }
        }
Ejemplo n.º 17
0
 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;
                }
            }
        }
Ejemplo n.º 19
0
 private void Rectangle_MouseUp(object sender, MouseButtonEventArgs e)
 {
     movingObj = null;
 }
Ejemplo n.º 20
0
 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);
 }