private void AddTree(Coordinates position)
        {
            var treeEntityId  = GenerateId();
            var spawnRotation = (uint)Mathf.CeilToInt((float)rand.NextDouble() * 360);

            snapshotEntities.Add(treeEntityId, EntityTemplateFactory.CreateTreeTemplate(position, spawnRotation));
        }
 private void AddHQs()
 {
     for (int teamId = 0; teamId < SimulationSettings.TeamHQLocations.Length; teamId++)
     {
         var hqentityId = GenerateId();
         snapshotEntities.Add(hqentityId, EntityTemplateFactory.CreateHQEntitySnapShotTemplate(SimulationSettings.TeamHQLocations[teamId], 0, (uint)teamId));
     }
 }
        private void SpawnNpcsAroundPosition(Coordinates position, uint team)
        {
            float totalNpcs    = SimulationSettings.HQStartingWizardsCount + SimulationSettings.HQStartingLumberjacksCount;
            float radiusFromHQ = SimulationSettings.HQSpawnRadius;

            for (int i = 0; i < totalNpcs; i++)
            {
                float x = radiusFromHQ * Mathf.Cos((i / totalNpcs) * 2 * Mathf.PI);
                float z = radiusFromHQ * Mathf.Sin((i / totalNpcs) * 2 * Mathf.PI);

                Coordinates coordinates = (position.ToVector3() + new Vector3(x, 0, z)).ToCoordinates();

                if (i < SimulationSettings.HQStartingLumberjacksCount)
                {
                    snapshotEntities.Add(GenerateId(), EntityTemplateFactory.CreateNPCLumberjackTemplate(coordinates, team));
                }
                else
                {
                    snapshotEntities.Add(GenerateId(), EntityTemplateFactory.CreateNPCWizardSnapshotTemplate(coordinates, team));
                }
            }
        }
 private void AddSimulationManagerEntity()
 {
     snapshotEntities.Add(GenerateId(), EntityTemplateFactory.CreateSimulationManagerEntitySnapshotTemplate(teamList));
 }