I am trying to use a custom class in an editor window to hold and modify some values from my selected object. Everything works fine except that i can’t make it serialize the values in that class. So when i press play i lose the changed values in my selected object.
All i have found about this is in C#. In JS i have read that the class needs to derivate from System.Object to be serialized but it doesn’t work either.
class vehicleEditorWindow extends EditorWindow {
class editorEngine extends System.Object{
@SerializeField
var engineTransform : Transform;
@SerializeField
var enginePower : float;
@SerializeField
var engineInertia : float;
function editorEngine (transf : Transform, power : float, intertia : float){
this.engineTransform = transf;
this.enginePower = power;
this.engineInertia = intertia;
}
}
@SerializeField
var engines : editorEngine[];
function OnGUI (){
for ( var e = 0 ; e < engines.Length; e++){
new GUILayout.Label ("Engine " + (e+1), EditorStyles.boldLabel);
var curEngine = engines[e];
curEngine.engineTransform =new EditorGUILayout.ObjectField ("Engine transform",curEngine.engineTransform,typeof(Transform),true) as Transform;
curEngine.enginePower = EditorGUILayout.FloatField ("Engine power", curEngine.enginePower);
}
}
function Update (){
for (var f = 0 ; f < selectedObject.engines.Length ; f++){
var curEngine = selectedObject.engines[f];
var curEditorEngine = engines[f];
curEngine.engineTransform = curEditorEngine.engineTransform;
curEngine.power = curEditorEngine.enginePower;
curEngine.inertia = curEditorEngine.engineInertia;
}
}
Anyway i might be completely mistaken on how to do this. I could modify directly the value of the selected object but i don’t want to serialize it there.