Skip to content

Commit 41ab177

Browse files
committed
atlasPack
1 parent 5b72c4b commit 41ab177

File tree

1,398 files changed

+85943
-74
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,398 files changed

+85943
-74
lines changed

README.md

Lines changed: 18 additions & 2 deletions

atlas.js

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
2+
const path = require('path');
3+
const fs = require('fs');
4+
const { createCanvas, loadImage } = require('canvas')
5+
const Canvas = require('canvas');
6+
const Image = Canvas.Image
7+
8+
var toxelX=1;
9+
var toxelY=1;
10+
var miniX=1;
11+
var miniY=1;
12+
var totalImages=694;
13+
var loadedImages=0;
14+
var atlasSize=36
15+
var miniAtlasSize=27
16+
17+
var path1=path.join(__dirname, "client/assets/blocks/blocksAtlas-full.png");
18+
var path2=path.join(__dirname, "client/assets/blocks/blocksMapping-full.json");
19+
var path3=path.join(__dirname, "client/assets/blocks/blocksMapping.json");
20+
21+
firstLoad()
22+
23+
const canvas = createCanvas(atlasSize*16, atlasSize*16)
24+
const ctx = canvas.getContext('2d')
25+
26+
var images={
27+
}
28+
var textureMapping={
29+
}
30+
var miniMapping={
31+
}
32+
33+
34+
function NWD(a,b){
35+
if(b!=0){
36+
return NWD(b,a%b);
37+
}
38+
return a;
39+
}
40+
function NWW(a,b){
41+
return a*b/NWD(a,b)
42+
}
43+
function firstLoad(){
44+
folderName="client/assets/blocks/images";
45+
const directoryPath = path.join(__dirname, folderName);
46+
fs.readdir(directoryPath, function (err, files) {
47+
files.forEach(function (file) {
48+
filePath=`${folderName}/${file}`
49+
if(path.extname(file)==".png"){
50+
addImageToLoad(filePath,file)
51+
}
52+
});
53+
});
54+
}
55+
function addImageToLoad(filePath,name){
56+
var img=new Image;
57+
img.onload=function (){
58+
images[name]=img;
59+
loadedImages++;
60+
if(loadedImages==totalImages){
61+
forEachToxel()
62+
}
63+
}
64+
img.src=filePath;
65+
}
66+
function forEachToxel(){
67+
Object.keys(images).forEach(function (name){
68+
var img=images[name];
69+
addToxelToAtlas(img,name)
70+
})
71+
updateAtlas()
72+
73+
}
74+
function addToxelToAtlas(img,name){
75+
// console.log(name)
76+
var w=img.width/16
77+
var h=img.height/16
78+
if(w>1 || h>1){
79+
for(var i=0;i<w;i++){
80+
for(var j=0;j<h;j++){
81+
ctx.drawImage(img,i*16,j*16,16,16,(toxelX-1)*16, (toxelY-1)*16, 16,16)
82+
textureMapping[name.substr(0,name.length-4)+`@${i}@${j}`]={x:toxelX,y:toxelY};
83+
moveToxel()
84+
}
85+
}
86+
87+
}else{
88+
ctx.drawImage(img, (toxelX-1)*16, (toxelY-1)*16, 16,16);
89+
textureMapping[name.substr(0,name.length-4)]={x:toxelX,y:toxelY};
90+
moveToxel()
91+
}
92+
miniMapping[name.substr(0,name.length-4)]={x:miniX,y:miniY}
93+
if(miniX==miniAtlasSize){
94+
miniX=1;
95+
miniY+=1
96+
}else{
97+
miniX+=1;
98+
}
99+
100+
}
101+
function moveToxel(){
102+
if(toxelX==atlasSize){
103+
toxelX=1;
104+
toxelY+=1
105+
}else{
106+
toxelX+=1;
107+
}
108+
// console.log(toxelX,toxelY)
109+
}
110+
function updateAtlas(path){
111+
fs.writeFileSync(path1, canvas.toBuffer('image/png'))
112+
console.log(`\x1b[33mSAVING: ${path1}`)
113+
114+
fs.writeFileSync(path2,JSON.stringify(textureMapping,null,2));
115+
console.log(`\x1b[33mSAVING: ${path2}`)
116+
117+
fs.writeFileSync(path3,JSON.stringify(miniMapping,null,2));
118+
console.log(`\x1b[33mSAVING: ${path3}`)
119+
120+
console.log(`\x1b[32mSuccessfully created ${canvas.width}x${canvas.height} Texture Atlas!\n`)
121+
}

client/assets/assetLoader.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,21 @@
3131
"path":"assets/textures/ghast_shooting.png",
3232
"type":"texture"
3333
},
34-
"textureMappingJson":{
35-
"path":"assets/textureMapping.json",
34+
"blocksMapping":{
35+
"path":"assets/blocks/blocksMapping.json",
3636
"type":"text"
3737
},
3838
"blocks":{
39-
"path":"assets/blocks.json",
39+
"path":"assets/blocks/blocks.json",
4040
"type":"text",
4141
"dynamic":true
4242
},
43-
"textureAtlasX":{
44-
"path":"assets/textures/textureAtlasX.png",
43+
"blocksAtlasFull":{
44+
"path":"assets/blocks/blocksAtlas-full.png",
4545
"type":"image"
4646
},
47-
"textureMappingX":{
48-
"path":"assets/textureMappingX.json",
47+
"blocksMappingFull":{
48+
"path":"assets/blocks/blocksMapping-full.json",
4949
"type":"text"
5050
},
5151
"clouds":{
File renamed without changes.
252 Bytes
264 Bytes
249 Bytes

0 commit comments

Comments
 (0)