union physic helper holder

This commit is contained in:
2016-04-20 22:56:20 +06:00
parent 92ed826849
commit 40488f9424
7 changed files with 39 additions and 40 deletions

View File

@@ -60,6 +60,7 @@
<Compile Include="Assets\IsoTools\Scripts\Internal\IsoFakeTriggerListener.cs" /> <Compile Include="Assets\IsoTools\Scripts\Internal\IsoFakeTriggerListener.cs" />
<Compile Include="Assets\IsoTools\Scripts\Internal\IsoList.cs" /> <Compile Include="Assets\IsoTools\Scripts\Internal\IsoList.cs" />
<Compile Include="Assets\IsoTools\Scripts\Internal\IsoPhysicHelper.cs" /> <Compile Include="Assets\IsoTools\Scripts\Internal\IsoPhysicHelper.cs" />
<Compile Include="Assets\IsoTools\Scripts\Internal\IsoPhysicHelperHolder.cs" />
<Compile Include="Assets\IsoTools\Scripts\Internal\IsoUtils.cs" /> <Compile Include="Assets\IsoTools\Scripts\Internal\IsoUtils.cs" />
<Compile Include="Assets\IsoTools\Scripts\IsoBoxCollider.cs" /> <Compile Include="Assets\IsoTools\Scripts\IsoBoxCollider.cs" />
<Compile Include="Assets\IsoTools\Scripts\IsoCollider.cs" /> <Compile Include="Assets\IsoTools\Scripts\IsoCollider.cs" />

View File

@@ -0,0 +1,18 @@
using UnityEngine;
using System.Collections;
namespace IsoTools.Internal {
public class IsoPhysicHelperHolder : MonoBehaviour {
protected GameObject fakeObject {
get { return physicHelper.isoFakeObject; }
}
protected IsoPhysicHelper physicHelper {
get { return IsoUtils.GetOrCreateComponent<IsoPhysicHelper>(gameObject); }
}
protected void DestroyUnnecessaryCheck() {
physicHelper.DestroyIfUnnecessary(this);
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 24e253f6697d448229f535a2e796f72b
timeCreated: 1461163442
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -7,7 +7,7 @@ using UnityEditor;
namespace IsoTools { namespace IsoTools {
[RequireComponent(typeof(IsoObject))] [RequireComponent(typeof(IsoObject))]
public abstract class IsoCollider : MonoBehaviour { public abstract class IsoCollider : IsoPhysicHelperHolder {
protected abstract Collider CreateRealCollider(GameObject target); protected abstract Collider CreateRealCollider(GameObject target);
IsoFakeCollider _fakeCollider; IsoFakeCollider _fakeCollider;
@@ -17,14 +17,6 @@ namespace IsoTools {
get { return _realCollider; } get { return _realCollider; }
} }
protected GameObject fakeObject {
get { return physicHelper.isoFakeObject; }
}
protected IsoPhysicHelper physicHelper {
get { return IsoUtils.GetOrCreateComponent<IsoPhysicHelper>(gameObject); }
}
[SerializeField] [SerializeField]
public PhysicMaterial _material = null; public PhysicMaterial _material = null;
public PhysicMaterial material { public PhysicMaterial material {
@@ -118,7 +110,7 @@ namespace IsoTools {
if ( _fakeCollider ) { if ( _fakeCollider ) {
Destroy(_fakeCollider); Destroy(_fakeCollider);
} }
physicHelper.DestroyIfUnnecessary(this); DestroyUnnecessaryCheck();
} }
#if UNITY_EDITOR #if UNITY_EDITOR

View File

@@ -4,18 +4,10 @@ using IsoTools.Internal;
namespace IsoTools { namespace IsoTools {
[DisallowMultipleComponent] [DisallowMultipleComponent]
[RequireComponent(typeof(IsoObject))] [RequireComponent(typeof(IsoObject))]
public class IsoCollisionListener : MonoBehaviour { public class IsoCollisionListener : IsoPhysicHelperHolder {
IsoFakeCollisionListener _fakeListener; IsoFakeCollisionListener _fakeListener;
GameObject fakeObject {
get { return physicHelper.isoFakeObject; }
}
IsoPhysicHelper physicHelper {
get { return IsoUtils.GetOrCreateComponent<IsoPhysicHelper>(gameObject); }
}
void Awake() { void Awake() {
_fakeListener = fakeObject.AddComponent<IsoFakeCollisionListener>().Init(this); _fakeListener = fakeObject.AddComponent<IsoFakeCollisionListener>().Init(this);
} }
@@ -24,7 +16,7 @@ namespace IsoTools {
if ( _fakeListener ) { if ( _fakeListener ) {
Destroy(_fakeListener); Destroy(_fakeListener);
} }
physicHelper.DestroyIfUnnecessary(this); DestroyUnnecessaryCheck();
} }
} }
} }

View File

@@ -8,7 +8,7 @@ using UnityEditor;
namespace IsoTools { namespace IsoTools {
[DisallowMultipleComponent] [DisallowMultipleComponent]
[RequireComponent(typeof(IsoObject))] [RequireComponent(typeof(IsoObject))]
public class IsoRigidbody : MonoBehaviour { public class IsoRigidbody : IsoPhysicHelperHolder {
IsoFakeRigidbody _fakeRigidbody; IsoFakeRigidbody _fakeRigidbody;
@@ -17,14 +17,6 @@ namespace IsoTools {
get { return _realRigidbody; } get { return _realRigidbody; }
} }
GameObject fakeObject {
get { return physicHelper.isoFakeObject; }
}
IsoPhysicHelper physicHelper {
get { return IsoUtils.GetOrCreateComponent<IsoPhysicHelper>(gameObject); }
}
[SerializeField] [SerializeField]
public float _mass = 1.0f; public float _mass = 1.0f;
public float mass { public float mass {
@@ -350,7 +342,7 @@ namespace IsoTools {
if ( _fakeRigidbody ) { if ( _fakeRigidbody ) {
Destroy(_fakeRigidbody); Destroy(_fakeRigidbody);
} }
physicHelper.DestroyIfUnnecessary(this); DestroyUnnecessaryCheck();
} }
#if UNITY_EDITOR #if UNITY_EDITOR

View File

@@ -4,18 +4,10 @@ using IsoTools.Internal;
namespace IsoTools { namespace IsoTools {
[DisallowMultipleComponent] [DisallowMultipleComponent]
[RequireComponent(typeof(IsoObject))] [RequireComponent(typeof(IsoObject))]
public class IsoTriggerListener : MonoBehaviour { public class IsoTriggerListener : IsoPhysicHelperHolder {
IsoFakeTriggerListener _fakeListener; IsoFakeTriggerListener _fakeListener;
GameObject fakeObject {
get { return physicHelper.isoFakeObject; }
}
IsoPhysicHelper physicHelper {
get { return IsoUtils.GetOrCreateComponent<IsoPhysicHelper>(gameObject); }
}
void Awake() { void Awake() {
_fakeListener = fakeObject.AddComponent<IsoFakeTriggerListener>().Init(this); _fakeListener = fakeObject.AddComponent<IsoFakeTriggerListener>().Init(this);
} }
@@ -24,7 +16,7 @@ namespace IsoTools {
if ( _fakeListener ) { if ( _fakeListener ) {
Destroy(_fakeListener); Destroy(_fakeListener);
} }
physicHelper.DestroyIfUnnecessary(this); DestroyUnnecessaryCheck();
} }
} }
} }