public bool Move(Rectangle area, float distance, object data, OnMovementFinished onMovementFinished, OnMovementCancelled onMovementCancelled) { AbortCurrentMovement(); this.data = data; this.onMovementFinished = onMovementFinished; this.onMovementCancelled = onMovementCancelled; if (area.Contains(representable.getPosition(), 0)) { if (onMovementFinished != null) { onMovementFinished(data); } return(true); } var accesible = TrajectoryHandler.GetAccessibleTrajectory(representable.getPosition(), FindObjectOfType <SceneMB>().Trajectory); Vector2[] intersections; if (TrajectoryHandler.TrajectoryRectangleIntersections(area, accesible, out intersections)) { var route = accesible.route(representable.getPosition(), intersections); if (route != null && route.Length > 0) { toArea = area; distanceToArea = distance; MoveRoute(route); return(true); } } return(false); }
public InteractuableResult Interacted(PointerEventData pointerData) { InteractuableResult res = InteractuableResult.IGNORES; switch (SceneData.getType()) { case GeneralScene.GeneralSceneSceneType.SCENE: var scene = SceneData as Scene; if (!Game.Instance.GameState.IsFirstPerson && scene.isAllowPlayerLayer()) { RaycastHit hitInfo; background.GetComponent <Collider>().Raycast(Camera.main.ScreenPointToRay(pointerData.position), out hitInfo, float.MaxValue); var texPos = PixelsSize; var texCoord = hitInfo.textureCoord; texCoord.y = 1 - texCoord.y; texPos.Scale(texCoord); var positioner = PlayerMB.Instance.GetComponent <ScenePositioner>(); var accesible = TrajectoryHandler.GetAccessibleTrajectory(positioner.Position, trajectoryHandler); PlayerMB.Instance.GetComponent <Mover>().Move(accesible.closestPoint(texPos)); } break; case GeneralScene.GeneralSceneSceneType.SLIDESCENE: if (ProgressSlide()) { res = InteractuableResult.REQUIRES_MORE_INTERACTION; } else { res = FinishCutscene((Cutscene)SceneData); } break; case GeneralScene.GeneralSceneSceneType.VIDEOSCENE: var videoscene = (Videoscene)SceneData; if (movieplayer == MovieState.NOT_MOVIE || movieplayer == MovieState.STOPPED || (movieplayer == MovieState.PLAYING && !movie.isPlaying()) || videoscene.isCanSkip()) { movie.Stop(); movieplayer = MovieState.STOPPED; if (movieplayer == MovieState.PLAYING) { TrackerAsset.Instance.Accessible.Skipped(SceneData.getId(), AccessibleTracker.Accessible.Cutscene); } res = FinishCutscene(videoscene); } break; } return(res); }
public bool Move(Vector2 point, object data, OnMovementFinished onMovementFinished, OnMovementCancelled onMovementCancelled) { AbortCurrentMovement(); this.data = data; this.onMovementFinished = onMovementFinished; this.onMovementCancelled = onMovementCancelled; var accesible = TrajectoryHandler.GetAccessibleTrajectory(representable.getPosition(), FindObjectOfType <SceneMB>().Trajectory); var route = accesible.route(representable.getPosition(), point); if (route != null && route.Length > 0) { toArea = null; MoveRoute(route); return(true); } return(false); }