Search in sources :

Example 11 with AssetManager

use of org.terasology.gestalt.assets.management.AssetManager in project Terasology by MovingBlocks.

the class HeadlessEnvironment method setupAssetManager.

@Override
protected AssetManager setupAssetManager() {
    ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl();
    // cast lambdas explicitly to avoid inconsistent compiler behavior wrt. type inference
    assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs");
    assetTypeManager.createAssetType(BlockShape.class, BlockShapeImpl::new, "shapes");
    assetTypeManager.createAssetType(BlockSounds.class, BlockSounds::new, "blockSounds");
    assetTypeManager.createAssetType(BlockTile.class, BlockTile::new, "blockTiles");
    AssetType<BlockFamilyDefinition, BlockFamilyDefinitionData> blockFamilyDefinitionDataAssetType = assetTypeManager.createAssetType(BlockFamilyDefinition.class, BlockFamilyDefinition::new, "blocks");
    assetTypeManager.getAssetFileDataProducer(blockFamilyDefinitionDataAssetType).addAssetFormat(new BlockFamilyDefinitionFormat(assetTypeManager.getAssetManager()));
    assetTypeManager.createAssetType(StaticSound.class, NullSound::new, "sounds");
    assetTypeManager.createAssetType(StreamingSound.class, NullStreamingSound::new, "music");
    assetTypeManager.createAssetType(UISkinAsset.class, UISkinAsset::new, "skins");
    assetTypeManager.createAssetType(BehaviorTree.class, BehaviorTree::new, "behaviors");
    assetTypeManager.createAssetType(UIElement.class, UIElement::new, "ui");
    assetTypeManager.createAssetType(Font.class, FontImpl::new, "fonts");
    AssetType<Texture, TextureData> textureDataAssetType = assetTypeManager.createAssetType(Texture.class, HeadlessTexture::create, "textures", "fonts");
    assetTypeManager.getAssetFileDataProducer(textureDataAssetType).addAssetFormat(new PNGTextureFormat(Texture.FilterMode.NEAREST, path -> path.getPath().get(1).equals("textures")));
    assetTypeManager.getAssetFileDataProducer(textureDataAssetType).addAssetFormat(new PNGTextureFormat(Texture.FilterMode.LINEAR, path -> path.getPath().get(1).equals("fonts")));
    assetTypeManager.createAssetType(Shader.class, HeadlessShader::new, "shaders");
    assetTypeManager.createAssetType(Material.class, HeadlessMaterial::new, "materials");
    assetTypeManager.createAssetType(Mesh.class, HeadlessMesh::new, "mesh");
    assetTypeManager.createAssetType(SkeletalMesh.class, HeadlessSkeletalMesh::new, "skeletalMesh");
    assetTypeManager.createAssetType(MeshAnimation.class, MeshAnimationImpl::new, "animations");
    assetTypeManager.createAssetType(Atlas.class, Atlas::new, "atlas");
    assetTypeManager.createAssetType(Subtexture.class, Subtexture::new);
    assetTypeManager.switchEnvironment(context.get(ModuleManager.class).getEnvironment());
    context.put(ModuleAwareAssetTypeManager.class, assetTypeManager);
    context.put(AssetManager.class, assetTypeManager.getAssetManager());
    return assetTypeManager.getAssetManager();
}
Also used : PNGTextureFormat(org.terasology.engine.rendering.assets.texture.PNGTextureFormat) BlockFamilyDefinitionData(org.terasology.engine.world.block.loader.BlockFamilyDefinitionData) RecordAndReplayUtils(org.terasology.engine.recording.RecordAndReplayUtils) NetworkSystemImpl(org.terasology.engine.network.internal.NetworkSystemImpl) Texture(org.terasology.engine.rendering.assets.texture.Texture) LoggerFactory(org.slf4j.LoggerFactory) TypeRegistry(org.terasology.reflection.TypeRegistry) HeadlessSkeletalMesh(org.terasology.engine.core.subsystem.headless.assets.HeadlessSkeletalMesh) HeadlessMaterial(org.terasology.engine.core.subsystem.headless.assets.HeadlessMaterial) BasicCelestialModel(org.terasology.engine.world.sun.BasicCelestialModel) LoadPrefabs(org.terasology.engine.core.modes.loadProcesses.LoadPrefabs) RecordAndReplaySerializer(org.terasology.engine.recording.RecordAndReplaySerializer) WorldInfo(org.terasology.engine.world.internal.WorldInfo) BehaviorTree(org.terasology.engine.logic.behavior.asset.BehaviorTree) ExternalApiWhitelist(org.terasology.engine.core.module.ExternalApiWhitelist) Font(org.terasology.engine.rendering.assets.font.Font) ModuleAwareAssetTypeManager(org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager) BlockFamilyDefinitionFormat(org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat) StorageManager(org.terasology.engine.persistence.StorageManager) BlockShape(org.terasology.engine.world.block.shapes.BlockShape) Path(java.nio.file.Path) BlockFamilyLibrary(org.terasology.engine.world.block.family.BlockFamilyLibrary) HeadlessShader(org.terasology.engine.core.subsystem.headless.assets.HeadlessShader) MeshAnimationImpl(org.terasology.engine.rendering.assets.animation.MeshAnimationImpl) CollisionGroupTypeHandler(org.terasology.engine.persistence.typeHandling.extensionTypes.CollisionGroupTypeHandler) NullAudioManager(org.terasology.engine.audio.nullAudio.NullAudioManager) ModuleAwareAssetTypeManagerImpl(org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl) BlockSounds(org.terasology.engine.world.block.sounds.BlockSounds) BlockFamilyTypeHandler(org.terasology.engine.persistence.typeHandling.extensionTypes.BlockFamilyTypeHandler) ModuleEnvironment(org.terasology.gestalt.module.ModuleEnvironment) SkeletalMesh(org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh) Set(java.util.Set) AudioManager(org.terasology.engine.audio.AudioManager) WorldProvider(org.terasology.engine.world.WorldProvider) BlockFamilyDefinition(org.terasology.engine.world.block.loader.BlockFamilyDefinition) PojoPrefab(org.terasology.engine.entitySystem.prefab.internal.PojoPrefab) UISkinAsset(org.terasology.nui.skin.UISkinAsset) Collectors(java.util.stream.Collectors) WorldTimeImpl(org.terasology.engine.world.time.WorldTimeImpl) EngineTime(org.terasology.engine.core.EngineTime) Context(org.terasology.engine.context.Context) ExtraBlockDataManager(org.terasology.engine.world.chunks.blockdata.ExtraBlockDataManager) BlockShapeImpl(org.terasology.engine.world.block.shapes.BlockShapeImpl) PNGTextureFormat(org.terasology.engine.rendering.assets.texture.PNGTextureFormat) EntitySystemSetupUtil(org.terasology.engine.core.bootstrap.EntitySystemSetupUtil) NullWorldAtlas(org.terasology.engine.world.block.tiles.NullWorldAtlas) TextureData(org.terasology.engine.rendering.assets.texture.TextureData) ModuleManagerFactory(org.terasology.engine.testUtil.ModuleManagerFactory) CollisionGroup(org.terasology.engine.physics.CollisionGroup) MeshAnimation(org.terasology.engine.rendering.assets.animation.MeshAnimation) Name(org.terasology.gestalt.naming.Name) Mockito.mock(org.mockito.Mockito.mock) BlockTile(org.terasology.engine.world.block.tiles.BlockTile) Atlas(org.terasology.engine.rendering.assets.atlas.Atlas) WorldAtlas(org.terasology.engine.world.block.tiles.WorldAtlas) NullStreamingSound(org.terasology.engine.audio.nullAudio.NullStreamingSound) Shader(org.terasology.engine.rendering.assets.shader.Shader) UIElement(org.terasology.nui.asset.UIElement) HeadlessMesh(org.terasology.engine.core.subsystem.headless.assets.HeadlessMesh) ModuleManager(org.terasology.engine.core.module.ModuleManager) EngineEntityManager(org.terasology.engine.entitySystem.entity.internal.EngineEntityManager) Block(org.terasology.engine.world.block.Block) Subtexture(org.terasology.engine.rendering.assets.texture.subtexture.Subtexture) Time(org.terasology.engine.core.Time) StaticSound(org.terasology.engine.audio.StaticSound) StreamingSound(org.terasology.engine.audio.StreamingSound) TypeHandlerLibrary(org.terasology.persistence.typeHandling.TypeHandlerLibrary) FontImpl(org.terasology.engine.rendering.assets.font.FontImpl) CelestialSystem(org.terasology.engine.world.sun.CelestialSystem) WorldTime(org.terasology.engine.world.time.WorldTime) AssetManager(org.terasology.gestalt.assets.management.AssetManager) ComponentSystemManager(org.terasology.engine.core.ComponentSystemManager) CollisionGroupManager(org.terasology.engine.physics.CollisionGroupManager) Logger(org.slf4j.Logger) ReadWriteStorageManager(org.terasology.engine.persistence.internal.ReadWriteStorageManager) BlockFamily(org.terasology.engine.world.block.family.BlockFamily) DefaultCelestialSystem(org.terasology.engine.world.sun.DefaultCelestialSystem) Files(java.nio.file.Files) AssetType(org.terasology.gestalt.assets.AssetType) IOException(java.io.IOException) Prefab(org.terasology.engine.entitySystem.prefab.Prefab) Mockito.when(org.mockito.Mockito.when) RecordAndReplayCurrentStatus(org.terasology.engine.recording.RecordAndReplayCurrentStatus) HeadlessTexture(org.terasology.engine.core.subsystem.headless.assets.HeadlessTexture) BlockManagerImpl(org.terasology.engine.world.block.internal.BlockManagerImpl) Config(org.terasology.engine.config.Config) ModuleTypeRegistry(org.terasology.reflection.ModuleTypeRegistry) Material(org.terasology.engine.rendering.assets.material.Material) BlockManager(org.terasology.engine.world.block.BlockManager) NullSound(org.terasology.engine.audio.nullAudio.NullSound) BlockTypeHandler(org.terasology.engine.persistence.typeHandling.extensionTypes.BlockTypeHandler) Mesh(org.terasology.engine.rendering.assets.mesh.Mesh) NetworkSystem(org.terasology.engine.network.NetworkSystem) PathManager(org.terasology.engine.core.PathManager) NullStreamingSound(org.terasology.engine.audio.nullAudio.NullStreamingSound) UIElement(org.terasology.nui.asset.UIElement) HeadlessMaterial(org.terasology.engine.core.subsystem.headless.assets.HeadlessMaterial) BlockFamilyDefinitionFormat(org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat) BlockTile(org.terasology.engine.world.block.tiles.BlockTile) Texture(org.terasology.engine.rendering.assets.texture.Texture) HeadlessTexture(org.terasology.engine.core.subsystem.headless.assets.HeadlessTexture) MeshAnimationImpl(org.terasology.engine.rendering.assets.animation.MeshAnimationImpl) HeadlessShader(org.terasology.engine.core.subsystem.headless.assets.HeadlessShader) FontImpl(org.terasology.engine.rendering.assets.font.FontImpl) HeadlessTexture(org.terasology.engine.core.subsystem.headless.assets.HeadlessTexture) BlockFamilyDefinitionData(org.terasology.engine.world.block.loader.BlockFamilyDefinitionData) TextureData(org.terasology.engine.rendering.assets.texture.TextureData) HeadlessSkeletalMesh(org.terasology.engine.core.subsystem.headless.assets.HeadlessSkeletalMesh) NullSound(org.terasology.engine.audio.nullAudio.NullSound) PojoPrefab(org.terasology.engine.entitySystem.prefab.internal.PojoPrefab) NullWorldAtlas(org.terasology.engine.world.block.tiles.NullWorldAtlas) Atlas(org.terasology.engine.rendering.assets.atlas.Atlas) WorldAtlas(org.terasology.engine.world.block.tiles.WorldAtlas) BlockShapeImpl(org.terasology.engine.world.block.shapes.BlockShapeImpl) UISkinAsset(org.terasology.nui.skin.UISkinAsset) ModuleAwareAssetTypeManager(org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager) ModuleAwareAssetTypeManagerImpl(org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl) BehaviorTree(org.terasology.engine.logic.behavior.asset.BehaviorTree) HeadlessMesh(org.terasology.engine.core.subsystem.headless.assets.HeadlessMesh) BlockSounds(org.terasology.engine.world.block.sounds.BlockSounds) BlockFamilyDefinition(org.terasology.engine.world.block.loader.BlockFamilyDefinition) Subtexture(org.terasology.engine.rendering.assets.texture.subtexture.Subtexture)

Example 12 with AssetManager

use of org.terasology.gestalt.assets.management.AssetManager in project Terasology by MovingBlocks.

the class SettingWidgetFactoryTest method testCreateWidgetFor.

@Test
void testCreateWidgetFor() {
    ModuleEnvironment environment = mock(ModuleEnvironment.class);
    when(environment.getSubtypesOf(eq(ConstraintWidgetFactory.class))).thenReturn(Lists.newArrayList(NumberRangeConstraintWidgetFactory.class));
    AssetManager assetManager = new AssetManager(mock(AssetTypeManager.class));
    SettingWidgetFactory settingWidgetFactory = new SettingWidgetFactory(environment, assetManager, null);
    Setting<Integer> setting = mock(Setting.class);
    when(setting.getConstraint()).thenReturn(new NumberRangeConstraint<>(0, 10, false, false));
    Optional<ConstraintWidgetFactory<Integer, ?>> widget = settingWidgetFactory.getConstraintWidgetFactory(setting);
    assertTrue(widget.isPresent());
    assertTrue(widget.get() instanceof NumberRangeConstraintWidgetFactory);
}
Also used : AssetManager(org.terasology.gestalt.assets.management.AssetManager) AssetTypeManager(org.terasology.gestalt.assets.management.AssetTypeManager) ModuleEnvironment(org.terasology.gestalt.module.ModuleEnvironment) Test(org.junit.jupiter.api.Test)

Example 13 with AssetManager

use of org.terasology.gestalt.assets.management.AssetManager in project Terasology by MovingBlocks.

the class ChunkTest method setup.

@BeforeEach
public void setup() throws Exception {
    super.setup();
    AssetManager assetManager = CoreRegistry.get(AssetManager.class);
    blockManager = new BlockManagerImpl(new NullWorldAtlas(), assetManager);
    CoreRegistry.put(BlockManager.class, blockManager);
    ExtraBlockDataManager extraDataManager = new ExtraBlockDataManager();
    chunk = new ChunkImpl(new Vector3i(0, 0, 0), blockManager, extraDataManager);
    BlockFamilyDefinitionData solidData = new BlockFamilyDefinitionData();
    solidData.getBaseSection().setDisplayName("Stone");
    solidData.getBaseSection().setShape(assetManager.getAsset("engine:cube", BlockShape.class).get());
    solidData.getBaseSection().setTranslucent(false);
    solidData.setBlockFamily(SymmetricFamily.class);
    assetManager.loadAsset(new ResourceUrn("engine:stone"), solidData, BlockFamilyDefinition.class);
    solid = blockManager.getBlock(new BlockUri(new ResourceUrn("engine:stone")));
}
Also used : BlockUri(org.terasology.engine.world.block.BlockUri) AssetManager(org.terasology.gestalt.assets.management.AssetManager) BlockFamilyDefinitionData(org.terasology.engine.world.block.loader.BlockFamilyDefinitionData) ChunkImpl(org.terasology.engine.world.chunks.internal.ChunkImpl) Vector3i(org.joml.Vector3i) NullWorldAtlas(org.terasology.engine.world.block.tiles.NullWorldAtlas) ExtraBlockDataManager(org.terasology.engine.world.chunks.blockdata.ExtraBlockDataManager) ResourceUrn(org.terasology.gestalt.assets.ResourceUrn) BlockManagerImpl(org.terasology.engine.world.block.internal.BlockManagerImpl) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 14 with AssetManager

use of org.terasology.gestalt.assets.management.AssetManager in project Terasology by MovingBlocks.

the class ChunkViewTest method setup.

@BeforeEach
public void setup() throws IOException {
    AssetManager assetManager = CoreRegistry.get(AssetManager.class);
    blockManager = new BlockManagerImpl(new NullWorldAtlas(), assetManager);
    CoreRegistry.put(BlockManager.class, blockManager);
    airBlock = blockManager.getBlock(BlockManager.AIR_ID);
    extraDataManager = new ExtraBlockDataManager();
    BlockFamilyDefinitionData solidData = new BlockFamilyDefinitionData();
    solidData.getBaseSection().setDisplayName("Stone");
    solidData.getBaseSection().setShape(assetManager.getAsset("engine:cube", BlockShape.class).get());
    solidData.getBaseSection().setTranslucent(false);
    solidData.setBlockFamily(SymmetricFamily.class);
    assetManager.loadAsset(new ResourceUrn("engine:stone"), solidData, BlockFamilyDefinition.class);
    solidBlock = blockManager.getBlock(new BlockUri(new ResourceUrn("engine:stone")));
}
Also used : BlockUri(org.terasology.engine.world.block.BlockUri) AssetManager(org.terasology.gestalt.assets.management.AssetManager) BlockFamilyDefinitionData(org.terasology.engine.world.block.loader.BlockFamilyDefinitionData) NullWorldAtlas(org.terasology.engine.world.block.tiles.NullWorldAtlas) ExtraBlockDataManager(org.terasology.engine.world.chunks.blockdata.ExtraBlockDataManager) ResourceUrn(org.terasology.gestalt.assets.ResourceUrn) BlockManagerImpl(org.terasology.engine.world.block.internal.BlockManagerImpl) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 15 with AssetManager

use of org.terasology.gestalt.assets.management.AssetManager in project Terasology by MovingBlocks.

the class SettingWidgetFactory method getConstraintWidgetFactory.

/**
 * Try to find {@link ConstraintWidgetFactory} for this {@link Setting}.
 *
 * @param setting for constaint factory.
 * @param <T> type of settings
 * @return {@link ConstraintWidgetFactory} for {@link Setting} if found, {@code Optinal.empty()} otherwise.
 */
<T> Optional<ConstraintWidgetFactory<T, ?>> getConstraintWidgetFactory(Setting<T> setting) {
    SettingConstraint<?> constraint = setting.getConstraint();
    if (constraint != null) {
        for (Class<? extends ConstraintWidgetFactory> widgetType : environment.getSubtypesOf(ConstraintWidgetFactory.class)) {
            Type constraintType = ReflectionUtil.getTypeParameterForSuper(widgetType, ConstraintWidgetFactory.class, 1);
            if (constraint.getClass().equals(ReflectionUtil.getRawType(constraintType))) {
                ConstraintWidgetFactory<T, ?> factory = InjectionHelper.createWithConstructorInjection(widgetType, context);
                InjectionHelper.inject(factory, In.class, ImmutableMap.of(AssetManager.class, assetManager));
                return Optional.of(factory);
            }
        }
    }
    return Optional.empty();
}
Also used : Type(java.lang.reflect.Type) AssetManager(org.terasology.gestalt.assets.management.AssetManager)

Aggregations

AssetManager (org.terasology.gestalt.assets.management.AssetManager)15 BeforeEach (org.junit.jupiter.api.BeforeEach)9 ResourceUrn (org.terasology.gestalt.assets.ResourceUrn)9 BlockManagerImpl (org.terasology.engine.world.block.internal.BlockManagerImpl)8 BlockFamilyDefinitionData (org.terasology.engine.world.block.loader.BlockFamilyDefinitionData)8 NullWorldAtlas (org.terasology.engine.world.block.tiles.NullWorldAtlas)8 BlockUri (org.terasology.engine.world.block.BlockUri)6 ExtraBlockDataManager (org.terasology.engine.world.chunks.blockdata.ExtraBlockDataManager)6 RecordAndReplayCurrentStatus (org.terasology.engine.recording.RecordAndReplayCurrentStatus)3 Block (org.terasology.engine.world.block.Block)3 ModuleEnvironment (org.terasology.gestalt.module.ModuleEnvironment)3 IOException (java.io.IOException)2 EngineEntityManager (org.terasology.engine.entitySystem.entity.internal.EngineEntityManager)2 BehaviorTree (org.terasology.engine.logic.behavior.asset.BehaviorTree)2 BlockManager (org.terasology.engine.world.block.BlockManager)2 SunlightPropagationRules (org.terasology.engine.world.propagation.light.SunlightPropagationRules)2 SunlightRegenPropagationRules (org.terasology.engine.world.propagation.light.SunlightRegenPropagationRules)2 GsonBuilder (com.google.gson.GsonBuilder)1 JsonReader (com.google.gson.stream.JsonReader)1 JsonWriter (com.google.gson.stream.JsonWriter)1