コード例 #1
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            var settings = AsteroidsBootstrap.Settings;

            if (settings == null)
            {
                return(inputDeps);
            }

            var EnemiesVsPlayers = new ShotCollisionJob {
                CollisionRadiusSquared = settings.playerCollisionRadius * settings.playerCollisionRadius,
                health        = m_Players.Health,
                Positions     = m_Players.Position,
                Shots         = m_EnemyShots.Shot,
                ShotPositions = m_EnemyShots.Position
            }.Schedule(m_Players.Length, 1, inputDeps);

            var playersVsEnemies = new ShotCollisionJob {
                CollisionRadiusSquared = settings.enemyCollisionRadius * settings.enemyCollisionRadius,
                health        = m_Enemies.Health,
                Positions     = m_Enemies.Position,
                Shots         = m_PlayerShots.Shot,
                ShotPositions = m_PlayerShots.Position
            }.Schedule(m_Enemies.Length, 1, EnemiesVsPlayers);

            return(playersVsEnemies);
        }
コード例 #2
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            var settings = AsteroidsArcadeBootstrap.Settings;

            if (settings == null)
            {
                return(inputDeps);
            }

            EnemiesSelfCollisions enemiesVsEnemies = new EnemiesSelfCollisions
            {
                Positions = m_Enemies.Position,
                Health    = m_Enemies.Health,
                CollisionRadiusSquared = settings.enemyCollisionRadius * settings.enemyCollisionRadius
            };
            JobHandle enemiesVsEnemiesHandle = enemiesVsEnemies.Schedule(m_Enemies.Length, 2, inputDeps);

            ShotCollisionJob playersVsEnemies = new ShotCollisionJob
            {
                ShotPositions          = m_PlayerShots.Position,
                Shots                  = m_PlayerShots.Shot,
                CollisionRadiusSquared = settings.enemyCollisionRadius * settings.enemyCollisionRadius,
                Subdiv                 = m_Enemies.Subdiv,
                Health                 = m_Enemies.Health,
                Positions              = m_Enemies.Position,
                Score                  = m_Players.Score,
                bigScore               = settings.enemyBigAsteroidPoints,
                mediumScore            = settings.enemyMediumAsteroidPoints,
                smallScore             = settings.enemySmallAsteroidPoints
            };
            JobHandle playersVsEnemiesHandle = playersVsEnemies.Schedule(m_Enemies.Length, 1, enemiesVsEnemiesHandle);

            playersVsEnemiesHandle.Complete();

            JobHandle enemiesVsPlayer = new PlayerCollisionJob
            {
                CollisionRadiusSquared = settings.playerCollisionRadius * settings.playerCollisionRadius,
                Positions    = m_Players.Position,
                Health       = m_Players.Health,
                Enemies      = m_Enemies.Position,
                Invulnerable = m_Players.Invulnerable,
                Cooldown     = settings.playerInvulnerableCooldown
            }.Schedule(m_Players.Length, 1, playersVsEnemiesHandle);

            return(enemiesVsPlayer);
        }