private SelectedPathError DoesPropertyExist(GameObject go, string propertPath) { try { object obj; if (MemberResolver.TryGetValue(go, propertPath, out obj)) { return(SelectedPathError.None); } else { return(SelectedPathError.InvalidPath); } } catch (TargetInvocationException e) { if (e.InnerException is MissingComponentException) { return(SelectedPathError.MissingComponent); } else { throw; } } }
protected override bool Compare(object objValue) { if (compareToType == CompareToType.CompareToConstantValue) { m_ObjOtherVal = ConstValue; } else if (compareToType == CompareToType.CompareToNull) { m_ObjOtherVal = null; } else { if (other == null) { m_ObjOtherVal = null; } else { if (m_MemberResolverB == null) { m_MemberResolverB = new MemberResolver(other, otherPropertyPath); } m_ObjOtherVal = m_MemberResolverB.GetValue(UseCache); } } return(Compare(objValue, m_ObjOtherVal)); }
public bool Compare() { if (m_MemberResolver == null) { m_MemberResolver = new MemberResolver(go, thisPropertyPath); } m_ObjVal = m_MemberResolver.GetValue(UseCache); return(Compare(m_ObjVal)); }
public bool Compare() { if (this.m_MemberResolver == null) { this.m_MemberResolver = new MemberResolver(this.go, this.thisPropertyPath); } this.m_ObjVal = this.m_MemberResolver.GetValue(this.UseCache); return(this.Compare(this.m_ObjVal)); }
public static bool TryGetMemberType(GameObject gameObject, string path, out Type value) { try { var mr = new MemberResolver(gameObject, path); value = mr.GetMemberType(); return(true); } catch (InvalidPathException) { value = null; return(false); } }
public bool Compare() { if (memberResolver == null) { memberResolver = new MemberResolver(go, thisPropertyPath); } objVal = memberResolver.GetValue(UseCache); var result = Compare(objVal); return(result); }
public static bool TryGetMemberType(GameObject gameObject, string path, out Type value) { try { var mr = new MemberResolver(gameObject, path); value = mr.GetMemberType(); return true; } catch (InvalidPathException) { value = null; return false; } }
public static bool TryGetValue(GameObject gameObject, string path, out object value) { try { value = new MemberResolver(gameObject, path).GetValue(false); return(true); } catch (InvalidPathException) { value = null; return(false); } }
public IList <string> GetFieldsAndPropertiesFromGameObject(GameObject gameObject, int depthOfSearch, string extendPath) { if (depthOfSearch < 1) { throw new ArgumentOutOfRangeException("depthOfSearch need to be greater than 0"); } var goVals = GetPropertiesAndFieldsFromType(typeof(GameObject), depthOfSearch - 1).Select(s => "gameObject." + s); var result = new List <string>(); if (AllowedTypes == null || !AllowedTypes.Any() || AllowedTypes.Contains(typeof(GameObject))) { result.Add("gameObject"); } result.AddRange(goVals); foreach (var componentType in GetAllComponents(gameObject)) { if (AllowedTypes == null || !AllowedTypes.Any() || AllowedTypes.Any(t => t.IsAssignableFrom(componentType))) { result.Add(componentType.Name); } if (depthOfSearch > 1) { var vals = GetPropertiesAndFieldsFromType(componentType, depthOfSearch - 1); var valsFullName = vals.Select(s => componentType.Name + "." + s); result.AddRange(valsFullName); } } if (!string.IsNullOrEmpty(extendPath)) { var memberResolver = new MemberResolver(gameObject, extendPath); var pathType = memberResolver.GetMemberType(); var vals = GetPropertiesAndFieldsFromType(pathType, depthOfSearch - 1); var valsFullName = vals.Select(s => extendPath + "." + s); result.AddRange(valsFullName); } return(result); }
public IList <string> GetFieldsAndPropertiesUnderPath(GameObject go, string propertPath) { propertPath = propertPath.Trim(); if (!PropertyPathIsValid(propertPath)) { throw new ArgumentException("Incorrect property path: " + propertPath); } var idx = propertPath.LastIndexOf('.'); if (idx < 0) { var components = GetFieldsAndPropertiesFromGameObject(go, 2, null); return(components); } var propertyToSearch = propertPath; Type type; if (MemberResolver.TryGetMemberType(go, propertyToSearch, out type)) { idx = propertPath.Length - 1; } else { propertyToSearch = propertPath.Substring(0, idx); if (!MemberResolver.TryGetMemberType(go, propertyToSearch, out type)) { var components = GetFieldsAndPropertiesFromGameObject(go, 2, null); return(components.Where(s => s.StartsWith(propertPath.Substring(idx + 1))).ToArray()); } } var resultList = new List <string>(); var path = ""; if (propertyToSearch.EndsWith(".")) { propertyToSearch = propertyToSearch.Substring(0, propertyToSearch.Length - 1); } foreach (var c in propertyToSearch) { if (c == '.') { resultList.Add(path); } path += c; } resultList.Add(path); foreach (var prop in type.GetProperties().Where(info => info.GetIndexParameters().Length == 0)) { if (prop.Name.StartsWith(propertPath.Substring(idx + 1))) { resultList.Add(propertyToSearch + "." + prop.Name); } } foreach (var prop in type.GetFields()) { if (prop.Name.StartsWith(propertPath.Substring(idx + 1))) { resultList.Add(propertyToSearch + "." + prop.Name); } } return(resultList.ToArray()); }
public IList<string> GetFieldsAndPropertiesFromGameObject ( GameObject gameObject, int depthOfSearch, string extendPath ) { if(depthOfSearch<1) throw new ArgumentOutOfRangeException("depthOfSearch need to be greater than 0"); var goVals = GetPropertiesAndFieldsFromType(typeof(GameObject), depthOfSearch - 1).Select(s => "gameObject." + s); var result = new List<string>(); if (AllowedTypes == null || !AllowedTypes.Any() || AllowedTypes.Contains(typeof(GameObject))) result.Add("gameObject"); result.AddRange (goVals); foreach (var componentType in GetAllComponents(gameObject)) { if (AllowedTypes == null || !AllowedTypes.Any() || AllowedTypes.Contains(componentType)) result.Add(componentType.Name); if (depthOfSearch > 1) { var vals = GetPropertiesAndFieldsFromType (componentType, depthOfSearch - 1 ); var valsFullName = vals.Select (s => componentType.Name + "." + s); result.AddRange (valsFullName); } } if (!string.IsNullOrEmpty (extendPath)) { var memberResolver = new MemberResolver (gameObject, extendPath); var pathType = memberResolver.GetMemberType (); var vals = GetPropertiesAndFieldsFromType (pathType, depthOfSearch - 1); var valsFullName = vals.Select (s => extendPath + "." + s); result.AddRange (valsFullName); } return result; }