Skip to content

Commit

Permalink
Allow to swap assets of any object type
Browse files Browse the repository at this point in the history
  • Loading branch information
D8H committed Feb 3, 2025
1 parent 97e989d commit 0c8aefc
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
11 changes: 10 additions & 1 deletion newIDE/app/src/AssetStore/AssetStoreSearchFilter.js
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,16 @@ export class ColorAssetStoreSearchFilter
}

const toAssetStoreType = (type: string) => {
return type === 'Sprite' ? 'sprite' : type;
switch (type) {
case 'Sprite':
return 'sprite';
case 'TiledSpriteObject::TiledSprite':
return 'tiled';
case 'PanelSpriteObject::PanelSprite':
return '9patch';
default:
return type;
}
};

// Thematic tags are noise for asset swapping as changing the theme may be what
Expand Down
14 changes: 12 additions & 2 deletions newIDE/app/src/AssetStore/AssetSwapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ type SpriteObjectDataType = {

export const canSwapAssetOfObject = (object: gdObject) => {
const type = object.getType();
return type === 'Scene3D::Model3DObject' || type === 'Sprite';
return type !== 'TextObject::Text' && type !== 'BBText::BBText';
};

const mergeAnimations = function<A: { name: string }>(
Expand Down Expand Up @@ -312,7 +312,7 @@ export const swapAsset = (
assetObject: gdObject,
assetShortHeader?: ?AssetShortHeader
) => {
const serializedObject = serializeToJSObject(object);
let serializedObject = serializeToJSObject(object);
const serializedAssetObject = serializeToJSObject(assetObject);

if (object.getType() === 'Sprite') {
Expand All @@ -338,6 +338,7 @@ export const swapAsset = (
scaleX,
scaleY
);
serializedObject.assetStoreId = serializedAssetObject.assetStoreId;
} else if (object.getType() === 'Scene3D::Model3DObject') {
const objectVolume =
serializedObject.content.width *
Expand Down Expand Up @@ -365,6 +366,15 @@ export const swapAsset = (
centerLocation: serializedObject.content.centerLocation,
};
serializedObject.assetStoreId = serializedAssetObject.assetStoreId;
} else {
serializedObject = {
...serializedAssetObject,
name: serializedObject.name,
type: serializedObject.type,
variables: serializedObject.variables,
behaviors: serializedObject.behaviors,
effects: serializedObject.effects,
};
}
unserializeFromJSObject(object, serializedObject, 'unserializeFrom', project);
};

0 comments on commit 0c8aefc

Please sign in to comment.