// Keying World Position 0.335 @name "Keying WPosition" @version 2.5 @warnings @script generic @define DESCRIPT "Keying World Position" // LS25のctlchoiceへ外部からsetvalueする時は0,1,2 // LS26のctlchoiceへ外部からsetvalueする時は1,2、3 @if version == 2.5 @define CHOICE_INIT_1 0 @define CHOICE_INIT_2 1 @define CHOICE_INIT_3 2 @define CHOICE_INIT_4 3 @define CHOICE_INIT_5 4 @else @define CHOICE_INIT_1 1 @define CHOICE_INIT_2 2 @define CHOICE_INIT_3 3 @define CHOICE_INIT_4 4 @define CHOICE_INIT_5 5 @end var c0, cX, cY, cZ; generic { var CurScene = Scene(); var CurItems = CurScene.getSelect(); if(CurItems == nil) return; var ObjList, NulList, BonList, LgtList, CamList; var Bon; var Obj = Mesh(); while(Obj){ if(Obj.null){ NulList += Obj.name; }else{ ObjList += Obj.name; } Bon = Obj.bone(); while(Bon){ BonList += string(Obj.name, " => ", Bon.name); Bon = Bon.next(); } Obj = Obj.next(); } Obj = Light(); while(Obj){ LgtList += Obj.name; Obj = Obj.next(); } Obj = Camera(); while(Obj){ CamList += Obj.name; Obj = Obj.next(); } var Obj_Num, Nul_Num, Bon_Num, Lgt_Num, Cam_Num; if(ObjList == nil){ ObjList[1] = "-- None --"; Obj_Num = 1; }else{ ObjList.sortA(); Obj_Num = ObjList.size(); } if(NulList == nil){ NulList[1] = "-- None --"; Nul_Num = 1; }else{ NulList.sortA(); Nul_Num = NulList.size(); } if(BonList == nil){ BonList[1] = "-- None --"; Bon_Num = 1; }else{ BonList.sortA(); Bon_Num = BonList.size(); } if(Lgt_Num > 1) LgtList.sortA(); if(Cam_Num > 1) CamList.sortA(); Lgt_Num = LgtList.size(); Cam_Num = CamList.size(); reqbegin(DESCRIPT); reqsize(364, 135); c0 = ctlchoice("", 3, @" Mesh "," Null "," Bone "," Light","Camera"@, true); ctlposition(c0,-1, 2, 56, 100); p0 = ctlpopup("", 1, ObjList); ctlposition(p0, 49, 2,273); p1 = ctlpopup("", 1, NulList); ctlposition(p1, 49,22,273); p2 = ctlpopup("", 1, BonList); ctlposition(p2, 49,42,273); p3 = ctlpopup("", 1, LgtList); ctlposition(p3, 49,62,273); p4 = ctlpopup("", 1, CamList); ctlposition(p4, 49,82,273); c1 = ctlchoice("",1,@"*","-"@, false); ctlposition(c1,318, 2,40); cX = ctlchoice("",1,@"X","-"@, false); ctlposition(cX,318,22,40); cY = ctlchoice("",1,@"Y","-"@, false); ctlposition(cY,318,42,40); cZ = ctlchoice("",1,@"Z","-"@, false); ctlposition(cZ,318,62,40); ctlrefresh(c1, "changeActDeact"); ctlrefresh(p0, "changeObj"); ctlrefresh(p1, "changeNul"); ctlrefresh(p2, "changeBon"); ctlrefresh(p3, "changeLgt"); ctlrefresh(p4, "changeCam"); return if !reqpost(); var SelType = getvalue(c0); var SelMesh = getvalue(p0); var SelNull = getvalue(p1); var SelBone = getvalue(p2); var SelLight = getvalue(p3); var SelCamera = getvalue(p4); var XOn = ( getvalue(cX) - 1) ^ 1; var YOn = ((getvalue(cY) - 1) ^ 1) * 2; var ZOn = ((getvalue(cZ) - 1) ^ 1) * 4; reqend(); var SelAxiz = XOn + YOn + ZOn; if(!SelAxiz){ error("
Not selected Axiz."); return; } var BoneMesh, BoneName; switch(SelType){ case 1: if(ObjList[SelMesh] == "-- None --"){ error("
where is Target?"); return; } Obj = Mesh(ObjList[SelMesh]); break; case 2: if(NulList[SelNull] == "-- None --"){ error("
where is Target?"); return; } Obj = Mesh(NulList[SelNull]); break; case 3: if(BonList[SelBone] == "-- None --"){ error("
where is Target?"); return; } (BoneMesh, BoneName) = parse("=>", BonList[SelBone]); BoneMesh = strleft(BoneMesh, (BoneMesh.size() - 1)); BoneName = strright(BoneName, (BoneName.size() - 1)); Obj = Mesh(BoneMesh); Bon = Obj.bone(); while(Bon){ if(Bon.name == BoneName) break; Bon = Bon.next(); } Obj = Bon; break; case 4: Obj = Light(LgtList[SelLight]); break; case 5: Obj = Camera(CamList[SelCamera]); break; default : break; } var ItemNum = CurItems.size(); var CurTime = CurScene.currenttime; var TargWPOS = Obj.param(WPOSITION, CurTime); var CurChan; var KeyID; for(i = 1; i <= ItemNum; i++){ switch(SelAxiz){ case 1: CurChan = CurItems[i].firstChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.x); else CurChan.createKey(CurTime, TargWPOS.x); break; case 2: CurChan = CurItems[i].firstChannel(); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.y); else CurChan.createKey(CurTime, TargWPOS.y); break; case 3: CurChan = CurItems[i].firstChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.x); else CurChan.createKey(CurTime, TargWPOS.x); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.y); else CurChan.createKey(CurTime, TargWPOS.y); break; case 4: CurChan = CurItems[i].firstChannel(); CurChan = CurItems[i].nextChannel(); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.z); else CurChan.createKey(CurTime, TargWPOS.z); break; case 5: CurChan = CurItems[i].firstChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.x); else CurChan.createKey(CurTime, TargWPOS.x); CurChan = CurItems[i].nextChannel(); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.z); else CurChan.createKey(CurTime, TargWPOS.z); break; case 6: CurChan = CurItems[i].firstChannel(); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.y); else CurChan.createKey(CurTime, TargWPOS.y); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.z); else CurChan.createKey(CurTime, TargWPOS.z); break; case 7: CurChan = CurItems[i].firstChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.x); else CurChan.createKey(CurTime, TargWPOS.x); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.y); else CurChan.createKey(CurTime, TargWPOS.y); CurChan = CurItems[i].nextChannel(); if((KeyID = CurChan.keyExists(CurTime)) != nil) CurChan.setKeyValue(KeyID, TargWPOS.z); else CurChan.createKey(CurTime, TargWPOS.z); break; default : break; } } Refresh(); } // ----------------------- changeActDeact: v { // LS25のctlchoiceへ外部からsetvalueする時は0,1,2 // LS26のctlchoiceへ外部からsetvalueする時は1,2、3 @if version == 2.5 v -= 1; @end setvalue(cX, v); setvalue(cY, v); setvalue(cZ, v); } changeAct { setvalue(cX, CHOICE_INIT_1); setvalue(cY, CHOICE_INIT_1); setvalue(cZ, CHOICE_INIT_1); } changeDeAct { setvalue(cX, CHOICE_INIT_2); setvalue(cY, CHOICE_INIT_2); setvalue(cZ, CHOICE_INIT_2); } changeObj: v { setvalue(c0, CHOICE_INIT_1); } changeNul: v { setvalue(c0, CHOICE_INIT_2); } changeBon: v { setvalue(c0, CHOICE_INIT_3); } changeLgt: v { setvalue(c0, CHOICE_INIT_4); } changeCam: v { setvalue(c0, CHOICE_INIT_5); }