// Grid Spread 0.1 @name "Grid Spread" @version 2.5 @warnings @script generic @define DESCRIPT "Grid Spread" var t0,t1,t2,t3; generic { var CurScene = Scene(); var CurItems = CurScene.getSelect(); if(CurItems == nil) return; var CurTime = CurScene.currenttime; var ItemNum = CurItems.size(); var CurChan, KeyID, Val; var RowMod = 0; if(ItemNum == 1) return; reqbegin(DESCRIPT); reqsize(220,105); c0 = ctldistance("", 0.0); ctlposition(c0, 24, 2, 80); t0 = ctlstring("","X"); ctlposition(t0, 2, 2, 25); c1 = ctldistance("", 0.0); ctlposition(c1, 24, 22, 80); t1 = ctlstring("","Z"); ctlposition(t1, 2, 22, 25); c2 = ctlinteger("", ItemNum); ctlposition(c2,152, 2, 60); t2 = ctlstring("","X Num"); ctlposition(t2,105, 2, 50); t3 = ctlstring("","1st [X] : Next [Z]"); ctlposition(t3,105, 22,107); c3 = ctlchoice("", 1, @"X-Z","Y-Z","X-Y"@); ctlposition(c3,105, 45,107); ctlactive(c3 , "maskText", t0,t1,t2,t3); ctlrefresh(c3, "changeText"); return if !reqpost(); RowVal = getvalue(c0); ColVal = getvalue(c1); Row = getvalue(c2); Axiz = getvalue(c3); reqend(); if(Row >= ItemNum) Row = ItemNum; if(frac(ItemNum / Row)) RowMod = ItemNum % Row; Colum = floor(ItemNum / Row); SrcPos = CurItems[ItemNum].param(POSITION, CurTime); i = ItemNum; switch(Axiz){ // X Z ------------------------------------------- case 1: for(c = 0; c < Colum; c++){ Padding = 0; for(x = 1; x <= Row; x++){ CurChan = CurItems[i].firstChannel(); Val = SrcPos.x + (RowVal * Padding); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, SrcPos.y); else CurChan.createKey(CurTime, SrcPos.y); CurChan = CurItems[i].nextChannel(); Val = SrcPos.z + (ColVal * c); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); Padding++; i--; } } if(RowMod){ Padding = 0; for(c = 1; c <= RowMod; c++){ CurChan = CurItems[i].firstChannel(); Val = SrcPos.x + (RowVal * Padding); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, SrcPos.y); else CurChan.createKey(CurTime, SrcPos.y); CurChan = CurItems[i].nextChannel(); Val = SrcPos.z + (ColVal * Colum); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); Padding++; i--; } } break; // Y Z ------------------------------------------- case 2: for(c = 0; c < Colum; c++){ Padding = 0; for(x = 1; x <= Row; x++){ CurChan = CurItems[i].firstChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, SrcPos.x); else CurChan.createKey(CurTime, SrcPos.x); CurChan = CurItems[i].nextChannel(); Val = SrcPos.y + (RowVal * Padding); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); Val = SrcPos.z + (ColVal * c); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); Padding++; i--; } } if(RowMod){ Padding = 0; for(c = 1; c <= RowMod; c++){ CurChan = CurItems[i].firstChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, SrcPos.x); else CurChan.createKey(CurTime, SrcPos.x); CurChan = CurItems[i].nextChannel(); Val = SrcPos.y + (RowVal * Padding); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); Val = SrcPos.z + (ColVal * Colum); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); Padding++; i--; } } break; // X Y ------------------------------------------- case 3: for(c = 0; c < Colum; c++){ Padding = 0; for(x = 1; x <= Row; x++){ CurChan = CurItems[i].firstChannel(); Val = SrcPos.x + (RowVal * Padding); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); Val = SrcPos.y + (ColVal * c); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, SrcPos.z); else CurChan.createKey(CurTime, SrcPos.z); Padding++; i--; } } if(RowMod){ Padding = 0; for(c = 1; c <= RowMod; c++){ CurChan = CurItems[i].firstChannel(); Val = SrcPos.x + (RowVal * Padding); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); Val = SrcPos.y + (ColVal * Colum); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, Val); else CurChan.createKey(CurTime, Val); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, SrcPos.z); else CurChan.createKey(CurTime, SrcPos.z); Padding++; i--; } } break; default : break; } } // -------------------- maskText: v { return(false); } changeText: v { switch(v){ case 1: setvalue(t0, "X"); setvalue(t1, "Z"); setvalue(t2, "X Num"); setvalue(t3, "1st [X] : Next [Z]"); break; case 2: setvalue(t0, "Y"); setvalue(t1, "Z"); setvalue(t2, "Y Num"); setvalue(t3, "1st [Y] : Next [Z]"); break; case 3: setvalue(t0, "X"); setvalue(t1, "Y"); setvalue(t2, "X Num"); setvalue(t3, "1st [X] : Next [Y]"); break; default: break; } }