VillagerNode InstantiateVillager(Vector3 position) { GameObject newVillager = Instantiate(villagerPrefab, position, Quaternion.identity); VillagerNode villagerNode = newVillager.AddComponent <VillagerNode>(); villagerNode.SetUp(defaultVillageName); return(villagerNode); }
VillagerNode RandomCreateVillager(Vector3 approximatePosition, float radius) { float angle = Random.Range(0f, 359f); float magnitude = Random.Range(0, radius); Vector3 offsetFromCenter = Quaternion.Euler(0, angle, 0) * (Vector3.forward * magnitude); Vector3 targetPosition = approximatePosition + offsetFromCenter; VillagerNode villager = InstantiateVillager(targetPosition); PutObjectOnGround(villager.transform); return(villager); }
HashSet <VillagerNode> GenerateVillagers() { Villagers = new HashSet <VillagerNode>(); // Instantiate the villagers for (int i = 0; i < VillageData.HeadCount; i++) { string newVillagerName = $"{Name}.{defaultVillagerName}.{i}"; Vector3 newVillagerPos = UtilityFunctions.GetRandomVector3(CenterPosition, MaxRadius); VillagerNode newVillagerNode = CreateVillager(newVillagerName, newVillagerPos); Villagers.Add(newVillagerNode); } return(Villagers); }
public INode DuplicateNode(bool selfLink = false) { VillagerNode newNode = new VillagerNode(Name); foreach (var link in Linked) { newNode.AddLink(link); } if (selfLink) { newNode.AddLink(this); } return(newNode); }
public VillagerNode CreateVillager(string villagerName, Vector3 position) { GameObject newVillager = Instantiate(VillageData.villagerPrefab, position, Quaternion.identity); UtilityFunctions.PutObjectOnGround(newVillager.transform); VillagerNode villagerNode = newVillager.AddComponent <VillagerNode>(); villagerNode.SetUp(villagerName); villagerNode.transform.parent = transform; Villagers.Add(villagerNode); AddLink(villagerNode); return(villagerNode); }