// Add Nulls 0.203 @name "Add_Nulls" @version 2.5 @warnings @script generic @define DESCRIPT "Add Nulls" // 1=Black 2=Dk Blue 3=Dk Green 4=Dk Cyan 5=Dk Red 6=Purple 7=Brown // 8=Gray 9=Blue 10=Green 11=Cyan 12=Red 13=Magenta 14=Orange 15=White // 16=LW Setting @define INIT_COL 16 @define INIT_ALPHA 2 // ctlpopupへ外部からsetvalueする時は LS25:0,1,2〜、LS26:1,2、3〜 @if version == 2.5 @define INIT_FIX 0 @else @define INIT_FIX 1 @end var UnsnAlph,SelfShd,CastShd,RecvShd,UnsnCam,UnsnRay,UnafFog,UnsnRad; var n2,n3; generic { //debug(); reqbegin(DESCRIPT); reqsize(315,220); v1 = ctlminislider("", 1, 1, 999); ctlposition(v1, 248, 5, 40); n1 = ctlstring("", "Null", 122); ctlposition(n1, 62, 5); n2 = ctlpopup("", 1, @"PreFix", " n_+"," nn_+"," nnn_+","-------"," n +"," nn +"," nnn +","-------"," n+"," nn+"," nnn+"@); ctlposition(n2, 0, 5, 64); n3 = ctlpopup("", 1, @"PostFix"," +_n"," +_nn"," +_nnn","-------"," + n"," + nn"," + nnn","-------"," +n"," +nn"," +nnn"@); ctlposition(n3, 182, 5, 68); s0 = ctlsep(0,315); ctlposition(s0, 0, 30); @if version == 2.5 c0 = ctlcheckbox("Unseen by Alpha Channel", true); ctlposition(c0, 3, 35); @else c0 = ctlpopup("Alpha Channel", INIT_ALPHA, @"Use Surface Settings","Unaffected by Objects","Constant Black"@); ctlposition(c0, 80, 35); @end s1 = ctlsep(0,315); ctlposition(s1, 0, 59); c5 = ctlcheckbox("Unseen by Rays", true); ctlposition(c5, 3, 65,150); c4 = ctlcheckbox("Unseen by Camera", true); ctlposition(c4,160, 65,150); c6 = ctlcheckbox("Unaffected by Fog", true); ctlposition(c6,160, 87,150); @if version < 2.2 c7 = ctlcheckbox("Unseen by Radiosity", true); ctlposition(c7, 3, 87,150); @end c1 = ctlcheckbox("Self Shadow", false); ctlposition(c1, 3,109,150); c2 = ctlcheckbox("Cast Shadow", false); ctlposition(c2,160,109,150); c3 = ctlcheckbox("Receive Shadow", false); ctlposition(c3,160,131,150); s2 = ctlsep(0,315); ctlposition(s2, 0,154); f1 = ctlcheckbox("Item Active", false); ctlposition(f1, 3,160); f2 = ctlpopup("Vis", 2,@"Hidden","Verticle"@); ctlposition(f2,100,160,100); f3 = ctlpopup("Col", INIT_COL,@"Black","Dk Blue","Dk Green","Dk Cyan","Dk Red","Purple","Brown","Gray","Blue","Green","Cyan","Red","Magenta","Orange","White","LW_Setting"@); ctlposition(f3,205,160,105); ctlrefresh(n2, "checkPreFix"); ctlrefresh(n3, "checkPostFix"); return if !reqpost(); var BaseName = getvalue(n1); var fPre = getvalue(n2); var fPost = getvalue(n3); var NullNum = getvalue(v1); UnsnAlph = getvalue(c0); SelfShd = getvalue(c1); CastShd = getvalue(c2); RecvShd = getvalue(c3); UnsnCam = getvalue(c4); UnsnRay = getvalue(c5); UnafFog = getvalue(c6); @if version < 2.2 UnsnRad = getvalue(c7); @end ItemAct = getvalue(f1); ItemVis = getvalue(f2); ItemCol = getvalue(f3); reqend(); if(NullNum < 1) NullNum = 1; var PreSep, PostSep; if((fPre >= 2)&&(fPre <= 4)){ PreSep = "_"; }else if((fPre >= 6)&&(fPre <= 8)){ PreSep = " "; fPre -= 4; } if((fPost >= 2)&&(fPost <= 4)){ PostSep = "_"; }else if((fPost >= 6)&&(fPost <= 8)){ PostSep = " "; fPost -= 4; } var NullName; switch(fPre){ case 1: for(i = 1; i <= NullNum; i++) NullName[i] = BaseName; break; case 2: for(i = 1; i <= NullNum; i++) NullName[i] = string(i, PreSep, BaseName); break; case 3: for(i = 1; i <= NullNum; i++) NullName[i] = i.asStr(2,true) + PreSep + BaseName; break; case 4: for(i = 1; i <= NullNum; i++) NullName[i] = i.asStr(3,true) + PreSep + BaseName; break; case 10: for(i = 1; i <= NullNum; i++) NullName[i] = string(i, BaseName); break; case 11: for(i = 1; i <= NullNum; i++) NullName[i] = i.asStr(2,true) + BaseName; break; case 12: for(i = 1; i <= NullNum; i++) NullName[i] = i.asStr(3,true) + BaseName; break; default : break; } switch(fPost){ case 2: for(i = 1; i <= NullNum; i++) NullName[i] = string(NullName[i], PostSep, i); break; case 3: for(i = 1; i <= NullNum; i++) NullName[i] = NullName[i] + PostSep + i.asStr(2,true); break; case 4: for(i = 1; i <= NullNum; i++) NullName[i] = NullName[i] + PostSep + i.asStr(3,true); break; case 10: for(i = 1; i <= NullNum; i++) NullName[i] = string(NullName[i], i); break; case 11: for(i = 1; i <= NullNum; i++) NullName[i] = NullName[i] + i.asStr(2,true); break; case 12: for(i = 1; i <= NullNum; i++) NullName[i] = NullName[i] + i.asStr(3,true); break; default : break; } var CurScene = Scene(); var ItemIDs; var CurItem; for(i = 1; i <= NullNum; i++){ AddNull(NullName[i]); (CurItem) = CurScene.getSelect(); ItemIDs[i] = CurItem.id; // 個別設定しか出来ないもの if(!ItemAct) ItemActive(1); if(ItemVis == 2) ItemVisibility(3); else ItemVisibility(1); if(ItemCol != 16) ItemColor(ItemCol); // LW7.5のレンダーフラグ設定は個別(7.5c/dは?) @if version == 2.5 setFlag(); @end } if(NullNum != 1){ SelectItem(ItemIDs[1]); for(i = 2; i <= NullNum; i++) AddToSelection(ItemIDs[i]); } // LW8からはレンダーフラグ設定は一括なので全選択してから @if version != 2.5 setFlag(); @end } // --------------- setFlag { if(!SelfShd) SelfShadow(); if(!CastShd) CastShadow(); if(!RecvShd) ReceiveShadow(); if(UnsnCam) UnseenByCamera(); if(UnsnRay) UnseenByRays(); if(UnafFog) UnaffectedByFog(); @if version == 2.5 if(UnsnAlph) UnseenByAlphaChannel(); @else if(UnsnAlph != 1) CommandInput("UnseenByAlphaChannel " + string(UnsnAlph - 1)); @end @if version < 2.2 if(UnsnRad) CommandInput("UnseenByRadiosity"); @end } // ------------------------------ checkPreFix: v { if((v == 5)||(v == 9)) setvalue(n2, INIT_FIX); } checkPostFix: v { if((v == 5)||(v == 9)) setvalue(n3, INIT_FIX); }