コード例 #1
0
    public void RebuildMap()
    {
        instance = this;
        map.Clear();
        CollisionAudioSurfSurfConfig[] componentsInChildren = runtimeConfigs.GetComponentsInChildren <CollisionAudioSurfSurfConfig>();
        for (int i = 0; i < componentsInChildren.Length; i++)
        {
            UnityEngine.Object.DestroyImmediate(componentsInChildren[i].gameObject);
        }
        Array values = Enum.GetValues(typeof(SurfaceType));

        for (int j = 0; j < values.Length; j++)
        {
            SurfaceType surfaceType = (SurfaceType)values.GetValue(j);
            if (surfaceType == SurfaceType.Unknown)
            {
                continue;
            }
            Dictionary <SurfaceType, CollisionAudioSurfSurfConfig> dictionary = new Dictionary <SurfaceType, CollisionAudioSurfSurfConfig>();
            map[surfaceType] = dictionary;
            for (int k = 0; k < values.Length; k++)
            {
                SurfaceType surfaceType2 = (SurfaceType)values.GetValue(k);
                if (surfaceType2 != 0)
                {
                    dictionary[surfaceType2] = null;
                }
            }
        }
        ushort num = 0;

        configIdMap.Clear();
        CollisionAudioSurfSurfConfig[] componentsInChildren2 = GetComponentsInChildren <CollisionAudioSurfSurfConfig>();
        foreach (CollisionAudioSurfSurfConfig cfg in componentsInChildren2)
        {
            AddCofigToMap(cfg);
        }
        foreach (CollisionAudioSurfSurfConfig collisionAudioSurfSurfConfig in componentsInChildren2)
        {
            if (collisionAudioSurfSurfConfig.isDefault)
            {
                Dictionary <SurfaceType, CollisionAudioSurfSurfConfig> dictionary2 = map[collisionAudioSurfSurfConfig.surf1];
                foreach (SurfaceType item in new List <SurfaceType>(dictionary2.Keys))
                {
                    if (dictionary2[item] != null)
                    {
                        CollisionAudioSurfSurfConfig collisionAudioSurfSurfConfig2 = dictionary2[item];
                        if (collisionAudioSurfSurfConfig2.hit != null)
                        {
                            collisionAudioSurfSurfConfig2.hit.netId = num++;
                            configIdMap[collisionAudioSurfSurfConfig2.hit.netId] = collisionAudioSurfSurfConfig2.hit;
                        }
                        if (collisionAudioSurfSurfConfig2.slide != null)
                        {
                            collisionAudioSurfSurfConfig2.slide.netId = num++;
                            configIdMap[collisionAudioSurfSurfConfig2.slide.netId] = collisionAudioSurfSurfConfig2.slide;
                        }
                    }
                    if (dictionary2[item] == null && item != SurfaceType.RagdollBall)
                    {
                        CollisionAudioSurfSurfConfig collisionAudioSurfSurfConfig3 = new GameObject().AddComponent <CollisionAudioSurfSurfConfig>();
                        collisionAudioSurfSurfConfig3.surf1 = collisionAudioSurfSurfConfig.surf1;
                        collisionAudioSurfSurfConfig3.surf2 = item;
                        collisionAudioSurfSurfConfig3.link  = collisionAudioSurfSurfConfig.controlConfig;
                        collisionAudioSurfSurfConfig3.name  = $"{collisionAudioSurfSurfConfig3.surf1}{collisionAudioSurfSurfConfig3.surf2}Cloned{collisionAudioSurfSurfConfig.name}";
                        collisionAudioSurfSurfConfig3.transform.SetParent(runtimeConfigs.transform, worldPositionStays: false);
                        AddCofigToMap(collisionAudioSurfSurfConfig3);
                    }
                }
            }
        }
    }
コード例 #2
0
 private void OnEnable()
 {
     instance = this;
     RebuildMap();
 }