internal void Request() { // This sets the Validity to *at least* Requested state. if (validity == TargetValidity.Referenced) { validity = TargetValidity.Requested; } }
internal bool Define(IWarningLogger log) { if (validity == TargetValidity.Defined) { log.Error(2009, "Trying to redefine the target " + FullName, null); return(true); } validity = TargetValidity.Defined; return(false); }
/// <summary> /// Gets the <see cref="SpatialTarget"/> related to the given data. /// </summary> /// <param name="data">The data to look on.</param> /// <returns>The found <see cref="SpatialTarget"/>.</returns> protected virtual SpatialTarget GetSpatialTarget(SurfaceData data) { if (data == null || data.CollisionData.transform == null) { return(null); } SpatialTarget foundTarget = data.CollisionData.transform.gameObject.TryGetComponent <SpatialTarget>(false, true); if (foundTarget == null || !TargetValidity.Accepts(foundTarget.TargetContainer != null ? foundTarget.TargetContainer : foundTarget.gameObject)) { return(null); } return(foundTarget); }
public bool DoneRequesting(TypeResolver res, IWarningLogger log) { if (done_modifying) { throw ExHelp.InvalidOp("Cannot call DoneRequesting twice on a provider"); } foreach (KeyValuePair <string, TargetBuilder> kvp in targets) { TargetValidity tv = kvp.Value.Validity; string fullname = Basis + kvp.Key; if (tv == TargetValidity.Referenced) { // FIXME: this error message sucks log.Error(2000, "A target was referenced from another provider " + "that was not formally allowed to request it, and the " + "target was not defined by its provider", fullname); return(true); } if (tv == TargetValidity.Requested) { TargetTemplate tmpl; if (res.TryMatch(kvp.Key, MatcherKind.Dependency, out tmpl, log)) { return(true); } if (tmpl == null) { log.Error(2027, "Could not guess a rule for a target " + "implicitly defined in a dependency. Do you " + "need to add a using [] line?", fullname); return(true); } kvp.Value.Define(log); tmpl.ApplyTemplate(kvp.Value); } } done_modifying = true; return(false); }
/// <summary> /// Determines whether the <see cref="RaycastHit"/> data contains a valid surface. /// </summary> /// <param name="collisionData">The <see cref="RaycastHit"/> data to check for validity on.</param> /// <returns><see langword="true"/> if the <see cref="RaycastHit"/> data contains a valid surface.</returns> protected virtual bool ValidSurface(RaycastHit collisionData) { return(collisionData.transform != null && TargetValidity.Accepts(collisionData.transform.gameObject)); }