private void SpawnStar()
 {
     Instantiate(BigStarPrefabs[Random.Range(0, BigStarPrefabs.Length)], MathFormulas.RandomCircle(Vector3.zero, RadiusSpawnFromCenter, Random.Range(MinAngleSpawn, MaxAngleSpawn)), Quaternion.identity);
 }
Ejemplo n.º 2
0
        //[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
            });
        }