Skip to content

Commit 565951d

Browse files
committed
UnityLayerとPhysicsLayerのCollision設定が正常に行われないバグを修正
1 parent 5b55c5f commit 565951d

File tree

7 files changed

+25
-28
lines changed

7 files changed

+25
-28
lines changed
0 Bytes
Binary file not shown.

Assets/PhysicsLayers/Example/Scripts/Abstracts/AbstractCollisionCallbacks.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ public abstract class AbstractCollisionCallbacks : MonoBehaviour
2424
protected virtual void Awake()
2525
{
2626
this.ignoreLayers = LayersManager.Instance
27-
.GetIgnoreLayers(this.LayerID)
28-
.Values
27+
.GetIgnoreLayerIDs(this.LayerID)
28+
.Select(layerID => LayersManager.Instance.LayerToName(layerID))
2929
.ToList();
3030
}
3131

Assets/PhysicsLayers/Scripts/Components/PhysicsLayer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public IEnumerable<LayerCollision> GetEnumerable()
4444
yield return this.collisions[i];
4545
}
4646
}
47-
47+
4848
public bool DeleteLayerCollision(int layerID)
4949
{
5050
return this.collisions.Remove(this[layerID]);

Assets/PhysicsLayers/Scripts/Components/UnityLayerInfos.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,10 @@ public override int NameToLayer(string layerName)
7676

7777
public override IEnumerable<UnityLayer> GetEnumerable()
7878
{
79-
for(var i = 0; i < this.layers.Count; i++)
79+
var layers = this.ValidateLayers;
80+
foreach(var layer in layers)
8081
{
81-
if(string.IsNullOrEmpty(this.layers[i].LayerName) == false)
82-
{
83-
yield return this.layers[i];
84-
}
82+
yield return layer;
8583
}
8684
}
8785

Assets/PhysicsLayers/Scripts/LayersManager.Managements.cs

+3-14
Original file line numberDiff line numberDiff line change
@@ -82,26 +82,15 @@ private int SetIgnoreCollisions<T1, T2>(T1 layer, Dictionary<int, List<T2>> laye
8282

8383
this.CheckDicKey(layerID);
8484

85-
if(layerID < UnityLayerCount)
86-
{
87-
return layerID;
88-
}
89-
90-
var physicsLayer = this.PhysicsLayerInfos[layerID];
91-
if(physicsLayer == null)
92-
{
93-
return -1;
94-
}
95-
96-
var ignoreLayers = this.GetIgnoreLayers(layerID);
97-
if(ignoreLayers.Count <= 0)
85+
var ignoreLayers = this.GetIgnoreLayerIDs(layerID);
86+
if(ignoreLayers.Count() <= 0)
9887
{
9988
return layerID;
10089
}
10190

10291
foreach(var pair in layersDic)
10392
{
104-
if(ignoreLayers.ContainsKey(pair.Key) == false)
93+
if(ignoreLayers.Contains(pair.Key) == false)
10594
{
10695
continue;
10796
}

Assets/PhysicsLayers/Scripts/LayersManager.cs

+15-5
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,23 @@ public IEnumerable<string> UnityLayerNames
7777
private UnityLayerInfos unityLayerInfos = new UnityLayerInfos();
7878

7979

80-
public Dictionary<int, string> GetIgnoreLayers(int layerID)
80+
public IEnumerable<int> GetIgnoreLayerIDs(int layerID)
8181
{
82-
var infos = this.PhysicsLayerInfos[layerID];
82+
if(layerID >= 0 && layerID < UnityLayerCount)
83+
{
84+
return this.PhysicsLayerInfos.GetEnumerable()
85+
.Where(layer =>
86+
{
87+
var layerCollision = layer[layerID];
88+
return layerCollision != null && layerCollision.Collision == false;
89+
})
90+
.Select(layer => layer.LayerID);
91+
}
8392

84-
return infos == null ? new Dictionary<int, string>() : infos.GetEnumerable()
85-
.Where(info => info.Collision == false)
86-
.ToDictionary(info => info.LayerID, info => this.LayerToName(info.LayerID));
93+
var physicsLayer = this.PhysicsLayerInfos[layerID];
94+
return physicsLayer == null ? new List<int>() : physicsLayer.GetEnumerable()
95+
.Where(layerCollision => layerCollision.Collision == false)
96+
.Select(layerCollision => layerCollision.LayerID);
8797
}
8898

8999
public bool IsPhysicsLayer(int layerID)

Assets/PhysicsLayers/Version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.3.0
1+
2.3.1

0 commit comments

Comments
 (0)