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; } }