public override AnimatorTimeline.JSONAction getJSONAction(int frameRate) { if (targetsAreEqual()) { return(null); } if ((endFrame == -1) || !component || ((fieldInfo == null) && (propertyInfo == null) && (methodInfo == null))) { return(null); } AnimatorTimeline.JSONAction a = new AnimatorTimeline.JSONAction(); a.method = "propertyto"; a.go = component.gameObject.name; a.delay = getWaitTime(frameRate, 0f); a.time = getTime(frameRate); List <string> strings = new List <string>(); strings.Add(component.GetType().Name); if (fieldInfo != null || propertyInfo != null) { if (valueType == (int)AMPropertyTrack.ValueType.Integer) { strings.Add("integer"); a.ints = new int[] { Convert.ToInt32(start_val), Convert.ToInt32(end_val) }; } else if (valueType == (int)AMPropertyTrack.ValueType.Long) { strings.Add("long"); a.longs = new long[] { Convert.ToInt64(start_val), Convert.ToInt64(end_val) }; } else if (valueType == (int)AMPropertyTrack.ValueType.Float) { strings.Add("float"); a.floats = new float[] { Convert.ToSingle(start_val), Convert.ToSingle(end_val) }; } else if (valueType == (int)AMPropertyTrack.ValueType.Double) { strings.Add("double"); a.doubles = new double[] { start_val, end_val }; } else if (valueType == (int)AMPropertyTrack.ValueType.Vector2) { strings.Add("vector2"); AnimatorTimeline.JSONVector2 v1 = new AnimatorTimeline.JSONVector2(); v1.setValue(start_vect2); AnimatorTimeline.JSONVector2 v2 = new AnimatorTimeline.JSONVector2(); v2.setValue(end_vect2); a.vect2s = new AnimatorTimeline.JSONVector2[] { v1, v2 }; } else if (valueType == (int)AMPropertyTrack.ValueType.Vector3) { strings.Add("vector3"); a.setPath(new Vector3[] { start_vect3, end_vect3 }); } else if (valueType == (int)AMPropertyTrack.ValueType.Color) { strings.Add("color"); AnimatorTimeline.JSONColor c1 = new AnimatorTimeline.JSONColor(); c1.setValue(start_color); AnimatorTimeline.JSONColor c2 = new AnimatorTimeline.JSONColor(); c2.setValue(end_color); a.colors = new AnimatorTimeline.JSONColor[] { c1, c2 }; } else if (valueType == (int)AMPropertyTrack.ValueType.Rect) { strings.Add("rect"); AnimatorTimeline.JSONRect r1 = new AnimatorTimeline.JSONRect(); r1.setValue(start_rect); AnimatorTimeline.JSONRect r2 = new AnimatorTimeline.JSONRect(); r2.setValue(end_rect); a.rects = new AnimatorTimeline.JSONRect[] { r1, r2 }; } if (fieldInfo != null) { strings.Add("fieldinfo"); strings.Add(fieldInfo.Name); } else { strings.Add("propertyinfo"); strings.Add(propertyInfo.Name); } } else if (methodInfo != null) { if (valueType == (int)AMPropertyTrack.ValueType.MorphChannels) { strings.Add("morph"); a.floats = start_morph.ToArray(); a.floatsExtra = end_morph.ToArray(); } } setupJSONActionEase(a); a.strings = strings.ToArray(); return(a); }
public override AnimatorTimeline.JSONAction getJSONAction(int frameRate) { if(targetsAreEqual()) return null; if((endFrame == -1) || !component || ((fieldInfo == null) && (propertyInfo == null) && (methodInfo == null))) return null; AnimatorTimeline.JSONAction a = new AnimatorTimeline.JSONAction(); a.method = "propertyto"; a.go = component.gameObject.name; a.delay = getWaitTime(frameRate,0f); a.time = getTime(frameRate); List<string> strings = new List<string>(); strings.Add(component.GetType().Name); if(fieldInfo != null || propertyInfo != null) { if(valueType == (int)AMPropertyTrack.ValueType.Integer) { strings.Add("integer"); a.ints = new int[]{Convert.ToInt32(start_val),Convert.ToInt32(end_val)}; } else if(valueType == (int)AMPropertyTrack.ValueType.Long) { strings.Add("long"); a.longs = new long[]{Convert.ToInt64(start_val),Convert.ToInt64(end_val)}; } else if(valueType == (int)AMPropertyTrack.ValueType.Float) { strings.Add("float"); a.floats = new float[]{Convert.ToSingle(start_val),Convert.ToSingle(end_val)}; } else if(valueType == (int)AMPropertyTrack.ValueType.Double) { strings.Add("double"); a.doubles = new double[]{start_val,end_val}; } else if(valueType == (int)AMPropertyTrack.ValueType.Vector2) { strings.Add("vector2"); AnimatorTimeline.JSONVector2 v1 = new AnimatorTimeline.JSONVector2(); v1.setValue(start_vect2); AnimatorTimeline.JSONVector2 v2 = new AnimatorTimeline.JSONVector2(); v2.setValue(end_vect2); a.vect2s = new AnimatorTimeline.JSONVector2[]{v1,v2}; } else if(valueType == (int)AMPropertyTrack.ValueType.Vector3) { strings.Add("vector3"); a.setPath(new Vector3[]{start_vect3,end_vect3}); } else if(valueType == (int)AMPropertyTrack.ValueType.Color) { strings.Add("color"); AnimatorTimeline.JSONColor c1 = new AnimatorTimeline.JSONColor(); c1.setValue(start_color); AnimatorTimeline.JSONColor c2 = new AnimatorTimeline.JSONColor(); c2.setValue(end_color); a.colors = new AnimatorTimeline.JSONColor[]{c1,c2}; } else if(valueType == (int)AMPropertyTrack.ValueType.Rect) { strings.Add("rect"); AnimatorTimeline.JSONRect r1 = new AnimatorTimeline.JSONRect(); r1.setValue(start_rect); AnimatorTimeline.JSONRect r2 = new AnimatorTimeline.JSONRect(); r2.setValue(end_rect); a.rects = new AnimatorTimeline.JSONRect[]{r1,r2}; } if(fieldInfo != null) { strings.Add("fieldinfo"); strings.Add(fieldInfo.Name); } else { strings.Add("propertyinfo"); strings.Add(propertyInfo.Name); } } else if(methodInfo != null) { if(valueType == (int)AMPropertyTrack.ValueType.MorphChannels) { strings.Add("morph"); a.floats = start_morph.ToArray(); a.floatsExtra = end_morph.ToArray(); } } setupJSONActionEase(a); a.strings = strings.ToArray(); return a; }
public AnimatorTimeline.JSONEventParameter toJSON() { AnimatorTimeline.JSONEventParameter e = new AnimatorTimeline.JSONEventParameter(); e.valueType = valueType; if(valueType == (int) ValueType.Boolean) e.val_bool = val_bool; if(valueType == (int) ValueType.String) e.val_string = (val_string/* as object*/); if(valueType == (int) ValueType.Char) { if(val_string == null || val_string.Length<=0) e.val_string = "\0"; e.val_string = ""+val_string[0]; } if(valueType == (int) ValueType.Integer || valueType == (int) ValueType.Long) e.val_int = (val_int/* as object*/); if(valueType == (int) ValueType.Float || valueType == (int) ValueType.Double) e.val_float = (val_float/* as object*/); if(valueType == (int) ValueType.Vector2) { AnimatorTimeline.JSONVector2 v2 = new AnimatorTimeline.JSONVector2(); v2.setValue(val_vect2); e.val_vect2 = v2; } if(valueType == (int) ValueType.Vector3) { AnimatorTimeline.JSONVector3 v3 = new AnimatorTimeline.JSONVector3(); v3.setValue(val_vect3); e.val_vect3 = v3; } if(valueType == (int) ValueType.Vector4) { AnimatorTimeline.JSONVector4 v4 = new AnimatorTimeline.JSONVector4(); v4.setValue(val_vect4); e.val_vect4 = v4; } if(valueType == (int) ValueType.Color) { AnimatorTimeline.JSONColor c = new AnimatorTimeline.JSONColor(); c.setValue(val_color); e.val_color = c; } if(valueType == (int) ValueType.Rect) { AnimatorTimeline.JSONRect r = new AnimatorTimeline.JSONRect(); r.setValue(val_rect); e.val_rect = r; } if(valueType == (int) ValueType.Object) { if(val_obj.GetType() != typeof(GameObject)) { // component e.val_obj_extra = val_obj.name; e.val_obj = val_obj.GetType().Name; } else { // gameobject e.val_obj_extra = null; e.val_obj = val_obj.name; } } if(valueType == (int) ValueType.Array && lsArray.Count > 0) { AnimatorTimeline.JSONEventParameter[] arr = new AnimatorTimeline.JSONEventParameter[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ //arrObj[i] = lsArray[i].val_bool; arr[i] = lsArray[i].toJSON(); } e.array = arr; /* if(lsArray[0].valueType == (int) ValueType.Boolean) { //bool[] arrObj = new bool[lsArray.Count]; // AnimatorTimeline.JSONEventParameter[] arr = new AnimatorTimeline.JSONEventParameter[lsArray.Count]; // for(int i=0;i<lsArray.Count;i++){ // //arrObj[i] = lsArray[i].val_bool; // arr[i] = lsArray[i].toJSON(); // } //return arrObj; } if(lsArray[0].valueType == (int) ValueType.String) { string[] arrObj = new string[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_string; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Char) { char[] arrObj = new char[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_string[0]; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Integer || lsArray[0].valueType == (int) ValueType.Long) { int[] arrObj = new int[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_int; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Float || lsArray[0].valueType == (int) ValueType.Double) { float[] arrObj = new float[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_float; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Vector2) { Vector2[] arrObj = new Vector2[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_vect2; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Vector3) { Vector3[] arrObj = new Vector3[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_vect3; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Vector4) { Vector4[] arrObj = new Vector4[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_vect4; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Color) { Color[] arrObj = new Color[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_color; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Rect) { Rect[] arrObj = new Rect[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_rect; } return arrObj; } if(lsArray[0].valueType == (int) ValueType.Object) { UnityEngine.Object[] arrObj = new UnityEngine.Object[lsArray.Count]; for(int i=0;i<lsArray.Count;i++){ arrObj[i] = lsArray[i].val_obj; } return arrObj; }*/ } //Debug.LogError("Animator: Type not found for Event Parameter."); return e; }
public AnimatorTimeline.JSONEventParameter toJSON() { AnimatorTimeline.JSONEventParameter e = new AnimatorTimeline.JSONEventParameter(); e.valueType = valueType; if (valueType == (int)ValueType.Boolean) { e.val_bool = val_bool; } if (valueType == (int)ValueType.String) { e.val_string = (val_string /* as object*/); } if (valueType == (int)ValueType.Char) { if (val_string == null || val_string.Length <= 0) { e.val_string = "\0"; } e.val_string = "" + val_string[0]; } if (valueType == (int)ValueType.Integer || valueType == (int)ValueType.Long) { e.val_int = (val_int /* as object*/); } if (valueType == (int)ValueType.Float || valueType == (int)ValueType.Double) { e.val_float = (val_float /* as object*/); } if (valueType == (int)ValueType.Vector2) { AnimatorTimeline.JSONVector2 v2 = new AnimatorTimeline.JSONVector2(); v2.setValue(val_vect2); e.val_vect2 = v2; } if (valueType == (int)ValueType.Vector3) { AnimatorTimeline.JSONVector3 v3 = new AnimatorTimeline.JSONVector3(); v3.setValue(val_vect3); e.val_vect3 = v3; } if (valueType == (int)ValueType.Vector4) { AnimatorTimeline.JSONVector4 v4 = new AnimatorTimeline.JSONVector4(); v4.setValue(val_vect4); e.val_vect4 = v4; } if (valueType == (int)ValueType.Color) { AnimatorTimeline.JSONColor c = new AnimatorTimeline.JSONColor(); c.setValue(val_color); e.val_color = c; } if (valueType == (int)ValueType.Rect) { AnimatorTimeline.JSONRect r = new AnimatorTimeline.JSONRect(); r.setValue(val_rect); e.val_rect = r; } if (valueType == (int)ValueType.Object) { if (val_obj.GetType() != typeof(GameObject)) { // component e.val_obj_extra = val_obj.name; e.val_obj = val_obj.GetType().Name; } else { // gameobject e.val_obj_extra = null; e.val_obj = val_obj.name; } } if (valueType == (int)ValueType.Array && lsArray.Count > 0) { AnimatorTimeline.JSONEventParameter[] arr = new AnimatorTimeline.JSONEventParameter[lsArray.Count]; for (int i = 0; i < lsArray.Count; i++) { //arrObj[i] = lsArray[i].val_bool; arr[i] = lsArray[i].toJSON(); } e.array = arr; /* * if(lsArray[0].valueType == (int) ValueType.Boolean) { * //bool[] arrObj = new bool[lsArray.Count]; * // AnimatorTimeline.JSONEventParameter[] arr = new AnimatorTimeline.JSONEventParameter[lsArray.Count]; * // for(int i=0;i<lsArray.Count;i++){ * // //arrObj[i] = lsArray[i].val_bool; * // arr[i] = lsArray[i].toJSON(); * // } * //return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.String) { * string[] arrObj = new string[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_string; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Char) { * char[] arrObj = new char[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_string[0]; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Integer || lsArray[0].valueType == (int) ValueType.Long) { * int[] arrObj = new int[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_int; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Float || lsArray[0].valueType == (int) ValueType.Double) { * float[] arrObj = new float[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_float; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Vector2) { * Vector2[] arrObj = new Vector2[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_vect2; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Vector3) { * Vector3[] arrObj = new Vector3[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_vect3; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Vector4) { * Vector4[] arrObj = new Vector4[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_vect4; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Color) { * Color[] arrObj = new Color[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_color; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Rect) { * Rect[] arrObj = new Rect[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_rect; * } * return arrObj; * } * if(lsArray[0].valueType == (int) ValueType.Object) { * UnityEngine.Object[] arrObj = new UnityEngine.Object[lsArray.Count]; * for(int i=0;i<lsArray.Count;i++){ * arrObj[i] = lsArray[i].val_obj; * } * return arrObj; * }*/ } //Debug.LogError("Animator: Type not found for Event Parameter."); return(e); }
public override AnimatorTimeline.JSONInit getJSONInit() { if (!obj || keys.Count <= 0 || cache.Count <= 0) { return(null); } AnimatorTimeline.JSONInit init = new AnimatorTimeline.JSONInit(); init.go = obj.gameObject.name; List <string> strings = new List <string>(); strings.Add(component.GetType().Name); if (fieldInfo != null) { init.typeExtra = "fieldinfo"; strings.Add(fieldInfo.Name); } else if (propertyInfo != null) { init.typeExtra = "propertyinfo"; strings.Add(propertyInfo.Name); } else if (methodInfo != null) { init.typeExtra = "methodinfo"; strings.Add(methodInfo.Name); // parameter types foreach (string s in methodParameterTypes) { strings.Add(s); } } if (valueType == (int)ValueType.MorphChannels) { init.type = "propertymorph"; init.floats = (cache[0] as AMPropertyAction).start_morph.ToArray(); } else if (valueType == (int)ValueType.Integer) { init.type = "propertyint"; init._int = Convert.ToInt32((cache[0] as AMPropertyAction).start_val); } else if (valueType == (int)ValueType.Long) { init.type = "propertylong"; init._long = Convert.ToInt64((cache[0] as AMPropertyAction).start_val); } else if (valueType == (int)ValueType.Float) { init.type = "propertyfloat"; init.floats = new float[] { Convert.ToSingle((cache[0] as AMPropertyAction).start_val) }; } else if (valueType == (int)ValueType.Double) { init.type = "propertydouble"; init._double = (cache[0] as AMPropertyAction).start_val; } else if (valueType == (int)ValueType.Vector2) { init.type = "propertyvect2"; AnimatorTimeline.JSONVector2 v2 = new AnimatorTimeline.JSONVector2(); v2.setValue((cache[0] as AMPropertyAction).start_vect2); init._vect2 = v2; } else if (valueType == (int)ValueType.Vector3) { init.type = "propertyvect3"; AnimatorTimeline.JSONVector3 v3 = new AnimatorTimeline.JSONVector3(); v3.setValue((cache[0] as AMPropertyAction).start_vect3); init.position = v3; } else if (valueType == (int)ValueType.Color) { init.type = "propertycolor"; AnimatorTimeline.JSONColor c = new AnimatorTimeline.JSONColor(); c.setValue((cache[0] as AMPropertyAction).start_color); init._color = c; } else if (valueType == (int)ValueType.Rect) { init.type = "propertyrect"; AnimatorTimeline.JSONRect r = new AnimatorTimeline.JSONRect(); r.setValue((cache[0] as AMPropertyAction).start_rect); init._rect = r; } else { Debug.LogWarning("Animator: Error exporting JSON, unknown Property ValueType " + valueType); return(null); } init.strings = strings.ToArray(); return(init); }
public virtual AnimatorTimeline.JSONEventParameter toJSON() { AnimatorTimeline.JSONEventParameter e = new AnimatorTimeline.JSONEventParameter(); e.valueType = valueType; if(valueType == (int)ValueType.Boolean) e.val_bool = val_bool; if(valueType == (int)ValueType.String) e.val_string = (val_string/* as object*/); if(valueType == (int)ValueType.Char) { if(val_string == null || val_string.Length <= 0) e.val_string = "\0"; e.val_string = "" + val_string[0]; } if(valueType == (int)ValueType.Integer || valueType == (int)ValueType.Long) e.val_int = (val_int/* as object*/); if(valueType == (int)ValueType.Float || valueType == (int)ValueType.Double) e.val_float = (val_float/* as object*/); if(valueType == (int)ValueType.Vector2) { AnimatorTimeline.JSONVector2 v2 = new AnimatorTimeline.JSONVector2(); v2.setValue(val_vect2); e.val_vect2 = v2; } if(valueType == (int)ValueType.Vector3) { AnimatorTimeline.JSONVector3 v3 = new AnimatorTimeline.JSONVector3(); v3.setValue(val_vect3); e.val_vect3 = v3; } if(valueType == (int)ValueType.Vector4) { AnimatorTimeline.JSONVector4 v4 = new AnimatorTimeline.JSONVector4(); v4.setValue(val_vect4); e.val_vect4 = v4; } if(valueType == (int)ValueType.Color) { AnimatorTimeline.JSONColor c = new AnimatorTimeline.JSONColor(); c.setValue(val_color); e.val_color = c; } if(valueType == (int)ValueType.Rect) { AnimatorTimeline.JSONRect r = new AnimatorTimeline.JSONRect(); r.setValue(val_rect); e.val_rect = r; } if(valueType == (int)ValueType.Object) { if(val_obj.GetType() != typeof(GameObject)) { // component e.val_obj_extra = val_obj.name; e.val_obj = val_obj.GetType().Name; } else { // gameobject e.val_obj_extra = null; e.val_obj = val_obj.name; } } //Debug.LogError("Animator: Type not found for Event Parameter."); return e; }
public override AnimatorTimeline.JSONInit getJSONInit() { if(!obj || keys.Count <= 0 || cache.Count <= 0) return null; AnimatorTimeline.JSONInit init = new AnimatorTimeline.JSONInit(); init.go = obj.gameObject.name; List<string> strings = new List<string>(); strings.Add(component.GetType().Name); if(fieldInfo != null) { init.typeExtra = "fieldinfo"; strings.Add(fieldInfo.Name); } else if(propertyInfo != null) { init.typeExtra = "propertyinfo"; strings.Add(propertyInfo.Name); } else if(methodInfo != null) { init.typeExtra = "methodinfo"; strings.Add(methodInfo.Name); // parameter types foreach(string s in methodParameterTypes) { strings.Add(s); } } if(valueType == (int)ValueType.MorphChannels) { init.type = "propertymorph"; init.floats = (cache[0] as AMPropertyAction).start_morph.ToArray(); } else if(valueType == (int)ValueType.Integer) { init.type = "propertyint"; init._int = Convert.ToInt32((cache[0] as AMPropertyAction).start_val); } else if(valueType == (int)ValueType.Long) { init.type = "propertylong"; init._long = Convert.ToInt64((cache[0] as AMPropertyAction).start_val); } else if(valueType == (int)ValueType.Float) { init.type = "propertyfloat"; init.floats = new float[]{Convert.ToSingle((cache[0] as AMPropertyAction).start_val)}; } else if(valueType == (int)ValueType.Double) { init.type = "propertydouble"; init._double = (cache[0] as AMPropertyAction).start_val; } else if(valueType == (int)ValueType.Vector2) { init.type = "propertyvect2"; AnimatorTimeline.JSONVector2 v2 = new AnimatorTimeline.JSONVector2(); v2.setValue((cache[0] as AMPropertyAction).start_vect2); init._vect2 = v2; } else if(valueType == (int)ValueType.Vector3) { init.type = "propertyvect3"; AnimatorTimeline.JSONVector3 v3 = new AnimatorTimeline.JSONVector3(); v3.setValue((cache[0] as AMPropertyAction).start_vect3); init.position = v3; } else if(valueType == (int)ValueType.Color) { init.type = "propertycolor"; AnimatorTimeline.JSONColor c = new AnimatorTimeline.JSONColor(); c.setValue((cache[0] as AMPropertyAction).start_color); init._color = c; } else if(valueType == (int)ValueType.Rect) { init.type = "propertyrect"; AnimatorTimeline.JSONRect r = new AnimatorTimeline.JSONRect(); r.setValue((cache[0] as AMPropertyAction).start_rect); init._rect = r; } else { Debug.LogWarning("Animator: Error exporting JSON, unknown Property ValueType "+valueType); return null; } init.strings = strings.ToArray(); return init; }