Example #1
0
        private GeoRock GetClosestRock(GeoControl geo)
        {
            //This isn't efficient at all but it's fine because the value is cached in rockChasers
            List <GeoRock> validRocks = rocks.Where(rockPair => !rockChasers.ContainsKey(rockPair.Key)).Select(rockPair => rockPair.Key).ToList();

            if (validRocks.Count == 0)
            {
                return(null);
            }

            GeoRock closest     = validRocks[0];
            float   closestDist = DistBetween(validRocks[0].transform.position, geo.transform.position);

            foreach (GeoRock rock in validRocks)
            {
                float newDist = DistBetween(rock.transform.position, geo.transform.position);
                if (newDist < closestDist)
                {
                    closestDist = newDist;
                    closest     = rock;
                }
            }

            return(closest);
        }
Example #2
0
 private void UnRegisterGeoRock(On.GeoRock.orig_OnDisable orig, GeoRock self)
 {
     orig(self);
     if (rocks.ContainsKey(self))
     {
         rocks.Remove(self);
     }
     if (rockChasers.ContainsKey(self))
     {
         rockChasersReverseLookup.Remove(rockChasers[self]);
         rockChasers.Remove(self);
     }
 }
Example #3
0
 private void RegisterGeoRock(On.GeoRock.orig_OnEnable orig, GeoRock self)
 {
     orig(self);
     rocks.Add(self, self.gameObject.GetComponent <PlayMakerFSM>());
 }