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;
}
}
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);
}
}
}
});
}
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;
}
}
}
}
Aggregations