voxel placement improvements
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
This commit is contained in:
parent
2452cf194b
commit
24fd4791da
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"items" : [
|
"items" : [
|
||||||
{
|
{
|
||||||
"id" : "woodfloor",
|
"id" : "fab:woodfloor",
|
||||||
"tokens" : [
|
"tokens" : [
|
||||||
"GRAVITY",
|
"GRAVITY",
|
||||||
"TARGETABLE"
|
"TARGETABLE"
|
||||||
|
|||||||
@ -1607,6 +1607,8 @@ Items keep charge state
|
|||||||
UI renders charge state
|
UI renders charge state
|
||||||
Item stacking
|
Item stacking
|
||||||
|
|
||||||
|
(04/20/2025)
|
||||||
|
Voxel placement improvements
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -173,6 +173,7 @@ public class CursorState {
|
|||||||
}
|
}
|
||||||
cursorPos.set(this.clampPositionToNearestBlock(cursorPos));
|
cursorPos.set(this.clampPositionToNearestBlock(cursorPos));
|
||||||
EntityUtils.getPosition(Globals.playerBlockCursor).set(cursorPos);
|
EntityUtils.getPosition(Globals.playerBlockCursor).set(cursorPos);
|
||||||
|
cursorPos.sub(BlockChunkData.BLOCK_SIZE_MULTIPLIER / 2.0,BlockChunkData.BLOCK_SIZE_MULTIPLIER / 2.0,BlockChunkData.BLOCK_SIZE_MULTIPLIER / 2.0);
|
||||||
EntityUtils.getPosition(CursorState.playerFabCursor).set(cursorPos);
|
EntityUtils.getPosition(CursorState.playerFabCursor).set(cursorPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,10 +62,12 @@ public class ServerChargeState implements BehaviorTree {
|
|||||||
Entity inventoryItem = serverToolbarState.getInInventoryItem();
|
Entity inventoryItem = serverToolbarState.getInInventoryItem();
|
||||||
if(inventoryItem != null){
|
if(inventoryItem != null){
|
||||||
ServerChargeState serverChargeState = ServerChargeState.getServerChargeState(inventoryItem);
|
ServerChargeState serverChargeState = ServerChargeState.getServerChargeState(inventoryItem);
|
||||||
if(serverChargeState.getCharges() - charges > 0){
|
if(serverChargeState != null){
|
||||||
serverChargeState.setCharges(serverChargeState.getCharges() - charges);
|
if(serverChargeState.getCharges() - charges > 0){
|
||||||
} else {
|
serverChargeState.setCharges(serverChargeState.getCharges() - charges);
|
||||||
throw new Error("Undefined! " + charges + serverChargeState.getCharges());
|
} else {
|
||||||
|
throw new Error("Undefined! " + charges + serverChargeState.getCharges());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,14 +93,23 @@ public class ServerBlockEditing {
|
|||||||
Quaterniond rotationQuatd = CursorState.getBlockRotation(rotation);
|
Quaterniond rotationQuatd = CursorState.getBlockRotation(rotation);
|
||||||
Quaternionf rotationQuatf = new Quaternionf((float)rotationQuatd.x,(float)rotationQuatd.y,(float)rotationQuatd.z,(float)rotationQuatd.w);
|
Quaternionf rotationQuatf = new Quaternionf((float)rotationQuatd.x,(float)rotationQuatd.y,(float)rotationQuatd.z,(float)rotationQuatd.w);
|
||||||
Matrix4f rotMat = new Matrix4f().rotate(rotationQuatf);
|
Matrix4f rotMat = new Matrix4f().rotate(rotationQuatf);
|
||||||
Vector4f rotationHolder = new Vector4f();
|
Vector4f rotationHolder = new Vector4f(1,1,1,1);
|
||||||
|
rotMat.transform(rotationHolder);
|
||||||
|
|
||||||
|
//if the cursor is not the default rotation, we want to actually place blocks one position LOWER than the cursor depending on the rotation
|
||||||
|
//this is because we want the final vertex to end on the block (ie we must place at final vertex-1)
|
||||||
|
Vector3i offsetFromRot = new Vector3i(
|
||||||
|
Math.round(Math.min(0,rotationHolder.x)),
|
||||||
|
Math.round(Math.min(0,rotationHolder.y)),
|
||||||
|
Math.round(Math.min(0,rotationHolder.z))
|
||||||
|
);
|
||||||
for(int x = 0; x < dims.x; x++){
|
for(int x = 0; x < dims.x; x++){
|
||||||
for(int y = 0; y < dims.y; y++){
|
for(int y = 0; y < dims.y; y++){
|
||||||
for(int z = 0; z < dims.z; z++){
|
for(int z = 0; z < dims.z; z++){
|
||||||
|
|
||||||
rotationHolder.set(x,y,z,1);
|
rotationHolder.set(x,y,z,1);
|
||||||
rotMat.transform(rotationHolder);
|
rotMat.transform(rotationHolder);
|
||||||
currVoxelPos.set(voxelPos).add(Math.round(rotationHolder.x),Math.round(rotationHolder.y),Math.round(rotationHolder.z));
|
currVoxelPos.set(voxelPos).add(Math.round(rotationHolder.x),Math.round(rotationHolder.y),Math.round(rotationHolder.z)).add(offsetFromRot);
|
||||||
|
|
||||||
|
|
||||||
currChunkPos.set(chunkPos).add(
|
currChunkPos.set(chunkPos).add(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user