98 lines
3.3 KiB
C#
98 lines
3.3 KiB
C#
|
using System;
|
|||
|
using ABI.CCK.Components;
|
|||
|
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
#pragma warning disable
|
|||
|
|
|||
|
[CustomEditor(typeof(CVRHapticAreaChest))]
|
|||
|
public class CVRHapticAreaChestEditor : UnityEditor.Editor
|
|||
|
{
|
|||
|
private CVRHapticAreaChest _hapticsChest;
|
|||
|
|
|||
|
private void OnEnable()
|
|||
|
{
|
|||
|
_hapticsChest = (CVRHapticAreaChest) target;
|
|||
|
}
|
|||
|
|
|||
|
private void OnSceneGUI()
|
|||
|
{
|
|||
|
if (_hapticsChest.gameObject.activeInHierarchy)
|
|||
|
{
|
|||
|
Event e = Event.current;
|
|||
|
int controlId = GUIUtility.GetControlID(GetHashCode(), FocusType.Passive);
|
|||
|
|
|||
|
var wasMouseDown = false;
|
|||
|
var preventControls = false;
|
|||
|
|
|||
|
if (Event.current.type == EventType.MouseUp && Event.current.button == 0)
|
|||
|
{
|
|||
|
preventControls = true;
|
|||
|
}
|
|||
|
|
|||
|
if(Event.current.type == EventType.MouseDown && Event.current.button == 0) {
|
|||
|
preventControls = true;
|
|||
|
}
|
|||
|
|
|||
|
if (Event.current.button == 0)
|
|||
|
{
|
|||
|
preventControls = true;
|
|||
|
}
|
|||
|
|
|||
|
var hapticsTransform = _hapticsChest.transform;
|
|||
|
var scale = hapticsTransform.localScale;
|
|||
|
var inverseScale = new Vector3(1 / scale.x, 1 / scale.y, 1 / scale.z);
|
|||
|
|
|||
|
var i = 0;
|
|||
|
var selected = false;
|
|||
|
foreach (var point in _hapticsChest.HapticPoints40)
|
|||
|
{
|
|||
|
var localPoint = point;
|
|||
|
localPoint.Scale(_hapticsChest.chestAreaSize * 0.5f);
|
|||
|
|
|||
|
if (i == _hapticsChest.selectedPoint)
|
|||
|
{
|
|||
|
Handles.color = Color.cyan;
|
|||
|
|
|||
|
Vector3 pos = hapticsTransform.TransformPoint(Vector3.Scale(_hapticsChest.HapticPoints40[i], inverseScale));
|
|||
|
|
|||
|
EditorGUI.BeginChangeCheck();
|
|||
|
Vector3 pointPosition = Handles.PositionHandle(pos, _hapticsChest.transform.rotation);
|
|||
|
if (EditorGUI.EndChangeCheck())
|
|||
|
{
|
|||
|
Undo.RecordObject(_hapticsChest, "CVR Haptic Chest Point Change");
|
|||
|
var newLocalPoint = _hapticsChest.transform.InverseTransformPoint(pointPosition);
|
|||
|
newLocalPoint.Scale(_hapticsChest.transform.lossyScale);
|
|||
|
Debug.Log(newLocalPoint);
|
|||
|
//_hapticsChest.HapticPoints40[i].z = newLocalPoint.z;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Handles.color = Color.yellow;
|
|||
|
}
|
|||
|
|
|||
|
/*if (Handles.Button(_hapticsChest.transform.TransformPoint(localPoint), _hapticsChest.transform.rotation, 0.01f, 0.01f,
|
|||
|
Handles.CubeHandleCap))
|
|||
|
{
|
|||
|
if (_hapticsChest.selectedPoint == i)
|
|||
|
{
|
|||
|
_hapticsChest.selectedPoint = -1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_hapticsChest.selectedPoint = i;
|
|||
|
}
|
|||
|
selected = true;
|
|||
|
}*/
|
|||
|
|
|||
|
i++;
|
|||
|
}
|
|||
|
|
|||
|
if (e.type == EventType.Layout && preventControls && selected)
|
|||
|
{
|
|||
|
HandleUtility.AddDefaultControl(controlId);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|