xivdev / Penumbra

FINAL FANTASY XIV modding, but actually good this time
656 stars 123 forks source link

Full resource tree retrieval via IPC #369

Closed WorkingRobot closed 10 months ago

WorkingRobot commented 10 months ago

Implementation of Ottermandias/Penumbra.Api#2.

Adds the ability for a plugin to access the full resource tree of any game object instead of only being able to access specific resources or resource paths.

Docs (in IPenumbraApi):

GetGameObjectResourceTrees ```csharp /// /// Get the given game objects' resource tree. /// /// Whether to get names and icons along with the paths. /// The game object indices for which to get the resources. /// An array of resource trees, of the same length and in the same order as the given game object index array. /// /// It is the caller's responsibility to make sure the returned resource handles are still in use on the game object's draw object before using them. /// Also, callers should not use UI data for non-UI purposes. /// public IEnumerable?[] GetGameObjectResourceTrees(bool withUIData, params ushort[] gameObjects); ```
GetPlayerResourceTrees ```csharp /// /// Get the player and player-owned game objects' resource trees. /// /// Whether to get names and icons along with the paths. /// A dictionary of game object indices to resource trees. /// /// It is the caller's responsibility to make sure the returned resource handles are still in use on the game object's draw object before using them. /// Also, callers should not use UI data for non-UI purposes. /// public IReadOnlyDictionary> GetPlayerResourceTrees(bool withUIData); ```