Unload() public method

public Unload ( bool unloadAllLoadedObjects ) : void
unloadAllLoadedObjects bool
return void
    IEnumerator DownloadAssetBundle()
    {
        yield return StartCoroutine(AssetBundleManager.downloadAssetBundle(url, version));

        bundle = AssetBundleManager.getAssetBundle(url, version);

        if (bundle != null)
            AssetLoader.Instance.SetInfoText("Download Success.... ");
        else
            AssetLoader.Instance.SetInfoText("Download error please retry");

        GameObject obj = Instantiate(bundle.LoadAsset("ExampleObject"),Vector3.zero,Quaternion.identity) as GameObject;
        // Unload the AssetBundles compressed contents to conserve memory
        //Debug.Log(obj);
        bundle.Unload(false);
    }
Exemplo n.º 2
0
 public static UIPackage AddPackage(AssetBundle desc, AssetBundle res, string resourceNamePrefix)
 {
     byte[] bytes = ((TextAsset)desc.mainAsset).bytes;
     if (desc != res)
         desc.Unload(true);
     return AddPackage(bytes, res, resourceNamePrefix);
 }
Exemplo n.º 3
0
 /// <summary>
 /// 卸载资源
 /// </summary>
 /// <param name="bundle">卸载的资源</param>
 /// <param name="unload"></param>
 public static void UnLoadSource(AssetBundle bundle, bool unload)
 {
     if (bundle == null)
     {
         LCSConsole.WriteError("卸载资源为空!");
         return;
     }
     bundle.Unload(unload);
 }
Exemplo n.º 4
0
    private IEnumerator Download(string url)
    {
        // Start a download of the given URL
        //Random argument added to the back of the URL to prevent caching
        string randomValue = "?t=" + Random.value;
        url += randomValue;
        www = new WWW(url);
        isDownloading = true;
        downloadStatus.color = Color.black;
        
        // Wait for download to complete
        yield return www;
        isDownloading = false;
        if (www.error != null)
        {
            Debug.Log(www.error);
            downloadStatus.text = www.error;
        }

        // Load and retrieve the AssetBundle
        bundle = www.assetBundle;
        if (bundle == null)
        {
            downloadStatus.color = Color.red;
            downloadStatus.text = DOWNLOAD_FAIL_MESSAGE;
        }
        // Load all the objects
        Object[] assetbundlesObject = bundle.LoadAllAssets();

        foreach (Object o in assetbundlesObject)
        {
            objectCollection.AddGameObjects((GameObject)o);
        }

        objectCollection.PrepareUserObjects();

        // Unload the AssetBundles compressed contents to conserve memory
        bundle.Unload(false);

        // Frees the memory from the web stream
        www.Dispose();
        downloadStatus.color = Color.blue;
        downloadStatus.text = DOWNLOAD_PASS_MESSAGE;


    }
Exemplo n.º 5
0
    public IEnumerator LoadBundle()
    {
        ImBusy = true;
            string url = "file:///"+Path.GetFullPath(ResPath);
            MessageServiceClass.MessageProcessing("Loadin bundle from "+url);
            WWW www = WWW.LoadFromCacheOrDownload(url, version);
            yield return www;
            MessageServiceClass.MessageProcessing("Bundle resources are loaded from "+ url);

            assetBundle = www.assetBundle;
            CircleGameObjPref = assetBundle.Load("circle") as GameObject;
            for (int i = 0;i <4; i++){
                BundleResourceTextures2d[i] = assetBundle.Load (BundleTexturesNames[i]) as Texture2D;

            }// int i = 0;i <4; i++

           	assetBundle.Unload(false);
            ImBusy = false;
    }
Exemplo n.º 6
0
 public static UIPackage AddPackage(AssetBundle desc, AssetBundle res, string resourceNamePrefix)
 {
     #if UNITY_5
     byte[] bytes = desc.LoadAsset<TextAsset>(desc.GetAllAssetNames()[0]).bytes;
     #else
     byte[] bytes = ((TextAsset)desc.mainAsset).bytes;
     #endif
     if (desc != res)
         desc.Unload(true);
     return AddPackage(bytes, res, resourceNamePrefix);
 }
Exemplo n.º 7
0
	static IEnumerator _Load( string path, bool isScene, LoadContentInfo info )
	{
		AssetBundle bundle = new AssetBundle();
				
		if( !isScene )
		{
#if !UNITY_WEBPLAYER
			if( !FileExistLocally( path ) )
			{		
				Debug.Log("VirgoLoader::>>Downloading : " + path);
				
				WWW www = new WWW( path );
				
				while( www.isDone == false )
				{
					instance.percent = www.progress * 100;
					yield return null;
				}		
				
				instance.percent = 100f;
				
				if( www.error != null )
				{
					instance.OnLoadedAssetsError(new EventArgs());
					Error("VirgoLoader::>>Error: " + www.error );
											
				}
				else
				bundle = www.assetBundle;
				
				if(info.saveLocallyWhenBundle )
					_SaveLocally( www );
			}
			else
			{
				instance.StartCoroutine(LoadLocalFile( path ));
			}
#endif
#if UNITY_WEBPLAYER
			Debug.Log("Loader (WebPlayer)::>>Downloading : " + path);
				
				WWW www = new WWW( path );
				
				while( www.isDone == false )
				{
					instance.percent = www.progress * 100;
					yield return null;
				}		
			
				instance.percent = 100f;
				
				if( www.error != null )
				{
					instance.OnLoadedAssetsError(new EventArgs());
					Error("VirgoLoader::>>Error: " + www.error );
											
				}
				else
				bundle = www.assetBundle;
#endif

		}
		else
		{
			Debug.Log("VirgoLoader::>>Loading scene locally : " + path );
					
			AsyncOperation operation;
			
			if(!info.destroyAssetsInCurrentScene )
			{
				operation = Application.LoadLevelAdditiveAsync( path );
			}	
			else
			{
				operation = Application.LoadLevelAsync( path );
			}
			
			operation.allowSceneActivation = info.placeInSceneWhenLoaded;
			
			while( operation.progress < 1 )
			{
				instance.percent = operation.progress * 100;
				yield return null;
			}
			
			instance.percent = 100f;
		}
		
		if( info.placeInSceneWhenLoaded && bundle != null)
		{
			if(!isScene)
			{
				Instantiate( bundle.mainAsset );
				bundle.Unload(false);
			}
		}		
		
		instance.OnLoadedAssetsComplete( new EventArgs());
	}
Exemplo n.º 8
0
    //释放某AssetBundle
    public void UnLoadBundle(AssetBundle bundle)
    {
        string key = "";
        foreach (DictionaryEntry de in BundleTable)
        {
            if (bundle == (AssetBundle)de.Value){
                key = de.Key.ToString();
                break;
            }
        }

        if (BundleTable.ContainsKey(key))
        {
            BundleTable.Remove(key);
        }
        if (bundle != null)
            bundle.Unload(false);
    }
Exemplo n.º 9
0
    //--------------COROUTINES-----------------------------------
    /* LoadConf()
     * Chargement de la configuration d'abri par défaut
     **/
    private IEnumerator LoadConf()
    {
        _isBuilding = true;
        Montage.assetBundleLock = true;
        //Attend que le objdata soit configuré
        while(gameObject.GetComponent<ObjData>()==null)
        {
                yield return new WaitForEndOfFrame();
        }
            while(gameObject.GetComponent<ObjData>().GetObjectModel() == null)
            {
                yield return new WaitForEndOfFrame();
            }
        _lib = GetComponent<ObjData>().GetObjectModel().GetLibrary();
        //Récupération de l'assetbundle
        //		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)
            {
                //Chargement de la config
                TextAsset confXml = _assetBundle.LoadAsset (modelName+"_conf", typeof (TextAsset)) as TextAsset;
                if (confXml != null)
                {
                    _dsMdl.ParseConfFile(confXml);
                }

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

        //Création de l'abri par default
        ArrayList stConf= _dsMdl.GetdefaultConf();
        _currentColor = _dsMdl.GetColor(_currentColorIndex);

        if(stConf.Count > 0)
        {
        //			SaveTransform();
            _hasFacadeInDefaultBegin = false;
            _hasFacadeInDefaultEnd = false;
            for(int i=0;i<stConf.Count;i=i+3)
            {
                ModuleType typ = ModuleType.bloc;
                switch ((string)stConf[i])
                {
                case "facade":
                    typ = ModuleType.facade;
                    break;
                case "bloc":
                    typ = ModuleType.bloc;
                    if(IsAbrifixe())
                    {
                        typ = ModuleType.multiBloc;
                    }
                    break;
                case "extremite":
                    typ = ModuleType.extremite;
                    break;
                case "multibloc":
                    typ = ModuleType.multiBloc;
                    break;
                }

                if((typ == ModuleType.facade) && (i==0))
                {
                    _hasFacadeInDefaultBegin = true;
                    _saveTailleBegin = (int) stConf[i+1];
                    _saveStyleBegin = (string) stConf[i+2];
                    continue;
                }
                if((typ == ModuleType.facade) && (i>0))
                {
                    _hasFacadeInDefaultEnd = true;
                    _saveTailleEnd = (int) stConf[i+1];
                    _saveStyleEnd = (string) stConf[i+2];
                    continue;
                }

                int t = (int) stConf[i+1];

                string styl = (string) stConf[i+2];

                _nextInsertion = true;
                _decalZ = 0.0f;
                yield return StartCoroutine(AddModule(t,styl,typ,/*_dsMdl.GetColor(0)*/_currentColor,true));

            }

            _isBuilding = false;
        }
        if(!_hasFacadeInDefaultEnd)
        {
            _selectedIndex = 0;
            if(IsAbrifixe())
                _selectedIndex = Mathf.Clamp(_selectedIndex,1,_modules.Count-2);
        }
        UpdateCurrentModule();
        UpdateModules();
        UpdateBoxCollider();
        ChangeModuleColor(_currentColor);

        //	www.Dispose();
        Montage.assetBundleLock = false;
        enabled = false;

        if(_hasFacadeInDefaultEnd)
        {
            yield return StartCoroutine(AddModule(_saveTailleEnd,_saveStyleEnd,ModuleType.facade,_currentColor,true));
            _hasFacadeInDefaultEnd = false;
            _selectedIndex = 0;
            if(IsAbrifixe())
                _selectedIndex = Mathf.Clamp(_selectedIndex,1,_modules.Count-2);

        }

        if(_hasFacadeInDefaultBegin)
        {
            _selectedIndex = 0;
            UpdateCurrentModule();
            _nextInsertion = false;
            yield return StartCoroutine(AddModule(_saveTailleBegin,_saveStyleBegin,ModuleType.facade,_currentColor,true));
            _hasFacadeInDefaultBegin = false;
            if(IsAbrifixe())
                _selectedIndex = Mathf.Clamp(_selectedIndex,1,_modules.Count-2);

            UpdateCurrentModule();
            UpdateModules();
            UpdateBoxCollider();
        }

        //CenterDeployAndFeetLimit();

        yield return null;
    }
Exemplo n.º 10
0
 /// <summary>
 /// 动态更新图片, 打包版本使用
 /// </summary>
 /// <param name="name"></param>
 /// <param name="isIcon"></param>
 /// <returns></returns>
 public Sprite LoadSprite(string name, bool isIcon = true)
 {
     if (isIcon)
     {
         //不同平台的 路径设置要不一样
         if (ab_atlas_icon == null){
             ab_atlas_icon = AssetBundle.CreateFromFile(Application.streamingAssetsPath + "/ui/sprite/UI_release.assetbundle"+GetPlatform());
             ab_atlas_icon.Unload(false);
         }
         return ab_atlas_icon.LoadAsset(name, typeof(Sprite)) as Sprite;
     }
     else
     {
         if (ab_atlas_ui == null) ab_atlas_ui = AssetBundle.CreateFromFile(Application.streamingAssetsPath + "/ui/sprite/UI.assetbundle");
         return ab_atlas_ui.LoadAsset(name) as Sprite;
     }
 }
Exemplo n.º 11
0
	//finish callback
	private void finish_callback(string path , AssetBundle res)
	{
		GameObject.Instantiate(res.mainAsset);
		res.Unload(false);
	}
Exemplo n.º 12
0
        private IEnumerator Start()
        {
            var www = WWW.LoadFromCacheOrDownload(BundleUrl, 0);

            yield return www;

            m_Bundle = www.assetBundle;

            createClip();

            m_Bundle.Unload(false);
        }
Exemplo n.º 13
0
 void Response(AssetBundle bundle, Action<AssetBundle> callback)
 {
     callback(bundle);
     bundle.Unload (false);
     Destroy(gameObject);
 }
Exemplo n.º 14
0
    /// <summary>
    /// www加载AB资源
    /// </summary>
    /// <returns></returns>
    public IEnumerator WWWLoad()
    {
        Debug.Log("WWWLoad 11");

        WWW www = new WWW(assetPath);
        yield return www;

        Debug.Log("WWWLoad 22");

        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.LogWarning("WWWLoad is error:" + www.error + "!AssetPath is " + assetPath);
            yield break;
        }

        assetBundle = www.assetBundle;
        if (assetBundle != null)
        {
            if (isMainAsset)
            {
                objectLoad = assetBundle.mainAsset;
            }
            else
            {
                if (assetBundle.Contains(assetName))
                {
                    if (isLoadSyn)
                        objectLoad = null;//assetBundle.Load(assetName, typeof(Object));
                    else
                    {
                        Debug.Log("WWWLoad 33");
                        AssetBundleRequest abReq = null; //assetBundle.LoadAsync(assetName, typeof(Object));
                        yield return abReq;

                        Debug.Log("WWWLoad 44");
                        if (abReq.isDone)
                            objectLoad = abReq.asset;
                    }
                }
            }
        }

        assetBundle.Unload(false);
        www.Dispose();
    }
Exemplo n.º 15
0
    /* ChangeModuleStyle(int idx)
     * Changement de style d'un module par le idx ième
     * */
    public IEnumerator ChangeModuleStyle(int idx, bool bsensfacade=false)
    {
        string newStyle = _tmpStylesNames[idx];
        string newTag = _currentModule.GetModuleType().ToString()+"_t"+_currentModule.GetSize()+"_"+newStyle;
        if(newStyle != _currentModule.GetStyle())
        {
            //Récupére le GameObject du nouveau style
            GameObject go = null;
            bool bextrem = false;
            //--vv--Copie un module éxistant pour éviter de réouvrir l'assetBundle--vv--
        //			foreach(DynShelterModule dsMod in _modules)
        //			{
        //				if(dsMod.GetTag() == newTag)
        //				{
        //					go = (GameObject)Instantiate(dsMod.GetGameObj());
        //					break;
        //				}
        //			}

            //--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 = newTag;
                        if(sz.Contains("extrem"))
                        {
                            bextrem = true;
                        }

                        Debug.Log("assetBundle.load  : "+newTag);
                        Object original = _assetBundle.LoadAsset (newTag, typeof(GameObject));

                        go = (GameObject) Instantiate (original);
                    }
                    _assetBundle.Unload (false);
                }
                www.Dispose();
        //			}
            SaveTransform();
            go.transform.parent = transform;
            go.transform.localRotation = _currentModule.GetGameObj().transform.localRotation;//Quaternion.identity;
            go.transform.localScale = Vector3.one;

            if(bextrem)
            {
                if(bsensfacade)
                {
                    go.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 0.0f);
                    //go.transform.Rotate(0.0f, 180.0f, 0.0f);
                }

                _currentModule.bextrem = true;
            }
            else
            {
                _currentModule.bextrem = false;
            }

            if(!IsAbrifixe())
            {
                go.transform.localPosition = _currentModule.GetPos();
                _modManager.TestModuleForGlobalMods(go);
                _modManager.RemoveModFrom(_currentModule.GetGameObj());
                Destroy(_currentModule.GetGameObj());
                _currentModule.ChangeStyle(newStyle,go);
                _modules[_selectedIndex] = _currentModule;
                //ChangeModuleColor(_currentColor);
            }
            else
            {
                int curMod=0;
                //foreach(DynShelterModule m in _modules)
                for(int modulIndex=0;modulIndex<_modules.Count;modulIndex++)
                {
                    DynShelterModule m = (DynShelterModule) _modules[modulIndex];
                    if(m.GetModuleType()==_currentModule.GetModuleType())
                    {
                        GameObject goCopy = (GameObject)Instantiate(go);
                        goCopy.transform.parent = transform;
                        goCopy.transform.localPosition = m.GetPos();
                        _modManager.TestModuleForGlobalMods(goCopy);
                        _modManager.RemoveModFrom(m.GetGameObj());
                        Destroy(m.GetGameObj());
                        m.ChangeStyle(newStyle,goCopy);
                        _modules[modulIndex] = m;
                    }
                    curMod++;
                }
                Destroy(go);
            }

            ChangeModuleColor(_currentColor);
            ReapplyTransform();
        }
        yield return null;
    }
Exemplo n.º 16
0
 private IEnumerator UnloadAssetBundle(AssetBundle bundle)
 {
     yield return new WaitForSeconds(1.0f);
     bundle.Unload(false);
 }
Exemplo n.º 17
0
 /// <summary>
 /// Add a UI package from two assetbundles with a optional main asset name.
 /// </summary>
 /// <param name="desc">A assetbunble contains description file.</param>
 /// <param name="res">A assetbundle contains resources.</param>
 /// <param name="mainAssetName">Main asset name.</param>
 /// <returns>UIPackage</returns>
 public static UIPackage AddPackage(AssetBundle desc, AssetBundle res, string mainAssetName)
 {
     string source = null;
     #if UNITY_5
     if (mainAssetName != null)
     {
         TextAsset ta = desc.LoadAsset<TextAsset>(mainAssetName);
         if (ta != null)
             source = ta.text;
     }
     else
     {
         string[] names = desc.GetAllAssetNames();
         foreach (string n in names)
         {
             if (n.IndexOf("@") == -1)
             {
                 TextAsset ta = desc.LoadAsset<TextAsset>(n);
                 if (ta != null)
                 {
                     source = ta.text;
                     if (mainAssetName == null)
                         mainAssetName = Path.GetFileNameWithoutExtension(n);
                     break;
                 }
             }
         }
     }
     #else
     if (mainAssetName != null)
     {
         TextAsset ta = (TextAsset)desc.Load(mainAssetName, typeof(TextAsset));
         if (ta != null)
             source = ta.text;
     }
     else
     {
         source = ((TextAsset)desc.mainAsset).text;
         mainAssetName = desc.mainAsset.name;
     }
     #endif
     if (source == null)
         throw new Exception("FairyGUI: invalid package.");
     if (desc != res)
         desc.Unload(true);
     return AddPackage(source, res, mainAssetName);
 }
Exemplo n.º 18
0
    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;
    }