protected override void saveComponent(Transform component, PersistentGameDataController.SaveType saveType) { localPosition = new Serializable3DVector(component.localPosition); position = new Serializable3DVector(component.position); rotation = new Serializable3DVector(component.eulerAngles); scale = new Serializable3DVector(component.localScale); }
protected override void setDataBeforeSaving(PersistentGameDataController.SaveType saveType) { if (targetPos != null) { target = new Serializable3DVector(targetPos.position); } }
protected override void OnFirstTimeBehaviourAwakend() { if (targetPos != null) { target = new Serializable3DVector(targetPos.position); } }
protected override void setDataBeforeSaving(PersistentGameDataController.SaveType saveType) { if (leaveBoatPosition != null) { leaveBoatPos = new Serializable3DVector(leaveBoatPosition.position); } base.setDataBeforeSaving(saveType); }
protected override void OnFirstTimeBehaviourAwakend() { if (targetPos != null) { leaveBoatPos = new Serializable3DVector(leaveBoatPosition.position); } base.OnFirstTimeBehaviourAwakend(); }
private void FixedUpdate() { if (target != null && boat != null) { Vector3 distance = target.v - boat.transform.position; distance.y = 0; Vector3 toSailDirection = boat.sailInteractTrigger.ClosestPoint(transform.position) - transform.position; toSailDirection.y = 0; float travelTimeUntilReachingSail = ((toSailDirection.magnitude / movementSpeedOnBoat) * boat.Velocity.v).magnitude; float timeToReduceSailToZero = boat.SailUpTransition / SailsSettingSpeed; float averageSailHeightWhileReducing = boat.SailUpTransition / 2; Vector3 extendedSailDirection = boat.Velocity.v; Vector3 travelDirection = boat.transform.forward; travelDirection.y = 0; Vector3 turnDirection = travelDirection - distance.normalized; if (turnDirection.magnitude > 0.1) { //boat.transform.eulerAngles = Vector3.RotateTowards(distance, boat.transform.eulerAngles, 2, 0); //boat.transform.Rotate(turnDirection); } float restTravelDistance = boat.GetEstimatedTravelDistanceLeft(extendedSailDirection); float extraDistanceFromLowerSailTime = averageSailHeightWhileReducing * boat.weather.windStrength * timeToReduceSailToZero; if (restTravelDistance + travelTimeUntilReachingSail + extraDistanceFromLowerSailTime >= distance.magnitude) { if (boat.SailUpTransition > 0) { BringSailsTo(0); } } else if (distance.magnitude - restTravelDistance > 5 && boat.SailUpTransition < 1) { BringSailsTo(1); } float speedWithWind = boat.weather.windStrength * boat.sailMaxSize * boat.SailUpTransition; if (distance.magnitude < 4f && restTravelDistance < 3.75f && boat.SailUpTransition == 0) { target = null; ReachedDestination(); } } }
protected override void saveComponent(BoxCollider component, GamePersistence.SaveType saveType) { base.saveComponent(component, saveType); center = new Serializable3DVector(component.center); size = new Serializable3DVector(component.size); }
protected override void saveComponent(Rigidbody component, PersistentGameDataController.SaveType saveType) { isKinematic = component.isKinematic; vel = new Serializable3DVector(component.velocity); angVel = new Serializable3DVector(component.angularVelocity); }