public DynShelterMultiBloc(DynShelterBloc baseBloc)
        : base(baseBloc.GetSize(),baseBloc.GetStyle(),baseBloc.GetModuleType(),baseBloc.GetColor(),baseBloc.GetParent())
    {
        //		_moduleGameObj = baseBloc.GetGameObj();
        _parentConf.SaveTransform();
        SetGameObject(baseBloc.GetGameObj());
        _parentConf.ReapplyTransform();

        SetBlocConfig(baseBloc.GetBlocConfig());

        _prevModule = baseBloc.GetPrevModule();
        _nextModule = baseBloc.GetNextModule();

        WhoIs(true);
        WhoIs(false);

        _lockNext = baseBloc.GetNextLock();
        _lockPrev = baseBloc.GetPrevLock();
        _isFirstEnd = _isLastEnd = false;
    }
    public IEnumerator AddModule(int size,string style,ModuleType typ,Color32 color,bool fromInit=false, bool bsensfacade=false)
    {
        //Debug.Log("t : "+size+", styl : "+style+",ModuleType : "+ typ.ToString()+", bool "+fromInit);

        bool noNeedLimitToBeRecalculate = fromInit;
        _isBuilding = true;
        //-------vv-Récupération du mesh-vv------------
        DynShelterModule newModule = null;
        string newStyle= string.Copy(style);
        string tag = CheckAndCreateTag(size,style,typ,out newStyle);
        style = string.Copy(newStyle);

        GameObject go = null;
        bool bextrem = false;

        //--vv--Si il na pas deja été créé, ben tant pis on ouvre--vv--
        if(go == null)
        {
        //			OSLib libObj = GetComponent<ObjData>().GetObjectModel().GetLibrary();
            WWW www = WWW.LoadFromCacheOrDownload (_lib.GetAssetBundlePath (), _lib.GetVersion ());
            yield return www;
            if (www.error != null)
            {
                Debug.Log ("AssetBundle ERROR" + www.error);
            }
            else
            {
                _assetBundle = www.assetBundle;
                if (_assetBundle != null)
                {
                    string sz = _assetBundle.name;

                    if(sz.Contains("extrem"))
                    {
                        bextrem = true;
                    }

                //	Debug.Log("assetBundle.load  : "+tag);
                    Object original = _assetBundle.LoadAsset (tag, typeof(GameObject));
                    if(original!=null){
                        go = (GameObject) Instantiate (original);
                    }
                    /*else
                    {

                        _assetBundle.Unload (false);
                        www.Dispose();
                    }*/

                }
                _assetBundle.Unload (false);
            }
            www.Dispose();
        }

        //-------vv-Création du module-vv---------------
        switch(typ)
        {
        case ModuleType.bloc:
            newModule = new DynShelterBloc(size,style,typ,color,this);
            break;
        case ModuleType.facade:
            noNeedLimitToBeRecalculate=true;
            newModule = new DynShelterFacade(size,style,typ,color,this);
            m_icounterFacade++;
            break;
        case ModuleType.extremite:
            newModule = new DynShelterExtrem(size,style,typ,color,this);
            break;
        case ModuleType.multiBloc:
            newModule = new DynShelterMultiBloc(size,style,ModuleType.bloc,color,this);
            if(_currentModule==null)
            {
                break;
            }
            if(_currentModule.GetType() == typeof(DynShelterBloc))
            {
                DynShelterMultiBloc newCurrent = new DynShelterMultiBloc((DynShelterBloc)_currentModule);
                foreach(DynShelterModule dm in _modules)
                {
                    if(dm.GetPrevModule() == _currentModule)
                        dm.SetPrevModule(newCurrent);
                    if(dm.GetNextModule() == _currentModule)
                        dm.SetNextModule(newCurrent);
                }

                _currentModule = newCurrent;
                _modules[_selectedIndex] = _currentModule;
            }
            else
            {
                if(_currentModule.GetPrevModule() != null)
                {
                    if(_currentModule.GetPrevModule().GetSize() == size && _currentModule.GetPrevModule().GetType() == typeof(DynShelterBloc))
                    {
                        Debug.Log("Modifying Prev");
                        DynShelterMultiBloc newPrev = new DynShelterMultiBloc((DynShelterBloc)_currentModule.GetPrevModule());
                        int idx = _modules.IndexOf(_currentModule.GetPrevModule());
                        _modules[idx] = newPrev;
                        _currentModule.SetNextModule(newPrev);
                    }
                }

                if(_currentModule.GetNextModule() != null)
                {
                    Debug.Log("Modifying Next");
                    if(_currentModule.GetNextModule().GetSize() == size && _currentModule.GetNextModule().GetType() == typeof(DynShelterBloc))
                    {
                        DynShelterMultiBloc newNext = new DynShelterMultiBloc((DynShelterBloc)_currentModule.GetNextModule());
                        int idx = _modules.IndexOf(_currentModule.GetNextModule());
                        _modules[idx] = newNext;
                        _currentModule.SetNextModule(newNext);
                    }
                }
            }
            break;
        }

        SaveTransform();
        go.transform.parent = transform;
        go.transform.localPosition = Vector3.zero;

        if(_currentModule != null)
        {
            if(bsensfacade && bextrem)
            {
                _currentModule.bextrem = true;
                go.transform.Rotate(0.0f, 180.0f, 0.0f);
            }
            else
            {
                _currentModule.bextrem = false;
            }
        }

        newModule.SetGameObject(go);
        _modManager.TestModuleForGlobalMods(go);

        //-------vv-Placement-vv-----------------------
        if(_currentModule != null)
        {
        //			Debug.Log(" _currentModule not null");
            if(_nextInsertion)
            {
        //				Debug.Log(" _nextInsertion");
                newModule.InsertBetween(_currentModule,_currentModule.GetNextModule());
                print ("_selectedIndex :"+ _selectedIndex );
                if( _selectedIndex+1 <= _modules.Count)
                {
                    _modules.Insert(_selectedIndex+1,newModule);
                    _selectedIndex++;
                }
            }
            else
            {
        //				Debug.Log("Not _nextInsertion");
            /*	if(_currentModule.GetType() == typeof(DynShelterMultiBloc)
                    && newModule.GetType() == typeof(DynShelterMultiBloc)
                    && _currentModule.GetPrevModule().GetType() == typeof(DynShelterFacade))
                {
                    newModule.InsertBetween(_currentModule,_currentModule.GetNextModule());
                    _modules.Insert(_selectedIndex+1,newModule);
                }
                else*/
                {
                    newModule.InsertBetween(_currentModule.GetPrevModule(),_currentModule);
                    _modules.Insert(_selectedIndex,newModule);
                }
            }

            //Déplacement Immobile ^^ QUICKFIX placement des facades a l'ajout de celles-ci
            _currentModule.MoveModuleV2(0,_currentModule,true,true);
        }
        else
        {
        //			Debug.Log(" _currentModule  null");
            newModule.SetPos(false,0);
            newModule.SetNextPrevModule(null,null);
            newModule.SetNextPrevLocks(true,true);
            _modules.Add(newModule);
            //_selectedIndex = 0;
        }
        UI.SetItemsNb(_modules.Count);
        UpdateCurrentModule();
        _removeModule = false;
        ChangeModuleColor(_currentColor);

        UpdateLimits(noNeedLimitToBeRecalculate);

        ReapplyTransform();

        if(szbrand == "PoolCover")
        {
            UpdateBoxCollider();
            UpdateVisibility();
        }

        //CenterDeployAndFeetLimit();

        yield return new WaitForEndOfFrame();
        _isBuilding = false;
    }