fix block LOD chunks rendering
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
This commit is contained in:
parent
649e2fb0cf
commit
258d73be9a
@ -40,6 +40,7 @@ public class ClientEntityUtils {
|
||||
public static void reositionEntity(Entity entity, Vector3d position, Quaterniond rotation){
|
||||
//reposition entity
|
||||
CollisionObjUtils.clientPositionCharacter(entity, position, rotation);
|
||||
EntityUtils.getPosition(entity).set(position);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -79,7 +79,7 @@ public class BlockChunkEntity {
|
||||
EntityCreationUtils.makeEntityDrawablePreexistingModel(solidsEnt, modelPath);
|
||||
if(levelOfDetail == BlockChunkData.LOD_FULL_RES){
|
||||
PhysicsEntityUtils.clientAttachTriGeomCollider(solidsEnt, data);
|
||||
CollisionObjUtils.clientPositionCharacter(solidsEnt, new Vector3d(EntityUtils.getPosition(solidsEnt)), new Quaterniond());
|
||||
ClientEntityUtils.reositionEntity(solidsEnt, new Vector3d(EntityUtils.getPosition(solidsEnt)), new Quaterniond());
|
||||
} else {
|
||||
EntityCreationUtils.bypassShadowPass(solidsEnt);
|
||||
EntityCreationUtils.bypassVolumetics(solidsEnt);
|
||||
|
||||
@ -194,21 +194,24 @@ public class BlockMeshgen {
|
||||
* @param depth The depth of the box
|
||||
* @param blockType The type of block
|
||||
* @param indexOffset The offset for the indices that will be added (ie, if there are already vertices in the verts list, pass in the size of the vert list)
|
||||
* @param scalingFactor The factor to scale by
|
||||
*/
|
||||
protected static void meshifyBox(MeshGenStore meshStore, QuadMesh quad, int depth, int blockType){
|
||||
protected static void meshifyBox(MeshGenStore meshStore, QuadMesh quad, int depth, int blockType, int scalingFactor){
|
||||
|
||||
int indexOffset = meshStore.getVertCount() / 3;
|
||||
|
||||
float finalScalingFactor = scalingFactor * BlockChunkData.BLOCK_SIZE_MULTIPLIER;
|
||||
|
||||
//
|
||||
//face 1
|
||||
//
|
||||
int samplerIndex = Globals.blockTextureAtlas.getVoxelTypeOffset(blockType);
|
||||
|
||||
//verts
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
//indices
|
||||
meshStore.addFace(indexOffset + 0, indexOffset + 2, indexOffset + 3);
|
||||
meshStore.addFace(indexOffset + 0, indexOffset + 3, indexOffset + 1);
|
||||
@ -233,10 +236,10 @@ public class BlockMeshgen {
|
||||
//
|
||||
|
||||
//verts
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
//indices
|
||||
meshStore.addFace(indexOffset + 4, indexOffset + 7, indexOffset + 6);
|
||||
meshStore.addFace(indexOffset + 4, indexOffset + 5, indexOffset + 7);
|
||||
@ -261,14 +264,10 @@ public class BlockMeshgen {
|
||||
//
|
||||
|
||||
//verts
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
// verts.add(new Vector3f(quad.x, quad.y, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
//indices
|
||||
meshStore.addFace(indexOffset + 8, indexOffset + 10, indexOffset + 11);
|
||||
meshStore.addFace(indexOffset + 9, indexOffset + 8, indexOffset + 11);
|
||||
@ -293,14 +292,10 @@ public class BlockMeshgen {
|
||||
//
|
||||
|
||||
//verts
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
// verts.add(new Vector3f(quad.x, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x, quad.y + quad.h, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y + quad.h, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
//indices
|
||||
meshStore.addFace(indexOffset + 12, indexOffset + 15, indexOffset + 14);
|
||||
meshStore.addFace(indexOffset + 12, indexOffset + 13, indexOffset + 15);
|
||||
@ -326,10 +321,10 @@ public class BlockMeshgen {
|
||||
//
|
||||
|
||||
//verts
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y + quad.h, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||
@ -426,7 +421,7 @@ public class BlockMeshgen {
|
||||
if(quad1.x == quad2.x && quad1.y == quad2.y && quad1.w == quad2.w && quad1.h == quad2.h && quad1.z + zEnd == quad2.z){
|
||||
zEnd++;
|
||||
} else {
|
||||
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type);
|
||||
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type,scalingFactor);
|
||||
quad1 = quad2;
|
||||
|
||||
// BlockSingleShape blockSingleShape = BlockMeshgen.copyDataToShape(meshGenStore, vertCount, faceCount);
|
||||
@ -439,7 +434,7 @@ public class BlockMeshgen {
|
||||
i = i + zEnd;
|
||||
}
|
||||
if(quad1 != null){
|
||||
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type);
|
||||
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type,scalingFactor);
|
||||
// BlockSingleShape blockSingleShape = BlockMeshgen.copyDataToShape(meshGenStore, vertCount, faceCount);
|
||||
// vertCount = meshGenStore.getVertCount();
|
||||
// faceCount = meshGenStore.getFaceCount();
|
||||
|
||||
@ -297,7 +297,7 @@ public class BlockMeshgenTests {
|
||||
quad.set(0, 0, 0, 1, 1,1);
|
||||
|
||||
//call
|
||||
BlockMeshgen.meshifyBox(store, quad, 1, 1);
|
||||
BlockMeshgen.meshifyBox(store, quad, 1, 1, 1);
|
||||
|
||||
|
||||
//error check result
|
||||
@ -355,7 +355,7 @@ public class BlockMeshgenTests {
|
||||
quad.set(0, 0, 0, 1, 1, 1);
|
||||
|
||||
//call
|
||||
BlockMeshgen.meshifyBox(store, quad, 1, 1);
|
||||
BlockMeshgen.meshifyBox(store, quad, 1, 1, 1);
|
||||
|
||||
|
||||
//error check result
|
||||
@ -411,7 +411,7 @@ public class BlockMeshgenTests {
|
||||
quad.set(0, 0, 0, 1, 1, 1);
|
||||
|
||||
//call
|
||||
BlockMeshgen.meshifyBox(store, quad, 1, 1);
|
||||
BlockMeshgen.meshifyBox(store, quad, 1, 1, 1);
|
||||
|
||||
|
||||
//error check result
|
||||
|
||||
Loading…
Reference in New Issue
Block a user