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(); } }
public Player(Detectable a, Detectable b) { PaddleA = a; PaddleB = b; }
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(); }