108 lines
4.6 KiB
C#
108 lines
4.6 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System.Reflection;
|
|
|
|
namespace MoreMountains.Tools
|
|
{
|
|
/// <summary>
|
|
/// A simple class used to control properties on a transform
|
|
/// </summary>
|
|
[AddComponentMenu("More Mountains/Tools/Property Controllers/TransformController")]
|
|
public class TransformController : MonoBehaviour
|
|
{
|
|
[Header("Position")]
|
|
public bool ControlPositionX;
|
|
[MMCondition("ControlPositionX", true)]
|
|
public float PositionX;
|
|
public bool ControlPositionY;
|
|
[MMCondition("ControlPositionY", true)]
|
|
public float PositionY;
|
|
public bool ControlPositionZ;
|
|
[MMCondition("ControlPositionZ", true)]
|
|
public float PositionZ;
|
|
|
|
[Header("Local Position")]
|
|
public bool ControlLocalPositionX;
|
|
[MMCondition("ControlLocalPositionX", true)]
|
|
public float LocalPositionX;
|
|
public bool ControlLocalPositionY;
|
|
[MMCondition("ControlLocalPositionY", true)]
|
|
public float LocalPositionY;
|
|
public bool ControlLocalPositionZ;
|
|
[MMCondition("ControlLocalPositionZ", true)]
|
|
public float LocalPositionZ;
|
|
|
|
[Header("Rotation")]
|
|
public bool ControlRotationX;
|
|
[MMCondition("ControlRotationX", true)]
|
|
public float RotationX;
|
|
public bool ControlRotationY;
|
|
[MMCondition("ControlRotationY", true)]
|
|
public float RotationY;
|
|
public bool ControlRotationZ;
|
|
[MMCondition("ControlRotationZ", true)]
|
|
public float RotationZ;
|
|
|
|
[Header("Local Rotation")]
|
|
public bool ControlLocalRotationX;
|
|
[MMCondition("ControlLocalRotationX", true)]
|
|
public float LocalRotationX;
|
|
public bool ControlLocalRotationY;
|
|
[MMCondition("ControlLocalRotationY", true)]
|
|
public float LocalRotationY;
|
|
public bool ControlLocalRotationZ;
|
|
[MMCondition("ControlLocalRotationZ", true)]
|
|
public float LocalRotationZ;
|
|
|
|
[Header("Scale")]
|
|
public bool ControlScaleX;
|
|
[MMCondition("ControlScaleX", true)]
|
|
public float ScaleX;
|
|
public bool ControlScaleY;
|
|
[MMCondition("ControlScaleY", true)]
|
|
public float ScaleY;
|
|
public bool ControlScaleZ;
|
|
[MMCondition("ControlScaleZ", true)]
|
|
public float ScaleZ;
|
|
|
|
protected Vector3 _position;
|
|
protected Vector3 _localPosition;
|
|
protected Vector3 _rotation;
|
|
protected Vector3 _localRotation;
|
|
protected Vector3 _scale;
|
|
|
|
/// <summary>
|
|
/// At update, modifies the requested properties
|
|
/// </summary>
|
|
protected virtual void Update()
|
|
{
|
|
_position = this.transform.position;
|
|
_localPosition = this.transform.localPosition;
|
|
_rotation = this.transform.eulerAngles;
|
|
_localRotation = this.transform.localEulerAngles;
|
|
_scale = this.transform.localScale;
|
|
|
|
if (ControlPositionX) { _position.x = PositionX; this.transform.position = _position; }
|
|
if (ControlPositionY) { _position.y = PositionY; this.transform.position = _position; }
|
|
if (ControlPositionZ) { _position.z = PositionZ; this.transform.position = _position; }
|
|
|
|
if (ControlLocalPositionX) { _localPosition.x = LocalPositionX; this.transform.localPosition = _localPosition; }
|
|
if (ControlLocalPositionY) { _localPosition.y = LocalPositionY; this.transform.localPosition = _localPosition; }
|
|
if (ControlLocalPositionZ) { _localPosition.z = LocalPositionZ; this.transform.localPosition = _localPosition; }
|
|
|
|
if (ControlRotationX) { _rotation.x = RotationX; this.transform.eulerAngles = _rotation; }
|
|
if (ControlRotationY) { _rotation.y = RotationY; this.transform.eulerAngles = _rotation; }
|
|
if (ControlRotationZ) { _rotation.z = RotationZ; this.transform.eulerAngles = _rotation; }
|
|
|
|
if (ControlLocalRotationX) { _localRotation.x = LocalRotationX; this.transform.localEulerAngles = _localRotation; }
|
|
if (ControlLocalRotationY) { _localRotation.y = LocalRotationY; this.transform.localEulerAngles = _localRotation; }
|
|
if (ControlLocalRotationZ) { _localRotation.z = LocalRotationZ; this.transform.localEulerAngles = _localRotation; }
|
|
|
|
if (ControlScaleX) { _scale.x = ScaleX; this.transform.localScale = _scale; }
|
|
if (ControlScaleY) { _scale.y = ScaleY; this.transform.localScale = _scale; }
|
|
if (ControlScaleZ) { _scale.z = ScaleZ; this.transform.localScale = _scale; }
|
|
}
|
|
}
|
|
}
|
|
|