// Targeting Item 0.33
@name "TargetingItem"
@version 2.5
@warnings
@script generic
@define DESCRIPT "Targeting Item"
@define MAX_BONE 1000
// 1:Mesh 2:Null 3:Bone 4:Light 5:Camera 6:Untarget
@define DEFAULT_TYPE 6
// 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;
generic
{
@if version == 2.5
var CurItems = Scene().getSelect();
if(CurItems == nil) return;
@else
if(Scene().getSelect() == nil) return;
@end
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 Nul_Num, Obj_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(335, 155);
c0 = ctlchoice("", DEFAULT_TYPE, @" Mesh"," Null"," Bone"," Light"," Camera","Untarget"@, true);
ctlposition(c0, 0, 2, 62,119);
p0 = ctlpopup("", 1, ObjList);
ctlposition(p0,56, 2,273);
p1 = ctlpopup("", 1, NulList);
ctlposition(p1,56,22,273);
p2 = ctlpopup("", 1, BonList);
ctlposition(p2,56,42,273);
p3 = ctlpopup("", 1, LgtList);
ctlposition(p3,56,62,273);
p4 = ctlpopup("", 1, CamList);
ctlposition(p4,56,82,273);
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);
reqend();
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;
}
@if version == 2.5
var ItemNum = CurItems.size();
if(SelType == 6){
for(i = 1; i <= ItemNum; i++){
SelectItem(CurItems[i].id);
TargetItem(0);
HController(1);
PController(1);
}
}else{
for(i = 1; i <= ItemNum; i++){
SelectItem(CurItems[i].id);
if(CurItems[i].name != Obj.name){
TargetItem(Obj.id);
HController(2);
PController(2);
}
}
}
if(ItemNum > 1) for(i = ItemNum - 1; i >= 1; i--) AddToSelection(CurItems[i].id);
@else
if(SelType == 6){
TargetItem(0);
HController(1);
PController(1);
}else{
TargetItem(Obj.id);
HController(2);
PController(2);
}
@end
}
// -----------------------
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); }