public override void Initialize(USTimelineBase timeline)
        {
            var numberOfChildren = Children.Count;

            if (PropertyFieldInfo.Property != null)
            {
                numberOfChildren = USPropertyMemberUtility.GetNumberOfMembers(PropertyFieldInfo.Property.PropertyType);
            }
            else if (PropertyFieldInfo.Field != null)
            {
                numberOfChildren = USPropertyMemberUtility.GetNumberOfMembers(PropertyFieldInfo.Field.FieldType);
            }

            if (numberOfChildren != Children.Count)
            {
                Children.Clear();
                for (var index = 0; index < numberOfChildren; index++)
                {
                    var postFix = "";
                    if (PropertyFieldInfo.Property != null)
                    {
                        postFix = USPropertyMemberUtility.GetAdditionalMemberName(PropertyFieldInfo.Property.PropertyType, index);
                    }
                    else if (PropertyFieldInfo.Field != null)
                    {
                        postFix = USPropertyMemberUtility.GetAdditionalMemberName(PropertyFieldInfo.Field.FieldType, index);
                    }

                    var preFix = PropertyFieldInfo.Name;

                    var propertyMemberItem = CreateInstance <USPropertyMemberHierarchyItem>();
                    propertyMemberItem.PostFix    = postFix;
                    propertyMemberItem.Prefix     = preFix;
                    propertyMemberItem.CurveIndex = index;
                    propertyMemberItem.Initialize(PropertyTimeline);

                    var propertyInfo = PropertyTimeline.GetProperty(preFix, PropertyFieldInfo.Component);
                    if (propertyInfo != null)
                    {
                        propertyMemberItem.Curve  = propertyInfo.curves[index];
                        propertyInfo.InternalName = MappedType;
                    }

                    Children.Add(propertyMemberItem as IUSHierarchyItem);
                }
            }
        }
 public PropertyFieldInfo(Component component, FieldInfo field)
 {
     Component  = component;
     Field      = field;
     MappedType = USPropertyMemberUtility.GetUnityPropertyNameFromUSProperty(Name, component);
 }
 public PropertyFieldInfo(Component component, PropertyInfo property)
 {
     Component  = component;
     Property   = property;
     MappedType = USPropertyMemberUtility.GetUnityPropertyNameFromUSProperty(Name, component);
 }