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); } } } }