Hi everybody!
I have a MonoBehavior with a public curve attribute:
public class Sample : MonoBehavior
{
public AnimationCurve curve;
}
With the associated editor class:
public class SampleEditor : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
serializedObject.Update();
if (GUILayout.Button("Do something"))
{
// Change anything in the curve, like, add, remove, move a keyframe
((Sample)target).RemoveKey(0);
}
}
}
This works perfectly but the problem is that the preview of the AnimationCurve is not refreshed.
If I change the inspector size by dragging the mouse, the curve representation is refreshed (although I've noticed that if I go back to exactly the same inspector size, the old curve preview came back).
So I suspected a cache problem, but I now have tried everything I knew without any success, like:
- serializedObject.SetIsDifferentCacheDirty();
- serializedObject.Update();
- serializedObject.ApplyModifiedProperties();
- EditorUtility.SetDirty(target);
- Repaint();
- Re create my own Property, etc...
And I can't see anything public in SerializedProperty or AnimationCurve to refresh the preview or tell to do it.
However, the curve editing window do it very well...
Any ideas are welcome! ^^'
↧