void Awake() { radiation = gameObject.AddComponent <TriggerRadiation>(); zone = GetComponent <Zone>(); radiation.RadiationAmount = float.Parse(zone.info.radiation); radiation.radiationSize = GetComponent <UnityEngine.SphereCollider>().radius; radiation.interestLayers = playersMask; }
private void OnEntityEnter(TriggerBase trigger, BaseEntity entity) { TriggerRadiation rad = trigger as TriggerRadiation; BasePlayer player = entity as BasePlayer; if (rad == null || player == null || entity.IsNpc) { return; } NextTick(() => { MagicPanel?.Call("UpdatePanel", player, Name, (int)UpdateEnum.Image); }); }
public void InitializeRadiationZone(string type, Vector3 position, float radius, float amount) { this.radius = radius; this.amount = amount; gameObject.name = type; transform.position = position; transform.rotation = new Quaternion(); UpdateCollider(); rads = gameObject.AddComponent <TriggerRadiation>(); rads.RadiationAmountOverride = amount; rads.radiationSize = radius; rads.interestLayers = LayerMask.GetMask("Player (Server)"); rads.enabled = true; }
private void OnEntityLeave(TriggerBase trigger, BaseEntity entity) { TriggerRadiation rad = trigger as TriggerRadiation; BasePlayer player = entity as BasePlayer; if (rad == null || player == null || player.IsDead() || entity.IsNpc) { return; } NextTick(() => { if (!player.triggers?.OfType <TriggerRadiation>().Any() ?? true) { MagicPanel?.Call("UpdatePanel", player, Name, (int)UpdateEnum.Image); } }); }
public void CreateZones(string zoneId, Vector3 position, float initialRadius, float timeToTake) { transform.position = position; transform.rotation = new Quaternion(); this.zoneId = zoneId; this.initialRadius = initialRadius; this.timeToTake = timeToTake; innerSphere = (SphereEntity)GameManager.server.CreateEntity(sphereEnt, position, new Quaternion(), true); innerSphere.currentRadius = initialRadius * 2; innerSphere.lerpSpeed = 0; innerSphere.enableSaving = false; innerSphere.Spawn(); var innerRB = innerSphere.gameObject.AddComponent <Rigidbody>(); innerRB.useGravity = false; innerRB.isKinematic = true; innerCollider = gameObject.AddComponent <SphereCollider>(); innerCollider.transform.position = innerSphere.transform.position; innerCollider.isTrigger = true; innerCollider.radius = initialRadius; outerSphere = (SphereEntity)GameManager.server.CreateEntity(sphereEnt, position, new Quaternion(), true); outerSphere.currentRadius = (initialRadius * 2) + bufferSize; outerSphere.lerpSpeed = 0; outerSphere.enableSaving = false; outerSphere.Spawn(); radTrigger = outerSphere.gameObject.AddComponent <TriggerRadiation>(); radTrigger.RadiationAmountOverride = radStrength; radTrigger.radiationSize = initialRadius + bufferSize; radTrigger.interestLayers = LayerMask.GetMask("Player (Server)"); radTrigger.enabled = true; isDisabled = false; gameObject.SetActive(true); enabled = true; }
private void UpdatePlayerRadiation(BasePlayer player, PlayerRadiationData data) { float radAmount = 0f; if (player.triggers != null) { foreach (TriggerBase trigger in player.triggers) { TriggerRadiation radiation = trigger as TriggerRadiation; if (radiation != null) { radAmount = Mathf.Max(radAmount, radiation.GetRadiation(player.transform.position, 0)); } } } float radProtection = player.RadiationProtection(); data.RadAmount = radAmount; data.ProtectionAmount = radProtection; }
void Awake() { radiation = gameObject.AddComponent<TriggerRadiation>(); zone = GetComponent<Zone>(); radiation.RadiationAmount = float.Parse(zone.info.radiation); radiation.radiationSize = GetComponent<UnityEngine.SphereCollider>().radius; radiation.interestLayers = playersMask; }