Example #1
0
 private void UpdateLayerCollision(PhysicsLayerInfos infos, IEnumerable <int> layers)
 {
     foreach (var layer in infos.GetEnumerable())
     {
         layer.Update(layers);
     }
 }
Example #2
0
        private void UpdateLayer(PhysicsLayerInfos infos, Dictionary <int, string> physicsLayers)
        {
            infos.Update(physicsLayers, true);

            physicsLayers = infos.Layers;
            physicsLayers.AddRange(this.Target.UnityLayerInfos.Layers);

            this.UpdateLayerCollision(infos, physicsLayers.Keys);
        }
        private void DrawCollInfos(PhysicsLayerInfos layerInfos)
        {
            EditorGUI.indentLevel += 1;

            this.collInfosFolders.SetCount(layerInfos.LayerCount, index => new CollInfosFolders());

            var i = 0;

            foreach (var physicsLayer in layerInfos.GetEnumerable().OrderBy(layer => layer.LayerID))
            {
                var folder = this.collInfosFolders[i];
                folder.collision = EditorGUILayout.Foldout(folder.collision, "Collision : " + physicsLayer.LayerName, true);
                if (this.collInfosFolders[i].collision == false)
                {
                    i++;
                    continue;
                }

                var collInfos = physicsLayer.CollisionInfos;

                EditorGUI.indentLevel += 1;
                using (var vert = new EditorGUILayout.VerticalScope())
                {
                    var keys        = collInfos.Keys.OrderBy(info => info);
                    var physicsKeys = keys.Where(key => key >= LayersManager.UnityLayerCount);

                    folder.unityLayer = EditorGUILayout.Foldout(folder.unityLayer, "Unity Layers", true);
                    if (folder.unityLayer == true)
                    {
                        EditorGUI.indentLevel += 1;

                        var unityKeys = keys.Where(key => key < LayersManager.UnityLayerCount);
                        foreach (var key in unityKeys)
                        {
                            collInfos[key] = this.DrawCollInfo(key, collInfos[key]);
                        }

                        EditorGUI.indentLevel -= 1;
                    }

                    EditorGUILayout.Space();
                    folder.physicsLayer = EditorGUILayout.Foldout(folder.physicsLayer, "Physics Layers", true);
                    if (folder.physicsLayer == true)
                    {
                        EditorGUI.indentLevel += 1;

                        foreach (var key in physicsKeys)
                        {
                            if (key < physicsLayer.LayerID)
                            {
                                collInfos[key] = layerInfos[key][physicsLayer.LayerID].Collision;
                            }
                            else
                            {
                                collInfos[key] = this.DrawCollInfo(key, collInfos[key]);
                            }
                        }

                        EditorGUI.indentLevel -= 1;
                    }
                }

                i++;
                physicsLayer.Update(collInfos);
                EditorGUI.indentLevel -= 1;
            }

            EditorGUI.indentLevel -= 1;
        }