private UnityEngine.Object GetTargetFromSource(SerializedProperty property, TriggerableTargetObject.TargetSource esrc)
        {
            switch (esrc)
            {
                case TriggerableTargetObject.TargetSource.Self:
                    if(_configAttrib.TargetType == typeof(GameObject))
                    {
                        if (GameObjectUtil.IsGameObjectSource(property.serializedObject.targetObject))
                        {
                            return GameObjectUtil.GetGameObjectFromSource(property.serializedObject.targetObject);
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else if(TypeUtil.IsType(_configAttrib.TargetType, typeof(Component)))
                    {
                        if (GameObjectUtil.IsGameObjectSource(property.serializedObject.targetObject))
                        {
                            return GameObjectUtil.GetGameObjectFromSource(property.serializedObject.targetObject).GetComponent(_configAttrib.TargetType);
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else if(TypeUtil.IsType(_configAttrib.TargetType, typeof(IComponent)))
                    {
                        if (GameObjectUtil.IsGameObjectSource(property.serializedObject.targetObject))
                        {
                            return GameObjectUtil.GetGameObjectFromSource(property.serializedObject.targetObject).GetComponent(_configAttrib.TargetType);
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else if(TypeUtil.IsType(property.serializedObject.targetObject.GetType(), _configAttrib.TargetType))
                    {
                        return property.serializedObject.targetObject as UnityEngine.Object;
                    }
                    else
                    {
                        return null;
                    }

                case TriggerableTargetObject.TargetSource.Root:
                    if (_configAttrib.TargetType == typeof(GameObject))
                    {
                        if (GameObjectUtil.IsGameObjectSource(property.serializedObject.targetObject))
                        {
                            return GameObjectUtil.GetGameObjectFromSource(property.serializedObject.targetObject).FindRoot();
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else if (TypeUtil.IsType(_configAttrib.TargetType, typeof(Component)))
                    {
                        if (GameObjectUtil.IsGameObjectSource(property.serializedObject.targetObject))
                        {
                            return GameObjectUtil.GetGameObjectFromSource(property.serializedObject.targetObject).FindRoot().GetComponent(_configAttrib.TargetType);
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else if(TypeUtil.IsType(_configAttrib.TargetType, typeof(IComponent)))
                    {
                        if (GameObjectUtil.IsGameObjectSource(property.serializedObject.targetObject))
                        {
                            return GameObjectUtil.GetGameObjectFromSource(property.serializedObject.targetObject).FindRoot().GetComponent(_configAttrib.TargetType);
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else
                    {
                        return null;
                    }

                default:
                    return null;
            }
        }