Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ICY_Spritesheeter
- // Arranged by IceDragon
- // Code from various locations
- // Last Modified : 04/20/2011
- var title = "Spritesheeter";
- var modetitle = "SpriteMode";
- // Set up UI.
- var dlg = new Window('dialog', title, [100,100,380,240]);
- dlg.scTxt = dlg.add('statictext',[10,17,60,35],"Cells X >");
- dlg.CellX = dlg.add('edittext',[65,15,95,35],'4');
- dlg.scTxt = dlg.add('statictext',[100,17,150,35],"Cells Y ^");
- dlg.CellY = dlg.add('edittext',[155,15,185,35],'2');
- dlg.okayBtn = dlg.add('button', [200,14,260,38],'Start!', {name:'ok'});
- var okayset = false
- dlg.okayBtn.onClick = function() { okayset = true ; dlg.close() ; }
- dlg.CellAssem = dlg.add('checkbox', [10,60,176,80],"Assemble Spritesheet");
- dlg.CellBreak = dlg.add('checkbox',[10,80,176,100],"Disasemble Spritesheet");
- dlg.show();
- var assemble = dlg.CellAssem.value;
- var breakdown = dlg.CellBreak.value;
- var workDoc = activeDocument ;
- if (okayset == true) {
- //Spritesheet to layers
- if (breakdown == 1) {
- var cellintx = parseInt(dlg.CellX.text);
- var cellinty = parseInt(dlg.CellY.text);
- var nextrow = parseInt(dlg.CellX.text);
- var cellsizew = workDoc.width/cellintx;
- var cellsizeh =workDoc.height/cellinty;
- // Make Duplicate layers because Photoshop doesn't have paste over function.LOL
- var dups = cellintx * cellinty;
- for(var i = 1; i < dups; i++)
- {
- workDoc.artLayers[0].duplicate();
- };
- // Rename layers
- var lyrCount = workDoc.layers.length
- for(var i = lyrCount-1; i>=0;i--)
- {
- workDoc.artLayers[i].name = 'Frame '+(lyrCount-i-1);
- };
- // Begin shifting the layers working from the top layer down. It moves the images so that the lower left cell becomes the top layer
- // and the upper left cell becomes the bottom layer (frame 0). The outer loop determins the row and the inner loop determins the column
- var cellmovex = cellintx -1;
- var cellmovey = cellinty -1;
- var columncount =0;
- var columnshift = -cellsizew*cellmovex;
- var rowshift = -cellsizeh*cellmovey;
- for(var i=0; i<=cellinty-1; i++)
- {
- for(var subi =columncount ; subi <=nextrow-1; subi++)
- {
- workDoc.artLayers[subi].translate(columnshift, rowshift);
- columnshift = columnshift + cellsizew;
- };
- columncount += cellintx;
- nextrow += cellintx;
- columnshift = -cellsizew*cellmovex;
- rowshift = rowshift +cellsizeh;
- };
- // Crop final image once all the layers are in place.
- workDoc.crop (new Array(0,0,cellsizew,cellsizeh));
- }
- if (assemble == 1) {
- //Layers to SpriteSheet
- var cellintx = parseInt(dlg.CellX.text);
- var nextrow = parseInt(dlg.CellX.text);
- var cellsizew = workDoc.width/cellintx;
- // Arrange layers into a sprite sheet.
- if (documents.length > 0)
- {
- var cols = cellintx;
- // --------------------------
- docRef = workDoc;
- var activeLayer = docRef.activeLayer;
- numLayers = docRef.artLayers.length;
- var rows = Math.ceil(numLayers/cols);
- var spriteX = docRef.width;
- var spriteY = docRef.height;
- // put things in order
- app.preferences.rulerUnits = Units.PIXELS;
- // resize the canvas
- newX = spriteX * cols;
- newY = spriteY * rows;
- docRef.resizeCanvas( newX, newY, AnchorPosition.TOPLEFT );
- // move the layers around
- var rowi = 0;
- var coli = 0;
- for (i=(numLayers - 1); i >= 0; i--)
- {
- docRef.artLayers[i].visible = 1;
- var movX = spriteX*coli;
- var movY = spriteY*rowi;
- docRef.artLayers[i].translate(movX, movY);
- coli++;
- if (coli > (cols - 1))
- {
- rowi++;
- coli = 0;
- }
- }
- }
- }
- } // If Okay was pressed
Advertisement
Add Comment
Please, Sign In to add comment