private void SpawnStar() { Instantiate(BigStarPrefabs[Random.Range(0, BigStarPrefabs.Length)], MathFormulas.RandomCircle(Vector3.zero, RadiusSpawnFromCenter, Random.Range(MinAngleSpawn, MaxAngleSpawn)), Quaternion.identity); }
//[BurstCompile] //Integrator:ParallelIntegrateMotionsJob //public struct PointDistanceJob : IJob //{ // public PointDistanceInput PointDistanceInput; // public NativeList<DistanceHit> DistanceHits; // [ReadOnly] public PhysicsWorld World; // public void Execute() // { // if (World.CalculateDistance(PointDistanceInput, out DistanceHit hit)) // { // DistanceHits.Add(hit); // } // } //} //void GetClosestEnemy(float3 origin, float distance, NativeList<DistanceHit> distanceHits) //{ // distanceHits.Clear(); // ref PhysicsWorld world = ref GameDataManager.DefaultWorld.GetExistingSystem<BuildPhysicsWorld>().PhysicsWorld; // PointDistanceInput.Position = origin; // PointDistanceInput.MaxDistance = distance; // new PointDistanceJob // { // PointDistanceInput = PointDistanceInput, // DistanceHits = distanceHits, // World = world, // }.Schedule().Complete(); //} private void SpawnProjectiles(int i, float startAngle, TowerType towerType) { Vector3 pos; //Alternate sides for extra projectiles. if (i % 2 == 1) { pos = MathFormulas.RandomCircle(Vector3.zero, TowerRadius, startAngle + angleOffset * ((i + 1) / 2)); } else { pos = MathFormulas.RandomCircle(Vector3.zero, TowerRadius, startAngle - angleOffset * (i / 2)); } Entity bullet; switch (towerType) { case TowerType.Physical: default: if (MainReferences.optionsManager.ShowPhysicalProjectiles) { bullet = GameDataManager.instance.Manager.Instantiate(physicalPrefabEntity); } else { bullet = GameDataManager.instance.Manager.Instantiate(physicalPrefabNoGraphicsEntity); } break; case TowerType.Ice: if (MainReferences.optionsManager.ShowIceProjectiles) { bullet = GameDataManager.instance.Manager.Instantiate(icePrefabEntity); } else { bullet = GameDataManager.instance.Manager.Instantiate(icePrefabNoGraphicsEntity); } break; case TowerType.Fire: if (MainReferences.optionsManager.ShowFireProjectiles) { bullet = GameDataManager.instance.Manager.Instantiate(firePrefabEntity); } else { bullet = GameDataManager.instance.Manager.Instantiate(firePrefabNoGraphicsEntity); } break; case TowerType.Poison: if (MainReferences.optionsManager.ShowPoisonProjectiles) { bullet = GameDataManager.instance.Manager.Instantiate(poisonPrefabEntity); } else { bullet = GameDataManager.instance.Manager.Instantiate(poisonPrefabNoGraphicsEntity); } break; case TowerType.Lightning: if (MainReferences.optionsManager.ShowLightningProjectiles) { bullet = GameDataManager.instance.Manager.Instantiate(lightningPrefabEntity); } else { bullet = GameDataManager.instance.Manager.Instantiate(lightningPrefabNoGraphicsEntity); } break; } GameDataManager.instance.Manager.SetComponentData(bullet, new Translation { Value = pos }); GameDataManager.instance.Manager.SetComponentData(bullet, new BulletData { BulletType = (int)towerType, moveSpeed = AllSettings.Instance.ProjectilMoveSpeed, moveDirection = pos }); }