private async Task setAnimation(IDirectionalAnimation animation) { if (animation != null) { _faceDirection.CurrentDirectionalAnimation = animation; await _faceDirection.FaceDirectionAsync(_faceDirection.Direction); } }
public async Task <bool> ApproachAsync(string verb, IObject obj) { ApproachHotspots approachStyle = getApproachStyle(verb); var faceDirection = _faceDirection; var walk = _walk; var hotspot = obj.GetComponent <IHotspotComponent>(); var walkPt = hotspot?.WalkPoint; switch (approachStyle) { case ApproachHotspots.NeverWalk: break; case ApproachHotspots.FaceOnly: if (faceDirection != null) { await faceDirection.FaceDirectionAsync(obj); } break; case ApproachHotspots.WalkIfHaveWalkPoint: if (walkPt == null && faceDirection != null) { await faceDirection.FaceDirectionAsync(obj); } else { if (walk != null && !await walk.WalkAsync(new Position(walkPt.Value))) { return(false); } if (faceDirection != null) { await faceDirection.FaceDirectionAsync(obj); } } break; case ApproachHotspots.AlwaysWalk: PointF?walkPoint = walkPt ?? obj.CenterPoint ?? obj.Position.XY; if (walk != null && !await walk.WalkAsync(new Position(walkPoint.Value))) { return(false); } if (faceDirection != null) { await _faceDirection.FaceDirectionAsync(obj); } break; default: throw new NotSupportedException("Approach style is not supported: " + approachStyle.ToString()); } return(true); }
public Task FaceDirectionAsync(Direction direction) { return(_faceDirectionComponent.FaceDirectionAsync(direction)); }