// 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); }