Beispiel #1
0
    private void MoveFire()
    {
        float radius = 0.0f;

        if (BurnController.GetInstance() != null)
        {
            radius = BurnController.GetInstance().burningZone.radius;
        }
        foreach (var system in particles)
        {
            var   width = occluder.transform.localScale.x;
            float sign;
            if (system.transform.localPosition.x < 0)
            {
                // Left side
                sign = -1;
            }
            else
            {
                // Right Side
                sign = 1;
            }
            var position = system.transform.localPosition;
            position.x = sign * (width / 2);
            system.transform.localPosition = position;

            if (followRadius)
            {
                // Update radius
                var shapeModule = system.shape;
                shapeModule.radius = radius;
            }
        }
    }
Beispiel #2
0
 // Use this for initialization
 void Start()
 {
     if (BurnController.GetInstance() != null)
     {
         BurnController.GetInstance().AddErasureBeam(this);
     }
 }
Beispiel #3
0
    private Spawner GetSpawner(SpawnConfig config)
    {
        if (limitIfLowRadius && BurnController.GetInstance().burningZone.radius < 10)
        {
            return(config.spawners[0]);
        }

        var spawnerIndex    = Random.Range(0, config.spawners.Length);
        var spawner         = config.spawners[spawnerIndex];
        var corner1         = spawner.transform.position + new Vector3(-.5f, .5f, 0);
        var corner2         = spawner.transform.position + new Vector3(.5f, -.5f, 0);
        int layerMask       = 1 << (int)Layers.PLAYER;
        var overlapCollider = Physics2D.OverlapArea(corner1, corner2, layerMask);

        if (overlapCollider != null && overlapCollider.GetComponent <Player>() != null)
        {
            if (spawnerIndex > 0)
            {
                return(config.spawners[spawnerIndex - 1]);
            }
            else if (spawnerIndex < config.spawners.Length)
            {
                return(config.spawners[spawnerIndex + 1]);
            }
            return(null);
        }

        return(spawner);
    }
Beispiel #4
0
 void Awake()
 {
     if (sBurnController != null && sBurnController != this)
     {
         Destroy(sBurnController.gameObject);
     }
     sBurnController = this;
 }
Beispiel #5
0
    private IEnumerator SpawnPlayerAfterDelay()
    {
        yield return(new WaitForSeconds(spawnTime));

        SpawnPlayer();
        Instantiate(defaultWeaponPickupPrefab, playerSpawn);

        if (BurnController.GetInstance().burningZone.radius < 9)
        {
            Instantiate(jetpackPickupPrefab, playerSpawn);
        }
    }
Beispiel #6
0
 public virtual void Damage(float value)
 {
     entity.health = entity.health - value;
     if (entity.health <= 0)
     {
         if (entity is Enemy)
         {
             var enemy = (Enemy)entity;
             BurnController.GetInstance().AddToRadius(enemy.radiusIncrease);
         }
     }
 }
    //Create null projection
    void Start()
    {
        if (isProjection || willNullDestroy)
        {
            return;
        }

        burnController = GetComponent <BurnController>();
        torchComponent = GetComponent <TorchTrigger>();

        Rigidbody rb             = GetComponent <Rigidbody>();
        bool      kinematicState = false;

        if (rb != null)
        {
            kinematicState = rb.isKinematic;
            rb.isKinematic = true;
        }

        StartCoroutine(HandleKinematicState(rb, kinematicState));

        nullProjection = Instantiate(gameObject, gameObject.transform.position, gameObject.transform.rotation);
        nullProjection.transform.localScale *= torchComponent == null ? 1.125f : 1.0625f;
        nullProjection.transform.SetParent(gameObject.transform);
        nullProjection.layer = LayerMask.NameToLayer("Ignore Raycast");
        nullProjection.GetComponent <NullManager>().isProjection = true;

        Component[] allComponents = nullProjection.GetComponents <Component>();

        foreach (Component comp in allComponents)
        {
            if (!(comp.GetType() == typeof(Transform) || comp.GetType() == typeof(MeshFilter) || comp.GetType() == typeof(MeshRenderer)))
            {
                Destroy(comp);
            }
        }

        foreach (Material mat in nullProjection.GetComponentInChildren <MeshRenderer>().materials)
        {
            mat.shader = nullShader;
            mat.SetColor("_Colour", new Color(0.25f, 0.375f, 1.0f, 0.5f));
        }

        nullProjection.SetActive(false);

        nulleffect = Instantiate(nullParticles, gameObject.transform.position, gameObject.transform.rotation, nullProjection.transform);
    }
Beispiel #8
0
    private bool AreAllContactsOutsideZone(Collision2D collision)
    {
        int            count          = collision.GetContacts(contacts);
        int            pointsOutside  = 0;
        BurnController burnController = BurnController.GetInstance();

        for (int i = 0; i < count; i++)
        {
            if (!contacts[i].enabled)
            {
                pointsOutside++;
                continue;
            }

            if (burnController.IsOutsideZone(contacts[i].point))
            {
                pointsOutside++;
            }
        }
        return(pointsOutside == count);
    }
    protected void CheckGrounded()
    {
        if (animator.GetBool(AnimatorStates.IsGrounded))
        {
            return;
        }

        int          layerMask = 1 << (int)Layers.GEOMETRY;
        RaycastHit2D hit       = Physics2D.Raycast(transform.position, Vector2.down, actorHeight / 2f, layerMask);

        if (hit.transform == null)
        {
            return;
        }
        var burnController = BurnController.GetInstance();

        if (burnController.IsOutsideZone(hit.point))
        {
            return;
        }
        Ground();
    }
    //On entering the flame, set flammable, un-nulled objects on fire
    private void OnTriggerEnter(Collider other)
    {
        BurnController bc = other.gameObject.GetComponent <BurnController>();

        if (bc != null)
        {
            bool canBurn = true;

            NullManager nm = other.gameObject.GetComponent <NullManager>();

            if (nm != null)
            {
                if (nm.IsNulled)
                {
                    nullObjects.Add(nm);

                    canBurn = false;
                }
            }

            bc.enabled = canBurn;
        }
    }
Beispiel #11
0
 // Update is called once per frame
 protected override void Update()
 {
     if (occluder != null)
     {
         MoveFire();
     }
     else if (!isDone)
     {
         if (BurnController.GetInstance() != null)
         {
             BurnController.GetInstance().RemoveErasureBeam(this);
         }
         isDone = true;
         foreach (var system in particles)
         {
             if (system != null)
             {
                 system.Stop(false, ParticleSystemStopBehavior.StopEmitting);
             }
         }
         StartCoroutine("DestroySelf");
     }
 }
Beispiel #12
0
 // Use this for initialization
 void Start()
 {
     burnController = BurnController.GetInstance();
     burnController.decreasePerSecond = startRate;
 }