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; }
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; } }