Inheritance: UnityEngine.MonoBehaviour
Exemplo n.º 1
0
 private object GetComponentPropertyValue(FieldInfo field, BabylonScriptComponent component)
 {
     object result = null;
     object fvalue = field.GetValue(component);
     if (fvalue != null)
     {
         Type ftype = fvalue.GetType();
         if (typeof(System.Enum).IsAssignableFrom(ftype))
         {
             result = Convert.ToInt32((System.Enum)fvalue);
         }
         else if (typeof(Boolean).IsAssignableFrom(ftype) || typeof(Byte).IsAssignableFrom(ftype) || typeof(SByte).IsAssignableFrom(ftype) || typeof(Int16).IsAssignableFrom(ftype) || typeof(UInt16).IsAssignableFrom(ftype) || typeof(Int32).IsAssignableFrom(ftype) || typeof(UInt32).IsAssignableFrom(ftype) || typeof(Int64).IsAssignableFrom(ftype) || typeof(UInt64).IsAssignableFrom(ftype) || typeof(IntPtr).IsAssignableFrom(ftype) || typeof(UIntPtr).IsAssignableFrom(ftype) || typeof(Char).IsAssignableFrom(ftype) || typeof(Double).IsAssignableFrom(ftype) || typeof(Single).IsAssignableFrom(ftype))
         {
             result = fvalue;
         }
         else if (typeof(System.String).IsAssignableFrom(ftype))
         {
             result = fvalue;
         }
         else if (typeof(Color).IsAssignableFrom(ftype))
         {
             var color = (Color)fvalue;
             result = new UnityBabylonColor { r = color.r, g = color.g, b = color.b, a = color.a };
         }
         else if (typeof(Vector2).IsAssignableFrom(ftype))
         {
             var vec2 = (Vector2)fvalue;
             result = new UnityBablylonVector2 { x = vec2.x, y = vec2.y };
         }
         else if (typeof(Vector3).IsAssignableFrom(ftype))
         {
             var vec3 = (Vector3)fvalue;
             result = new UnityBablylonVector3 { x = vec3.x, y = vec3.y, z = vec3.z };
         }
         else if (typeof(Vector4).IsAssignableFrom(ftype))
         {
             var vec4 = (Vector4)fvalue;
             result = new UnityBablylonVector4 { x = vec4.x, y = vec4.y, z = vec4.z, w = vec4.w };
         }
         else if (typeof(Transform).IsAssignableFrom(ftype))
         {
             var transform = (Transform)fvalue;
             result = GetTransformPropertyValue(transform);
         }
         else if (typeof(Texture2D).IsAssignableFrom(ftype))
         {
             var texture = (Texture2D)fvalue;
             result = GetTexturePropertyValue(texture);
         }
         else if (typeof(Cubemap).IsAssignableFrom(ftype))
         {
             var cubemap = (Cubemap)fvalue;
             result = GetCubemapPropertyValue(cubemap);
         }
         else if (typeof(Material).IsAssignableFrom(ftype))
         {
             var material = (Material)fvalue;
             result = GetMaterialPropertyValue(material);
         }
         else if (typeof(Shader).IsAssignableFrom(ftype))
         {
             var shader = (Shader)fvalue;
             result = GetShaderPropertyValue(shader);
         }
         else if (typeof(GameObject).IsAssignableFrom(ftype))
         {
             var gobject = (GameObject)fvalue;
             result = GetGamePropertyValue(gobject);
         }
         else if (typeof(AudioClip).IsAssignableFrom(ftype))
         {
             var aclip = (AudioClip)fvalue;
             result = GetAudioClipPropertyValue(aclip);
         }
         else if (typeof(EmbeddedAsset).IsAssignableFrom(ftype))
         {
             var easset = (EmbeddedAsset)fvalue;
             result = GetEmbeddedAssetPropertyValue(easset);
         }
         else if (typeof(TextAsset).IsAssignableFrom(ftype))
         {
             var tasset = (TextAsset)fvalue;
             result = GetTextAssetPropertyValue(tasset);
         }
         else if (typeof(DefaultAsset).IsAssignableFrom(ftype))
         {
             var dasset = (DefaultAsset)fvalue;
             result = GetDefaultAssetPropertyValue(dasset);
         }
         else if (ftype.IsArray)
         {
             if (typeof(Boolean[]).IsAssignableFrom(ftype) || typeof(Byte[]).IsAssignableFrom(ftype) || typeof(SByte[]).IsAssignableFrom(ftype) || typeof(Int16[]).IsAssignableFrom(ftype) || typeof(UInt16[]).IsAssignableFrom(ftype) || typeof(Int32[]).IsAssignableFrom(ftype) || typeof(UInt32[]).IsAssignableFrom(ftype) || typeof(Int64[]).IsAssignableFrom(ftype) || typeof(UInt64[]).IsAssignableFrom(ftype) || typeof(IntPtr[]).IsAssignableFrom(ftype) || typeof(UIntPtr[]).IsAssignableFrom(ftype) || typeof(Char[]).IsAssignableFrom(ftype) || typeof(Double[]).IsAssignableFrom(ftype) || typeof(Single[]).IsAssignableFrom(ftype))
             {
                 result = fvalue;
             }
             else if (typeof(System.String[]).IsAssignableFrom(ftype))
             {
                 result = fvalue;
             }
             else if (typeof(Color[]).IsAssignableFrom(ftype))
             {
                 var colors = (Color[])fvalue;
                 var colors_list = new List<UnityBabylonColor>();
                 foreach (var color in colors)
                 {
                     colors_list.Add(new UnityBabylonColor { r = color.r, g = color.g, b = color.b, a = color.a });
                 }
                 result = colors_list.ToArray();
             }
             else if (typeof(Vector2[]).IsAssignableFrom(ftype))
             {
                 var vecs2 = (Vector2[])fvalue;
                 var vecs2_list = new List<UnityBablylonVector2>();
                 foreach (var vec2 in vecs2)
                 {
                     vecs2_list.Add(new UnityBablylonVector2 { x = vec2.x, y = vec2.y });
                 }
                 result = vecs2_list.ToArray();
             }
             else if (typeof(Vector3[]).IsAssignableFrom(ftype))
             {
                 var vecs3 = (Vector3[])fvalue;
                 var vecs3_list = new List<UnityBablylonVector3>();
                 foreach (var vec3 in vecs3)
                 {
                     vecs3_list.Add(new UnityBablylonVector3 { x = vec3.x, y = vec3.y, z = vec3.z });
                 }
                 result = vecs3_list.ToArray();
             }
             else if (typeof(Vector4[]).IsAssignableFrom(ftype))
             {
                 var vecs4 = (Vector4[])fvalue;
                 var vecs4_list = new List<UnityBablylonVector4>();
                 foreach (var vec4 in vecs4)
                 {
                     vecs4_list.Add(new UnityBablylonVector4 { x = vec4.x, y = vec4.y, z = vec4.z, w = vec4.w });
                 }
                 result = vecs4_list.ToArray();
             }
             else if (typeof(Transform[]).IsAssignableFrom(ftype))
             {
                 var transforms = (Transform[])fvalue;
                 var transform_list = new List<object>();
                 foreach (var transform in transforms)
                 {
                     transform_list.Add(GetTransformPropertyValue(transform));
                 }
                 result = transform_list.ToArray();
             }
             else if (typeof(Texture2D[]).IsAssignableFrom(ftype))
             {
                 var textures = (Texture2D[])fvalue;
                 var texture_list = new List<object>();
                 foreach (var texture in textures)
                 {
                     texture_list.Add(GetTexturePropertyValue(texture));
                 }
                 result = texture_list.ToArray();
             }
             else if (typeof(Cubemap[]).IsAssignableFrom(ftype))
             {
                 var cubemaps = (Cubemap[])fvalue;
                 var cubemap_list = new List<object>();
                 foreach (var cubemap in cubemaps)
                 {
                     cubemap_list.Add(GetCubemapPropertyValue(cubemap));
                 }
                 result = cubemap_list.ToArray();
             }
             else if (typeof(Material[]).IsAssignableFrom(ftype))
             {
                 var materials = (Material[])fvalue;
                 var material_list = new List<object>();
                 foreach (var material in materials)
                 {
                     material_list.Add(GetMaterialPropertyValue(material));
                 }
                 result = material_list.ToArray();
             }
             else if (typeof(Shader[]).IsAssignableFrom(ftype))
             {
                 var shaders = (Shader[])fvalue;
                 var shader_list = new List<object>();
                 foreach (var shader in shaders)
                 {
                     shader_list.Add(GetShaderPropertyValue(shader));
                 }
                 result = shader_list.ToArray();
             }
             else if (typeof(GameObject[]).IsAssignableFrom(ftype))
             {
                 var gobjects = (GameObject[])fvalue;
                 var gobject_list = new List<object>();
                 foreach (var gobject in gobjects)
                 {
                     gobject_list.Add(GetGamePropertyValue(gobject));
                 }
                 result = gobject_list.ToArray();
             }
             else if (typeof(AudioClip[]).IsAssignableFrom(ftype))
             {
                 var aclips = (AudioClip[])fvalue;
                 var aclip_list = new List<object>();
                 foreach (var aclip in aclips)
                 {
                     aclip_list.Add(GetAudioClipPropertyValue(aclip));
                 }
                 result = aclip_list.ToArray();
             }
             else if (typeof(EmbeddedAsset[]).IsAssignableFrom(ftype))
             {
                 var eassets = (EmbeddedAsset[])fvalue;
                 var easset_list = new List<object>();
                 foreach (var easset in eassets)
                 {
                     easset_list.Add(GetEmbeddedAssetPropertyValue(easset));
                 }
                 result = easset_list.ToArray();
             }
             else if (typeof(TextAsset[]).IsAssignableFrom(ftype))
             {
                 var tassets = (TextAsset[])fvalue;
                 var tasset_list = new List<object>();
                 foreach (var tasset in tassets)
                 {
                     tasset_list.Add(GetTextAssetPropertyValue(tasset));
                 }
                 result = tasset_list.ToArray();
             }
             else if (typeof(DefaultAsset[]).IsAssignableFrom(ftype))
             {
                 var dassets = (DefaultAsset[])fvalue;
                 var dasset_list = new List<object>();
                 foreach (var dasset in dassets)
                 {
                     dasset_list.Add(GetDefaultAssetPropertyValue(dasset));
                 }
                 result = dasset_list.ToArray();
             }
         }
     }
     return result;
 }