Skip to content

Commit

Permalink
Merge pull request #7 from akhunovaa/feature/block-creation
Browse files Browse the repository at this point in the history
Feature/block creation
  • Loading branch information
akhunovaa committed Oct 22, 2021
2 parents efc6f87 + b8f3fda commit afe710c
Show file tree
Hide file tree
Showing 22 changed files with 355 additions and 242 deletions.
11 changes: 6 additions & 5 deletions assets/shaders/scene.glsl
Expand Up @@ -96,7 +96,7 @@ vec4 speculrC;

void setupColours(Material material, vec2 textCoord)
{
if (material.hasTexture == 1)
if (material.hasTexture >= 1)
{
ambientC = texture(texture_sampler, textCoord);
diffuseC = ambientC;
Expand Down Expand Up @@ -199,15 +199,16 @@ void main()

if ( fog.activeFog == 1 ) {
if ( outSelected > .0 ) {
fragColor = calcFog(mvVertexPos, ambientC * vec4(ambientLight, 1) + diffuseSpecularComp, fog, ambientLight, directionalLight);
} else {
fragColor = calcFog(mvVertexPos, vec4(1.0, 0.1, 0.1, 1.0) * ambientC * vec4(ambientLight, 1) + diffuseSpecularComp, fog, ambientLight, directionalLight);
} else {
fragColor = calcFog(mvVertexPos, ambientC * vec4(ambientLight, 1) + diffuseSpecularComp, fog, ambientLight, directionalLight);

}
} else {
if ( outSelected > .0 ) {
fragColor = ambientC * vec4(ambientLight, 1) + diffuseSpecularComp;
} else {
fragColor = vec4(1.0, 0.1, 0.1, 1.0) * ambientC * vec4(ambientLight, 1) + diffuseSpecularComp;
} else {
fragColor = ambientC * vec4(ambientLight, 1) + diffuseSpecularComp;
}
}
}
3 changes: 3 additions & 0 deletions src/main/java/ru/mycubecraft/block/Block.java
@@ -1,5 +1,6 @@
package ru.mycubecraft.block;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import org.joml.Vector3f;
Expand All @@ -8,11 +9,13 @@

@Getter
@Setter
@EqualsAndHashCode
public abstract class Block {

final Vector3f position;
boolean disableFrustumCulling;
boolean visible;
boolean selected;
float scale;
float boundingRadius;
private boolean insideFrustum;
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/ru/mycubecraft/block/DirtBlock.java
@@ -1,12 +1,10 @@
package ru.mycubecraft.block;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import ru.mycubecraft.core.GameItem;
import ru.mycubecraft.renderer.cube.Cube;

@Getter
@EqualsAndHashCode(callSuper = false)
public class DirtBlock extends Block {

private final static String MODEL_TEXTURE_PATH = "assets/textures/dirt.png";
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/ru/mycubecraft/block/EmptyBlock.java
@@ -1,12 +1,10 @@
package ru.mycubecraft.block;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import ru.mycubecraft.core.GameItem;
import ru.mycubecraft.renderer.cube.Cube;

@Getter
@EqualsAndHashCode(callSuper = false)
public class EmptyBlock extends Block {

private final static String MODEL_TEXTURE_PATH = "assets/textures/white.png";
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/ru/mycubecraft/block/GrassBlock.java
@@ -1,12 +1,10 @@
package ru.mycubecraft.block;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import ru.mycubecraft.core.GameItem;
import ru.mycubecraft.renderer.cube.Cube;

@Getter
@EqualsAndHashCode(callSuper = false)
public class GrassBlock extends Block {

private final static String MODEL_TEXTURE_PATH = "assets/textures/grass.png";
Expand All @@ -22,6 +20,7 @@ public void createCube(Cube cube) {
try {
cube.setPosition(position.x, position.y, position.z);
cube.setTexture(MODEL_TEXTURE_PATH);
cube.createCube();
this.gameCubeItem = cube;
} catch (Exception e) {
e.printStackTrace();
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/ru/mycubecraft/data/Hud.java
Expand Up @@ -9,10 +9,10 @@
import ru.mycubecraft.engine.Material;
import ru.mycubecraft.engine.TextItem;
import ru.mycubecraft.engine.graph.FontTexture;
import ru.mycubecraft.renderer.Camera;
import ru.mycubecraft.util.AssetPool;
import ru.mycubecraft.window.Window;
import ru.mycubecraft.world.World;
import ru.mycubecraft.world.player.Player;

import java.awt.*;

Expand Down Expand Up @@ -122,12 +122,12 @@ public GameItem[] getGameItems() {
return gameItems;
}

public void updateHud(Camera camera, World world, int filteredBlocksCount) {
public void updateHud(Player player, World world, int filteredBlocksCount) {
Window window = Window.getInstance();
this.versionTextItem.setPosition(window.getWidth() - 100.0f, window.getHeight() - 20f, 0);

Vector4f cameraPosition = camera.getPosition();
Vector3f cameraRotation = camera.getRotation();
Vector4f cameraPosition = player.getPosition();
Vector3f cameraRotation = player.getRotation();

this.coordinatesTextItem.setText(String.format("Position [X: %s Y: %s Z: %s]", cameraPosition.x, cameraPosition.y, cameraPosition.z));
this.coordinatesTextItem.setPosition(20.0f, 40f, 0);
Expand Down
21 changes: 12 additions & 9 deletions src/main/java/ru/mycubecraft/listener/MouseListener.java
Expand Up @@ -3,6 +3,8 @@
import lombok.Getter;
import lombok.Setter;

import static org.lwjgl.glfw.GLFW.*;

@Getter
@Setter
public class MouseListener {
Expand All @@ -11,10 +13,12 @@ public class MouseListener {
private final boolean[] mouseButtonPressed = new boolean[3];
private final boolean inWindow = false;

private boolean leftButtonPressed = false;
private boolean rightButtonPressed = false;

private boolean firstCursorPos = true;
private int mouseX, mouseY;
private float angx, angy, dangx, dangy;
private boolean hasSelection;

private MouseListener() {
}
Expand Down Expand Up @@ -50,13 +54,12 @@ public void onCursorPos(long window, double x, double y) {
* GLFW callback for mouse buttons.
*/
public void onMouseButton(long window, int button, int action, int mods) {
// updateAndRenderRunnables.add(new DelayedRunnable(() -> {
// if (button == GLFW_MOUSE_BUTTON_1 && action == GLFW_PRESS && hasSelection) {
// //placeAtSelectedBlock();
// } else if (button == GLFW_MOUSE_BUTTON_2 && action == GLFW_PRESS && hasSelection) {
// //removeSelectedBlock();
// }
// return null;
// }, "Mouse button event", 0));
leftButtonPressed = button == GLFW_MOUSE_BUTTON_1 && action == GLFW_PRESS;
rightButtonPressed = button == GLFW_MOUSE_BUTTON_2 && action == GLFW_PRESS;
}


public boolean isKeyPressed(int keyCode) {
return this.mouseButtonPressed[keyCode];
}
}
76 changes: 0 additions & 76 deletions src/main/java/ru/mycubecraft/renderer/Camera.java

This file was deleted.

14 changes: 6 additions & 8 deletions src/main/java/ru/mycubecraft/renderer/Renderer.java
Expand Up @@ -17,11 +17,9 @@
import ru.mycubecraft.world.BlockField;
import ru.mycubecraft.world.Chunk;
import ru.mycubecraft.world.World;
import ru.mycubecraft.world.player.Player;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;

import static org.lwjgl.opengl.GL11.*;

Expand Down Expand Up @@ -56,7 +54,7 @@ public void clear() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
}

public void render(World world, Camera camera, Scene scene, IHud hud, Vector3f ambientLight) {
public void render(World world, Player player, Scene scene, IHud hud, Vector3f ambientLight) {
clear();
filteredItems.clear();

Expand All @@ -68,7 +66,7 @@ public void render(World world, Camera camera, Scene scene, IHud hud, Vector3f a

// Update projection and view atrices once per render cycle
transformation.updateProjectionMatrix(window.getWidth(), window.getHeight());
transformation.updateViewMatrix(camera);
transformation.updateViewMatrix(player);

renderScene(world, scene, ambientLight);
renderHud(window, hud);
Expand All @@ -94,6 +92,7 @@ private void renderScene(World world, Scene scene, Vector3f ambientLight) {
Map<String, Block> blocks = blockField.getBlocks();
blocks.values()
.parallelStream()
.filter(Objects::nonNull)
.filter(block ->
block.getGameCubeItem() != null
&& block.isVisible()
Expand All @@ -120,11 +119,10 @@ private void renderScene(World world, Scene scene, Vector3f ambientLight) {
// Set world matrix for this item
Matrix4f modelViewMatrix = transformation.buildModelViewMatrix(gameItem, viewMatrix);
sceneShaderProgram.uploadMat4f("modelViewMatrix", modelViewMatrix);

sceneShaderProgram.uploadFloat("selected", gameItem.isSelected() ? 1.0f : 0.0f);
// Render the mesh for this game item
gameItem.render();
}
sceneShaderProgram.uploadFloat("selected", 1.0f);

// Unbind shader
sceneShaderProgram.detach();
Expand Down
7 changes: 4 additions & 3 deletions src/main/java/ru/mycubecraft/renderer/Transformation.java
Expand Up @@ -5,6 +5,7 @@
import org.joml.Vector4f;
import ru.mycubecraft.Settings;
import ru.mycubecraft.core.GameItem;
import ru.mycubecraft.world.player.Player;

public class Transformation {

Expand Down Expand Up @@ -47,9 +48,9 @@ public Matrix4f getProjectionMatrix() {
return projectionMatrix;
}

public Matrix4f updateViewMatrix(Camera camera) {
Vector4f cameraPos = camera.getPosition();
Vector3f rotation = camera.getRotation();
public Matrix4f updateViewMatrix(Player player) {
Vector4f cameraPos = player.getPosition();
Vector3f rotation = player.getRotation();

viewMatrix.identity();
// First do the rotation so camera rotates over its position
Expand Down
1 change: 0 additions & 1 deletion src/main/java/ru/mycubecraft/renderer/cube/BackCube.java
Expand Up @@ -78,7 +78,6 @@ public Mesh getMesh() {
@Override
public void render() {
mesh.render();

}

@Override
Expand Down
1 change: 0 additions & 1 deletion src/main/java/ru/mycubecraft/renderer/cube/Cube.java
Expand Up @@ -78,7 +78,6 @@ public Mesh getMesh() {
@Override
public void render() {
mesh.render();

}

@Override
Expand Down
1 change: 0 additions & 1 deletion src/main/java/ru/mycubecraft/renderer/cube/FrontCube.java
Expand Up @@ -78,7 +78,6 @@ public Mesh getMesh() {
@Override
public void render() {
mesh.render();

}

@Override
Expand Down

0 comments on commit afe710c

Please sign in to comment.