Example #1
0
 public NetworkAtTargetState(GameObject target, NetworkTentacle tentacle)
 {
     tentacle_       = tentacle;
     target_         = target;
     bodyPartRadius_ = 0.2f;
     pulseTime_      = 0;
     pulseHoldTime_  = 0.08f;
     tentacleHead_   = tentacle.Head_.GetComponent <NetworkTentaclePart>();
     atCell_         = tentacleHead_.targetGO_.GetComponent <NetworkCell>() != null;
     targetCell_     = target.GetComponent <NetworkCell>();
 }
Example #2
0
 void HandlePulse()
 {
     pulseTime_ += Time.deltaTime;
     if (pulseTime_ > pulseHoldTime_)
     {
         foreach (GameObject bodyPartGO in tentacle_.BodyParts_)
         {
             NetworkTentaclePart bodyPart = bodyPartGO.GetComponent <NetworkTentaclePart>();
             if (bodyPart.HasPulse_)
             {
                 bodyPart.SendPulse();
             }
         }
         pulseTime_ = 0;
     }
 }
Example #3
0
 public NetworkToTargetState(GameObject target, NetworkTentacle tentacle)
 {
     tentacle_         = tentacle;
     target_           = target;
     headDistance_     = Vector3.Distance(tentacle.Head_.transform.position, target_.transform.position);
     bodyPartRadius_   = 0.2f;
     nextPartDistance_ = headDistance_ - bodyPartRadius_;
     headPart_         = tentacle.Head_.GetComponent <NetworkTentaclePart>();
     targetCell_       = target_.GetComponent <NetworkCell>();
     if (NetworkCell.AreAlly(tentacle_.ParentCell_, targetCell_, tentacle_.ParentCell_.TeamManager_))
     {
         foreach (NetworkTentacle targetTentacle in targetCell_.Tentacles_)
         {
             if (targetTentacle.Target_ == tentacle_.ParentCell_.gameObject)
             {
                 targetTentacle.Retreat();
             }
         }
     }
 }
Example #4
0
 void HandleExtensionMovement()
 {
     travelTime_ += Time.deltaTime;
     if (travelTime_ > travelSpeed_)
     {
         foreach (GameObject bodyPart in tentacle_.BodyParts_)
         {
             NetworkTentaclePart part = bodyPart.GetComponent <NetworkTentaclePart>();
             if (!part.atDestination)
             {
                 if (part.IsHead_ && tentacle_.IsDefending_())
                 {
                     if (middleGO_ == null)
                     {
                         Vector3 midlePos = Vector3.MoveTowards(part.targetGO_.transform.position, tentacle_.transform.position, Vector3.Distance(tentacle_.transform.position, part.targetGO_.transform.position) / 2);
                         midlePos  = Vector3.MoveTowards(midlePos, tentacle_.transform.position, 0.1f);
                         middleGO_ = new GameObject();
                         middleGO_.transform.position = midlePos;
                         Debug.Log("Middle position: " + midlePos);
                         part.targetGO_ = middleGO_;
                     }
                     part.transform.position = Vector3.MoveTowards(part.transform.position, part.targetGO_.transform.position, NetworkTentacle.travelSpeed_ * Time.deltaTime);
                 }
                 else
                 {
                     if (part.BodyPartId_ == 0 && middleGO_ != null)
                     {
                         part.targetGO_ = tentacle_.Target_;
                     }
                     Vector3 variable   = Vector3.MoveTowards(part.targetGO_.transform.position, tentacle_.transform.position, 0.2f);
                     float   distance   = Vector3.Distance(part.transform.position, variable);
                     float   distance2D = Vector2.Distance(part.transform.position, variable);
                     part.transform.position = Vector3.MoveTowards(part.transform.position, Vector3.MoveTowards(part.targetGO_.transform.position, tentacle_.transform.position, 0.2f), NetworkTentacle.travelSpeed_ * Time.deltaTime);
                 }
             }
         }
         travelTime_ = 0;
     }
 }