Readd missing import files
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
|
||||
namespace Wing.Gizmos
|
||||
{
|
||||
public class GizmosScale : GizmosBase
|
||||
{
|
||||
public delegate void ScaleEventHandler(float dx, float dy, float dz);
|
||||
|
||||
public event ScaleEventHandler OnScale;
|
||||
public event Action OnScaleEnd;
|
||||
|
||||
private Vector3 mTotal = Vector3.zero;
|
||||
|
||||
private Transform _X;
|
||||
private Transform _Y;
|
||||
private Transform _Z;
|
||||
|
||||
private float originOffset;
|
||||
// Use this for initialization
|
||||
|
||||
protected override void OnInit()
|
||||
{
|
||||
ConstructAxis("X", EGizmosAxisType.X);
|
||||
ConstructAxis("Y", EGizmosAxisType.Y);
|
||||
ConstructAxis("Z", EGizmosAxisType.Z);
|
||||
ConstructAxis("Center", EGizmosAxisType.CENTER);
|
||||
|
||||
_X = transform.Find("X");
|
||||
_Y = transform.Find("Y");
|
||||
_Z = transform.Find("Z");
|
||||
|
||||
originOffset = _X.Find("Cube").transform.localPosition.z;
|
||||
}
|
||||
|
||||
protected override void OnDragDelta(GameObject go, float dx, float dy, float dz)
|
||||
{
|
||||
//精度捕捉
|
||||
Vector3 delta = new Vector3(dx, dy, dz);
|
||||
Vector3 newPos = Vector3.zero;
|
||||
ISnap snap = SnapFactory.Instance.Get(ESnapType.Scale);
|
||||
if (snap.Snap(mTotal + delta, ref newPos))
|
||||
{
|
||||
dx = newPos.x - mTotal.x;
|
||||
dy = newPos.y - mTotal.y;
|
||||
dz = newPos.z - mTotal.z;
|
||||
}
|
||||
mTotal += new Vector3(dx, dy, dz);
|
||||
///////
|
||||
|
||||
base.OnDragDelta(go, dx, dy, dz);
|
||||
SetLengthOfAxis(go, dx, dy, dz, true);
|
||||
//transform.Translate(dx, dy, dz);
|
||||
if (OnScale != null)
|
||||
{
|
||||
OnScale(dx, dy, dz);
|
||||
}
|
||||
}
|
||||
|
||||
public void Scale(float dx,float dy,float dz)
|
||||
{
|
||||
if (OnScale != null)
|
||||
{
|
||||
OnScale(dx, dy, dz);
|
||||
}
|
||||
|
||||
if (OnScaleEnd != null)
|
||||
{
|
||||
OnScaleEnd();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnDragEnd(GameObject go)
|
||||
{
|
||||
base.OnDragEnd(go);
|
||||
SetLengthOfAxis(go, originOffset, originOffset, originOffset, false);
|
||||
if (OnScaleEnd != null)
|
||||
{
|
||||
OnScaleEnd();
|
||||
}
|
||||
|
||||
mTotal = Vector3.zero;
|
||||
}
|
||||
|
||||
protected override float ComputeScaleFactor(float d)
|
||||
{
|
||||
float magic = (float)Math.Log10(d + 10) * 1.4f;
|
||||
return magic;
|
||||
}
|
||||
|
||||
private void SetLengthOfAxis(GameObject go, float dx, float dy, float dz, bool delta)
|
||||
{
|
||||
EGizmosAxisType type = _axisMap[go];
|
||||
if (type == EGizmosAxisType.X)
|
||||
{
|
||||
SetLengthOfAxis(go.transform.parent, dx, delta);
|
||||
}
|
||||
else if (type == EGizmosAxisType.Y)
|
||||
{
|
||||
SetLengthOfAxis(go.transform.parent, dy, delta);
|
||||
}
|
||||
else if (type == EGizmosAxisType.Z)
|
||||
{
|
||||
SetLengthOfAxis(go.transform.parent, dz, delta);
|
||||
}
|
||||
else if (type == EGizmosAxisType.CENTER)
|
||||
{
|
||||
SetLengthOfAxis(_X, dx, delta);
|
||||
SetLengthOfAxis(_Y, dx, delta);
|
||||
SetLengthOfAxis(_Z, dx, delta);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetLengthOfAxis(Transform axisRoot, float scale,bool delta)
|
||||
{
|
||||
Transform axis = axisRoot.Find("Cylinder");
|
||||
if (axis != null)
|
||||
{
|
||||
Vector3 localScale = axis.localScale;
|
||||
Transform cube = axisRoot.Find("Cube");
|
||||
Vector3 pos = cube.localPosition;
|
||||
if (delta)
|
||||
{
|
||||
pos.z += scale;
|
||||
}
|
||||
else
|
||||
{
|
||||
pos.z = scale;
|
||||
}
|
||||
|
||||
localScale.z = pos.z / originOffset;
|
||||
axis.localScale = localScale;
|
||||
cube.localPosition = pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user