Search in sources :

Example 1 with UIElement

use of org.terasology.nui.asset.UIElement in project Terasology by MovingBlocks.

the class TerasologyEngine method initAssets.

private void initAssets() {
    // 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> blockFamilyDefinitionAssetType = assetTypeManager.createAssetType(BlockFamilyDefinition.class, BlockFamilyDefinition::new, "blocks");
    assetTypeManager.getAssetFileDataProducer(blockFamilyDefinitionAssetType).addAssetFormat(new BlockFamilyDefinitionFormat(assetTypeManager.getAssetManager()));
    assetTypeManager.createAssetType(UISkinAsset.class, UISkinAsset::new, "skins");
    assetTypeManager.createAssetType(BehaviorTree.class, BehaviorTree::new, "behaviors");
    assetTypeManager.createAssetType(UIElement.class, UIElement::new, "ui");
    assetTypeManager.createAssetType(ByteBufferAsset.class, ByteBufferAsset::new, "mesh");
    for (EngineSubsystem subsystem : allSubsystems) {
        subsystem.registerCoreAssetTypes(assetTypeManager);
    }
}
Also used : PojoPrefab(org.terasology.engine.entitySystem.prefab.internal.PojoPrefab) BlockShapeImpl(org.terasology.engine.world.block.shapes.BlockShapeImpl) UIElement(org.terasology.nui.asset.UIElement) UISkinAsset(org.terasology.nui.skin.UISkinAsset) BlockFamilyDefinitionFormat(org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat) BlockTile(org.terasology.engine.world.block.tiles.BlockTile) BehaviorTree(org.terasology.engine.logic.behavior.asset.BehaviorTree) ByteBufferAsset(org.terasology.engine.rendering.gltf.ByteBufferAsset) BlockSounds(org.terasology.engine.world.block.sounds.BlockSounds) BlockFamilyDefinitionData(org.terasology.engine.world.block.loader.BlockFamilyDefinitionData) EngineSubsystem(org.terasology.engine.core.subsystem.EngineSubsystem) BlockFamilyDefinition(org.terasology.engine.world.block.loader.BlockFamilyDefinition)

Example 2 with UIElement

use of org.terasology.nui.asset.UIElement in project Terasology by MovingBlocks.

the class AssetBackedConstraintWidgetFactory method buildWidget.

@Override
protected Optional<UIWidget> buildWidget() {
    Optional<UIElement> uiElement = assetManager.getAsset(contentsUri, UIElement.class);
    if (!uiElement.isPresent()) {
        LOGGER.error("Can't find unique UI element '{}'", contentsUri);
        return Optional.empty();
    }
    uiElement = uiElement.get().createInstance();
    if (!uiElement.isPresent()) {
        LOGGER.error("Can't create copy of UI element '{}'", contentsUri);
        return Optional.empty();
    }
    UIWidget settingWidget = uiElement.get().getRootWidget();
    bindWidgetToSetting(settingWidget);
    return Optional.of(settingWidget);
}
Also used : UIElement(org.terasology.nui.asset.UIElement) UIWidget(org.terasology.nui.UIWidget)

Example 3 with UIElement

use of org.terasology.nui.asset.UIElement in project Terasology by MovingBlocks.

the class UniverseSetupScreen method initAssets.

private void initAssets() {
    ModuleEnvironment environment = context.get(ModuleManager.class).getEnvironment();
    BlockFamilyLibrary library = new BlockFamilyLibrary(environment, context);
    // 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(UISkinAsset.class, UISkinAsset::new, "skins");
    assetTypeManager.createAssetType(BehaviorTree.class, BehaviorTree::new, "behaviors");
    assetTypeManager.createAssetType(UIElement.class, UIElement::new, "ui");
}
Also used : PojoPrefab(org.terasology.engine.entitySystem.prefab.internal.PojoPrefab) BlockShapeImpl(org.terasology.engine.world.block.shapes.BlockShapeImpl) UIElement(org.terasology.nui.asset.UIElement) UISkinAsset(org.terasology.nui.skin.UISkinAsset) BlockFamilyDefinitionFormat(org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat) BlockFamilyLibrary(org.terasology.engine.world.block.family.BlockFamilyLibrary) BlockTile(org.terasology.engine.world.block.tiles.BlockTile) ModuleManager(org.terasology.engine.core.module.ModuleManager) BehaviorTree(org.terasology.engine.logic.behavior.asset.BehaviorTree) BlockSounds(org.terasology.engine.world.block.sounds.BlockSounds) BlockFamilyDefinitionData(org.terasology.engine.world.block.loader.BlockFamilyDefinitionData) ModuleEnvironment(org.terasology.gestalt.module.ModuleEnvironment) BlockFamilyDefinition(org.terasology.engine.world.block.loader.BlockFamilyDefinition)

Example 4 with UIElement

use of org.terasology.nui.asset.UIElement 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 5 with UIElement

use of org.terasology.nui.asset.UIElement in project Terasology by MovingBlocks.

the class NUIEditorScreen method selectAsset.

/**
 * {@inheritDoc}
 */
@Override
public void selectAsset(ResourceUrn urn) {
    boolean isLoaded = assetManager.isLoaded(urn, UIElement.class);
    Optional<UIElement> asset = assetManager.getAsset(urn, UIElement.class);
    if (asset.isPresent()) {
        UIElement element = asset.get();
        if (!isLoaded) {
            asset.get().dispose();
        }
        AssetDataFile source = element.getSource();
        String content = null;
        try (JsonReader reader = new JsonReader(new InputStreamReader(source.openStream(), Charsets.UTF_8))) {
            reader.setLenient(true);
            content = new JsonParser().parse(reader).toString();
        } catch (IOException e) {
            logger.error(String.format("Could not load asset source file for %s", urn.toString()), e);
        }
        if (content != null) {
            JsonTree node = JsonTreeConverter.serialize(new JsonParser().parse(content));
            selectedAssetPending = urn.toString();
            resetState(node);
        }
    }
}
Also used : UIElement(org.terasology.nui.asset.UIElement) InputStreamReader(java.io.InputStreamReader) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) AssetDataFile(org.terasology.gestalt.assets.format.AssetDataFile) JsonReader(com.google.gson.stream.JsonReader) IOException(java.io.IOException) JsonParser(com.google.gson.JsonParser)

Aggregations

UIElement (org.terasology.nui.asset.UIElement)10 UIWidget (org.terasology.nui.UIWidget)4 AssetDataFile (org.terasology.gestalt.assets.format.AssetDataFile)3 JsonParser (com.google.gson.JsonParser)2 JsonReader (com.google.gson.stream.JsonReader)2 IOException (java.io.IOException)2 InputStreamReader (java.io.InputStreamReader)2 ModuleManager (org.terasology.engine.core.module.ModuleManager)2 PojoPrefab (org.terasology.engine.entitySystem.prefab.internal.PojoPrefab)2 BehaviorTree (org.terasology.engine.logic.behavior.asset.BehaviorTree)2 BlockFamilyDefinition (org.terasology.engine.world.block.loader.BlockFamilyDefinition)2 BlockFamilyDefinitionData (org.terasology.engine.world.block.loader.BlockFamilyDefinitionData)2 BlockFamilyDefinitionFormat (org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat)2 BlockShapeImpl (org.terasology.engine.world.block.shapes.BlockShapeImpl)2 BlockSounds (org.terasology.engine.world.block.sounds.BlockSounds)2 BlockTile (org.terasology.engine.world.block.tiles.BlockTile)2 UISkinAsset (org.terasology.nui.skin.UISkinAsset)2 JsonTree (org.terasology.nui.widgets.treeView.JsonTree)2 JsonElement (com.google.gson.JsonElement)1 FileNotFoundException (java.io.FileNotFoundException)1