XC4Dscrp,USXbreaker~"//////////////////////// // ------------------ // // By Nitromanimation // // -------------------// //////////////////////// // HomePage :http://nitro4d.x10hosting.com // // And youtube here http://www.youtube.com/user/Nitroman2010 // XBreaker v1.71 // //////////////////////// //////////////////////// var cutH=0; var cutP=45; var cutB=90; //////////////////////// var MyList; var CutList; var CutNum=0; var error=0; var errortry=3; var mat1=0; var mat2=0; var mat1tt=0; var mat2tt=0; var parent; var modedynamic; var doublebreak=0; var maindouble; var maindouble2; var OriginalObject; var customv=0; var customvx=0; var customvy=0; var customvz=0; var onematerial=0; var onematerialv=0; var sosr=100000; var modecutp=0; var oldmode=0; var doublepre=100; var ivertboo=1; var randomize=0; var modeloop=0; var usenoise=0; var noisesub=0; var noisedepth=0; var noiseok; var erroraxis=0; var errortwo=0; var TempPosObj=0; var CeterCutAxis=0; var phongsel=80; var cutool=0; var cuttool; var PreNum=1; var PreNum2=1; var dlg; var matm1; var matm2; var onesay=0; //################################## // MyGetListCount ## //################################## MyGetListCount(list) { var n=0; var i; for (i=0; i<sizeof(list); i++) { if (list[i]!=nil){n=n+1;} } return(n); } //################################## // MyGetTagList ## //################################## MyGetTagList(obj,num) { var list=new(array,10000); var i=0; for(i=0; i<10000; i++){list[i]=0;} var tag1=obj->GetFirstTag(); var n=0; var i=0; while(tag1) { if (num!=0) { if (tag1->GetType()==num){list[i]=tag1;i=i+1;} } else { list[i]=tag1;i=i+1; } n=n+1; tag1=tag1->GetNext(); } return(list); } //################################## // deletedublrmat ## //################################## deletedublrmat(t1,count1) { var i,g; for (i=0; i<count1; i++) { for (g=0; g<count1; g++) { if (i!=g) { if (t1[i]#TEXTURETAG_MATERIAL==t1[g]#TEXTURETAG_MATERIAL) { t1[g]->Remove(); return(0); } } } } return(1); } //################################## // deletedupoly ## //################################## deletedublrpoly(t1,t3,count1,count2) { var i,g; for (i=0; i<count2; i++) { if (t3[i] && t1[0] && t1[1]) { if (t3[i]#ID_BASELIST_NAME!=t1[0]#TEXTURETAG_RESTRICTION) { if (t3[i]#ID_BASELIST_NAME!=t1[1]#TEXTURETAG_RESTRICTION) { t3[i]->Remove(); return(0); } } } } return(1); } //################################## // ClearMatCorrect ## //################################## ClearMatCorrect(obj) { var t1=MyGetTagList(obj,TTexture); var t2=MyGetTagList(obj,TTexture); var t3=MyGetTagList(obj,TPolygonSelection); //MyGetListPrint(t2); var i=0; var g=0; var k=0; var count1=MyGetListCount(t1); var count2=MyGetListCount(t3); CallCommand(100004767); // Deselect All var bre=0; while(bre==0) { t1=MyGetTagList(obj,TTexture); count1=MyGetListCount(t1); bre=deletedublrmat(t1,count1); } t1=MyGetTagList(obj,TTexture); var bre=0; while(bre==0) { var t3=MyGetTagList(obj,TPolygonSelection); count2=MyGetListCount(t3); bre=deletedublrpoly(t1,t3,count1,count2); } } // class MultiList class MultiList { var List; var ListCount; public: CreateMultiList(); GetMultiListCount(); GetMultiList(index); SetMultiList(index,obj); PrintMultiList(); } MultiList::PrintMultiList() { if (ListCount==0){println("--- Null List ---"); return null;} var i=0; println("--- List ---"); for (i=1; i<=ListCount; i++) { println(List[i]->GetName()); } } MultiList::GetMultiList(index) { if (index<=0 || index>ListCount){println("Null"); return null;} return List[index]; } MultiList::SetMultiList(index,obj) { if (index<=0 || index>ListCount){println("Null"); return null;} return List[index]=obj; } MultiList::GetMultiListCount() { return ListCount; } GetNextObject(op) { if (!op) return null; if (op->GetDown()) return op->GetDown(); while (!op->GetNext() && op->GetUp()) op = op->GetUp(); return op->GetNext(); } MultiList::CreateMultiList() { List=new(array,2000); var doc=GetActiveDocument(); var myobject = doc->GetFirstObject(); if (!myobject) return false; ListCount=0; while (myobject) { if (myobject->GetBit(BIT_AOBJ)) { ListCount=ListCount+1; List[ListCount]=myobject; } myobject = GetNextObject(myobject); } return true; } update() { EventAdd(); DrawViews(DA_NO_THREAD); } GetPositionWorld(obj) { var mg=obj->GetMg(); return (mg->GetV0()); } SetPositionWorld(obj, pos) { var m = obj->GetMg(); m->SetV0(pos); obj->SetMg(m); } GetRotationWorld(obj) { return obj->GetMg()->GetHPB(); } SetRotationWorld(obj, rot) { var m = obj->GetMg(); var pos = m->GetV0(); var scale = vector(vlen(m->GetV1()), vlen(m->GetV2()), vlen(m->GetV3())); m->SetRotHPB(rot); m->SetV0(pos); m->SetV1(vnorm(m->GetV1()) * scale.x); m->SetV2(vnorm(m->GetV2()) * scale.y); m->SetV3(vnorm(m->GetV3()) * scale.z); obj->SetMg(m); } getSize(op, dir, global) { if(!op){return(0.0);} if(op->GetType()!=5100 && op->GetType()!=5101){return(0.0);} var min = MAXREAL, max = MINREAL; var i = 0; var mg = op->GetMg(); if (!global) mg = new(Matrix); var pcnt = op->GetPointCount(); var padr = op->GetPoints(), p, pv; if (!padr) return 0.0; switch (dir) { case 0: //x { for (i = pcnt - 1 ; i >= 0; --i) { pv = mg->GetMulP(padr[i]); p = pv.x; if (p < min) min = p; if (p > max) max = p; } } break; case 1: //y { for (i = pcnt - 1 ; i >= 0; --i) { pv = mg->GetMulP(padr[i]); p = pv.y; if (p < min) min = p; if (p > max) max = p; } } break; case 2: //z { for (i = pcnt - 1 ; i >= 0; --i) { pv = mg->GetMulP(padr[i]); p = pv.z; if (p < min) min = p; if (p > max) max = p; } } break; default: return FALSE; break; } return max - min; } CreateObject(num,name) { var doc=GetActiveDocument(); CallCommand(num); // Null Object var obj=doc->GetActiveObject(); obj->SetName(name); return(obj); } AddTag(obj,tag1) { var doc=GetActiveDocument(); CallCommand(100004767); // Deselect All var MyTag =AllocTag(tag1); MyTag->SetBit(BIT_ATAG); obj->InsertTag(MyTag,NULL); return (MyTag); } //################################## // TryNew functions ## //################################## //################################## // ClearMatCorrect ## //################################## NewClearFastMaterial(op) { //FAST MODE Clear Material //mat1=doc->FindMaterial("1"); //mat2=doc->FindMaterial("2"); var t1=MyGetTagList(op,TTexture); var count=MyGetListCount(t1); var i; var sel1=0; var sel2=0; for (i=0; i<count; i++) { if (t1[i]#TEXTURETAG_MATERIAL==mat1) { sel1=t1[i]#TEXTURETAG_RESTRICTION; break; } } for (i=0; i<count; i++) { if (t1[i]#TEXTURETAG_MATERIAL==mat2) { sel2=t1[i]#TEXTURETAG_RESTRICTION; break; } } for (i=0; i<count; i++) { if (t1[i]#TEXTURETAG_MATERIAL==mat2) { t1[i]->Remove(); } if (t1[i]#TEXTURETAG_MATERIAL==mat1) { t1[i]->Remove(); } } var t1=MyGetTagList(op,TPolygonSelection); var count=MyGetListCount(t1); for (i=0; i<count; i++) { if (t1[i]#ID_BASELIST_NAME!=sel1) { if (t1[i]#ID_BASELIST_NAME!=sel2) { t1[i]->Remove(); } } } if (mat2) { var mattag2=AddTag(op,5616); mattag2#TEXTURETAG_MATERIAL=mat2; // if (matm2[0]!=0) { mattag2#TEXTURETAG_PROJECTION=matm2[0]; mattag2#TEXTURETAG_SIDE=matm2[1]; mattag2#TEXTURETAG_OFFSETX=matm2[2]; mattag2#TEXTURETAG_OFFSETY=matm2[3]; mattag2#TEXTURETAG_LENGTHX=matm2[4]; mattag2#TEXTURETAG_TILESX=matm2[5]; mattag2#TEXTURETAG_LENGTHY=matm2[6]; mattag2#TEXTURETAG_TILESY=matm2[7]; } // if (sel2!=0) { mattag2#TEXTURETAG_RESTRICTION=sel2; } } if (mat1) { var mattag1=AddTag(op,5616); mattag1#TEXTURETAG_MATERIAL=mat1; // if (matm1[0]!=0) { mattag1#TEXTURETAG_PROJECTION=matm1[0]; mattag1#TEXTURETAG_SIDE=matm1[1]; mattag1#TEXTURETAG_OFFSETX=matm1[2]; mattag1#TEXTURETAG_OFFSETY=matm1[3]; mattag1#TEXTURETAG_LENGTHX=matm1[4]; mattag1#TEXTURETAG_TILESX=matm1[5]; mattag1#TEXTURETAG_LENGTHY=matm1[6]; mattag1#TEXTURETAG_TILESY=matm1[7]; } // if (sel1!=0) { mattag1#TEXTURETAG_RESTRICTION=sel1; } } } //################################## // MySetPos ## //################################## MySetPos(obj,pos,mode) { var m; if (mode==0) { m = obj->GetMl(); m->SetV0(pos); obj->SetMl(m); } if (mode==1) { m = obj->GetMg(); m->SetV0(pos); obj->SetMg(m); } } //################################## // MyGetPos ## //################################## MyGetPos(obj,mode) { if (mode==0) {return(obj->GetMl()->GetV0());} if (mode==1) {return(obj->GetMg()->GetV0());} if (mode==2) {return(obj->GetUpMg()->GetV0());} } //################################## // MyGetSca ## //################################## MyGetSca(obj,mode) { if (mode==0) { var m = obj->GetMl(); var scale = vector(vlen(m->GetV1()), vlen(m->GetV2()), vlen(m->GetV3())); return(scale); } if (mode==1) { var m = obj->GetMg(); var scale = vector(vlen(m->GetV1()), vlen(m->GetV2()), vlen(m->GetV3())); return(scale); } } //################################## // MySetSca ## //################################## MySetSca(obj,scale,mode) { if (mode==0) { var m = obj->GetMl(); m->SetV1(vnorm(m->GetV1()) * scale.x); m->SetV2(vnorm(m->GetV2()) * scale.y); m->SetV3(vnorm(m->GetV3()) * scale.z); obj->SetMl(m); } if (mode==1) { var m = obj->GetMg(); m->SetV1(vnorm(m->GetV1()) * scale.x); m->SetV2(vnorm(m->GetV2()) * scale.y); m->SetV3(vnorm(m->GetV3()) * scale.z); obj->SetMg(m); } } //################################## // MyGetRot ## //################################## MyGetRot(obj,mode) { if (mode==0){return obj->GetMl()->GetHPB();} if (mode==1){return obj->GetMg()->GetHPB();} } //################################## // MySetRot ## //################################## MySetRot(obj, rot,mode) { if (mode==0) { var m = obj->GetMl(); var pos = m->GetV0(); var scale = vector(vlen(m->GetV1()), vlen(m->GetV2()), vlen(m->GetV3())); m->SetRotHPB(rot); m->SetV0(pos); m->SetV1(vnorm(m->GetV1()) * scale.x); m->SetV2(vnorm(m->GetV2()) * scale.y); m->SetV3(vnorm(m->GetV3()) * scale.z); obj->SetMl(m); } if (mode==1) { var m = obj->GetMg(); var pos = m->GetV0(); var scale = vector(vlen(m->GetV1()), vlen(m->GetV2()), vlen(m->GetV3())); m->SetRotHPB(rot); m->SetV0(pos); m->SetV1(vnorm(m->GetV1()) * scale.x); m->SetV2(vnorm(m->GetV2()) * scale.y); m->SetV3(vnorm(m->GetV3()) * scale.z); obj->SetMg(m); } } //################################## // MyGetPosDis ## //################################## MyGetPosDis(obj1,obj2) { var pos1=MyGetPos(obj1,1); var pos2=MyGetPos(obj2,1); return(vlen(pos1-pos2)); } //################################## // MyInsertUnder ## //################################## MyInsertUnder(obj1,obj2) { if (obj1==null || obj2==null){println("Error On MyInsertUnder");return(0);} var pos1=MyGetPos(obj1,1); var pos2=MyGetPos(obj2,0); var rot1=MyGetRot(obj1,1); var rot2=MyGetRot(obj2,0); var sca1=MyGetSca(obj1,1); var sca2=MyGetSca(obj2,0); obj1->Remove(); obj1->InsertUnder(obj2); MySetPos(obj1,pos1,1); MySetPos(obj2,pos2,0); MySetRot(obj1,rot1,1); MySetRot(obj2,rot2,0); MySetSca(obj1,sca1,1); MySetSca(obj2,sca2,0); obj1->Message(MSG_UPDATE); obj2->Message(MSG_UPDATE); } MyInsertUnder2(obj1,obj2) { var m1=obj1->GetMg(); var m2=obj2->GetMg(); var pos1=m1->GetV0(); var pos2=m2->GetV0(); var rot1=m1->GetHPB(); var rot2=m2->GetHPB(); var scale1=vector(vlen(m1->GetV1()), vlen(m1->GetV2()),vlen(m1->GetV3())); var scale2=vector(vlen(m2->GetV1()), vlen(m2->GetV2()),vlen(m2->GetV3())); obj1->Remove(); obj1->InsertUnder(obj2); var m = obj2->GetMg(); m->SetRotHPB(rot2); m->SetV0(pos2); m->SetV1(vnorm(m->GetV1()) * scale2.x); m->SetV2(vnorm(m->GetV2()) * scale2.y); m->SetV3(vnorm(m->GetV3()) * scale2.z); obj2->SetMg(m); var m = obj1->GetMg(); m->SetRotHPB(rot1); m->SetV0(pos1); m->SetV1(vnorm(m->GetV1()) * scale1.x); m->SetV2(vnorm(m->GetV2()) * scale1.y); m->SetV3(vnorm(m->GetV3()) * scale1.z); obj1->SetMg(m); obj1->Message(MSG_UPDATE); obj2->Message(MSG_UPDATE); } cloneme(obj) { var doc=GetActiveDocument(); CallCommand(100004767); // Deselect All var copie = obj->GetClone(4) ; //if (copie==nil){println("No Clone1");} if (!copie) { println("No Clone2"); copie=CreateObject(5140,"ErrorClone"); return(copie); } doc->InsertObject(copie,NULL,NULL); obj->DelBit(BIT_AOBJ); copie->SetBit(BIT_AOBJ); SetPositionWorld(copie,GetPositionWorld(obj)); //SetRotationWorld(copie,GetRotationWorld(obj)); return(copie); } findtag(obj,type,num) { var doc=GetActiveDocument(); var tag1=obj->GetFirstTag(); var num2=0; while(tag1) { if (tag1->GetType()==type) { num2=num2+1; if (num2==num){return(tag1);} } tag1=tag1->GetNext(); } return(0); } CenterAxis(obj) { var doc=GetActiveDocument(); CallCommand(100004767); // Deselect All obj->SetBit(BIT_AOBJ); CallCommand(12236); // Make Editable obj=doc->GetActiveObject(); if (obj->GetDown()) { var obj3=cloneme(obj->GetDown()); obj->Remove(); obj=obj3; } if (CeterCutAxis==0) { CallCommand(1011982); // Center Axis To } return(obj); } //################################## // MyGetCountPoint ## //################################## MyGetCountPoint(obj) { if (obj->GetType()!=Ospline && obj->GetType()!=Opolygon){println("No Found Points");return(0);} var p=obj->GetPoints(); return(sizeof(p)); } //################################## // MyGetSize ## //################################## MyGetSize(op) { if(!op){return(0.0);} if(op->GetType()!=5100 && op->GetType()!=5101){return(vector(0.0,0.0,0.0));} var minx = MAXREAL, maxx = MINREAL; var miny = MAXREAL, maxy = MINREAL; var minz = MAXREAL, maxz = MINREAL; var i = 0; var mg = op->GetMg(); var pcnt = op->GetPointCount(); var padr = op->GetPoints(), p, pv; if (!padr) return 0.0; for (i = pcnt - 1 ; i >= 0; --i) { pv = mg->GetMulP(padr[i]); p = pv.x; if (p < minx) minx = p; if (p > maxx) maxx = p; p = pv.y; if (p < miny) miny = p; if (p > maxy) maxy = p; p = pv.z; if (p < minz) minz = p; if (p > maxz) maxz = p; } return vector(maxx-minx,maxy-miny,maxz-minz); } CreateBoolen(obj,cut) { //println("######################### ",CutNum); //println(""); if (!cut){return(true);} var doc=GetActiveDocument(); //Clone //Sos Clear Material An poly //var tagt=findtag(obj,Ttexture,1); //if (tagt){tagt->Remove();} //tagt=findtag(obj,Ttexture,1); //if (tagt){tagt->Remove();} //tagt=findtag(obj,TPolygonSelection,1); //if (tagt){tagt->Remove();} //tagt=findtag(obj,TPolygonSelection,1); //if (tagt){tagt->Remove();} //var tagt=AddTag(obj,5616); //tagt#TEXTURETAG_MATERIAL=mat2; //tagt#TEXTURETAG_PROJECTION=6; // var obj2=cloneme(obj); CallCommand(100004767); // Deselect All cut->SetBit(BIT_AOBJ); CallCommand(100004820); // Copy CallCommand(100004821); // Paste var cut2=doc->GetActiveObject(); // if (oldmode==0) { var cut1tag=AddTag(cut->GetDown()->GetDown(),5616); cut1tag#TEXTURETAG_MATERIAL=mat2; cut1tag#TEXTURETAG_PROJECTION=6; var cut2tag=AddTag(cut2->GetDown()->GetDown(),5616); cut2tag#TEXTURETAG_MATERIAL=mat2; cut2tag#TEXTURETAG_PROJECTION=6; } var boo1=CreateObject(1010865,"Boolean1"); MySetPos(boo1,TempPosObj,1); boo1#BOOLEOBJECT_TYPE=1; boo1#BOOLEOBJECT_SINGLE_OBJECT=1; boo1#BOOLEOBJECT_BREAK_CUT_EDGES=1; boo1#BOOLEOBJECT_SEL_CUT_EDGES=1; //Mayby Fix Boolean error //boo1#BOOLEOBJECT_HIDE_NEW_EDGES=1; //println("###### BOO1 #######"); MyInsertUnder(cut,boo1); MyInsertUnder(obj,boo1); var boo2=CreateObject(1010865,"Boolean2"); MySetPos(boo2,TempPosObj,1); boo2#BOOLEOBJECT_SINGLE_OBJECT=1; boo2#BOOLEOBJECT_BREAK_CUT_EDGES=1; boo2#BOOLEOBJECT_SEL_CUT_EDGES=1; boo2#BOOLEOBJECT_TYPE=2; //Mayby Fix Boolean error //boo2#BOOLEOBJECT_HIDE_NEW_EDGES=1; //println("###### BOO2 #######"); MyInsertUnder(cut2,boo2); MyInsertUnder(obj2,boo2); var siz=MyGetSize(obj); var poi=MyGetCountPoint(obj); //println("-------------------"); //println("Start Booleans"); //println("Original siz:",siz); //println("Original poi:",poi); boo1=CenterAxis(boo1); var siz1=MyGetSize(boo1); var poi1=MyGetCountPoint(boo1); //println("Boolean 1 ",siz1); //println("Boolean 1 ",poi1); //println("********************"); boo2=CenterAxis(boo2); var siz2=MyGetSize(boo2); var poi2=MyGetCountPoint(boo2); //println("Boolean 2 ",siz2); //println("Boolean 2 ",poi2); //println("-------------------"); var mmmm=0; if (mmmm==1) { if (CutNum>2) { if (poi!=0) { if (poi1!=0) { if (poi==poi1-1) { //println("Originale :",poi); //println("meta :",poi1); println("Boo1 Points Error"); boo1->Remove(); boo2->Remove(); return (false); } } if (poi2!=0) { if (poi==poi2-1) { //println("Originale :",poi); //println("meta :",poi1); println("Boo2 Points Error"); boo1->Remove(); boo2->Remove(); return (false); } } } } } ///Test/// if (poi1==0 && poi2==0) { println("Boolean Error Zero Points"); boo1->Remove(); boo2->Remove(); return (false); } if (siz1==0 || siz2==0) { println("Boolean Error Size"); boo1->Remove(); boo2->Remove(); return (false); } var sizt=siz.x+siz.y+siz.z; var sizt1=siz1.x+siz1.y+siz1.z; var sizt2=siz2.x+siz2.y+siz2.z; //println("######"); //println(sizt); //println(sizt1); //println(sizt2); if (sizt<sizt1 || sizt<sizt2) { println("Boolean Error Size +"); boo1->Remove(); boo2->Remove(); return (false); } if (CutNum>2) { if (sizt==sizt1 || sizt==sizt2) { println("Boolean Error First Size +"); boo1->Remove(); boo2->Remove(); return (false); } } // NewClearFastMaterial(boo1); NewClearFastMaterial(boo2); //ClearMatCorrect(boo1); //This Maybe Slow //ClearMatCorrect(boo2); //This Maybe Slow CutNum=CutNum+1; boo1->SetName("piece_"+tostring(CutNum)); CutList[CutNum]=boo1; CutNum=CutNum+1; boo2->SetName("piece_"+tostring(CutNum)); CutList[CutNum]=boo2; return (true); } CreateCut(obj,size) { //Create Object var cl1=CreateObject(1018544,"CloneCut"); var rd1=CreateObject(1018643,"RandomCut"); var obj1=CreateObject(5159,"ObjectCut"); var obj2=CreateObject(5140,"TempCut"); // Insert Object MyInsertUnder(obj1,obj2); MyInsertUnder(rd1,obj1); MyInsertUnder(obj2,cl1); //Propeteries Object obj1#ID_BASEOBJECT_POSITION:VECTOR_Y=size.y/2; obj1#PRIM_CUBE_LEN=size; cl1#MG_LINEAR_OBJECT_POSITION:VECTOR_Y=0; cl1#MG_LINEAR_COUNT=1; var random_seed=time(); var rnd=new(Random); rnd->Init(random_seed); rd1#ID_MG_BASEEFFECTOR_POSITION_ACTIVE=0; rd1#ID_MG_BASEEFFECTOR_ROTATE_ACTIVE=1; rd1#ID_MG_BASEEFFECTOR_ROTATION=vector(Radians(0),Radians(90),Radians(90)); rd1#MGRANDOMEFFECTOR_SEED=rnd->Get01()*sosr; //var rot1=GetRotationWorld(obj); //var rot2=vector(-rot1.x-90,-rot1.y-90,-rot1.z-90); //SetRotationWorld(cl1,rot2); return(cl1); } //################################## // MinMax ## //################################## MinMax(min,max,ry) { if (ry>Radians(0) && ry<Radians(min)) { ry=Radians(min); } if (ry>Radians(max)) { ry=Radians(max); } if (ry<Radians(0) && ry>-Radians(min)) { ry=-Radians(min); } if (ry<-Radians(max)) { ry=-Radians(max); } return(ry); } CreateCut2(obj,mat) { //Create Object var size=MyGetSize(obj); if (size==vector(0.0,0.0,0.0)){return(NULL);} var size2=(size.x+size.y+size.z)*4; size=vector(size2,size2,size2); //Add Material //var cl1=CreateObject(1018544,"CloneCut"); //var rd1=CreateObject(1018643,"RandomCut"); var obj1=CreateObject(5159,"ObjectCut"); var mattag1=AddTag(obj1,TTexture); mattag1#TEXTURETAG_MATERIAL=mat; mattag1#TEXTURETAG_PROJECTION=6; var obj2=CreateObject(5140,"TempCut"); // Insert Object MyInsertUnder(obj1,obj2); obj1#ID_BASEOBJECT_POSITION:VECTOR_Y=size.y/2; obj1#PRIM_CUBE_LEN=size; //obj1#PRIM_CUBE_SUBX=2; //obj1#PRIM_CUBE_SUBY=2; //obj1#PRIM_CUBE_SUBZ=2; //obj1#PRIM_CUBE_DOFILLET=1; //obj1#PRIM_CUBE_FRAD=size.y; //obj1#PRIM_CUBE_SUBF=2; if (usenoise==1) { var doc=GetActiveDocument(); var noi=CreateObject(1018685,"Noise"); MyInsertUnder(noi,obj1); var matn=doc->FindMaterial("XBN"); if (matn) { var matns=AddTag(noi,TTexture); matns#TEXTURETAG_MATERIAL=matn; obj1#PRIM_CUBE_SUBX=noisesub; //obj1#PRIM_CUBE_SUBY=noisesub; obj1#PRIM_CUBE_SUBZ=noisesub; noi#ID_MG_SHADER_CHANNELSELECT=807; noi#ID_MG_SHADER_MATERIALTAG=matns; noi#MGDISPLACER_DISPLACEMENT_HEIGHT=noisedepth; } } var rnd = new(Random); rnd->Init(time()); var rot2=GetRotationWorld(obj); var rx,ry,rz; var ranx=rnd->Get11(); var rany=rnd->Get11(); var ranz=rnd->Get11(); if (randomize==0) { ranx=1; rany=1; ranz=1; } if (modeloop==0){modecutp=3;} rx=Radians(cutH)*ranx; ry=Radians(cutP)*rany; rz=Radians(cutB)*ranz; //rx=0; //ry=0; //rz=0; //cutH+=Radians(45); //ry=cutH; // Min Max var min=45; var max=45; if (randomize==1) { //rx=MinMax(min,max,rx); //ry=MinMax(min,max,ry); //rz=MinMax(min,max,rz); } // if (modecutp==0) { ry=0; rz=0; } if (modecutp==1) { rx=0; rz=0; } if (modecutp==2) { ry=0; rx=0; modecutp=-1; } SetPositionWorld(obj2,GetPositionWorld(obj)); SetRotationWorld(obj2,vector(rx,ry,rz)); if (cutool==1) { SetPositionWorld(obj2,GetPositionWorld(cuttool)); SetRotationWorld(obj2,GetRotationWorld(cuttool)); } //SetPositionWorld(obj2,vector(100*ranx,100*rany,100*ranz)); //Debug obj2->SetEditorMode(MODE_OFF); //var objt=CreateObject(5159,"ObjectCut"); //objt#ID_BASEOBJECT_USECOLOR=2; //objt#ID_BASEOBJECT_COLOR=vector(255,0,0); //objt#PRIM_CUBE_LEN:VECTOR_X=5; //objt#PRIM_CUBE_LEN:VECTOR_Y=5000; //objt#PRIM_CUBE_LEN:VECTOR_Z=5000; //SetPositionWorld(objt,GetPositionWorld(obj2)); //SetRotationWorld(objt,GetRotationWorld(obj2)); //update(); //objt->Remove(); //DrawViews(DA_NO_REDUCTION); return(obj2); } createcutsetnow(obj) { //Try This //println(obj); if(!obj){return(0);} var temp=cloneme(obj); //var sizex=getSize(obj, 0, 0); //var sizey=getSize(obj, 1, 0); //var sizez=getSize(obj, 2, 0); //var cut=CreateCut(obj,vector(mainsize*10,mainsize*10,mainsize*10)); //if (sizex<20){sizex=200;} //if (sizey<20){sizey=200;} //if (sizez<20){sizez=200;} oldmode=1; //var cut=CreateCut(obj,vector(sizex*10,sizey*10,sizez*10)); var cut=CreateCut2(obj,mat1); if (CreateBoolen(obj,cut)==false) { println("TryFix_",tostring(error)); error=error+1; if (error==1)//ChangeAxis { cutP=cutP; cutB=-cutB; println("Axis_1"); } if (error==2)//ChangeAxis { cutP=-cutP; cutB=-cutB; println("Axis_2"); } if (error==3)//ChangeAxis { cutP=-cutP; cutB=cutB; println("Axis_3"); } if (error>=errortry) { println("NoFix"); //CallCommand(100004767); // Deselect All //temp->SetBit(BIT_AOBJ); //CallCommand(12187); // Polygons //CallCommand(13323); // Select All //CallCommand(14048); // Triangulate //CallCommand(100004767); // Deselect All CutNum=CutNum+1; temp->SetName("piece_Error"); CutList[CutNum]=temp; return(0); } createcutsetnow(temp); } else { //Try New Mode No yet temp->Remove(); var new1=0; if (new1==1) { modecutp=0; modecutp=1; var CutNumt=CutNum; cut=CreateCut2(CutList[CutNumt],mat2); CreateBoolen(CutList[CutNumt],cut); cut=CreateCut2(CutList[CutNumt-1],mat2); CreateBoolen(CutList[CutNumt-1],cut); CutNumt=CutNum; modecutp=2; cut=CreateCut2(CutList[CutNumt],mat2); CreateBoolen(CutList[CutNumt],cut); cut=CreateCut2(CutList[CutNumt-1],mat2); CreateBoolen(CutList[CutNumt-1],cut); } // if (error>0){println("FixOK");} temp->Remove(); } } GetColorBegin(obj) { matm1=new(array,8); matm2=new(array,8); var i; for (i=0; i<8; i++) { matm1[i]=0; matm2[i]=0; } var doc=GetActiveDocument(); var mattag1=findtag(obj,5616,1); var mattag2=findtag(obj,5616,2); if (onematerial==1) { if (onematerialv==0) { var mode=0; if (mattag1 && mattag2==0){mode=1;} if (mattag1){mat1=mattag1#TEXTURETAG_MATERIAL;} if (mattag2){mat2=mattag2#TEXTURETAG_MATERIAL;} if (mode==0) { if (mat1tt==0 && mattag1==0) { CallCommand(13015); mat1=doc->GetActiveMaterial(); mat1#ID_BASELIST_NAME="Inside_Cut"; mat1tt=mat1; } if (mat2tt==0 && mattag2==0 ) { CallCommand(13015); mat2=doc->GetActiveMaterial(); mat2#ID_BASELIST_NAME="OutSide_Cut"; mat2tt=mat2; } } if (mode==1) { if (mat2tt==0 && mattag2==0 ) { CallCommand(13015); mat2=doc->GetActiveMaterial(); mat2#ID_BASELIST_NAME="Inside_Cut"; mat2tt=mat2; } } if (mode==1) { var mat3=mat1; mat1=mat2; mat2=mat3; } } else { var mode=0; if (mattag1 && mattag2==0){mode=1;} if (mattag1==0){mat1=mat1tt;} if (mattag2==0){mat2=mat2tt;} if (mattag1){mat1=mattag1#TEXTURETAG_MATERIAL;} if (mattag2){mat2=mattag2#TEXTURETAG_MATERIAL;} if (mode==1) { var mat3=mat1; mat1=mat2; mat2=mat3; } } if (mattag1==0) { var fixtag1=AddTag(obj,5616); fixtag1#TEXTURETAG_MATERIAL=mat2tt; fixtag1#TEXTURETAG_PROJECTION=6; } //if (mattag1==0 && mattag2==0) //{ onematerialv=1; //} return(0); } //Create New Material if (mattag2==0) { if (onematerialv==0) { CallCommand(13015); mat2=doc->GetActiveMaterial(); mat2#ID_BASELIST_NAME="Inside_Cut"; //mat2#MATERIAL_COLOR_COLOR=vector(1,1,1); } } if (mattag1==0) { if (onematerialv==0) { CallCommand(13015); mat1=doc->GetActiveMaterial(); mat1#ID_BASELIST_NAME="OutSide_Cut"; //mat1#MATERIAL_COLOR_COLOR=vector(1,0,0); } var fixtag1=AddTag(obj,5616); fixtag1#TEXTURETAG_MATERIAL=mat1; fixtag1#TEXTURETAG_PROJECTION=6; } if (onematerialv==0) { if (mattag1){mat1=mattag1#TEXTURETAG_MATERIAL;} if (mattag2) { mat2=mattag2#TEXTURETAG_MATERIAL; mattag1->Remove(); } if (!mattag2) { println("ChnageMaterialNow1to2"); var mattag3=mattag1; var mat3=mat1; mat1=mat2; mat2=mat3; mattag1=mattag2; mattag2=mattag3; } } if (cutool==1) { if (!mattag2) { println("ChnageMaterialNow1to2"); var mattag3=mattag1; var mat3=mat1; mat1=mat2; mat2=mat3; mattag1=mattag2; mattag2=mattag3; } } if (mattag1) { //mat1=mattag1#TEXTURETAG_MATERIAL; //if (onematerialv==1){mat1=mat1tt;} if (cutool==1){mat1=mattag1#TEXTURETAG_MATERIAL;} matm1[0]=mattag1#TEXTURETAG_PROJECTION; matm1[1]=mattag1#TEXTURETAG_SIDE; matm1[2]=mattag1#TEXTURETAG_OFFSETX; matm1[3]=mattag1#TEXTURETAG_OFFSETY; matm1[4]=mattag1#TEXTURETAG_LENGTHX; matm1[5]=mattag1#TEXTURETAG_TILESX; matm1[6]=mattag1#TEXTURETAG_LENGTHY; matm1[7]=mattag1#TEXTURETAG_TILESY; } if (mattag2) { //mat2=mattag2#TEXTURETAG_MATERIAL; //if (onematerialv==1){mat2=mat2tt;} if (cutool==1){mat2=mattag2#TEXTURETAG_MATERIAL;} matm2[0]=mattag2#TEXTURETAG_PROJECTION; matm2[1]=mattag2#TEXTURETAG_SIDE; matm2[2]=mattag2#TEXTURETAG_OFFSETX; matm2[3]=mattag2#TEXTURETAG_OFFSETY; matm2[4]=mattag2#TEXTURETAG_LENGTHX; matm2[5]=mattag2#TEXTURETAG_TILESX; matm2[6]=mattag2#TEXTURETAG_LENGTHY; matm2[7]=mattag2#TEXTURETAG_TILESY; } //if (onematerial==1) //{ //mat1tt=mat1; //mat2tt=mat2; //onematerialv=1; //} } GetParent(obj) { while(obj) { parent=obj; obj=obj->GetUp(); } return(parent); } MakeEditable(obj) { var doc=GetActiveDocument(); CallCommand(100004767); // Deselect All obj->SetBit(BIT_AOBJ); CallCommand(12236); // Make Editable obj=doc->GetActiveObject(); return(obj); } UpdateNameName(obj,name) { var obj2=obj->GetDown(); var n=0; while(obj2) { n=n+1; obj2->SetName("piece_"+tostring(n)); obj2=obj2->GetNext(); } //CheckName if (name!=nil) { var n1=strchr(name,"_XBreaker_"[9],1); var name2=strmid(name,0,n1+10); if (n1>0) { obj->SetName(name2+tostring(n)); } } } GetMaxSize(obj) { var i=0; var sizem=0; var sizei=0; for (i=0; i<CutNum; i++) { if (obj[i]!=NULL) { if (obj[i]) { if (obj[i]->GetName()!="piece_Error") { var sizex=getSize(obj[i], 0, 0); var sizey=getSize(obj[i], 1, 0); var sizez=getSize(obj[i], 2, 0); var maxsize=sizex+sizey+sizez; if (maxsize>=sizem){sizem=maxsize;sizei=i;} } } } } //println("SizeGet:",sizem); return(sizei); } GetOnlyObjects() { var doc=GetActiveDocument(); CallCommand(100004767); // Deselect All var g; var selobj; for (g=1; g<=MyList->GetMultiListCount(); g++) { selobj=MyList->GetMultiList(g); //Text Mode if (selobj->GetType()==1019268) { selobj=MakeEditable(selobj); var mm1=findtag(selobj,5616,1); var mm2=findtag(selobj,5616,2); if (mm1!=0){mm1=mm1#TEXTURETAG_MATERIAL;} if (mm2!=0){mm2=mm2#TEXTURETAG_MATERIAL;} CallCommand(100004767); // Deselect All selobj=selobj->GetDown()->GetDown(); selobj->SetBit(BIT_AOBJ); CallCommand(100004768); // Select Children selobj->DelBit(BIT_AOBJ); CallCommand(12236); // Make Editable CallCommand(100004767); // Deselect All selobj->SetBit(BIT_AOBJ); var textp=selobj->GetDown(); while(textp) { CallCommand(100004767); // Deselect All textp->SetBit(Bit_AOBJ); CallCommand(100004768); // Select Children CallCommand(16768); // Connect+Delete textp=doc->GetActiveObject(); var bc = new(BaseContainer); bc->SetData(MDATA_OPTIMIZE_TOLERANCE, 0.01); bc->SetData(MDATA_OPTIMIZE_POINTS, 1); bc->SetData(MDATA_OPTIMIZE_POLYGONS, 1); bc->SetData(MDATA_OPTIMIZE_UNUSEDPOINTS, 1); SendModelingCommand(MCOMMAND_OPTIMIZE, doc,textp, bc, MODIFY_ALL); CallCommand(100004767); // Deselect All textp->SetBit(BIT_AOBJ); if (mm2) { var mm2tag=AddTag(textp,5616); mm2tag#TEXTURETAG_MATERIAL=mm2; } if (mm1) { var mm1tag=AddTag(textp,5616); mm1tag#TEXTURETAG_MATERIAL=mm1; } CallCommand(1011982); // Center Axis To textp=textp->GetNext(); } selobj->SetName("@sostext@"); } if (selobj->GetType()!=5100){selobj=MakeEditable(selobj);} MyList->SetMultiList(g,selobj); } CallCommand(100004767); // Deselect All for (g=1; g<=MyList->GetMultiListCount(); g++) { selobj=MyList->GetMultiList(g); if (selobj->GetName()=="@sostext@") { var chi=selobj->GetDown(); while(chi) { chi->SetBit(BIT_AOBJ); chi=chi->GetNext(); } } //selobj->SetName("Null"); if (selobj->GetType()==5100){selobj->SetBit(BIT_AOBJ);} } MyList->CreateMultiList(); //Cuttool var bres=0; if (cutool==1) { var maxsize=cuttool#PRIM_PLANE_WIDTH+cuttool#PRIM_PLANE_HEIGHT; CallCommand(100004767); // Deselect All for (g=1; g<=MyList->GetMultiListCount(); g++) { selobj=MyList->GetMultiList(g); if (selobj->GetName()!="XBT" && selobj->GetName()!="XBTC" && selobj->GetEditorMode()!=MODE_OFF) { if (MyGetPosDis(cuttool,selobj)<maxsize/10) { bres=1; selobj->SetBit(BIT_AOBJ); } } } if (onesay==0) { if (bres==0){TextDialog("XBT Failed Cut", DLG_OK);} onesay=1; } } MyList->CreateMultiList(); } XBreakerNow(pieces,keep) { var MaxCount=pieces-2; CutList=new(array,2000); var i=0; var g=0; var selobj; var parentname=""; //CheckDynamic Fast for (g=1; g<=MyList->GetMultiListCount(); g++) { selobj=MyList->GetMultiList(g); if (selobj->GetType()==1018791) { CallCommand(100004768); // Select Children selobj->DelBit(BIT_AOBJ); } } MyList->CreateMultiList(); // GetOnlyObjects(); //return(0); for (g=1; g<=MyList->GetMultiListCount(); g++) { selobj=MyList->GetMultiList(g); //GetParent CutNum=0; var move=1; var temparent=GetParent(selobj); if (temparent->GetType()==1018791){move=0;} //Create TempObject if (keep==1) { var tempclone; if (move==1) { var tempclone=cloneme(selobj); tempclone->SetName(selobj->GetName()); tempclone->SetEditorMode(MODE_OFF); tempclone->SetRenderMode(MODE_OFF); } } // //TakePos TempPosObj=MyGetPos(selobj,1); // if (selobj->GetType()!=5100) { selobj=MakeEditable(selobj); } //GetName if (temparent->GetName()!=nil) { parentname=temparent->GetName(); } else { parentname=selobj->GetName(); } var nn=0.0; if (pieces!=0 && pieces!=1) { GetColorBegin(selobj); createcutsetnow(selobj); }else{move=1;CutList[1]=selobj;CutNum=1;} var nn=0.0; //Precent if (cutool==0) { nn=nn+1; var MaxCount2=MaxCount; if (MaxCount2==0){MaxCount2=1;} PreNum=tostring(int((nn/MaxCount2)*100.0)); var pp=MyList->GetMultiListCount(); var p2=tostring(abs(PreNum2-pp)+1) ; dlg->SetString( 5,"Complete : "+ p2+" -> " + parentname + " ( " + PreNum + " % )"); } var mp=0; var mp2=0; var nn=0.0; for(i=CutNum-1; i<=MaxCount; i++) { //Precent if (cutool==0) { nn=nn+1; if (MaxCount==0){MaxCount=1;} PreNum=tostring(int((nn/MaxCount)*100.0)); var pp=MyList->GetMultiListCount(); var p2=tostring(abs(PreNum2-pp)+1) ; dlg->SetString( 5,"Complete : "+ p2+" -> " + parentname + " ( " + PreNum + " % )"); } //var state = dlg->GetInputState(BFM_INPUT_MOUSE, BFM_INPUT_MOUSELEFT); //if (state->GetData(BFM_INPUT_VALUE) == 0.0) break; // error=0; if (mp==mp2){mp2=mp2*2;mp=0;modecutp=modecutp+1;} if (mp2==0){mp2=2;} mp=mp+1; //println("Cuts:"+ tostring(CutNum)); //println("Mode:",mp2); if (modeloop==0) { createcutsetnow(CutList[GetMaxSize(CutList)]); } else { if (CutList[i]!=nil){createcutsetnow(CutList[i]);} } } var dyn; if (move==1) { dyn=CreateObject(1018791,parentname+"_XBreaker_"+tostring(MaxCount+2)); MySetPos(dyn,TempPosObj,1); //var ma1=AddTag(dyn,TTexture); //var ma2=AddTag(dyn,TTexture); //if (mat1){ma1#TEXTURETAG_MATERIAL=mat1;} //if (mat2){ma2#TEXTURETAG_MATERIAL=mat2;} var dyntag=AddTag(dyn,180000102); dyntag#RIGID_BODY_FRICTION=0.5; if (modedynamic==0){dyntag#RIGID_BODY_TRIGGER=0;} if (modedynamic==1){dyntag#RIGID_BODY_TRIGGER=2;} if (modedynamic==2){dyntag#RIGID_BODY_TRIGGER=3;} if (customv==1) { dyntag#RIGID_BODY_USE_INITIAL_VELOCITY=1; dyntag#RIGID_BODY_INITIAL_LINEAR_VELOCITY=vector(customvx,customvy,customvz); } } var count=0; for(i=1; i<=CutNum; i++) { //println(CutList[i]); if (CutList[i]->GetName()!=nil) { count=count+1; CutList[i]->SetName("piece_"+tostring(count)); //ClearMatCorrect(CutList[i]); //NewClearFastMaterial(CutList[i]); //Fix Phong var Phong=findtag(CutList[i],5612,1); if (Phong) { Phong#PHONGTAG_PHONG_ANGLELIMIT=1; Phong#PHONGTAG_PHONG_ANGLE=phongsel; Phong#PHONGTAG_PHONG_USEEDGES=1; } // //CallCommand(100004767); // Deselect All //CutList[i]->SetBit(BIT_AOBJ); //CallCommand(12187); // Polygons //CallCommand(13323); // Select All //CallCommand(14048); // Triangulate // MoveNow if (move==1) { if (CeterCutAxis==1) { CallCommand(100004767); // Deselect All CutList[i]->SetBit(BIT_AOBJ); CallCommand(1011982); // Center Axis To } MyInsertUnder(CutList[i],dyn); } else{MyInsertUnder(CutList[i],parent);} // } } UpdateNameName(parent,parentname); PreNum2=PreNum2+1; } CallCommand(100004767); // Deselect All if (cutool==1) { cuttool->SetBit(BIT_AOBJ); } } MakeHole(maindouble,sizes,mode2,mode) { var doc=GetActiveDocument(); var Ext=CreateObject(5116,"Null"); if (mode==0) { Ext#EXTRUDEOBJECT_MOVE=(doublepre*sizes)/100; } if (mode==1) { //var ph=abs(doublepre-100); //if (ph<=0){ph=1;} doublepre=doublepre+10; var ps=(2.0/doublepre)*10; ps=ps+1; if (ps<=0.0){ps=0.1;} if (ps>=1.5){ps=1.5;} //println("Mode:",ps); // //ps=0.1; sizes=(sizes/ps); Ext#EXTRUDEOBJECT_MOVE=(doublepre*(sizes/ps))/100; } CallCommand(100004767); // Deselect All maindouble->SetBit(BIT_AOBj); CallCommand(1011982); // Center Axis To SetRotationWorld(Ext,GetRotationWorld(OriginalObject)); //SetRotationWorld(maindouble,GetRotationWorld(OriginalObject)); SetPositionWorld(Ext,GetPositionWorld(OriginalObject)); SetPositionWorld(maindouble,GetPositionWorld(OriginalObject)); MyInsertUnder(maindouble,Ext); if (mode2==0){maindouble#ID_BASEOBJECT_POSITION:VECTOR_X=-sizes.x/2;} if (mode2==1){maindouble#ID_BASEOBJECT_POSITION:VECTOR_Y=-sizes.y/2;} if (mode2==2){maindouble#ID_BASEOBJECT_POSITION:VECTOR_Z=-sizes.z/2;} //return(0); CallCommand(100004767); // Deselect All Ext->SetBit(BIT_AOBJ); Ext=MakeEditable(Ext); CallCommand(100004767); // Deselect All Ext->SetBit(BIT_AOBJ); CallCommand(100004768); // Select Children CallCommand(16768); // Connect+Delete Ext=doc->GetActiveObject(); var bc = new(BaseContainer); bc->SetData(MDATA_OPTIMIZE_TOLERANCE, 0.01); bc->SetData(MDATA_OPTIMIZE_POINTS, 1); bc->SetData(MDATA_OPTIMIZE_POLYGONS, 1); bc->SetData(MDATA_OPTIMIZE_UNUSEDPOINTS, 1); SendModelingCommand(MCOMMAND_OPTIMIZE, doc, Ext, bc, MODIFY_ALL); return(Ext); } DoubleBreake(mode) { if (OriginalObject->GetType()!=5100){OriginalObject=MakeEditable(OriginalObject);} var sizex=getSize(OriginalObject, 0, 0); var sizey=getSize(OriginalObject, 1, 0); var sizez=getSize(OriginalObject, 2, 0); //maindouble2=cloneme(maindouble); var posxzy; if (mode==0){posxzy=vector(sizex,0,0);} if (mode==1){posxzy=vector(0,sizey,0);} if (mode==2){posxzy=vector(0,0,sizez);} //var h1=MakeHole(maindouble,posxzy,mode,0); var h2=MakeHole(maindouble,posxzy*2,mode,1); // Create Material GetColorBegin(OriginalObject); var mattag2=findtag(OriginalObject,5616,2); if (mattag2==0) { var fixtag2=AddTag(OriginalObject,5616); fixtag2#TEXTURETAG_MATERIAL=mat2; fixtag2#TEXTURETAG_PROJECTION=6; } var fixtag1=AddTag(h2,5616); fixtag1#TEXTURETAG_MATERIAL=mat2; fixtag1#TEXTURETAG_PROJECTION=6; //return(0); var c1=cloneme(h2); var c2=cloneme(OriginalObject); var fixtag1=AddTag(c1,5616); fixtag1#TEXTURETAG_MATERIAL=mat1; fixtag1#TEXTURETAG_PROJECTION=6; var boo1=CreateObject(1010865,"Boolean1"); boo1#BOOLEOBJECT_SINGLE_OBJECT=1; boo1#BOOLEOBJECT_HIDE_NEW_EDGES=0; //boo1#BOOLEOBJECT_BREAK_CUT_EDGES=1; boo1#BOOLEOBJECT_SEL_CUT_EDGES=1; boo1#BOOLEOBJECT_TYPE=1; MyInsertUnder(h2,boo1); MyInsertUnder(OriginalObject,boo1); var boo2=CreateObject(1010865,"Boolean2"); boo2#BOOLEOBJECT_SINGLE_OBJECT=1; boo2#BOOLEOBJECT_HIDE_NEW_EDGES=0; //boo2#BOOLEOBJECT_BREAK_CUT_EDGES=1; boo2#BOOLEOBJECT_SEL_CUT_EDGES=1; boo2#BOOLEOBJECT_TYPE=2; MyInsertUnder(c1,boo2); MyInsertUnder(c2,boo2); boo1=MakeEditable(boo1); var h1=MakeEditable(boo2); //return(0); var boo2; if (boo1->GetDown()) { boo2=boo1->GetDown(); } if (h1->GetDown()) { h1=h1->GetDown(); } //return(0); CallCommand(100004767); // Deselect All if (ivertboo==0) { var dyntag=AddTag(boo2,180000102); boo2->SetName("Double Breaker"); h1->SetBit(BIT_AOBJ); } if (ivertboo==1) { var dyntag=AddTag(h1,180000102); h1->SetName("Double Breaker"); boo2->SetBit(BIT_AOBJ); } MyList->CreateMultiList(); //if (boo1->GetDown()) //{ //CallCommand(100004767); // Deselect All //boo1->SetBit(BIT_AOBJ); //CallCommand(1019951); // Delete Without Children //} } /////////////////////////// // Menu // /////////////////////////// class Menu:GeModalDialog { public: CreateLayout(); Command(id,msg); Init(); } Menu::Init() { SetInt(100,2,1,500,1); SetInt(101,0,-50000,50000,1); SetInt(102,0,-50000,50000,1); SetInt(103,0,-50000,50000,1); SetInt(108,5,20,100,1); SetInt(109,1,5,100,1); SetDegree(104,cutH,-180,180,1); SetDegree(105,cutP,-180,180,1); SetDegree(106,cutB,-180,180,1); SetPercent(107,100,10,100,10); SetRadians(111,Radians(80),0,Radians(180),Radians(1)); SetCheckbox(300,0); SetCheckbox(304,1); if (MyList->GetMultiListCount()!=1) { //SetCheckbox(302,1); } Enable(108,GetCheckbox(309)); Enable(109,GetCheckbox(309)); AddItem(400,0,"Immediately" ); AddItem(400,1,"At Velocity Peak" ); AddItem(400,2,"On Collision" ); if (doublebreak==1) { SetString(200,"Double Break"); SetItem(400,2); } Enable(101,GetCheckbox(301)); Enable(102,GetCheckbox(301)); Enable(103,GetCheckbox(301)); if (MyList->GetMultiList(1)->GetType()==1018791) { Enable(301,0); Enable(400,0); Enable(300,0); Enable(302,0); SetCheckbox(302,0); } if (MyList->GetMultiList(1)->GetType()==1019268) { SetCheckbox(302,1); } if (MyList->GetMultiList(1)->GetUp()) { if (MyList->GetMultiList(1)->GetUp()->GetType()==1018791) { Enable(301,0); Enable(400,0); Enable(300,0); } } } Menu::CreateLayout() { SetTitle("XBreaker v1.71"); AddGroupBeginV(69,BFH_SCALEFIT,1,"Group",0); { AddStaticText(1,BFH_SCALEFIT,0,0,"Homepage : http://nitro4d.x10hosting.com",1); AddGroupBeginV(0,BFH_SCALEFIT,2,"Group",0); { AddButton(201, BFH_SCALEFIT,0,12,"Run Logo"); AddStaticText(1,BFH_SCALEFIT,0,0,"- Made by Nitroman -",1); } AddGroupEnd(); } AddGroupEnd(); AddGroupBeginV(0,BFH_SCALEFIT,2,"Group",0); { AddGroupBorder(BORDER_GROUP_IN); AddGroupBorderSpace(2,2,2,2); AddStaticText(1,0,0,0,"Pieces :",0); AddEditNumberArrows(100,BFH_SCALEFIT,130,10); AddStaticText(1,0,0,0,"Mode :",0); AddComboBox( 400,BFH_SCALEFIT,0,15 ); } AddGroupEnd(); if (noiseok==1) { AddGroupBeginV(0,BFH_SCALEFIT,1,"Group",0); { AddGroupBorder(BORDER_GROUP_IN); AddGroupBorderSpace(2,2,2,2); AddGroupSpace(3,3); AddCheckbox(309,BFH_SCALEFIT,0,12,"Use Noise"); AddGroupBeginV(0,BFH_SCALEFIT,4,"Group",0); { AddStaticText(1,0,0,0,"Subs :",0); AddEditNumberArrows(108,BFH_SCALEFIT,60,10); AddStaticText(1,0,0,0,"Depth :",0); AddEditNumberArrows(109,BFH_SCALEFIT,60,10); } AddGroupEnd(); } AddGroupEnd(); } AddGroupBeginV(0,BFH_SCALEFIT,1,"Group",0); { AddGroupBorder(BORDER_GROUP_IN); AddGroupBorderSpace(2,2,2,2); AddGroupSpace(3,3); AddCheckbox(301,BFH_SCALEFIT,0,12,"Custom Velocity"); AddGroupBeginV(0,BFH_SCALEFIT,3,"Group2",0); { //AddGroupBorder(BORDER_GROUP_IN); AddGroupBorderSpace(2,2,2,2); AddGroupSpace(3,3); AddStaticText(1,0,0,0,"X :",0); AddStaticText(1,0,0,0,"Y :",0); AddStaticText(1,0,0,0,"Z :",0); AddEditNumberArrows(101,BFH_SCALEFIT,60,10); AddEditNumberArrows(102,BFH_SCALEFIT,60,10); AddEditNumberArrows(103,BFH_SCALEFIT,60,10); } AddGroupEnd(); } AddGroupEnd(); AddGroupBeginH(0,BFH_SCALEFIT,2,"Group",0); { AddGroupBorder(BORDER_GROUP_IN); AddGroupBorderSpace(2,2,2,2); AddGroupSpace(3,3); AddGroupBeginV(0,BFH_SCALEFIT,3,"Group",0); { AddGroupBorderSpace(2,2,2,2); AddGroupSpace(3,3); AddStaticText(1,0,0,0,"H :",0); AddStaticText(1,0,0,0,"P :",0); AddStaticText(1,0,0,0,"B :",0); AddEditNumberArrows(104,BFH_SCALEFIT,60,10); AddEditNumberArrows(105,BFH_SCALEFIT,60,10); AddEditNumberArrows(106,BFH_SCALEFIT,60,10); } AddGroupEnd(); AddGroupBeginV(0,BFH_SCALEFIT,3,"Group",0); { AddGroupBorderSpace(2,2,2,2); AddGroupSpace(3,3); AddCheckbox(304,BFH_SCALEFIT,0,12,"Random"); AddCheckbox(310,BFH_SCALEFIT,0,12,"Center"); AddCheckbox(305,BFH_SCALEFIT,0,12,"By Step HPB"); } AddGroupEnd(); } AddGroupEnd(); AddGroupBeginH(0,BFH_SCALEFIT,2,"Group",0); { AddGroupBorder(BORDER_GROUP_IN); AddGroupBorderSpace(2,2,2,2); AddGroupSpace(3,3); AddGroupBeginH(0,BFH_SCALEFIT,2,"Group",0); { AddCheckbox(300,BFH_SCALEFIT,0,12,"Keep Original Object"); AddCheckbox(302,BFH_SCALEFIT,0,12,"Use One Material In Cut"); } AddGroupEnd(); AddGroupBeginV(0,BFH_SCALEFIT,2,"Group",0); { AddStaticText(1,0,0,0,"Phong :",0); AddEditSlider(111,BFH_SCALEFIT,0,0); } AddGroupEnd(); } AddGroupEnd(); AddButton(200, BFH_SCALEFIT,0,15,"Break Now"); if (doublebreak==1) { AddGroupBeginV(0,BFH_SCALEFIT,4,"Group",0); { AddStaticText(1,0,0,0,"Depth :",0); AddEditSlider(107,BFH_SCALEFIT,0,0); AddStaticText(1,0,0,0,"Axis :",0); AddComboBox(401,BFH_SCALEFIT,0,15 ); AddItem(401,0,"X" ); AddItem(401,1,"Y" ); AddItem(401,2,"Z" ); SetItem(401,2); AddCheckbox(303,BFH_SCALEFIT,0,12,"Invert"); } } AddGroupEnd(); AddStaticText(5,BFH_SCALEFIT,0,0,"You Have Select "+tostring(MyList->GetMultiListCount())+ " Objects",1); return TRUE; } Menu::Command(id,msg) { if (id==304) { Enable(310,GetCheckbox(304)); SetCheckbox(310,0); } modedynamic=GetInt(400); onematerial=GetCheckbox(302); if (id==201) { var result = TextDialog("Run Logo Now ?",DLG_YESNO); if (result ==DLG_R_NO){return(0);} CallCommand(100004766); // Select All CallCommand(100004787); // Delete //CallCommand(12094); // New... update(); var doc=GetActiveDocument(); var tx1=CreateObject(1019268,"Nitroman"); var cu=CreateObject(5159,"Temp1"); SetPositionWorld(cu,vector(421,227,0)); SetRotationWorld(cu,vector(0,35,0)); cu->SetEditorMode(MODE_OFF); cu->SetRenderMode(MODE_OFF); cu#PRIM_CUBE_LEN:VECTOR_X=1400; var fl1=CreateObject(5164,"Floor"); var cam=CreateObject(5103,"Camera"); CallCommand(12201); // Link Active Object var sky=CreateObject(5105,"Sky"); SetPositionWorld(cam,vector(250,300,-2000)); SetRotationWorld(cam,vector(0,0,0)); fl1#PRIM_DISC_ORAD=50000; tx1#PRIM_TEXT_TEXT="Nitroman" ; tx1#CAP_START=3; tx1#CAP_END=3; CallCommand(13015); // New Material var mm1=doc->GetActiveMaterial(); CallCommand(13015); // New Material var mm2=doc->GetActiveMaterial(); CallCommand(13015); // New Material var mm3=doc->GetActiveMaterial(); mm1#MATERIAL_COLOR_COLOR=vector(0,0,0); mm2#MATERIAL_COLOR_COLOR=vector(0,0,0.2); mm3#MATERIAL_COLOR_COLOR=vector(0,0,1); tx1#ID_BASEOBJECT_POSITION:VECTOR_X=-120; tx1#ID_BASEOBJECT_POSITION:VECTOR_Y=829; mm2#MATERIAL_USE_SPECULAR=0; var mattag1=AddTag(sky,5616); mattag1#TEXTURETAG_MATERIAL=mm1; var mattag1=AddTag(fl1,5616); mattag1#TEXTURETAG_MATERIAL=mm1; var mattag3=AddTag(tx1,5616); mattag3#TEXTURETAG_MATERIAL=mm3; var mattag4=AddTag(tx1,5616); mattag4#TEXTURETAG_MATERIAL=mm2; var mattag5=AddTag(fl1,180000102); var mattag6=AddTag(cu,180000102); var mattag6=AddTag(cu,180000102); var mattag7=AddTag(cu,5698); mattag7#VIBRATEEXPRESSION_POS_ENABLE=1; mattag7#VIBRATEEXPRESSION_POS_AMPLITUDE=vector(0,60,0); mattag7#VIBRATEEXPRESSION_REGULAR=1; CallCommand(100004767); // Deselect All tx1->SetBit(BIT_AOBJ); ivertboo=GetCheckbox(303); customvx=GetInt(101); customvy=GetInt(102); customvz=GetInt(103); customv=GetCheckbox(301); doublepre=GetPercent(107); randomize=GetCheckbox(304); modeloop=GetCheckbox(305); noisesub=GetInt(108); noisedepth=GetInt(109); usenoise=GetCheckbox(309); cutH=0; cutP=0; cutB=45; XBreakerNow(15,0); update(); Close(); update(); CallCommand(12412); // Play Forwards update(); } if (GetInt(100)<2) { SetString(200,"Dynamic Only"); } else { if (doublebreak==1){SetString(200,"Double Break");} else{SetString(200,"Break Now");} } if (id==301) { Enable(101,GetCheckbox(301)); Enable(102,GetCheckbox(301)); Enable(103,GetCheckbox(301)); } if (id==309) { Enable(108,GetCheckbox(309)); Enable(109,GetCheckbox(309)); } if (id==200) { ivertboo=GetCheckbox(303); customvx=GetInt(101); customvy=GetInt(102); customvz=GetInt(103); cutH=GetDegree(104); cutP=GetDegree(105);; cutB=GetDegree(106); customv=GetCheckbox(301); doublepre=GetPercent(107); randomize=GetCheckbox(304); modeloop=GetCheckbox(305); CeterCutAxis=GetCheckbox(310); noisesub=GetInt(108); noisedepth=GetInt(109); usenoise=GetCheckbox(309); phongsel=GetRadians(111); if (doublebreak==1) { DoubleBreake(GetInt(401)); XBreakerNow(GetInt(100),GetCheckbox(300)); } else { XBreakerNow(GetInt(100),GetCheckbox(300)); } Close(); } } ////////////////////////// main(doc,op) { MyList=new(MultiList); MyList->CreateMultiList(); var matn=doc->FindMaterial("XBN"); if (matn){noiseok=1;} cuttool=doc->FindObject("XBT"); if (cuttool) { if (cuttool->GetBit(BIT_AOBJ)==true && cuttool->GetType()==5168) { CallCommand(100004766); // Select All cutool=1; onematerial=1; errortry=0; //Use Noise if (cuttool->GetDown()) { if (cuttool->GetDown()->GetType()==1018685) { noisesub=cuttool#PRIM_PLANE_SUBW; noisedepth=cuttool->GetDown()#MGDISPLACER_DISPLACEMENT_HEIGHT; usenoise=1; } } cuttool->DelBit(BIT_AOBJ); MyList->CreateMultiList(); CeterCutAxis=0; var ph=findtag(cuttool,TPHONG,1); phongsel=ph#PHONGTAG_PHONG_ANGLE; XBreakerNow(2,0); return(0); } //CloneCut if (cuttool->GetBit(BIT_AOBJ)==true && cuttool->GetType()==1018544) { var mainClone=doc->GetActiveObject(); mainClone->GetDown()->SetName("XBT"); CallCommand(100004820); // Copy CallCommand(100004821); // Paste var TempClone=doc->GetActiveObject(); TempClone->SetName("XBTC"); cutool=1; onematerial=1; errortry=0; CallCommand(100004767); // Deselect All cuttool=TempClone; cuttool->SetBit(BIT_AOBJ); CallCommand(12236); // Make Editable cuttool=doc->GetActiveObject(); CallCommand(100004768); // Select Children cuttool->DelBit(BIT_AOBJ); //Use Noise if (cuttool->GetDown()->GetDown()) { if (cuttool->GetDown()->GetDown()->GetType()==1018685) { noisesub=cuttool->GetDown()#PRIM_PLANE_SUBW; noisedepth=cuttool->GetDown()->GetDown()#MGDISPLACER_DISPLACEMENT_HEIGHT; usenoise=1; } } var cuttool3=cuttool; cuttool=cuttool->GetDown(); var cuttool2=cuttool; var cuttool4=cuttool; while(cuttool) { CallCommand(100004767); // Deselect All CallCommand(100004766); // Select All cuttool3->DelBit(BIT_AOBJ); cuttool2=cuttool4; while(cuttool2) { cuttool2->SetName("XBTC"); cuttool2->DelBit(BIT_AOBJ); cuttool2=cuttool2->GetNext(); mainClone->DelBit(BIT_AOBJ); mainClone->GetDown()->DelBit(BIT_AOBJ); } MyList->CreateMultiList(); CeterCutAxis=0; var ph=findtag(cuttool,TPHONG,1); if (ph){phongsel=ph#PHONGTAG_PHONG_ANGLE;} XBreakerNow(2,0); cuttool=cuttool->GetNext(); } CallCommand(100004767); // Deselect All cuttool3->Remove(); mainClone->SetBit(BIT_AOBJ); return(0); } } //Check Double Break if (MyList->GetMultiListCount()==2) { if (MyList->GetMultiList(1)->GetType()==5101 || MyList->GetMultiList(2)->GetType()==5101) { doublebreak=1; if (MyList->GetMultiList(1)->GetType()==5101){maindouble=MyList->GetMultiList(1);OriginalObject=MyList->GetMultiList(2);} if (MyList->GetMultiList(2)->GetType()==5101){maindouble=MyList->GetMultiList(2);OriginalObject=MyList->GetMultiList(1);} } } if (MyList->GetMultiListCount()==0){TextDialog("Please Select One Or Multi Objects", DLG_OK);return(0);} dlg=new(Menu); dlg->Open(-1, -1); } ENABLE=True;  Xbreaker274alias2 `E n/ F}II* nk`daZ8][R41-)($&$"?=8~{u@sog.-)! !!,*'YVLjf[pmbnkbif\|rJNLG%$!)'$DA;?=6=:4:92><6?>6FC;NKAPURL21,>;6=<6861650! .-)85132-861;:453-650|MKIA>;5<:4962760862/.)31-76020.@A?#" 65/LICHF?64/OOL½n{xqKH@DA;:92FC>rpg~|rMKFrph{[YV20,rof973;93a]TEC;96/NLD9B?8@>8>=6~tķDB=3''#}zmkbxshuIFAHF?mj`YVM74.¿vdaX,*'21,³½µôkialj_0.+=;6|qQOI}yZWPKJDzul]ZOzQNH''"tqjȻÿ@>;URK,+( OMFr~xk{mSPIPOI~rQNIMLFsodb_UzEC=751ɻ¾IHBFD@DC<%#!  RPK~zrod=;7ge[|ylDB=FE>d_Uz><7NMFķ½URL1/,MLGuzEC=JHC|ymzqmb@>9HE=z>=7xtlb`X43/.,)GEAkjb~ynrtQOG31-761WTL}o|pJHA971vмKICuri}zo]ZRB@;21.21-B?:a_V{wsh :95db\vshsif[c_VKIB,+'EC=wrgp[WO971SPIŷOMFb_X_\T;:5760eaWzr}xkBA:/.+SRKqme|nRNG}ymlh^--)=;6jg\rkg\;94DC<Դѱ[XQ884$"!:83wtits}ylwb^V((%FD?jg_toeOMEzmwsf640761\XP}omh^<:4B?9ۻhf]GECMKE{q}q~p|o}o~ruqe1/,772jf_\YQXUM}o{nKIA42/ROG{njf[<:5=;5vjg^rz~ylzviw{n{wj{o=;6><7ecZ862a^T~yl{mWSK/.*LIB{nkg\32-IF>Ũsoftqfs|xj{n}ww}}zm}ykyth|xj:8242-GD?))&rmb}o{viQNE861MKClg]zhvqaյyUTLa]Utv}qwtg~yl}oyti43-.,(%$!20-uqd{vi|nNJC10+PMEsoaùuƴSQIwy|szm|xj{nyuhythyuh|wj{wj972,+'@>8wsfzvhvqe@>7IG?tqyif^xui~qxym|xjyl|n~yl}yk{vj53.('%LIBxtg~ylmi]1/+54.URIm{VSMb_V{vj~o|o|mytgxtg|wjfcW$#!$# SPGok_ok^UQI10+DA;~mitNLHA@:XUMwsfzuhyugyuhuqc`\S!!! 21,VSJrobZWN971;94`]Qeҿol`GE?983><7URIgcXok_hcY:83!! "" 972\YOhdXVSH:83ROFoyz}aʳr[WOEC==;5C@9KHAVSJ31.860B@;KIAa\PidUlfX`]Qozywv|e|njg[pk^ieXlgZb^Q`[Oc_Rd_SkgWkeWniZxgzg{jqtsz}ewvqbql^ni[mhZc_Rb]Qd`RfaTkfWpj[sn]un_~xflqqsx|iëvyjuqarl^jfXgbVgcUfaTidVniZmiYoiZsn^|ve|ioptx|     >(1 SI. {mbZVUW Y [ ] S IKy}{qx}z~~~~uuHHCINEMA 4D8BIMAlpha8BIMAlpha