Search in sources :

Example 11 with NodeComponent

use of io.github.voidzombie.nhglib.runtime.ecs.components.scenes.NodeComponent in project nhglib by VoidZombie.

the class LightingSystem method process.

@Override
protected void process(int entityId) {
    NodeComponent node = nodeMapper.get(entityId);
    LightComponent light = lightMapper.get(entityId);
    light.light.position.set(node.getTranslation());
    light.light.setTransform(node.getTransform());
    switch(light.type) {
        case SPOT_LIGHT:
        case DIRECTIONAL_LIGHT:
            Matrix4 tempMatrix = MatrixPool.getMatrix4();
            tempMatrix.set(node.getTransform());
            tempMatrix.translate(0f, 1f, 0f);
            Vector3 direction = VectorPool.getVector3();
            Vector3 tempVec = VectorPool.getVector3();
            direction.set(light.light.position).sub(tempMatrix.getTranslation(tempVec));
            light.light.direction.set(direction);
            MatrixPool.freeMatrix4(tempMatrix);
            VectorPool.freeVector3(direction, tempVec);
            break;
    }
}
Also used : LightComponent(io.github.voidzombie.nhglib.runtime.ecs.components.graphics.LightComponent) NodeComponent(io.github.voidzombie.nhglib.runtime.ecs.components.scenes.NodeComponent) Vector3(com.badlogic.gdx.math.Vector3) Matrix4(com.badlogic.gdx.math.Matrix4)

Example 12 with NodeComponent

use of io.github.voidzombie.nhglib.runtime.ecs.components.scenes.NodeComponent in project nhglib by VoidZombie.

the class Main method engineStarted.

@Override
public void engineStarted() {
    super.engineStarted();
    Nhg.debugLogs = true;
    Gdx.input.setCursorCatched(true);
    world = new NhgWorld(nhg.messaging, nhg.entities, nhg.assets, new DefaultWorldStrategy(), new Bounds(2f, 2f, 2f));
    fpsLogger = new FPSLogger();
    renderer20 = new ImmediateModeRenderer20(false, true, 0);
    nhg.input.addListener(this);
    nhg.assets.queueAsset(new Asset("scene", "myscene.nhs", Scene.class));
    nhg.assets.queueAsset(new Asset("inputMap", "input.nhc", JsonValue.class));
    GraphicsSystem graphicsSystem = nhg.entities.getEntitySystem(GraphicsSystem.class);
    graphicsSystem.setClearColor(Color.GRAY);
    Environment environment = graphicsSystem.getEnvironment();
    GammaCorrectionAttribute gammaCorrectionAttribute = new GammaCorrectionAttribute();
    gammaCorrectionAttribute.gammaCorrection = true;
    environment.set(gammaCorrectionAttribute);
    // Subscribe to asset events
    nhg.messaging.get(Strings.Events.assetLoaded, Strings.Events.assetLoadingFinished).subscribe(new Consumer<Message>() {

        @Override
        public void accept(Message message) throws Exception {
            if (message.is(Strings.Events.assetLoaded)) {
                Asset asset = (Asset) message.data.get(Strings.Defaults.assetKey);
                if (asset.is("scene")) {
                    scene = nhg.assets.get(asset);
                    world.loadScene(scene);
                    world.setReferenceEntity("camera");
                    ModelBuilder mb = new ModelBuilder();
                    Model planeModel = mb.createBox(2f, 0.01f, 20f, new Material(), VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal | VertexAttributes.Usage.TextureCoordinates);
                    int plane = scene.sceneGraph.createSceneEntity("plane");
                    scene.sceneGraph.addSceneEntity(plane);
                    ModelComponent modelComponent = nhg.entities.createComponent(plane, ModelComponent.class);
                    modelComponent.initWithModel(planeModel);
                    NodeComponent nodeComponent = nhg.entities.getComponent(plane, NodeComponent.class);
                    nodeComponent.setTranslation(0, 0, 0, true);
                    Integer cameraEntity = scene.sceneGraph.getSceneEntity("camera");
                    cameraNode = nhg.entities.getComponent(cameraEntity, NodeComponent.class);
                } else if (asset.is("inputMap")) {
                    nhg.input.fromJson((JsonValue) nhg.assets.get(asset));
                    nhg.input.setActiveContext("game", true);
                    nhg.input.setActiveContext("global", true);
                }
            }
        }
    });
}
Also used : NhgWorld(io.github.voidzombie.nhglib.graphics.worlds.NhgWorld) Message(io.github.voidzombie.nhglib.runtime.messaging.Message) GammaCorrectionAttribute(io.github.voidzombie.nhglib.graphics.shaders.attributes.GammaCorrectionAttribute) Bounds(io.github.voidzombie.nhglib.utils.data.Bounds) JsonValue(com.badlogic.gdx.utils.JsonValue) Material(com.badlogic.gdx.graphics.g3d.Material) Scene(io.github.voidzombie.nhglib.graphics.scenes.Scene) FPSLogger(com.badlogic.gdx.graphics.FPSLogger) ImmediateModeRenderer20(com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer20) ModelBuilder(com.badlogic.gdx.graphics.g3d.utils.ModelBuilder) ModelComponent(io.github.voidzombie.nhglib.runtime.ecs.components.graphics.ModelComponent) DefaultWorldStrategy(io.github.voidzombie.nhglib.graphics.worlds.strategies.impl.DefaultWorldStrategy) Model(com.badlogic.gdx.graphics.g3d.Model) NodeComponent(io.github.voidzombie.nhglib.runtime.ecs.components.scenes.NodeComponent) Asset(io.github.voidzombie.nhglib.assets.Asset) GraphicsSystem(io.github.voidzombie.nhglib.runtime.ecs.systems.impl.GraphicsSystem) Environment(com.badlogic.gdx.graphics.g3d.Environment)

Example 13 with NodeComponent

use of io.github.voidzombie.nhglib.runtime.ecs.components.scenes.NodeComponent in project nhglib by VoidZombie.

the class Main method onStickInput.

@Override
public void onStickInput(NhgInput input) {
    if (scene != null) {
        NodeComponent nodeComponent = cameraNode;
        Vector2 stickVector = (Vector2) input.getInputSource().getValue();
        if (stickVector != null) {
            switch(input.getName()) {
                case "movementStick":
                    nodeComponent.translate(stickVector.x * Gdx.graphics.getDeltaTime(), 0, stickVector.y * Gdx.graphics.getDeltaTime(), true);
                    break;
                case "rotationStick":
                    nodeComponent.rotate(stickVector.y * Gdx.graphics.getDeltaTime(), stickVector.x * Gdx.graphics.getDeltaTime(), 0, true);
                    break;
            }
        }
    }
}
Also used : Vector2(com.badlogic.gdx.math.Vector2) NodeComponent(io.github.voidzombie.nhglib.runtime.ecs.components.scenes.NodeComponent)

Aggregations

NodeComponent (io.github.voidzombie.nhglib.runtime.ecs.components.scenes.NodeComponent)13 JsonValue (com.badlogic.gdx.utils.JsonValue)3 ModelComponent (io.github.voidzombie.nhglib.runtime.ecs.components.graphics.ModelComponent)3 Message (io.github.voidzombie.nhglib.runtime.messaging.Message)3 Matrix4 (com.badlogic.gdx.math.Matrix4)2 Vector3 (com.badlogic.gdx.math.Vector3)2 Scene (io.github.voidzombie.nhglib.graphics.scenes.Scene)2 Bounds (io.github.voidzombie.nhglib.utils.data.Bounds)2 Camera (com.badlogic.gdx.graphics.Camera)1 FPSLogger (com.badlogic.gdx.graphics.FPSLogger)1 Environment (com.badlogic.gdx.graphics.g3d.Environment)1 Material (com.badlogic.gdx.graphics.g3d.Material)1 Model (com.badlogic.gdx.graphics.g3d.Model)1 ModelCache (com.badlogic.gdx.graphics.g3d.ModelCache)1 ModelBuilder (com.badlogic.gdx.graphics.g3d.utils.ModelBuilder)1 ImmediateModeRenderer20 (com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer20)1 Quaternion (com.badlogic.gdx.math.Quaternion)1 Vector2 (com.badlogic.gdx.math.Vector2)1 Asset (io.github.voidzombie.nhglib.assets.Asset)1 GammaCorrectionAttribute (io.github.voidzombie.nhglib.graphics.shaders.attributes.GammaCorrectionAttribute)1