68 lines
2.9 KiB
C#
68 lines
2.9 KiB
C#
|
using UnityEngine;
|
||
|
|
||
|
namespace UnityEditor.U2D.Animation
|
||
|
{
|
||
|
internal enum SkeletonAction
|
||
|
{
|
||
|
None = 0,
|
||
|
Select = 1 << 0,
|
||
|
RotateBone = 1 << 2,
|
||
|
MoveBone = 1 << 3,
|
||
|
FreeMoveBone = 1 << 4,
|
||
|
MoveEndPosition = 1 << 5,
|
||
|
MoveJoint = 1 << 6,
|
||
|
ChangeLength = 1 << 7,
|
||
|
CreateBone = 1 << 8,
|
||
|
SplitBone = 1 << 9,
|
||
|
Remove = 1 << 10,
|
||
|
}
|
||
|
|
||
|
internal enum SkeletonMode
|
||
|
{
|
||
|
Disabled = SkeletonAction.None,
|
||
|
Selection = SkeletonAction.Select,
|
||
|
EditPose = Selection | SkeletonAction.RotateBone | SkeletonAction.MoveBone,
|
||
|
EditJoints = Selection | SkeletonAction.FreeMoveBone | SkeletonAction.MoveEndPosition | SkeletonAction.MoveJoint | SkeletonAction.Remove,
|
||
|
CreateBone = Selection | SkeletonAction.MoveJoint | SkeletonAction.Remove | SkeletonAction.CreateBone,
|
||
|
SplitBone = Selection | SkeletonAction.MoveEndPosition | SkeletonAction.MoveJoint | SkeletonAction.Remove | SkeletonAction.SplitBone,
|
||
|
}
|
||
|
|
||
|
internal interface ISkeletonView
|
||
|
{
|
||
|
int InvalidID { get; set; }
|
||
|
SkeletonMode mode { get; set; }
|
||
|
int defaultControlID { get; set; }
|
||
|
int hoveredBoneID { get; }
|
||
|
int hoveredJointID { get; }
|
||
|
int hoveredBodyID { get; }
|
||
|
int hoveredTailID { get; }
|
||
|
int hotBoneID { get; }
|
||
|
void BeginLayout();
|
||
|
void EndLayout();
|
||
|
bool CanLayout();
|
||
|
Vector3 GetMouseWorldPosition(Vector3 planeNormal, Vector3 planePosition);
|
||
|
void LayoutBone(int id, Vector3 position, Vector3 endPosition, Vector3 forward, Vector3 up, Vector3 right, bool isChainEnd);
|
||
|
bool DoSelectBone(out int id, out bool additive);
|
||
|
bool DoRotateBone(Vector3 pivot, Vector3 normal, out float deltaAngle);
|
||
|
bool DoMoveBone(out Vector3 deltaPosition);
|
||
|
bool DoFreeMoveBone(out Vector3 deltaPosition);
|
||
|
bool DoMoveJoint(out Vector3 deltaPosition);
|
||
|
bool DoMoveEndPosition(out Vector3 endPosition);
|
||
|
bool DoChangeLength(out Vector3 endPosition);
|
||
|
bool DoCreateBoneStart(out Vector3 position);
|
||
|
bool DoCreateBone(out Vector3 position);
|
||
|
bool DoSplitBone(out int id, out Vector3 position);
|
||
|
bool DoRemoveBone();
|
||
|
bool DoCancelMultistepAction(bool force);
|
||
|
bool IsActionActive(SkeletonAction action);
|
||
|
bool IsActionHot(SkeletonAction action);
|
||
|
bool IsActionTriggering(SkeletonAction action);
|
||
|
bool IsActionFinishing(SkeletonAction action);
|
||
|
bool IsRepainting();
|
||
|
void DrawBone(Vector3 position, Vector3 right, Vector3 forward, float length, Color color, bool isChained, bool isSelected, bool isJointHovered, bool isTailHovered, bool isHot);
|
||
|
void DrawBoneParentLink(Vector3 parentPosition, Vector3 position, Vector3 forward, Color color);
|
||
|
void DrawBoneOutline(Vector3 position, Vector3 right, Vector3 forward, float length, Color color, float outlineScale);
|
||
|
void DrawCursors(bool canBeActive);
|
||
|
}
|
||
|
}
|