Skip to content

Commit

Permalink
Copy/paste now selects the newly-pasted item in the tree view
Browse files Browse the repository at this point in the history
Improved performance of changing the CreatedByOtherEntities property on an object that has lots of instances in a game.
  • Loading branch information
vchelaru committed Dec 20, 2023
1 parent 5dacda3 commit 075f08b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
5 changes: 5 additions & 0 deletions FRBDK/Glue/Glue/Managers/CopyPasteManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ internal async Task HandlePaste()
{
GlueCommands.Self.PrintError(response.Message);
}
else
{
// the pasted object could be stuffed in a list. Select it so we know that it was created.
GlueState.Self.CurrentNamedObjectSave = response.Data;
}
}
else if(copiedObjectClone is StateSave asStateSave)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,14 @@ public static void HandleCreatedByOtherEntitiesSet(EntitySave entitySave)
}


List<EntitySave> entitiesToRefresh = ObjectFinder.Self.GetAllEntitiesThatInheritFrom(entitySave);
entitiesToRefresh.AddRange(entitySave.GetAllBaseEntities());
entitiesToRefresh.Add(entitySave);
List<EntitySave> entityTypesToSearchFor = ObjectFinder.Self.GetAllEntitiesThatInheritFrom(entitySave);
entityTypesToSearchFor.AddRange(entitySave.GetAllBaseEntities());
entityTypesToSearchFor.Add(entitySave);

HashSet<GlueElement> elementsToRegenerate = new HashSet<GlueElement>();

// We need to re-generate all objects that use this Entity
foreach (EntitySave entityToRefresh in entitiesToRefresh)
foreach (var entityToRefresh in entityTypesToSearchFor)
{
List<NamedObjectSave> namedObjects = ObjectFinder.Self.GetAllNamedObjectsThatUseEntity(entityToRefresh.Name);

Expand All @@ -54,10 +56,15 @@ public static void HandleCreatedByOtherEntitiesSet(EntitySave entitySave)

if (namedObjectContainer != null)
{
CodeWriter.GenerateCode(namedObjectContainer);
elementsToRegenerate.Add(namedObjectContainer);
}
}
}

foreach(var element in elementsToRegenerate)
{
GlueCommands.Self.GenerateCodeCommands.GenerateElementCode(element);
}
GlueCommands.Self.RefreshCommands.RefreshPropertyGrid();
}
}
Expand Down

0 comments on commit 075f08b

Please sign in to comment.