public void Setup(Vector2 chunkCoord) { if (GameManager.instance.server) { System.Random prng = new System.Random(GameManager.instance.seed + (int)(transform.position.x + transform.position.y)); var pool = ObjectPooler.Instance.items; foreach (Transform item in itemSpawnPoint) { int random = prng.Next(0, pool.Count); GameObject newItem = ObjectPooler.Instance.IndexSpawnFromPool(pool, random); newItem.transform.rotation = item.rotation; if (newItem.CompareTag("Weapon")) { newItem.transform.Rotate(new Vector3(0, 0, 90)); newItem.transform.position = item.position + new Vector3(0, 0.05f, 0); } else { newItem.transform.position = item.position; } newItem.SetActive(true); NetworkServer.Spawn(newItem, SpawnManager.instance.itemIds[random]); ItemPickup itemPickup = newItem.GetComponent <ItemPickup>(); ServerTerrainGenerator.instance.GetChunk(chunkCoord).onObserverChangedCallback += itemPickup.EditObservers; foreach (NetworkConnection observer in GameManager.GetObservers(chunkCoord)) { itemPickup.EditObservers(observer, true); } newItem.transform.SetParent(item); } } }