用户:
伴雪纷飞查看:16 回复:22 评论:16 创建时间:2023-01-09T19:00:21

为了方便大家复制( )
代码在防一遍
*分三次输入到控制台
1.
ctrl=['add','subtract','multiply','pound'];
assist=['zero'];
pl=[];
for (y = 0; y <= voxels.shape.y*2; y++) {
for (x = 0; x <= voxels.shape.x*2; x++) {
for (z = 0; z <= voxels.shape.z*2; z++) {
if(ctrl.includes(voxels.name(voxels.getVoxelId(x,y,z)))){
pl.push([x,y,z,voxels.name(voxels.getVoxelId(x,y,z))]);
}
if(assist.includes(voxels.name(voxels.getVoxelId(x,y,z)))){
voxels.setVoxel(x,y,z,'');
}}}}
temp={
add:undefined,
subtract:undefined,
circle:undefined,
}
2.
pl.forEach((item)=>{
switch(item[3]){
case "add":
if(!temp.add){
temp.add=item;
voxels.setVoxel(item[0],item[1]+1,item[2],'');
return;
}
epos=new Box3Vector3(Math.max(item[0],temp.add[0]),Math.max(item[1],temp.add[1]),Math.max(item[2],temp.add[2]));
spos=new Box3Vector3(Math.min(item[0],temp.add[0]),Math.min(item[1],temp.add[1]),Math.min(item[2],temp.add[2]));
for(i=spos.x;i<=epos.x;i++){for(j=spos.z;j<=epos.z;j++){for(k=spos.y;k<=epos.y;k++){
voxels.setVoxel(i,k,j,voxels.name(voxels.getVoxelId(item[0],item[1]+1,item[2])));
}}}
voxels.setVoxel(item[0],item[1]+1,item[2],'');
break;
case "subtract":
if(!temp.subtract){
temp.subtract=item;
voxels.setVoxel(item[0],item[1]+1,item[2],'');
return;
}
epos=new Box3Vector3(Math.max(item[0],temp.subtract[0]),Math.max(item[1],temp.subtract[1]),Math.max(item[2],temp.subtract[2]));
spos=new Box3Vector3(Math.min(item[0],temp.subtract[0]),Math.min(item[1],temp.subtract[1]),Math.min(item[2],temp.subtract[2]));
for(i=spos.x;i<=epos.x;i++){for(j=spos.z;j<=epos.z;j++){for(k=spos.y;k<=epos.y;k++){
if(i==spos.x||j==spos.z||i==epos.x||j==epos.z){
voxels.setVoxel(i,k,j,voxels.name(voxels.getVoxelId(item[0],item[1]+1,item[2])));
}}}}
voxels.setVoxel(item[0],item[1]+1,item[2],'');
break;
}
})
3.
function circle(item,_item){
radius=Math.sqrt(Math.pow(item[0]-_item[0],2)+Math.pow(item[2]-_item[2],2));
vox=voxels.name(voxels.getVoxelId(item[0],item[1]+1,item[2]));
cx=item[0];
cz=item[2];
for(x=cx-radius; x<=cx+radius; x++){
for(z=cz-radius; z<=cz+radius; z++){
dx = x-cx;dz = z-cz;
if(Math.round(Math.sqrt(dx*dx+dz*dz)) <= radius){
voxels.setVoxel(x,item[1],z,vox);
}
}}
}
pl.forEach((item)=>{
switch(item[3]){
case "multiply":
if(!temp.circle){
temp.circle=item;
return;
}
circle(item,temp.circle);
voxels.setVoxel(item[0],item[1]+1,item[2],'');
break;
case "pound":
if(!temp.circle){
temp.circle=item;
return;
}
circle(temp.circle,item);
voxels.setVoxel(item[0],item[1]+1,item[2],'');
break;
case "equal":
if(!temp.face){
temp.face=item;
}
else if(temp.face[1]>item[1]){
temp.face=item;
}
voxels.setVoxel(item[0],item[1]+1,item[2],'');
break;
}
})
因为编创协的md编辑器发不了贴了( )
就将md转图片发了