//Mets a jours le module courant public void UpdateCurrentModule() { //Debug.Log("selectedIndex : "+_selectedIndex+" count : "+_modules.Count ); if(_modules.Count > 0) { /*if(_selectedIndex==-1) _selectedIndex = 0; if(_selectedIndex>=_modules.Count) _selectedIndex =_modules.Count-1;*/ if(_selectedIndex==-1) return; if(_selectedIndex>=_modules.Count) return; _currentModule = (DynShelterModule) _modules[_selectedIndex]; _tmpStylesNames = _dsMdl.GetStylesNameOfSize(_currentModule.GetSize(),_currentModule.GetModuleType()); _tmpStylesThumbs = _dsMdl.GetStylesThumbsOfSize(_tmpStylesNames); _currentType = _currentModule.GetType().ToString();//_currentModule.GetModuleType().ToString(); for(int i=0;i<_tmpStylesNames.Length;i++) { if(_tmpStylesNames[i] == _currentModule.GetStyle()) { _currentStyle = i; } } UpdateRules(); //Locks ------------------------- _isLockedNext = _currentModule.GetNextLock(); _isLockedPrev = _currentModule.GetPrevLock(); //Mods _modManager.UpdateLocalMods(_currentModule.GetGameObj()); } else { //CAS OU PLUS DE MODULES _currentModule = null; } UI.SetSelectedItem(_selectedIndex); UI.SetSelectedLocks(_isLockedPrev,_isLockedNext); if(szbrand == "PoolCover") { UpdateVisibility(); } }
private bool CheckCollisionPossibilityF(float delta,bool checkNext,DynShelterModule cmp) { if(checkNext)//Checks with nexts { if(_size >= cmp.GetSize())//Meme taille { return Contact(delta,AR,true,AV,true,cmp,checkNext); } else return false; } else//Checks with prevs { if(_size >= cmp.GetSize())//Meme taille { return Contact(delta,AV,true,AR,true,cmp,checkNext); } else return false; } }
private bool CheckCollisionPossibility(float delta,bool checkNext,DynShelterModule cmp) { if(checkNext)//Checks with nexts { if(cmp == _nextModule && _lockNext) return false; if(_size == cmp.GetSize())//Meme taille { return Contact(delta,AR,true,AV,true,cmp,checkNext); } else if(cmp.GetSize() >= _size && cmp.IsLastEnd() ) { return Contact(delta,AR,true,AR,false,cmp,checkNext); } else return false; } else//Checks with prevs { if(cmp == _prevModule && _lockPrev) return false; if(_size == cmp.GetSize() /*|| (cmp.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc && _size <= cmp.GetSize())*/)//Meme taille { return Contact(delta,AV,true,AR,true,cmp,checkNext); } else if(cmp.GetSize() >= _size && cmp.IsFirstEnd()) { return Contact(delta,AV,true,AV,false,cmp,checkNext); } else//--------------------//pas meme taille { return false; } } }
public override void InsertBetween(DynShelterModule prev, DynShelterModule next) { int nxtSize = next!=null? next.GetSize() : -1; int prvSize = prev!=null? prev.GetSize() : -1; float newPos = 0.0f; if(next != null && prev != null) //Cas d'ajout entre deux modules { next.SetPrevModule(this); prev.SetNextModule(this); SetNextPrevModule(prev,next); if(_size == nxtSize && next.GetModuleType() == FunctionConf_Dynshelter.ModuleType.bloc) { //Add collé au next next.MoveModuleV2(-_length/2,next); prev.MoveModuleV2(_length/2,prev); newPos = next.GetPos().z + (_length/2+next.GetLength()/2); } if(_size == prvSize && prev.GetModuleType() == FunctionConf_Dynshelter.ModuleType.bloc) { //Add collé au prev if(_size != nxtSize) { next.MoveModuleV2(-_length/2,next); prev.MoveModuleV2(_length/2,prev); } newPos = prev.GetPos().z - (_length/2+prev.GetLength()/2); } if(_size != nxtSize && _size != prvSize) { //add a cheval float space = Vector3.Distance(prev.GetPos(),next.GetPos()); if(space > _length) { newPos = ((prev.GetPos() + next.GetPos()).z)/2; } else { float off7 = (_length - space)/2; next.MoveModuleV2(-off7,next); prev.MoveModuleV2(off7,prev); newPos = (prev.GetPos().z + next.GetPos().z)/2; } } } else //(next == null || prev == null) // Cas d'ajout aux extremites (1er ou dernier) { if(next !=null) { next.SetPrevModule(this); SetNextModule(next); if(_size == nxtSize) { //Add collé au next newPos = next.GetPos().z + (_length/2 + next.GetLength()/2); } else { //Add collé au next ou a cheval si pas la place // newPos = next.GetExtPos(AV).z; newPos = /*next.GetPos().z + */next.GetIntPos(AV).z - GetIntPos(AR).z; } } else//(prev != null) { prev.SetNextModule(this); SetPrevModule(prev); if(_size == prvSize) { //Add collé au prev newPos = prev.GetPos().z - (_length/2 + prev.GetLength()/2); } else { //Add collé au prev ou a cheval si pas la place // newPos = prev.GetExtPos(AR).z; newPos = /*prev.GetPos().z + */prev.GetIntPos(AR).z - GetIntPos(AV).z; } } } //Applying SetPos(false,newPos); }
//Déplacement tests private bool CheckTelescopicMove(float delta,bool checkNext,DynShelterModule nxt,DynShelterModule prv) { bool pushNext = false; bool pullNext = false; bool pushPrev = false; bool pullPrev = false; if(delta <0)//---------------------------------------------------------------------dep Z- { if(nxt != null && _lockNext && checkNext) { if(nxt.GetSize()!=GetSize())//---Si c'est un bloc { if(Push(false,delta)) { pushNext = true; } } else//-------------------------------------------------------------------------Si c'est un bloc de mm taille { pushNext = true; } } if(prv != null && _lockPrev && !checkNext) { if(prv.GetSize()!=GetSize())//---Si c'est un bloc { if(Pull(true,delta)) { pullPrev = true; } } else//-------------------------------------------------------------------------Si c'est une facade ou une extremité ou un bloc de mm taille { pullPrev = true; if(Contact(delta,AV,true,AR,true,prv,false)) pullPrev = false; } } } else if(delta >0)//-----------------------------------------------------------------------------dep Z+ { if(nxt != null && _lockNext && checkNext) { if(nxt.GetSize()!=GetSize())//---Si c'est un bloc { if(Pull(false,delta)) { pullNext = true; } } else//-------------------------------------------------------------------------Si c'est une facade ou une extremité ou un bloc de mm taille { pullNext = true; if(Contact(delta,AR,true,AV,true,nxt,true)) pullNext = false; } } if(prv != null && _lockPrev && !checkNext) { if(prv.GetSize()!=GetSize())//---Si c'est un bloc { if(Push(true,delta)) { pushPrev = true; } } else//-------------------------------------------------------------------------Si c'est un bloc de mm taille { pushPrev = true; } } } if(checkNext) { if((pushNext||pullNext)) return true; else return false; } else { if((pushPrev||pullPrev)) return true; else return false; } }
public override void SetNextModule(DynShelterModule next) { if(next != null && next.GetType() == GetType() && _size == next.GetSize()) { ARSubObj.SetActive(false); } else { ARSubObj.SetActive(true); } _nextModule = next; }
public override void InsertBetween(DynShelterModule prev, DynShelterModule next) { int nxtSize = next!=null? next.GetSize() : -1; int prvSize = prev!=null? prev.GetSize() : -1; float newPos = 0.0f; float off7 = 0.0f; if(next != null && prev != null) //Cas d'ajout entre deux modules { //--vv--configuration des modules--vv-- if(next.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc) { _last = this; } next.SetPrevModule(this); if(prev.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc) { _first = this; } prev.SetNextModule(this); // SetNextPrevModule(prev,next); SetPrevModule(prev); SetNextModule(next); WhoIs(true); WhoIs(false); //--vv--Placement--vv-- if(_size == nxtSize && (_size != prvSize || prev.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)) //Le suivant est de la mm taille mais pas le précedent { //Add collé au next newPos = next.GetPos().z; off7 = -_length; if(next.GetType() == GetType()) off7 += _AvArSize;//TAILLE DU MONTANT DynShelterModule nxt = next; while(nxt != null) { nxt.SetPos(true,off7); nxt = nxt.GetNextModule(); } } else if(_size == prvSize && (_size != nxtSize || next.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)) //le précedent est de la meme taille mais pas le suivant { //Add collé au prev newPos = prev.GetPos().z; off7 = _length; if(prev.GetType() == GetType()) off7 -= ((DynShelterMultiBloc)prev).GetAvArSize();//TAILLE DU MONTANT DynShelterModule prv = prev; while(prv != null) { prv.SetPos(true,off7); prv = prv.GetPrevModule(); } } else //if(_size == nxtSize && _size == prvSize) // le precedent et le suivant ont la meme taille que le courant { DynShelterModule nxt = next; off7 = -_length; if(next.GetType() == GetType()) off7 += _AvArSize;//TAILLE DU MONTANT while(nxt != null) { nxt.SetPos(true,off7/2); nxt = nxt.GetNextModule(); } off7 = _length; if(prev.GetType() == GetType()) off7 -= ((DynShelterMultiBloc)prev).GetAvArSize();//TAILLE DU MONTANT DynShelterModule prv = prev; while(prv != null) { prv.SetPos(true,off7/2); prv = prv.GetPrevModule(); } newPos = (next.GetPos()+prev.GetPos()).z/2; } // else // le precedent et le suivant ont une taille différente du courant // { // DynShelterModule nxt = next; // while(nxt != null) // { // nxt.SetPos(true,-_length/2); // nxt = nxt.GetNextModule(); // } // // DynShelterModule prv = prev; // while(prv != null) // { // prv.SetPos(true,_length/2); // prv = prv.GetPrevModule(); // } // // newPos = (next.GetPos()+prev.GetPos()).z/2; // } } else //(next == null || prev == null) // Cas d'ajout aux extremites (1er ou dernier) { if(next !=null) // this est le 1er module { next.SetPrevModule(this); SetNextModule(next); WhoIs(true); WhoIs(false); if(_size == nxtSize) { //Add collé au next newPos = next.GetPos().z + (_length/2 + next.GetIntOffSet()/*next.GetLength()/2*/); } else { //Add collé au next ou a cheval si pas la place newPos = next.GetExtPos(AV).z; } } else//(prev != null) // this est le dernier module { prev.SetNextModule(this); SetPrevModule(prev); WhoIs(true); WhoIs(false); if(_size == prvSize) { //Add collé au prev newPos = prev.GetPos().z - (_length/2 + prev.GetIntOffSet() /*prev.GetLength()/2*/); } else { //Add collé au prev ou a cheval si pas la place newPos = prev.GetExtPos(AR).z; } } } //Applying Position SetPos(false,newPos); }