asset metadata form added for tiles and sound
This commit is contained in:
parent
4050fcbcaa
commit
64e65dcd44
@ -73,7 +73,7 @@ public final class PackerAssetDetailsService {
|
|||||||
declaration.outputCodec(),
|
declaration.outputCodec(),
|
||||||
outputContract.availableCodecs(),
|
outputContract.availableCodecs(),
|
||||||
outputContract.codecConfigurationFieldsByCodec(),
|
outputContract.codecConfigurationFieldsByCodec(),
|
||||||
metadataFields(declaration.outputMetadata()),
|
metadataFields(outputContract.metadataFields(), declaration.outputMetadata()),
|
||||||
resolveInputs(resolved.assetRoot(), declaration.inputsByRole()),
|
resolveInputs(resolved.assetRoot(), declaration.inputsByRole()),
|
||||||
diagnostics);
|
diagnostics);
|
||||||
return new GetAssetDetailsResult(
|
return new GetAssetDetailsResult(
|
||||||
@ -132,16 +132,32 @@ public final class PackerAssetDetailsService {
|
|||||||
return Map.copyOf(resolved);
|
return Map.copyOf(resolved);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<PackerCodecConfigurationField> metadataFields(Map<String, String> outputMetadata) {
|
private List<PackerCodecConfigurationField> metadataFields(
|
||||||
return outputMetadata.entrySet().stream()
|
List<PackerCodecConfigurationField> definitions,
|
||||||
.map(entry -> new PackerCodecConfigurationField(
|
Map<String, String> outputMetadata) {
|
||||||
entry.getKey(),
|
final Map<String, String> valuesByKey = new LinkedHashMap<>(outputMetadata);
|
||||||
entry.getKey(),
|
final List<PackerCodecConfigurationField> fields = new ArrayList<>();
|
||||||
PackerCodecConfigurationFieldType.TEXT,
|
|
||||||
entry.getValue(),
|
for (PackerCodecConfigurationField definition : definitions) {
|
||||||
false,
|
final String value = valuesByKey.getOrDefault(definition.key(), definition.value());
|
||||||
List.of()))
|
fields.add(new PackerCodecConfigurationField(
|
||||||
.toList();
|
definition.key(),
|
||||||
|
definition.label(),
|
||||||
|
definition.fieldType(),
|
||||||
|
value,
|
||||||
|
definition.required(),
|
||||||
|
definition.options()));
|
||||||
|
valuesByKey.remove(definition.key());
|
||||||
|
}
|
||||||
|
|
||||||
|
valuesByKey.forEach((key, value) -> fields.add(new PackerCodecConfigurationField(
|
||||||
|
key,
|
||||||
|
key,
|
||||||
|
PackerCodecConfigurationFieldType.TEXT,
|
||||||
|
value,
|
||||||
|
false,
|
||||||
|
List.of())));
|
||||||
|
return List.copyOf(fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<PackerDiagnostic> identityMismatchDiagnostics(
|
private List<PackerDiagnostic> identityMismatchDiagnostics(
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package p.packer.services;
|
|||||||
|
|
||||||
import p.packer.messages.assets.OutputCodecCatalog;
|
import p.packer.messages.assets.OutputCodecCatalog;
|
||||||
import p.packer.messages.assets.OutputFormatCatalog;
|
import p.packer.messages.assets.OutputFormatCatalog;
|
||||||
|
import p.packer.messages.assets.PackerCodecConfigurationFieldType;
|
||||||
import p.packer.models.PackerCodecConfigurationField;
|
import p.packer.models.PackerCodecConfigurationField;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -18,7 +19,8 @@ final class PackerOutputContractCatalog {
|
|||||||
codec -> codec,
|
codec -> codec,
|
||||||
codec -> fieldsFor(outputFormat, codec),
|
codec -> fieldsFor(outputFormat, codec),
|
||||||
(left, right) -> left,
|
(left, right) -> left,
|
||||||
java.util.LinkedHashMap::new)));
|
java.util.LinkedHashMap::new)),
|
||||||
|
metadataFieldsFor(outputFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
static List<OutputCodecCatalog> availableCodecsFor(OutputFormatCatalog outputFormat, OutputCodecCatalog selectedCodec) {
|
static List<OutputCodecCatalog> availableCodecsFor(OutputFormatCatalog outputFormat, OutputCodecCatalog selectedCodec) {
|
||||||
@ -50,8 +52,37 @@ final class PackerOutputContractCatalog {
|
|||||||
return List.of();
|
return List.of();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static List<PackerCodecConfigurationField> metadataFieldsFor(OutputFormatCatalog outputFormat) {
|
||||||
|
return switch (outputFormat) {
|
||||||
|
case TILES_INDEXED_V1 -> List.of(new PackerCodecConfigurationField(
|
||||||
|
"tile_size",
|
||||||
|
"TileSize",
|
||||||
|
PackerCodecConfigurationFieldType.ENUM,
|
||||||
|
"16",
|
||||||
|
true,
|
||||||
|
List.of("8", "16", "32")));
|
||||||
|
case SOUND_BANK_V1, AUDIO_PCM_V1 -> List.of(
|
||||||
|
new PackerCodecConfigurationField(
|
||||||
|
"sample_rate",
|
||||||
|
"Frame Rate",
|
||||||
|
PackerCodecConfigurationFieldType.ENUM,
|
||||||
|
"44100",
|
||||||
|
true,
|
||||||
|
List.of("11025", "22050", "44100", "48000")),
|
||||||
|
new PackerCodecConfigurationField(
|
||||||
|
"channels",
|
||||||
|
"Channels",
|
||||||
|
PackerCodecConfigurationFieldType.ENUM,
|
||||||
|
"1",
|
||||||
|
true,
|
||||||
|
List.of("1", "2")));
|
||||||
|
default -> List.of();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
record OutputContractDefinition(
|
record OutputContractDefinition(
|
||||||
List<OutputCodecCatalog> availableCodecs,
|
List<OutputCodecCatalog> availableCodecs,
|
||||||
Map<OutputCodecCatalog, List<PackerCodecConfigurationField>> codecConfigurationFieldsByCodec) {
|
Map<OutputCodecCatalog, List<PackerCodecConfigurationField>> codecConfigurationFieldsByCodec,
|
||||||
|
List<PackerCodecConfigurationField> metadataFields) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -83,6 +83,23 @@ final class PackerAssetDetailsServiceTest {
|
|||||||
field -> field.value())));
|
field -> field.value())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void exposesAudioMetadataDefaultsFromOutputContract() throws Exception {
|
||||||
|
final Path projectRoot = copyFixture("workspaces/orphan-valid", tempDir.resolve("orphan-audio-defaults"));
|
||||||
|
final PackerAssetDetailsService service = service();
|
||||||
|
|
||||||
|
final var result = service.getAssetDetails(new GetAssetDetailsRequest(
|
||||||
|
project(projectRoot),
|
||||||
|
AssetReference.forRelativeAssetRoot("orphans/ui_sounds")));
|
||||||
|
|
||||||
|
assertEquals(PackerOperationStatus.SUCCESS, result.status());
|
||||||
|
assertEquals(
|
||||||
|
Map.of("sample_rate", "44100", "channels", "1"),
|
||||||
|
result.details().metadataFields().stream().collect(java.util.stream.Collectors.toMap(
|
||||||
|
field -> field.key(),
|
||||||
|
field -> field.value())));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void returnsInvalidDetailsForInvalidDeclaration() throws Exception {
|
void returnsInvalidDetailsForInvalidDeclaration() throws Exception {
|
||||||
final Path projectRoot = copyFixture("workspaces/invalid-missing-fields", tempDir.resolve("invalid"));
|
final Path projectRoot = copyFixture("workspaces/invalid-missing-fields", tempDir.resolve("invalid"));
|
||||||
|
|||||||
@ -798,6 +798,156 @@
|
|||||||
"message" : "Asset scan started",
|
"message" : "Asset scan started",
|
||||||
"severity" : "INFO",
|
"severity" : "INFO",
|
||||||
"sticky" : false
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "8 assets loaded",
|
||||||
|
"severity" : "SUCCESS",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: test",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: bla",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: one-more-atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: ui_atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: one-more-atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: bbb2",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: ui_atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: Bigode",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Asset scan started",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "8 assets loaded",
|
||||||
|
"severity" : "SUCCESS",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: test",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: bla",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: one-more-atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: ui_atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: one-more-atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: bbb2",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: ui_atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: Bigode",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Asset scan started",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "8 assets loaded",
|
||||||
|
"severity" : "SUCCESS",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: test",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: bla",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: one-more-atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: ui_atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: one-more-atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: bbb2",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: ui_atlas",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Discovered asset: Bigode",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
|
}, {
|
||||||
|
"source" : "Assets",
|
||||||
|
"message" : "Asset scan started",
|
||||||
|
"severity" : "INFO",
|
||||||
|
"sticky" : false
|
||||||
}, {
|
}, {
|
||||||
"source" : "Assets",
|
"source" : "Assets",
|
||||||
"message" : "Asset moved: bbb2 -> recovered/bbb2",
|
"message" : "Asset moved: bbb2 -> recovered/bbb2",
|
||||||
@ -2348,154 +2498,4 @@
|
|||||||
"message" : "Discovered asset: test",
|
"message" : "Discovered asset: test",
|
||||||
"severity" : "INFO",
|
"severity" : "INFO",
|
||||||
"sticky" : false
|
"sticky" : false
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: one-more-atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: ui_atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: bla",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: one-more-atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: ui_atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: Bigode",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Asset scan started",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "7 assets loaded",
|
|
||||||
"severity" : "SUCCESS",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: test",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: one-more-atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: ui_atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: bla",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: one-more-atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: ui_atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: Bigode",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Asset scan started",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "7 assets loaded",
|
|
||||||
"severity" : "SUCCESS",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: test",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: one-more-atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: ui_atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: bla",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: one-more-atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: ui_atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: Bigode",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Asset scan started",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "7 assets loaded",
|
|
||||||
"severity" : "SUCCESS",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: test",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: one-more-atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: ui_atlas",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
}, {
|
|
||||||
"source" : "Assets",
|
|
||||||
"message" : "Discovered asset: bla",
|
|
||||||
"severity" : "INFO",
|
|
||||||
"sticky" : false
|
|
||||||
} ]
|
} ]
|
||||||
@ -7,9 +7,12 @@
|
|||||||
"output" : {
|
"output" : {
|
||||||
"format" : "TILES/indexed_v1",
|
"format" : "TILES/indexed_v1",
|
||||||
"codec" : "NONE",
|
"codec" : "NONE",
|
||||||
"codec_configuration" : { }
|
"codec_configuration" : { },
|
||||||
|
"metadata" : {
|
||||||
|
"tile_size" : "16"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"preload" : {
|
"preload" : {
|
||||||
"enabled" : false
|
"enabled" : true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user