Ejemplo n.º 1
0
        /// <inheritdoc/>
        public override IDrawer GetForField([CanBeNull] object value, [NotNull] Type fieldType, [CanBeNull] LinkedMemberInfo memberInfo, [CanBeNull] IParentDrawer parent, [CanBeNull] GUIContent label, bool readOnly)
        {
            if (fieldType == Types.Float)
            {
                if (parent != null && typeof(TransformMemberBaseDrawer).IsAssignableFrom(parent.GetType()))
                {
                    return(base.GetForField(typeof(TransformFloatDrawer), value, fieldType, memberInfo, parent, label, readOnly));
                }
            }
            else if (fieldType == Types.Vector3)
            {
                                #if DEV_MODE && PI_ASSERTATIONS
                Debug.Assert(typeof(ITransformDrawer).IsAssignableFrom(typeof(TransformDrawer)));
                                #endif

                if (parent != null && typeof(ITransformDrawer).IsAssignableFrom(parent.GetType()) && memberInfo != null)
                {
                    switch (memberInfo.Name)
                    {
                    case "position":
                        return(base.GetForField(typeof(PositionDrawer), value, fieldType, memberInfo, parent, label, readOnly));

                    case "rotation":
                        return(base.GetForField(typeof(RotationDrawer), value, fieldType, memberInfo, parent, label, readOnly));

                    case "scale":
                        return(base.GetForField(typeof(ScaleDrawer), value, fieldType, memberInfo, parent, label, readOnly));
                    }
                                        #if DEV_MODE
                    Debug.LogError("TransformDrawerProvider failed to figure out proper drawer type for TransformDrawer member");
                                        #endif
                }
            }

            return(base.GetForField(value, fieldType, memberInfo, parent, label, readOnly));
        }