Example #1
0
    public static bool IsWorldPosPowered(Vector3 pos, PowerField ignore = null)
    {
        int powerLayer = 1<<LayerMask.NameToLayer("PowerField");

        GameObject myField = ignore? ignore.instantiatedField : null;
        Collider me = myField ? myField.collider : null;

        //Collider[] overlap = Physics.OverlapSphere(pos, BuildGrid.getGridSize(), powerLayer);
        Collider[] overlap = Physics.OverlapSphere(pos, 0f, powerLayer);
        foreach(Collider c in overlap) if(c!=me) return true;
        return false;
    }
Example #2
0
    public static bool IsWorldPosPowered(Vector3 pos, PowerField ignore = null)
    {
        int powerLayer = 1 << LayerMask.NameToLayer("PowerField");

        GameObject myField = ignore? ignore.instantiatedField : null;
        Collider   me      = myField ? myField.collider : null;

        //Collider[] overlap = Physics.OverlapSphere(pos, BuildGrid.getGridSize(), powerLayer);
        Collider[] overlap = Physics.OverlapSphere(pos, 0f, powerLayer);
        foreach (Collider c in overlap)
        {
            if (c != me)
            {
                return(true);
            }
        }
        return(false);
    }
    void Update()
    {
        if (!PowerField.IsWorldPosPowered(transform.position))
        {
            //Try to preserve the move delay when power is lost, rather keep another varible, this is mostly correct
            nextMoveTime += Time.deltaTime;
            return;
        }

        UpdateHarvest();
        UpdateDeposit();
        UpdateMovement();

        if (state == States.idle && nextMoveTime <= Time.timeSinceLevelLoad)
        {
            //Check resource before we rotate
            if (!CheckHarvest() && !CheckDeposit())
            {
                CheckMovement();
            }
        }
    }
    void Update()
    {
        if (!PowerField.IsWorldPosPowered(transform.position))
        {
            //Try to preserve the move delay when power is lost, rather keep another varible, this is mostly correct
            nextGenerationTime += Time.deltaTime;
            return;
        }

        if (depot.HasReource(TileTypes.SCRAP) && !resource.IsSpawned())
        {
            float time = Time.timeSinceLevelLoad;
            if (nextGenerationTime <= time)
            {
                resource.SetHarvestItem(depot.gearOutputMarker);
                resource.Respawn();
                depot.SetOutputResource(TileTypes.GEAR);
                depot.SetInputResource(TileTypes.NONE);
                nextGenerationTime = Time.timeSinceLevelLoad + FORGE_TIME;
            }
        }
        else if (depot.HasReource(TileTypes.WATER) && !resource.IsSpawned())
        {
            float time = Time.timeSinceLevelLoad;
            if (nextGenerationTime <= time)
            {
                resource.SetHarvestItem(depot.steamOutputMarker);
                resource.Respawn();
                depot.SetOutputResource(TileTypes.STEAM);
                depot.SetInputResource(TileTypes.NONE);
                nextGenerationTime = Time.timeSinceLevelLoad + FORGE_TIME;
            }
        }
        else
        {
            //Grrr...
            nextGenerationTime = Time.timeSinceLevelLoad + FORGE_TIME;
        }
    }