Esempio n. 1
0
 public void SetParent(TFollowerWater parentObject)
 {
     this.parentWaterField = parentObject;
 }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        if (deathComp && deathComp.IsDead())
        {
            if (audio && audio.isPlaying)
            {
                audio.Stop();
            }
        }

        if (activated)
        {
            if (startWaterAfterSec > 0.0f)
            {
                startWaterAfterSec -= Time.deltaTime;
            }
            else
            {
                if (playsSound && !audio.isPlaying)
                {
                    audio.Play();
                }
                if (mainWaterObject)
                {
                    secSinceLastWaterTick += Time.deltaTime;

                    if (secSinceLastWaterTick >= secBetweenWaterTicks)
                    {
                        for (int times = 0; times < waterMassTimesPerTick; times++)
                        {
                            Vector2 target = gameObject.transform.position;
                            target.x += waterTargetPoint.x;
                            target.y += waterTargetPoint.y;

                            Collider2D[]      hits      = Physics2D.OverlapCircleAll(target, waterTargetRadius);
                            List <Collider2D> waterHits = new List <Collider2D>();

                            foreach (Collider2D hit in hits)
                            {
                                if (hit.tag.Equals("Water"))
                                {
                                    waterHits.Add(hit);
                                }
                            }

                            for (int i = 0; i < waterHits.Count; i++)
                            {
                                int        randomWaterTile = Random.Range(0, waterHits.Count);
                                Collider2D choosenTile     = waterHits[randomWaterTile];

                                if (choosenTile)
                                {
                                    TWaterTile     waterComponent     = choosenTile.gameObject.GetComponent <TWaterTile>();
                                    TFollowerWater tileWaterComponent = mainWaterObject.GetComponent <TFollowerWater>();

                                    if (tileWaterComponent && waterComponent)
                                    {
                                        if (waterComponent.waterMass <= 1.0f)
                                        {
                                            tileWaterComponent.AddWaterToWaterTile(waterComponent.posX, waterComponent.posY, waterMassPerTick);
                                        }
                                    }
                                }
                            }
                        }

                        secSinceLastWaterTick = 0;
                    }
                }
                else
                {
                    print("TileWaterObject not set!");
                }
            }
        }
    }