internal static void AddSceneToHistory(Node scene) { PackedScene packedScene = new PackedScene(); packedScene.Pack(scene); History.Add(packedScene); SaveHero(CurrentHero); }
public void SaveLevel(string pPath) { PackedScene savedLevel = new PackedScene(); CurrentLevel = GetTree().GetRoot().GetNode("Editor/ViewportContainer/Viewport/CurrentLevel") as Level; SetOwners(CurrentLevel); GD.Print("[Editor] - Setting Owners..."); savedLevel.Pack(CurrentLevel); // Packs the level into a scene. ResourceSaver.Save(pPath, savedLevel); // Save the PackedScene GD.Print("[Editor] Level Saved."); }
protected sealed override Error Import() { SceneContext = GetContext(); if (UsedExtension is not null) { typeof(SceneImportExtension <SceneBase, Context>) .GetProperty(nameof(SceneImportExtension <SceneBase, Context> .SceneContext)) ! .SetValue(UsedExtension, SceneContext); } ulong buildedSceneId; try { SceneBase sceneNode = BuildScene(); buildedSceneId = sceneNode.GetInstanceId(); UsedExtension?.OnSceneBuilt(sceneNode); } catch (Exception error) { GD.PushError(error.Message); return(Error.Bug); } SceneBase buildedScene = (GD.InstanceFromId(buildedSceneId) as SceneBase) !; foreach (Node child in buildedScene.GetChildren()) { SetOwnerRecursive(child, buildedScene); } var packedScene = new PackedScene(); packedScene.TakeOverPath(ImportContext.SavePath); if (packedScene.Pack(buildedScene) != Error.Ok) { return(Error.Failed); } return(ResourceSaver.Save($"{ImportContext.SavePath}.{GetSaveExtension()}", packedScene)); }
public bool DebugInput(Crawler crawler, InputEvent ev) { if (ev.IsActionPressed("quicksave", false)) { temp = crawler.Model.SaveToDictionary(); PackedScene packed = new PackedScene(); packed.Pack(crawler.Model); ResourceSaver.Save("res://dump.tscn", packed); return(true); } if (ev.IsActionPressed("quickload", false)) { // Delete the old stuff. { View old = crawler.GetNode <View>("View"); crawler.RemoveChild(old); old.QueueFree(); Model oldd = crawler.Model; crawler.RemoveChild(oldd); oldd.QueueFree(); } // Add the new stuff. { // PackedScene modelScene = GD.Load<PackedScene>("res://dump.tscn"); PackedScene modelScene = GD.Load <PackedScene>((string)temp["Filename"]); Model model = (Model)modelScene.Instance(); model.Name = "Model"; crawler.AddChild(model); PackedScene viewScene = GD.Load <PackedScene>("res://Crawler/View/View.tscn"); View view = (View)viewScene.Instance(); view.Name = "View"; crawler.AddChild(view); view.ConnectToModel(model); LoadedGenerator gen = new LoadedGenerator(temp); gen.Generate(crawler.Model); } return(true); } if (ev is InputEventKey eventKey && eventKey.Pressed && !eventKey.IsEcho()) { if (eventKey.Scancode == (int)KeyList.F1) { crawler.View.impatientMode = !crawler.View.impatientMode; string thing = (crawler.View.impatientMode ? "on" : "off"); crawler.View.GetNode <RichTextLabel>("UILayer/MessageLog").AppendBbcode($"\n * Impatient mode {thing}!"); return(true); } if (eventKey.Scancode == (int)KeyList.F9) { Node2D map = (Node2D)crawler.Model.FindNode("Map"); map.Visible = !map.Visible; return(true); } // this makes people very confused. also its a hack anyways. // if (eventKey.Scancode == (int)KeyList.F11) // { // GetTree().ChangeScene("res://Crawler/Crawler.tscn"); // return true; // } if (eventKey.Scancode == (int)KeyList.Quoteleft) { Control debugLog = crawler.View.GetNode <Control>("UILayer/DebugLog"); debugLog.Visible = !debugLog.Visible; return(true); } } return(false); }