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