49 lines
1.4 KiB
C#
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();
|
|
}
|
|
} |