using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
[AddComponentMenu("NGUI/Helper/ColliderUpdater")]
public class UpdateCollider : MonoBehaviour
{
public Transform targetTransform;
public BoxCollider cachedCollider;
public Vector2 sizeoffset
= new Vector2
(1,
1); public float depth;
/// <summary>
/// Getting Stuff Cached
/// </summary>
void Start ()
{
if (targetTransform == null) {
targetTransform = transform.FindChild ("Background");
}
if (this.GetComponent<BoxCollider> () != null) {
cachedCollider = this.GetComponent<BoxCollider> ();
}
}
/// <summary>
/// Update the possition of the collider according to the size of the target UISlicedSprite.
/// </summary>
void Update ()
{
if (targetTransform != null) {
UISprite thisSprite = targetTransform.GetComponent<UISprite> ();
cachedCollider
.size = new Vector3
(sizeoffset
.x * thisSprite
.width, sizeoffset
.y * thisSprite
.height,
1); cachedCollider.center = targetTransform.localPosition;
if (thisSprite != null) {
switch (thisSprite.pivot) {
case UIWidget.Pivot.Bottom:
cachedCollider
.center += new Vector3
(0, sizeoffset
.y * thisSprite
.height / -2, depth
); //cachedCollider.center += new Vector3 (0, sizeoffset.y * targetTransform.localScale.y / -2, depth);
break;
case UIWidget.Pivot.BottomLeft:
cachedCollider
.center += new Vector3
(sizeoffset
.x * thisSprite
.width / 2, sizeoffset
.y * thisSprite
.height / 2, depth
); //cachedCollider.center += new Vector3 (+sizeoffset.x * targetTransform.localScale.x / 2, sizeoffset.y * targetTransform.localScale.y / 2, depth);
break;
case UIWidget.Pivot.BottomRight:
cachedCollider
.center += new Vector3
(sizeoffset
.x * thisSprite
.width / -2, sizeoffset
.y * thisSprite
.height / 2, depth
); //cachedCollider.center += new Vector3 (sizeoffset.x * targetTransform.localScale.x / -2, sizeoffset.y * targetTransform.localScale.y / 2, depth);
break;
case UIWidget.Pivot.Top:
cachedCollider
.center += new Vector3
(0, sizeoffset
.y * thisSprite
.height / -2,
0); //cachedCollider.center += new Vector3 (0, sizeoffset.y * targetTransform.localScale.y / -2, 0);
break;
case UIWidget.Pivot.TopLeft:
cachedCollider
.center += new Vector3
(sizeoffset
.x * thisSprite
.width / 2, sizeoffset
.y * thisSprite
.height / -2, depth
); //cachedCollider.center += new Vector3 (sizeoffset.x * targetTransform.localScale.x / 2, sizeoffset.y * targetTransform.localScale.y / -2, depth);
break;
case UIWidget.Pivot.TopRight:
cachedCollider
.center += new Vector3
(sizeoffset
.x * thisSprite
.width / -2, sizeoffset
.y * thisSprite
.height / -2, depth
); //cachedCollider.center += new Vector3 (sizeoffset.x * targetTransform.localScale.x / -2, sizeoffset.y * targetTransform.localScale.y / -2, depth);
break;
case UIWidget.Pivot.Left:
cachedCollider
.center += new Vector3
(sizeoffset
.x * thisSprite
.width / 2,
0, depth
); break;
case UIWidget.Pivot.Right:
cachedCollider
.center += new Vector3
(sizeoffset
.x * thisSprite
.width / -2,
0, depth
); //cachedCollider.center += new Vector3 (sizeoffset.x * targetTransform.localScale.x / -2, 0, depth);
break;
case UIWidget.Pivot.Center:
cachedCollider
.center += new Vector3
(cachedCollider
.center.x, cachedCollider
.center.y, depth
); //cachedCollider.center += new Vector3 (cachedCollider.center.x, cachedCollider.center.y, depth);
break;
}
}
}
}
}