MCPcopy
hub / github.com/4ian/GDevelop / SpineManager

Class SpineManager

Extensions/Spine/managers/pixi-spine-manager.ts:26–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24 * @category Resources > Spine
25 */
26 export class SpineManager implements gdjs.ResourceManager {
27 private _spineAtlasManager: SpineAtlasManager;
28 private _resourceLoader: ResourceLoader;
29 /**
30 * Stores the asset aliases needed to construct a Spine container.
31 * The atlas page textures are tracked separately by the SpineAtlasManager.
32 */
33 private _loadedSpines = new gdjs.ResourceCache<SpineAssetAliases>();
34
35 /**
36 * @param resourceLoader The resources loader of the game.
37 * @param spineAtlasManager The Spine atlas manager of the game.
38 */
39 constructor(
40 resourceLoader: gdjs.ResourceLoader,
41 spineAtlasManager: SpineAtlasManager
42 ) {
43 this._resourceLoader = resourceLoader;
44 this._spineAtlasManager = spineAtlasManager;
45 }
46
47 getResourceKinds(): ResourceKind[] {
48 return resourceKinds;
49 }
50
51 async processResource(_resourceName: string): Promise<void> {
52 // The spine-pixi-v7 skeleton loader parses the resource itself.
53 }
54
55 async loadResource(resourceName: string): Promise<void> {
56 const resource = this._getSpineResource(resourceName);
57
58 if (!resource) {
59 return logger.error(
60 `Unable to find spine skeleton for resource ${resourceName}.`
61 );
62 }
63
64 const skeletonUrl = this._resourceLoader.getFullUrl(resource.file);
65 const skeletonAlias = skeletonUrl;
66
67 try {
68 const game = this._resourceLoader.getRuntimeGame();
69 const embeddedResourcesNames = game.getEmbeddedResourcesNames(
70 resource.name
71 );
72
73 // there should be exactly one embedded resource (the atlas)
74 if (embeddedResourcesNames.length !== 1) {
75 return logger.error(
76 `Unable to find atlas metadata for resource spine skeleton ${resourceName}.`
77 );
78 }
79
80 const atlasResourceName = game.resolveEmbeddedResource(
81 resource.name,
82 embeddedResourcesNames[0]
83 );

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected