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;
 }
示例#2
0
        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);
            });
        }
示例#3
0
            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;
            }
示例#4
0
        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);
                }
            });
        }
示例#5
0
            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;
            }
示例#6
0
        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;
        }
示例#7
0
 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;
 }