mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
Initial commit
This commit is contained in:
commit
3c7cc0c973
8391 changed files with 704313 additions and 0 deletions
|
@ -0,0 +1,77 @@
|
|||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Unity.Mathematics.Editor
|
||||
{
|
||||
[CustomPropertyDrawer(typeof(bool2)), CustomPropertyDrawer(typeof(bool3)), CustomPropertyDrawer(typeof(bool4))]
|
||||
[CustomPropertyDrawer(typeof(double2)), CustomPropertyDrawer(typeof(double3)), CustomPropertyDrawer(typeof(double4))]
|
||||
[CustomPropertyDrawer(typeof(float2)), CustomPropertyDrawer(typeof(float3)), CustomPropertyDrawer(typeof(float4))]
|
||||
[CustomPropertyDrawer(typeof(int2)), CustomPropertyDrawer(typeof(int3)), CustomPropertyDrawer(typeof(int4))]
|
||||
[CustomPropertyDrawer(typeof(uint2)), CustomPropertyDrawer(typeof(uint3)), CustomPropertyDrawer(typeof(uint4))]
|
||||
[CustomPropertyDrawer(typeof(DoNotNormalizeAttribute))]
|
||||
class PrimitiveVectorDrawer : PropertyDrawer
|
||||
{
|
||||
static class Content
|
||||
{
|
||||
public static readonly string doNotNormalizeCompatibility = L10n.Tr(
|
||||
$"{typeof(DoNotNormalizeAttribute).Name} only works with {typeof(quaternion)} and primitive vector types."
|
||||
);
|
||||
public static readonly string doNotNormalizeTooltip =
|
||||
L10n.Tr("This value is not normalized, which may produce unexpected results.");
|
||||
|
||||
public static readonly GUIContent[] labels2 = { new GUIContent("X"), new GUIContent("Y") };
|
||||
public static readonly GUIContent[] labels3 = { new GUIContent("X"), new GUIContent("Y"), new GUIContent("Z") };
|
||||
public static readonly GUIContent[] labels4 = { new GUIContent("X"), new GUIContent("Y"), new GUIContent("Z"), new GUIContent("W") };
|
||||
}
|
||||
|
||||
public override bool CanCacheInspectorGUI(SerializedProperty property)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||
{
|
||||
var height = EditorGUIUtility.singleLineHeight;
|
||||
if (!EditorGUIUtility.wideMode)
|
||||
height += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
|
||||
return height;
|
||||
}
|
||||
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||
{
|
||||
var subLabels = Content.labels4;
|
||||
var startIter = "x";
|
||||
switch (property.type[property.type.Length - 1])
|
||||
{
|
||||
case '2':
|
||||
subLabels = Content.labels2;
|
||||
break;
|
||||
case '3':
|
||||
subLabels = Content.labels3;
|
||||
break;
|
||||
case '4':
|
||||
subLabels = Content.labels4;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if (property.type == nameof(quaternion))
|
||||
startIter = "value.x";
|
||||
else if (attribute is DoNotNormalizeAttribute)
|
||||
{
|
||||
EditorGUI.HelpBox(EditorGUI.PrefixLabel(position, label), Content.doNotNormalizeCompatibility, MessageType.None);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (attribute is DoNotNormalizeAttribute && string.IsNullOrEmpty(label.tooltip))
|
||||
label.tooltip = Content.doNotNormalizeTooltip;
|
||||
|
||||
EditorGUI.BeginProperty(position, label, property);
|
||||
EditorGUI.MultiPropertyField(position, subLabels, property.FindPropertyRelative(startIter), label);
|
||||
EditorGUI.EndProperty();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue