Logo Pastebin.fr
Pastebin

Retrouvez, créez et partagez vos snippets en temps réel.

paf

public struct CursedList{
    public List<int> idsToMain;
    public List<int> mainToIds;
    public List<TestData> main;

    public int AddData(TestData testData){
        var countMinusOne = main.Count-1;
        main.Add(testData);
        idsToMain.Add(countMinusOne);
        mainToIds.Add(countMinusOne);
        return countMinusOne;
    }

    public AddDatas(List<TestData> testDataList, List<int> ids){
        var c = testDataList.Count;
        for (int i = 0; i < c; i++) ids.Add(AddData(testDataList[i]));
        return ids;
    }

    public void Clear(){
        idsToMain.Clear();
        mainToIds.Clear();
        main.Clear();
    }

    public void RemoveData(int id){
        var countMinusOne = main.Count-1;

        var mainIndex = idsToMain[id];

        if(mainIndex == countMinusOne)//last
        {
            main.RemoveAt(countMinusOne);
            mainToIds.RemoveAt(countMinusOne);
            idsToMain.RemoveAt(countMinusOne);
        }else{
            var lastValueMain = main[countMinusOne];
            main.RemoveAt(countMinusOne);
            main[mainIndex] = lastValueMain;

            var lastValueMainToId = mainToIds[countMinusOne];
            mainToIds.RemoveAt(countMinusOne);
            mainToIds[mainIndex] = lastValueMainToId;
            
            var lastValueIdToMain = idsToMain[countMinusOne];
            idsToMain.RemoveAt(countMinusOne);
            idsToMain[id] = lastValueIdToMain;
        }
    }

    public TestData GetData(int id) => main[idsToMain[id]];
}

public struct TestData{
    public float grandeValeur;
    public float grandeValeur2;
    public float grandeValeur3;
}

Créé il y a 1 semaine.

Rechercher un Pastebin

Aucun paste trouvé.