private static void seeTilesQuad(Seeable[,] world, Vector2 location, Vector2 angles, float distance, int quad, RoundingMode rmode, params object[] parameters) { Queue <SightCol> queue = new Queue <SightCol>(); int tilesize = world[0, 0].getBounds().Width; int curDist = 0; enqueNext(world, location, tilesize, queue, curDist, angles, quad, rmode); while (queue.Count != 0) //Process Row { curDist++; SightCol s = queue.Dequeue(); Vector2 newAngles = new Vector2(0, 0); bool curblock = false; bool topused = false; bool firstblock = true; while (!s.isDone()) { Seeable seb = s.getNextSeeable(); if (LocationManager.distanceCheck(location, new Vector2(seb.getBounds().X, seb.getBounds().Y), distance)) { seb.see(parameters); if (firstblock) { firstblock = false; topused = true; newAngles.X = angles.X; } if (seb.isTransparent() && curblock) { topused = true; curblock = false; newAngles.X = getAngleToNessecaryCorner(location, seb.getBounds(), quad, true); } else if (!seb.isTransparent()) { if (topused && !curblock) { newAngles.Y = getAngleToNessecaryCorner(location, seb.getBounds(), quad, false); enqueNext(world, location, tilesize, queue, s.cDist + 1, newAngles, quad, rmode); } else if (!curblock) { curblock = true; } } } } if (curblock) { newAngles.Y = s.angles.Y; enqueNext(world, location, tilesize, queue, s.cDist + 1, newAngles, quad, rmode); } } }
// Start is called before the first frame update void Start() { List <string> deck2 = Local2PHandlerScr.GenerateDeck(); gameHandler2 = FindObjectOfType <Local2PHandlerScr>(); int i = 0; foreach (string card in deck2) { if (this.name == card) { cardFace = gameHandler2.cardFaces[i]; break; } i++; } spriteRenderer = GetComponent <SpriteRenderer>(); seeable = GetComponent <Seeable>(); }