Exemple #1
0
        protected override void OnUpdate()
        {
            Entity hitEntity;

            Entities
            .WithoutBurst()
            .WithStructuralChanges()
            .ForEach((
                         Entity entity,
                         int entityInQueryIndex,
                         ref MouseInput mouseInput
                         ) => {
                if (mouseInput.primaryAction == 0)
                {
                    return;
                }

                hitEntity = RaycastUtils.Raycast(
                    mouseInput.mousePosition,
                    out RaycastHit hit,
                    buildPhysicsWorldSystem
                    );

                if (hitEntity == Entity.Null)
                {
                    return;
                }

                if (EntityManager.HasComponent <SettlerTag>(hitEntity))
                {
                    SelectUnit.Create(hitEntity);
                    // EntityManager.AddComponentData<Selected>(hitEntity, new Selected {});
                    mouseInput.primaryAction = 0;

                    return;
                }

                HexCoordinates coordinates = CoordinatesService.GetCoordinatesFromPosition(hit.Position);
                Entity selectedEntity      = HexCellService.FindBy(coordinates);

                if (EntityManager.HasComponent <Selected>(selectedEntity))
                {
                    SelectCommand.Remove(coordinates);
                }
                else
                {
                    SelectCommand.Create(coordinates);
                }

                mouseInput.primaryAction = 0;
            })
            .Run();
        }