private UTFilter GetByPositionFilter(UTContext context) { var thePosition = position.EvaluateIn(context); var theDistance = distance.EvaluateIn(context); return(new UTPositionFilter(thePosition, theDistance)); }
public override IEnumerator Execute(UTContext context) { var theGameObject = gameObject.EvaluateIn(context); if (theGameObject == null) { throw new UTFailBuildException("You need to specify a game object to transform.", this); } if (positionAbsolute.EvaluateIn(context)) { theGameObject.transform.position = position.EvaluateIn(context); } else { theGameObject.transform.position += position.EvaluateIn(context); } if (rotationAbsolute.EvaluateIn(context)) { theGameObject.transform.localRotation = Quaternion.Euler(rotation.EvaluateIn(context)); } else { theGameObject.transform.localRotation = Quaternion.Euler(theGameObject.transform.localEulerAngles + rotation.EvaluateIn(context)); } if (scaleAbsolute.EvaluateIn(context)) { theGameObject.transform.localScale = scale.EvaluateIn(context); } else { theGameObject.transform.localScale = Vector3.Scale(theGameObject.transform.localScale, scale.EvaluateIn(context)); } yield return(""); }
public override IEnumerator Execute(UTContext context) { var theGameObject = gameObject.EvaluateIn(context); if (theGameObject == null) { throw new UTFailBuildException("You must specify the game object htat holds the component.", this); } var theProperty = property.EvaluateIn(context); if (theProperty == null || !theProperty.FullyDefined) { throw new UTFailBuildException("You must specify the component type and its property you want to change.", this); } var propertyPath = UTComponentScanner.FindPropertyPath(theProperty.Type, theProperty.FieldPath); if (propertyPath == null) { throw new UTFailBuildException("The component type or the property path is no longer valid.", this); } var theComponent = theGameObject.GetComponent(theProperty.Type); if (theComponent == null) { // nothing to do if (UTPreferences.DebugMode) { Debug.Log("Component " + theProperty.Type.Name + " not found at game object " + theGameObject, this); } } else { Type propertyType = UTInternalCall.GetMemberType(propertyPath[propertyPath.Length - 1]); object propertyValue; if (typeof(string).IsAssignableFrom(propertyType)) { propertyValue = stringPropertyValue.EvaluateIn(context); } else if (typeof(bool).IsAssignableFrom(propertyType)) { propertyValue = boolPropertyValue.EvaluateIn(context); } else if (typeof(int).IsAssignableFrom(propertyType)) { propertyValue = intPropertyValue.EvaluateIn(context); } else if (typeof(float).IsAssignableFrom(propertyType)) { propertyValue = floatPropertyValue.EvaluateIn(context); } else if (typeof(Texture).IsAssignableFrom(propertyType)) { propertyValue = texturePropertyValue.EvaluateIn(context); } else if (typeof(Vector3).IsAssignableFrom(propertyType)) { propertyValue = vector3PropertyValue.EvaluateIn(context); } else if (typeof(Vector2).IsAssignableFrom(propertyType)) { propertyValue = vector2PropertyValue.EvaluateIn(context); } else if (typeof(Rect).IsAssignableFrom(propertyType)) { propertyValue = rectPropertyValue.EvaluateIn(context); } else if (typeof(Quaternion).IsAssignableFrom(propertyType)) { propertyValue = quaternionPropertyValue.EvaluateIn(context); } else if (typeof(Material).IsAssignableFrom(propertyType)) { propertyValue = materialPropertyValue.EvaluateIn(context); } else if (typeof(Color).IsAssignableFrom(propertyType)) { propertyValue = colorPropertyValue.EvaluateIn(context); } else if (typeof(GameObject).IsAssignableFrom(propertyType)) { propertyValue = gameObjectPropertyValue.EvaluateIn(context); } else if (typeof(UObject).IsAssignableFrom(propertyType)) { propertyValue = unityObjectPropertyValue.EvaluateIn(context); } else { propertyValue = objectPropertyValue.EvaluateIn(context); } // TODO: we need a lot more validation here. // e.g. is the value assignable? // Tested with Vector3 -> BoxCollider:center // and float -> BoxCollider:center.y UTInternalCall.SetMemberValue(theComponent, propertyPath, propertyValue); } yield return(""); }