public static GameObject[] GetGameObjectsWithRAETag(RAETag tag)
 {
     if (raeMap.ContainsKey(tag))
     {
         return(raeMap[tag].ToArray <GameObject>());
     }
     return(new GameObject[0]);
 }
 private static void AddToRAEMap(RAETag tag, GameObject gob)
 {
     if (!raeMap.ContainsKey(tag))
     {
         raeMap[tag] = new HashSet <GameObject>();
     }
     raeMap[tag].Add(gob);
 }
 private static void MoveTag(RAETag oldTag, RAETag newTag, GameObject gob)
 {
     if (oldTag == newTag)
     {
         return;
     }
     if (raeMap[oldTag].Remove(gob))
     {
         AddToRAEMap(newTag, gob);
     }
 }
 private static void MoveTag(RAETag oldTag, RAETag newTag, GameObject gob)
 {
     if (oldTag == newTag)
         return;
     if (raeMap[oldTag].Remove(gob)) {
         AddToRAEMap(newTag, gob);
     }
 }
 private static void AddToRAEMap(RAETag tag, GameObject gob)
 {
     if (!raeMap.ContainsKey(tag)) {
         raeMap[tag] = new HashSet<GameObject>();
     }
     raeMap[tag].Add(gob);
 }
 public static GameObject[] GetGameObjectsWithRAETag(RAETag tag)
 {
     if(raeMap.ContainsKey(tag))
         return raeMap[tag].ToArray<GameObject>();
     return new GameObject[0];
 }