private void UpdateLayerCollision(PhysicsLayerInfos infos, IEnumerable <int> layers) { foreach (var layer in infos.GetEnumerable()) { layer.Update(layers); } }
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; }