Search in sources :

Example 26 with Color

use of org.terasology.nui.Color in project Terasology by MovingBlocks.

the class PlayerConfig method defaultPlayerColor.

/**
 * Randomly generates a default color for the player via a random int generator using FastRandom object.
 *
 * @return a Color object with the player's default color.
 */
private Color defaultPlayerColor() {
    Random rng = new FastRandom();
    List<Color> colors = CieCamColors.L65C65;
    return colors.get(rng.nextInt(colors.size()));
}
Also used : Random(org.terasology.engine.utilities.random.Random) FastRandom(org.terasology.engine.utilities.random.FastRandom) Color(org.terasology.nui.Color) FastRandom(org.terasology.engine.utilities.random.FastRandom)

Example 27 with Color

use of org.terasology.nui.Color in project Terasology by MovingBlocks.

the class ColorConstraintWidgetFactory method findClosestColor.

private Color findClosestColor(float findex) {
    int index = DoubleMath.roundToInt(findex * (double) (colors.size() - 1), RoundingMode.HALF_UP);
    Color color = colors.get(index);
    return color;
}
Also used : Color(org.terasology.nui.Color) ColorConstraint(org.terasology.engine.config.flexible.constraints.ColorConstraint)

Example 28 with Color

use of org.terasology.nui.Color in project Terasology by MovingBlocks.

the class PlayerNameTagSystem method onCharacterActivation.

/**
 * Listening for {@link OnPlayerSpawnedEvent} does not work, as it is an
 * authority event that does not get processed at clients. That is why we listen for the activation.
 */
@ReceiveEvent(components = CharacterComponent.class)
public void onCharacterActivation(OnActivatedComponent event, EntityRef characterEntity, CharacterComponent characterComponent) {
    EntityRef ownerEntity = networkSystem.getOwnerEntity(characterEntity);
    if (ownerEntity == null) {
        // NPC
        return;
    }
    ClientComponent clientComponent = ownerEntity.getComponent(ClientComponent.class);
    if (clientComponent == null) {
        // the character is not owned by a client (no other player)
        return;
    }
    if (clientComponent.local) {
        // the character belongs to the local player and does not need a name tag
        return;
    }
    EntityRef clientInfoEntity = clientComponent.clientInfo;
    DisplayNameComponent displayNameComponent = clientInfoEntity.getComponent(DisplayNameComponent.class);
    if (displayNameComponent == null) {
        logger.debug("Cannot create name tag for client without DisplayNameComponent");
        return;
    }
    String name = displayNameComponent.name;
    float yOffset = characterComponent.nameTagOffset;
    ColorComponent colorComponent = clientInfoEntity.getComponent(ColorComponent.class);
    final Color color = colorComponent != null ? colorComponent.color : Color.WHITE;
    characterEntity.upsertComponent(NameTagComponent.class, maybeNameTag -> {
        NameTagComponent nameTagComponent = maybeNameTag.orElse(new NameTagComponent());
        nameTagComponent.text = name;
        nameTagComponent.textColor = color;
        nameTagComponent.yOffset = yOffset;
        return nameTagComponent;
    });
}
Also used : DisplayNameComponent(org.terasology.engine.logic.common.DisplayNameComponent) ColorComponent(org.terasology.engine.network.ColorComponent) Color(org.terasology.nui.Color) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) ClientComponent(org.terasology.engine.network.ClientComponent) ReceiveEvent(org.terasology.engine.entitySystem.event.ReceiveEvent)

Example 29 with Color

use of org.terasology.nui.Color in project Terasology by MovingBlocks.

the class AABBRenderer method generateDisplayListSolid.

private void generateDisplayListSolid() {
    MeshBuilder builder = new MeshBuilder();
    builder.addBox(aabb.extent(new Vector3f()).mul(-1.0f), aabb.extent(new Vector3f()).mul(2.0f), 0.0f, 0.0f).setTextureMapper(new MeshBuilder.TextureMapper() {

        @Override
        public void initialize(Vector3fc offset, Vector3fc size) {
        }

        @Override
        public Vector2fc map(int vertexIndex, float u, float v) {
            switch(vertexIndex) {
                // Front face
                case 0:
                    return new Vector2f(0f, 1f);
                case 1:
                    return new Vector2f(1f, 1f);
                case 2:
                    return new Vector2f(1f, 1);
                case 3:
                    return new Vector2f(0f, 1);
                // Back face
                case 4:
                    return new Vector2f(1f, 1f);
                case 5:
                    return new Vector2f(1f, 1);
                case 6:
                    return new Vector2f(0f, 1);
                case 7:
                    return new Vector2f(0f, 1f);
                // Top face
                case 8:
                    return new Vector2f(1f, 0f);
                case 9:
                    return new Vector2f(1f, 1f);
                case 10:
                    return new Vector2f(0f, 1f);
                case 11:
                    return new Vector2f(0f, 0f);
                // Bottom face
                case 12:
                    return new Vector2f(1f, 0f);
                case 13:
                    return new Vector2f(0f, 0f);
                case 14:
                    return new Vector2f(0f, 1f);
                case 15:
                    return new Vector2f(1f, 1f);
                // Right face
                case 16:
                    return new Vector2f(1f, 1f);
                case 17:
                    return new Vector2f(1f, 1);
                case 18:
                    return new Vector2f(0f, 1);
                case 19:
                    return new Vector2f(0f, 1f);
                // Left face
                case 20:
                    return new Vector2f(0f, 0f);
                case 21:
                    return new Vector2f(1f, 0f);
                case 22:
                    return new Vector2f(1f, 1.0f);
                case 23:
                    return new Vector2f(0f, 1.0f);
                default:
                    throw new RuntimeException("Unreachable state.");
            }
        }
    });
    for (int x = 0; x < 24; x++) {
        builder.addColor(new Color(solidColor.x, solidColor.y, solidColor.z, solidColor.w));
    }
    solidMesh = builder.build();
}
Also used : Vector3fc(org.joml.Vector3fc) Vector2fc(org.joml.Vector2fc) MeshBuilder(org.terasology.engine.rendering.assets.mesh.MeshBuilder) Vector2f(org.joml.Vector2f) Vector3f(org.joml.Vector3f) Color(org.terasology.nui.Color)

Example 30 with Color

use of org.terasology.nui.Color in project Terasology by MovingBlocks.

the class ColorHueAnimator method apply.

@Override
public void apply(float v) {
    int count = colors.size();
    int index = (v == 1.0) ? count - 1 : (int) (v * count);
    Color color = colors.get(index);
    consumer.accept(color);
}
Also used : Color(org.terasology.nui.Color)

Aggregations

Color (org.terasology.nui.Color)39 Test (org.junit.jupiter.api.Test)9 Vector3f (org.joml.Vector3f)5 ByteBuffer (java.nio.ByteBuffer)3 Mesh (org.terasology.engine.rendering.assets.mesh.Mesh)3 ResourceUrn (org.terasology.gestalt.assets.ResourceUrn)3 Colorc (org.terasology.nui.Colorc)3 ColorModel (java.awt.image.ColorModel)2 DataBufferInt (java.awt.image.DataBufferInt)2 Vector2f (org.joml.Vector2f)2 Vector3fc (org.joml.Vector3fc)2 Vector4f (org.joml.Vector4f)2 Test (org.junit.Test)2 ColorConstraint (org.terasology.engine.config.flexible.constraints.ColorConstraint)2 EntityRef (org.terasology.engine.entitySystem.entity.EntityRef)2 StandardMeshData (org.terasology.engine.rendering.assets.mesh.StandardMeshData)2 VertexResource (org.terasology.engine.rendering.assets.mesh.resource.VertexResource)2 VertexResourceBuilder (org.terasology.engine.rendering.assets.mesh.resource.VertexResourceBuilder)2 ParagraphRenderStyle (org.terasology.engine.rendering.nui.widgets.browser.ui.style.ParagraphRenderStyle)2 FastRandom (org.terasology.engine.utilities.random.FastRandom)2