mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-22 01:55:25 -04:00
Handle 3D models in the asset store (#5427)
This commit is contained in:
@@ -153,6 +153,8 @@ void CustomObjectConfiguration::ExposeResources(gd::ArbitraryResourceWorker& wor
|
||||
worker.ExposeTileset(newPropertyValue);
|
||||
} else if (resourceType == "bitmapFont") {
|
||||
worker.ExposeBitmapFont(newPropertyValue);
|
||||
} else if (resourceType == "model3D") {
|
||||
worker.ExposeModel3D(newPropertyValue);
|
||||
}
|
||||
|
||||
if (newPropertyValue != oldPropertyValue) {
|
||||
|
||||
@@ -328,13 +328,13 @@ type ParticleEmitterObject_RendererType = 0 | 1 | 2`
|
||||
shell.sed(
|
||||
'-i',
|
||||
/setKind\(kind: string\): void/,
|
||||
"setKind(kind: 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset'): void",
|
||||
"setKind(kind: 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset' | 'model3D'): void",
|
||||
'types/gdresource.js'
|
||||
);
|
||||
shell.sed(
|
||||
'-i',
|
||||
/getKind\(\): string/,
|
||||
"getKind(): 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset'",
|
||||
"getKind(): 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset' | 'model3D'",
|
||||
'types/gdresource.js'
|
||||
);
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ declare class gdResource {
|
||||
clone(): gdResource;
|
||||
setName(name: string): void;
|
||||
getName(): string;
|
||||
setKind(kind: 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset'): void;
|
||||
getKind(): 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset';
|
||||
setKind(kind: 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset' | 'model3D'): void;
|
||||
getKind(): 'image' | 'audio' | 'font' | 'video' | 'json' | 'tilemap' | 'tileset' | 'model3D';
|
||||
isUserAdded(): boolean;
|
||||
setUserAdded(yes: boolean): void;
|
||||
useFile(): boolean;
|
||||
|
||||
@@ -307,6 +307,7 @@ export const AssetStoreFilterPanel = ({
|
||||
{ label: t`Sprite`, value: 'sprite' },
|
||||
{ label: t`Tiled sprite`, value: 'tiled' },
|
||||
{ label: t`Panel sprite`, value: '9patch' },
|
||||
{ label: t`3D model`, value: 'model3D' },
|
||||
]}
|
||||
values={assetFiltersState.objectTypeFilter.objectTypes}
|
||||
setValues={values => {
|
||||
|
||||
@@ -119,6 +119,8 @@ export const installResource = (
|
||||
newResource = new gd.VideoResource();
|
||||
} else if (serializedResource.kind === 'json') {
|
||||
newResource = new gd.JsonResource();
|
||||
} else if (serializedResource.kind === 'model3D') {
|
||||
newResource = new gd.Model3DResource();
|
||||
} else {
|
||||
throw new Error(
|
||||
`Resource of kind "${serializedResource.kind}" is not supported.`
|
||||
|
||||
@@ -49,6 +49,7 @@ const sortedContentType = [
|
||||
'particleEmitter',
|
||||
'font',
|
||||
'audio',
|
||||
'model3D',
|
||||
'partial',
|
||||
];
|
||||
|
||||
@@ -56,6 +57,7 @@ const contentTypeToMessageDescriptor = {
|
||||
sprite: t`Sprites`,
|
||||
'9patch': t`Panel sprites`,
|
||||
tiled: t`Tiled sprites`,
|
||||
model3D: t`3D model`,
|
||||
particleEmitter: t`Particle emitters`,
|
||||
font: t`Fonts`,
|
||||
audio: t`Audios`,
|
||||
|
||||
@@ -210,6 +210,17 @@ export const ResourceCard = ({ resource, onChoose, size }: Props) => {
|
||||
</Line>
|
||||
</GenericCard>
|
||||
);
|
||||
case 'model3D':
|
||||
return (
|
||||
<GenericCard onChoose={onChoose} resource={resource} size={size}>
|
||||
<Line justifyContent="center">
|
||||
<FontDownload style={styles.icon} />
|
||||
</Line>
|
||||
<Line justifyContent="center">
|
||||
<RaisedButton onClick={onChoose} label={<Trans>Choose</Trans>} />
|
||||
</Line>
|
||||
</GenericCard>
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -28,5 +28,8 @@ describe('FileToCloudProjectResourceUploader', () => {
|
||||
expect(getInputAcceptedMimesAndExtensions('video')).toMatchInlineSnapshot(
|
||||
`"video/mp4,video/webm,.mp4,.webm"`
|
||||
);
|
||||
expect(getInputAcceptedMimesAndExtensions('model3D')).toMatchInlineSnapshot(
|
||||
`"model/gltf-binary,.glb"`
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -88,7 +88,8 @@ type PrivateAssetPackAssetType =
|
||||
| '9patch'
|
||||
| 'tiled'
|
||||
| 'partial'
|
||||
| 'particleEmitter';
|
||||
| 'particleEmitter'
|
||||
| 'model3D';
|
||||
|
||||
export type PrivateAssetPackContent = { [PrivateAssetPackAssetType]: number };
|
||||
|
||||
|
||||
+8
@@ -45,3 +45,11 @@ export const SvgResource = () => (
|
||||
</ResourceStoreStateProvider>
|
||||
</FixedHeightFlexContainer>
|
||||
);
|
||||
|
||||
export const Model3DResource = () => (
|
||||
<FixedHeightFlexContainer height={400}>
|
||||
<ResourceStoreStateProvider>
|
||||
<ResourceStore onChoose={action('onChoose')} resourceKind="model3D" />
|
||||
</ResourceStoreStateProvider>
|
||||
</FixedHeightFlexContainer>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user