Unity3D2Babylon.SceneBuilder.GetComponentPropertyValue C# (CSharp) Method

GetComponentPropertyValue() private method

private GetComponentPropertyValue ( FieldInfo field, BabylonScriptComponent component ) : object
field FieldInfo
component UnityEditor.BabylonScriptComponent
return object
        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;
        }