Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 protected override void setDataBeforeSaving(PersistentGameDataController.SaveType saveType)
 {
     if (targetPos != null)
     {
         target = new Serializable3DVector(targetPos.position);
     }
 }
Ejemplo n.º 3
0
 protected override void OnFirstTimeBehaviourAwakend()
 {
     if (targetPos != null)
     {
         target = new Serializable3DVector(targetPos.position);
     }
 }
Ejemplo n.º 4
0
 protected override void setDataBeforeSaving(PersistentGameDataController.SaveType saveType)
 {
     if (leaveBoatPosition != null)
     {
         leaveBoatPos = new Serializable3DVector(leaveBoatPosition.position);
     }
     base.setDataBeforeSaving(saveType);
 }
Ejemplo n.º 5
0
 protected override void OnFirstTimeBehaviourAwakend()
 {
     if (targetPos != null)
     {
         leaveBoatPos = new Serializable3DVector(leaveBoatPosition.position);
     }
     base.OnFirstTimeBehaviourAwakend();
 }
Ejemplo n.º 6
0
    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();
            }
        }
    }
Ejemplo n.º 7
0
 protected override void saveComponent(BoxCollider component, GamePersistence.SaveType saveType)
 {
     base.saveComponent(component, saveType);
     center = new Serializable3DVector(component.center);
     size   = new Serializable3DVector(component.size);
 }
Ejemplo n.º 8
0
 protected override void saveComponent(Rigidbody component, PersistentGameDataController.SaveType saveType)
 {
     isKinematic = component.isKinematic;
     vel         = new Serializable3DVector(component.velocity);
     angVel      = new Serializable3DVector(component.angularVelocity);
 }