diff --git a/Assets/IsoTools/Scripts/Internal/IsoFakeCollider.cs b/Assets/IsoTools/Scripts/Internal/IsoFakeCollider.cs index 8759089..491be59 100644 --- a/Assets/IsoTools/Scripts/Internal/IsoFakeCollider.cs +++ b/Assets/IsoTools/Scripts/Internal/IsoFakeCollider.cs @@ -2,11 +2,11 @@ namespace IsoTools.Internal { public class IsoFakeCollider : MonoBehaviour { - IsoCollider _isoCollider = null; - public void Init(IsoCollider iso_collider) { + public IsoFakeCollider Init(IsoCollider iso_collider) { _isoCollider = iso_collider; + return this; } public IsoCollider isoCollider { diff --git a/Assets/IsoTools/Scripts/Internal/IsoFakeObject.cs b/Assets/IsoTools/Scripts/Internal/IsoFakeObject.cs index 0d2dc47..747b4a5 100644 --- a/Assets/IsoTools/Scripts/Internal/IsoFakeObject.cs +++ b/Assets/IsoTools/Scripts/Internal/IsoFakeObject.cs @@ -20,10 +20,6 @@ namespace IsoTools.Internal { var iso_object_layer = isoObject.gameObject.layer; if ( gameObject.layer != iso_object_layer ) { gameObject.layer = iso_object_layer; - for ( int i = 0, e = transform.childCount; i < e; ++i ) { - var child = transform.GetChild(i); - child.gameObject.layer = iso_object_layer; - } } } diff --git a/Assets/IsoTools/Scripts/Internal/IsoFakeRigidbody.cs b/Assets/IsoTools/Scripts/Internal/IsoFakeRigidbody.cs index 352d9c9..4f676d4 100644 --- a/Assets/IsoTools/Scripts/Internal/IsoFakeRigidbody.cs +++ b/Assets/IsoTools/Scripts/Internal/IsoFakeRigidbody.cs @@ -2,11 +2,11 @@ namespace IsoTools.Internal { public class IsoFakeRigidbody : MonoBehaviour { - IsoRigidbody _isoRigidbody = null; - public void Init(IsoRigidbody iso_rigidbody) { + public IsoFakeRigidbody Init(IsoRigidbody iso_rigidbody) { _isoRigidbody = iso_rigidbody; + return this; } public IsoRigidbody isoRigidbody { diff --git a/Assets/IsoTools/Scripts/IsoCollider.cs b/Assets/IsoTools/Scripts/IsoCollider.cs index 764c533..864b9a0 100644 --- a/Assets/IsoTools/Scripts/IsoCollider.cs +++ b/Assets/IsoTools/Scripts/IsoCollider.cs @@ -10,6 +10,8 @@ namespace IsoTools { public abstract class IsoCollider : MonoBehaviour { protected abstract Collider CreateRealCollider(GameObject target); + IsoFakeCollider _fakeCollider; + Collider _realCollider = null; protected Collider realCollider { get { return _realCollider; } @@ -91,10 +93,8 @@ namespace IsoTools { } void Awake() { - var fake_collider_go = new GameObject(); - fake_collider_go.transform.SetParent(fakeObject.transform, false); - fake_collider_go.AddComponent().Init(this); - _realCollider = CreateRealCollider(fake_collider_go); + _fakeCollider = fakeObject.AddComponent().Init(this); + _realCollider = CreateRealCollider(fakeObject); _realCollider.material = material; _realCollider.isTrigger = isTrigger; } @@ -113,8 +113,10 @@ namespace IsoTools { void OnDestroy() { if ( _realCollider ) { - Destroy(_realCollider.gameObject); - _realCollider = null; + Destroy(_realCollider); + } + if ( _fakeCollider ) { + Destroy(_fakeCollider); } physicHelper.DestroyIfUnnecessary(this); } diff --git a/Assets/IsoTools/Scripts/IsoRigidbody.cs b/Assets/IsoTools/Scripts/IsoRigidbody.cs index 665594e..76c856a 100644 --- a/Assets/IsoTools/Scripts/IsoRigidbody.cs +++ b/Assets/IsoTools/Scripts/IsoRigidbody.cs @@ -10,6 +10,8 @@ namespace IsoTools { [RequireComponent(typeof(IsoObject))] public class IsoRigidbody : MonoBehaviour { + IsoFakeRigidbody _fakeRigidbody; + Rigidbody _realRigidbody = null; Rigidbody realRigidbody { get { return _realRigidbody; } @@ -318,8 +320,8 @@ namespace IsoTools { } void Awake() { - IsoUtils.GetOrCreateComponent(fakeObject).Init(this); - _realRigidbody = IsoUtils.GetOrCreateComponent(fakeObject); + _fakeRigidbody = fakeObject.AddComponent().Init(this); + _realRigidbody = fakeObject.AddComponent(); _realRigidbody.freezeRotation = true; _realRigidbody.mass = mass; _realRigidbody.drag = drag; @@ -343,9 +345,10 @@ namespace IsoTools { void OnDestroy() { if ( _realRigidbody ) { - Destroy(fakeObject.GetComponent()); Destroy(_realRigidbody); - _realRigidbody = null; + } + if ( _fakeRigidbody ) { + Destroy(_fakeRigidbody); } physicHelper.DestroyIfUnnecessary(this); }