nightward/Assets/ThirdParty/JellySprites/Editor/UnityJellySpriteEditor.cs

49 lines
1.4 KiB
C#

using UnityEditor;
using UnityEngine;
[CanEditMultipleObjects]
[CustomEditor(typeof(UnityJellySprite))]
class UnityJellySpriteEditor : JellySpriteEditor
{
public SerializedProperty m_Sprite;
public Object m_InitialSprite;
protected override void OnEnable()
{
base.OnEnable();
m_Sprite = serializedObject.FindProperty("m_Sprite");
}
protected override void DisplayInspectorGUI()
{
EditorGUILayout.PropertyField(m_Sprite, new GUIContent("Sprite"));
base.DisplayInspectorGUI();
}
protected override void StoreInitialValues()
{
m_InitialSprite = m_Sprite.objectReferenceValue;
base.StoreInitialValues();
}
protected override void CheckForObjectChanges()
{
base.CheckForObjectChanges();
JellySprite targetObject = this.target as JellySprite;
if (m_InitialSprite != m_Sprite.objectReferenceValue)
{
Sprite sprite = m_Sprite.objectReferenceValue as Sprite;
Bounds bounds = sprite.bounds;
float pivotX = -bounds.center.x / bounds.extents.x;
float pivotY = -bounds.center.y / bounds.extents.y;
targetObject.m_CentralBodyOffset = targetObject.m_SoftBodyOffset = new Vector3(pivotX * bounds.extents.x * targetObject.m_SpriteScale.x, pivotY * bounds.extents.y * targetObject.m_SpriteScale.y, 0.0f);
targetObject.RefreshMesh();
}
}
void OnSceneGUI ()
{
UpdateHandles();
}
}