Exemple #1
0
        public override void OnInitialized()
        {
            worlditem.ActiveStateLocked = false;
            worlditem.ActiveState       = WIActiveState.Active;
            worlditem.ActiveStateLocked = true;

            Detectable detectable = worlditem.Get <Detectable>();

            detectable.OnPlayerDetect += OnPlayerDetect;

            FoodStuff foodStuff = worlditem.Get <FoodStuff>();

            foodStuff.OnEat += OnEat;
            foodStuff.State.ConsumeOnEat = false;                                    //we'll handle consumption

            Damageable damageable = worlditem.Get <Damageable>();

            damageable.OnDie += OnDie;

            if (HasBeenPicked)
            {
                RefreshPlantProps();
            }
        }
Exemple #2
0
 public Player(Detectable a, Detectable b)
 {
     PaddleA = a;
     PaddleB = b;
 }
Exemple #3
0
    private void Explode()
    {
        var explodeInstance = ResourcePoolManager.GetAvailable(ExplodePrefab, transform.position, transform.rotation); //(GameObject)Instantiate(ExplodePrefab, transform.position, transform.rotation);

        explodeInstance.transform.localScale = transform.localScale;
        var explodeShiftable = explodeInstance.GetComponent<Shiftable>();
        var ownerShiftable = GetComponent<Shiftable>();

        if (explodeShiftable != null && ownerShiftable != null)
        {
            var univPos = Universe.Current.GetUniversePosition(transform.position);
            explodeShiftable.SetShiftPosition(univPos);
        }

        var count = Physics.OverlapSphereNonAlloc(transform.position, MaxExplodeRadius, _damageColliders, _detectableMask);
        for (var i = 0; i < count; i++)
        {
            _detectable = _damageColliders[i].GetComponent<Detectable>();
            if (_detectable != null)
            {
                _killable = _detectable.TargetTransform.GetComponent<Killable>();
                var damage = Mathf.Round(MaxExplodeDamage * GetDamageFraction(_detectable.transform.position, transform.position, MinExplodeRadius, MaxExplodeRadius));
                _killable.Damage(damage, transform.position, Vector3.up, Owner);
            }
            var rBody = _damageColliders[i].GetComponentInParent<Rigidbody>();
            if (rBody != null)
                rBody.AddExplosionForce(MissileForce, transform.position, MaxExplodeRadius, 0f, ForceMode.Impulse);
        }

        Stop();
    }