private void OnSceneGUI() { if (targetComponents.hitboxes == null) { return; } int animationindex = 0; int keyframeIndex = 0; if (traceAnimMode == TraceAnimMode.Scene) { animationindex = targetComponents.GetStateNames().FindIndex(e => e == targetComponents.GetNowStateName()); keyframeIndex = targetComponents.GetNowKeyFrame(); } else { animationindex = targetComponents.inspectorTemp.animationindex; keyframeIndex = targetComponents.inspectorTemp.keyframeIndex; } var animname = targetComponents.GetStateNames()[animationindex]; try { var a = targetComponents.hitboxes[animname].keyframes[keyframeIndex].colliders; } catch { return; } foreach (var col in targetComponents.hitboxes[animname].keyframes[keyframeIndex].colliders) { #if UNITY_EDITOR var precolor = Handles.color; var so = new SerializedObject(col.colliderParam); Handles.color = new Color(0, 0, 0); var sign = targetComponents.GetDirectionSign(); var position = col.colliderParam.Position; position.Scale(new Vector3(sign, 1, 1)); var movedPosition = Handles.FreeMoveHandle(position + targetComponents.gameObject.transform.position, Quaternion.identity, 0.05f, Vector3.one, Handles.DotHandleCap); var newposition = movedPosition - targetComponents.gameObject.transform.position; newposition.Scale(new Vector3(sign, 1.0f, 1.0f)); col.colliderParam.Position = newposition; if (col.colliderParam is RectColliderParam) { var rect = col.colliderParam as RectColliderParam; var helper = new Vector3(rect.rect.size.x * sign, rect.rect.size.y, 0.0f); Handles.color = new Color(1, 1, 1); var helperpreposition = position + helper; helperpreposition.Scale(new Vector3(sign, 1.0f, 1.0f)); var movedhelper = Handles.FreeMoveHandle(helper + position + targetComponents.gameObject.transform.position, Quaternion.identity, 0.05f, Vector3.one, Handles.DotHandleCap); var newsize = movedhelper - (position + targetComponents.gameObject.transform.position); newsize.Scale(new Vector3(sign, 1.0f, 1.0f)); rect.rect.size = newsize; } else if (col.colliderParam is SphereColliderParam) { var sphere = col.colliderParam as SphereColliderParam; var helper = new Vector3(sphere.radius, 0.0f, 0.0f); Handles.color = new Color(1, 1, 1); var helperpreposition = position + helper; helperpreposition.Scale(new Vector3(sign, 1.0f, 1.0f)); var movedhelper = Handles.FreeMoveHandle(helper + position + targetComponents.gameObject.transform.position, Quaternion.identity, 0.05f, Vector3.one, Handles.DotHandleCap); sphere.radius = Mathf.Abs((movedhelper - (position + targetComponents.gameObject.transform.position)).x); } EditorUtility.SetDirty(targetComponents.hitboxes); Handles.color = precolor; Repaint(); #endif } }