Hello,
I have a Custom Editor and as soon as I select the object in the inspector with this custom editor the performance goes slower. Am I doing something wrong or that I could improve on some way? Is a custom editor that much slower?
Thanks!
[CustomEditor(typeof(CameraManager))]
public class CameraManagerEditor : Editor
{
// Basic properties
private SerializedProperty _basicOffsetDistance;
private SerializedProperty _basicOffsetHeight;
private SerializedProperty _basicLookAtOffsetDistance;
private SerializedProperty _basicLookAtOffsetHeight;
// Spring properties
private SerializedProperty _springEnabled;
private SerializedProperty _springHorizontalOffset;
private SerializedProperty _springVerticalOffset;
private SerializedProperty _springSpeed;
private SerializedProperty _springBreakFactor;
private SerializedProperty _springInertialFactor;
private SerializedProperty _springFOVOffset;
private SerializedProperty _springMaximumTime;
// Slope properties
private SerializedProperty _slopeEnabled;
private SerializedProperty _slopeVerticalOffset;
private SerializedProperty _slopeVerticalLookAtOffset;
private SerializedProperty _slopePositiveOffsetFactor;
private SerializedProperty _slopeNegativeOffsetFactor;
private SerializedProperty _slopeLookAtFactor;
private SerializedProperty _slopeSpeedUp;
private SerializedProperty _slopeSpeedDown;
private SerializedProperty _slopeSpeedBack;
private SerializedProperty _slopeMaxAngle;
// Sway properties
private SerializedProperty _swayEnabled;
private SerializedProperty _swayMaxAngle;
private SerializedProperty _swaySpeed;
private SerializedProperty _swayTurnMaxAngle;
private SerializedProperty _swayTurnSpeed;
private SerializedProperty _swayDriftMaxAngle;
private SerializedProperty _swayDriftSpeed;
// Drift properties
private SerializedProperty _driftEnabled;
private SerializedProperty _driftRadius;
private SerializedProperty _driftMaxAngle;
private SerializedProperty _driftForwardFactor;
private SerializedProperty _driftLateralFactor;
private SerializedProperty _driftLookAtFactor;
private SerializedProperty _driftAcceleration;
private SerializedProperty _driftSpeedBack;
// Bounce properties
private SerializedProperty _bounceEnabled;
private SerializedProperty _bounceAmplitude;
private SerializedProperty _bounceMaxTimeOnAir;
private SerializedProperty _bounceMaxTimeBouncing;
private SerializedProperty _bounceFrequency;
// Turbo properties
private SerializedProperty _turboEnabled;
private SerializedProperty _turboAmplitude;
public void OnEnable()
{
_basicOffsetDistance = serializedObject.FindProperty("basicOffsetDistance");
_basicOffsetHeight = serializedObject.FindProperty("basicOffsetHeight");
_basicLookAtOffsetDistance = serializedObject.FindProperty("basicLookAtOffsetDistance");
_basicLookAtOffsetHeight = serializedObject.FindProperty("basicLookAtOffsetHeight");
_springEnabled = serializedObject.FindProperty("springEnabled");
_springHorizontalOffset = serializedObject.FindProperty("springHorizontalOffset");
_springVerticalOffset = serializedObject.FindProperty("springVerticalOffset");
_springSpeed = serializedObject.FindProperty("springSpeed");
_springBreakFactor = serializedObject.FindProperty("springBreakFactor");
_springInertialFactor = serializedObject.FindProperty("springInertialFactor");
_springFOVOffset = serializedObject.FindProperty("springFOVOffset");
_springMaximumTime = serializedObject.FindProperty("springMaximumTime");
_slopeEnabled = serializedObject.FindProperty("slopeEnabled");
_slopeVerticalOffset = serializedObject.FindProperty("slopeVerticalOffset");
_slopeVerticalLookAtOffset = serializedObject.FindProperty("slopeVerticalLookAtOffset");
_slopePositiveOffsetFactor = serializedObject.FindProperty("slopePositiveOffsetFactor");
_slopeNegativeOffsetFactor = serializedObject.FindProperty("slopeNegativeOffsetFactor");
_slopeLookAtFactor = serializedObject.FindProperty("slopeLookAtFactor");
_slopeSpeedUp = serializedObject.FindProperty("slopeSpeedUp");
_slopeSpeedDown = serializedObject.FindProperty("slopeSpeedDown");
_slopeSpeedBack = serializedObject.FindProperty("slopeSpeedBack");
_slopeMaxAngle = serializedObject.FindProperty("slopeMaxAngle");
_swayEnabled = serializedObject.FindProperty("swayEnabled");
_swayMaxAngle = serializedObject.FindProperty("swayMaxAngle");
_swaySpeed = serializedObject.FindProperty("swaySpeed");
_swayTurnMaxAngle = serializedObject.FindProperty("swayTurnMaxAngle");
_swayTurnSpeed = serializedObject.FindProperty("swayTurnSpeed");
_swayDriftMaxAngle = serializedObject.FindProperty("swayDriftMaxAngle");
_swayDriftSpeed = serializedObject.FindProperty("swayDriftSpeed");
_driftEnabled = serializedObject.FindProperty("driftEnabled");
_driftRadius = serializedObject.FindProperty("driftRadius");
_driftMaxAngle = serializedObject.FindProperty("driftMaxAngle");
_driftForwardFactor = serializedObject.FindProperty("driftForwardFactor");
_driftLateralFactor = serializedObject.FindProperty("driftLateralFactor");
_driftLookAtFactor = serializedObject.FindProperty("driftLookAtFactor");
_driftAcceleration = serializedObject.FindProperty("driftAcceleration");
_driftSpeedBack = serializedObject.FindProperty("driftSpeedBack");
_bounceEnabled = serializedObject.FindProperty("bounceEnabled");
_bounceAmplitude = serializedObject.FindProperty("bounceAmplitude");
_bounceFrequency = serializedObject.FindProperty("bounceFrequency");
_bounceMaxTimeBouncing = serializedObject.FindProperty("bounceMaxTimeBouncing");
_bounceMaxTimeOnAir = serializedObject.FindProperty("bounceMaxTimeOnAir");
_turboEnabled = serializedObject.FindProperty("turboEnabled");
_turboAmplitude = serializedObject.FindProperty("turboAmplitude");
}
override public void OnInspectorGUI()
{
EditorGUI.BeginChangeCheck();
DrawDefaultInspector();
CameraManager cameraManager = (CameraManager)target;
base.serializedObject.Update();
if (GUILayout.Button("Reload setup"))
{
cameraManager.ReloadSetup();
}
EditorGUILayout.PropertyField(_basicOffsetDistance);
EditorGUILayout.PropertyField(_basicOffsetHeight);
EditorGUILayout.PropertyField(_basicLookAtOffsetDistance);
EditorGUILayout.PropertyField(_basicLookAtOffsetHeight);
EditorGUILayout.PropertyField(_springEnabled);
if (_springEnabled.boolValue)
{
EditorGUILayout.PropertyField(_springHorizontalOffset);
EditorGUILayout.PropertyField(_springVerticalOffset);
EditorGUILayout.PropertyField(_springSpeed);
EditorGUILayout.PropertyField(_springBreakFactor);
EditorGUILayout.PropertyField(_springInertialFactor);
EditorGUILayout.PropertyField(_springFOVOffset);
EditorGUILayout.PropertyField(_springMaximumTime);
}
EditorGUILayout.PropertyField(_slopeEnabled);
if (_slopeEnabled.boolValue)
{
EditorGUILayout.PropertyField(_slopeVerticalOffset);
EditorGUILayout.PropertyField(_slopeVerticalLookAtOffset);
EditorGUILayout.PropertyField(_slopePositiveOffsetFactor);
EditorGUILayout.PropertyField(_slopeNegativeOffsetFactor);
EditorGUILayout.PropertyField(_slopeLookAtFactor);
EditorGUILayout.PropertyField(_slopeSpeedUp);
EditorGUILayout.PropertyField(_slopeSpeedDown);
EditorGUILayout.PropertyField(_slopeSpeedBack);
EditorGUILayout.PropertyField(_slopeMaxAngle);
}
EditorGUILayout.PropertyField(_swayEnabled);
if (_swayEnabled.boolValue)
{
EditorGUILayout.PropertyField(_swayMaxAngle);
EditorGUILayout.PropertyField(_swaySpeed);
EditorGUILayout.PropertyField(_swayTurnMaxAngle);
EditorGUILayout.PropertyField(_swayTurnSpeed);
EditorGUILayout.PropertyField(_swayDriftMaxAngle);
EditorGUILayout.PropertyField(_swayDriftSpeed);
}
EditorGUILayout.PropertyField(_driftEnabled);
if (_driftEnabled.boolValue)
{
EditorGUILayout.PropertyField(_driftRadius);
EditorGUILayout.PropertyField(_driftMaxAngle);
EditorGUILayout.PropertyField(_driftForwardFactor);
EditorGUILayout.PropertyField(_driftLateralFactor);
EditorGUILayout.PropertyField(_driftLookAtFactor);
EditorGUILayout.PropertyField(_driftAcceleration);
EditorGUILayout.PropertyField(_driftSpeedBack);
}
EditorGUILayout.PropertyField(_bounceEnabled);
if (_bounceEnabled.boolValue)
{
EditorGUILayout.PropertyField(_bounceAmplitude);
EditorGUILayout.PropertyField(_bounceFrequency);
EditorGUILayout.PropertyField(_bounceMaxTimeBouncing);
EditorGUILayout.PropertyField(_bounceMaxTimeOnAir);
}
EditorGUILayout.PropertyField(_turboEnabled);
if (_turboEnabled.boolValue)
{
EditorGUILayout.PropertyField(_turboAmplitude);
}
EditorGUILayout.Space();
if (GUILayout.Button("Reload setup"))
{
cameraManager.ReloadSetup();
}
if (EditorGUI.EndChangeCheck())
{
base.serializedObject.ApplyModifiedProperties();
}
}
public void OnDisable()
{
}
}