protected override void OnUpdate() { EntityQuery entityQuery = GetEntityQuery(typeof(Zombie)); int entityCount = entityQuery.CalculateEntityCount(); MarineShotZombieAction marineShotZombieAction; while (TestECS.queuedActions.TryDequeue(out marineShotZombieAction)) { if (EntityManager.Exists(marineShotZombieAction.marineEntity) && EntityManager.Exists(marineShotZombieAction.zombieEntity)) { float3 marinePosition = EntityManager.GetComponentData <Translation>(marineShotZombieAction.marineEntity).Value; float3 zombiePosition = EntityManager.GetComponentData <Translation>(marineShotZombieAction.zombieEntity).Value; float3 marineToZombieDir = math.normalize(zombiePosition - marinePosition); bool bonusEffects = (entityCount < 400 || UnityEngine.Random.Range(0, 100) < 60); if (bonusEffects) { WeaponTracer.Create(marinePosition + marineToZombieDir * 10f, (Vector3)zombiePosition + UtilsClass.GetRandomDir() * UnityEngine.Random.Range(0, 20f)); Shoot_Flash.AddFlash(marinePosition + marineToZombieDir * 14f); Blood_Handler.SpawnBlood(2, zombiePosition, marineToZombieDir); UtilsClass.ShakeCamera(TestECS.GetCameraShakeIntensity(), .05f); //Sound_Manager.PlaySound(Sound_Manager.Sound.Rifle_Fire, marinePosition); } Health zombieHealth = EntityManager.GetComponentData <Health>(marineShotZombieAction.zombieEntity); zombieHealth.health -= marineShotZombieAction.damageAmount; if (zombieHealth.health < 0) { // Zombie dead! FlyingBody.TryCreate(GameAssets.i.pfEnemyFlyingBody, zombiePosition, marineToZombieDir); EntityManager.DestroyEntity(marineShotZombieAction.zombieEntity); EntityManager.RemoveComponent <HasTarget>(marineShotZombieAction.marineEntity); } else { // Zombie still has health EntityManager.SetComponentData(marineShotZombieAction.zombieEntity, zombieHealth); } } else { if (EntityManager.Exists(marineShotZombieAction.marineEntity) && !EntityManager.Exists(marineShotZombieAction.zombieEntity)) { // Marine exists but zombie is dead EntityManager.RemoveComponent <HasTarget>(marineShotZombieAction.marineEntity); } } } }
protected override void OnUpdate() { if (Input.GetMouseButtonDown(0)) { Debug.Log("Mouse Button Down"); var mousePos = Input.mousePosition; var ray = Camera.main.ScreenPointToRay(mousePos); ref var world = ref World.Active.GetExistingSystem <BuildPhysicsWorld>().PhysicsWorld.CollisionWorld; var input = new RaycastInput(); input.Start = ray.origin; input.End = ray.origin + ray.direction * 1000; input.Filter = TestECS.filter((1 << 8), 0); if (world.CastRay(input, out var hit)) { Debug.LogFormat("Collider Hit! {0}", hit.ToString()); } }
private void Awake() { //Sound_Manager.Init((Sound_Manager.AudioType audioType) => .015f); instance = this; queuedActions = new NativeQueue <MarineShotZombieAction>(Allocator.Persistent); }