Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 3
0
 public bool Compare()
 {
     if (m_MemberResolver == null)
     {
         m_MemberResolver = new MemberResolver(go, thisPropertyPath);
     }
     m_ObjVal = m_MemberResolver.GetValue(UseCache);
     return(Compare(m_ObjVal));
 }
Exemplo n.º 4
0
 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));
 }
Exemplo n.º 5
0
 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);
     }
 }
Exemplo n.º 6
0
        public bool Compare()
        {
            if (memberResolver == null)
            {
                memberResolver = new MemberResolver(go, thisPropertyPath);
            }
            objVal = memberResolver.GetValue(UseCache);
            var result = Compare(objVal);

            return(result);
        }
Exemplo n.º 7
0
        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;
            }
        }
Exemplo n.º 8
0
 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);
     }
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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;
		}