# hehaoyang1124/aimer architecture

> Architecture diagram of the GitHub repository hehaoyang1124/aimer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hehaoyang1124/aimer
- Repository: https://github.com/hehaoyang1124/aimer

## Overview

AImer provides two Windows aim-assistance applications: a configurable deep-learning application for supported games, and an Aimlabs Gridshot assistant using traditional computer vision. The principal workflow selects a game and target, captures screen frames, detects targets, computes mouse corrections, and sends mouse input; Aimlabs follows a separate capture-and-detect loop. The README documents ONNX Runtime/CUDA and OpenVINO inference options and configurable game/model support. Sampled source confirms screen capture, launcher entry, and mouse-driver selection; detector and launcher internals were not sampled, so their detailed wiring is not inferred.

Main entry points: [`src/AImer-DL/launcher/Launcher.cpp`](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/launcher/Launcher.cpp) (Launcher UI), [`src/AImer-DL/autoAim.cpp`](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/autoAim.cpp) (DL aim loop), [`src/capture/ScreenCapture.cpp`](https://github.com/hehaoyang1124/aimer/blob/main/src/capture/ScreenCapture.cpp) (DXGI capture), [`src/AImer-DL/detector/Detector.cpp`](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/detector/Detector.cpp) (Detector interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_dl["DL application"]
  node_dlmain["DL entry<br/>[main.cpp]"]
  node_launcher["Launcher UI<br/>[Launcher.cpp]"]
  node_games["Game settings<br/>[Games.cpp]"]
  node_dlcontrol["DL aim loop<br/>[autoAim.cpp]"]
end

subgraph group_perception["Capture and detection"]
  node_capture["DXGI capture<br/>[ScreenCapture.cpp]"]
  node_detector["Detector interface<br/>[Detector.cpp]"]
  node_onnx["ONNX inference<br/>[OnnxDetector.cpp]"]
  node_openvino["OpenVINO inference"]
end

subgraph group_aimlab["Aimlabs application"]
  node_aimlabmain["Aimlabs entry<br/>[main.cpp]"]
  node_aimlabvision["Sphere detection<br/>[autoAim.cpp]"]
  node_aimlabcontrol["Aimlabs correction<br/>[autoAim.cpp]"]
end

subgraph group_input["Mouse input"]
  node_mouse["Mouse controller"]
end

node_user(("User"))
node_desktop["Game screen"]
node_models["Model files"]
node_simulator["Input simulator<br/>[InputSimulator.hpp]"]
node_mouseout["Game mouse input"]

node_user -->|"starts"| node_dlmain
node_dlmain -->|"initializes"| node_launcher
node_user -->|"selects options"| node_launcher
node_launcher -->|"loads settings"| node_games
node_launcher -->|"launches"| node_dlcontrol
node_desktop -->|"provides frames"| node_capture
node_capture -->|"supplies frames"| node_dlcontrol
node_dlcontrol -->|"requests detection"| node_detector
node_detector -.->|"uses backend"| node_onnx
node_detector -.->|"uses backend"| node_openvino
node_models -.->|"loads model"| node_onnx
node_models -.->|"loads model"| node_openvino
node_user -->|"starts"| node_aimlabmain
node_aimlabmain -->|"captures via"| node_capture
node_capture -->|"supplies frames"| node_aimlabvision
node_aimlabvision -->|"returns offset"| node_aimlabcontrol
node_aimlabcontrol -->|"requests movement"| node_mouse
node_dlcontrol -->|"requests movement"| node_mouse
node_mouse -->|"sends input"| node_simulator
node_simulator -->|"simulates"| node_mouseout

click node_dlmain "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/main.cpp"
click node_launcher "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/launcher/Launcher.cpp"
click node_games "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/Games.cpp"
click node_dlcontrol "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/autoAim.cpp"
click node_capture "https://github.com/hehaoyang1124/aimer/blob/main/src/capture/ScreenCapture.cpp"
click node_detector "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/detector/Detector.cpp"
click node_onnx "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/detector/OnnxDetector.cpp"
click node_openvino "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/detector/OpenvinoDetector.cpp"
click node_aimlabmain "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-aimlab/main.cpp"
click node_aimlabvision "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-aimlab/autoAim.cpp"
click node_aimlabcontrol "https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-aimlab/autoAim.cpp"
click node_mouse "https://github.com/hehaoyang1124/aimer/blob/main/src/controller/MouseController.cpp"
click node_simulator "https://github.com/hehaoyang1124/aimer/blob/main/deps/IbInputSimulator/InputSimulator.hpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dlmain,node_launcher,node_games,node_dlcontrol,node_user,node_desktop toneBlue
class node_capture,node_detector,node_onnx,node_openvino toneAmber
class node_aimlabmain,node_aimlabvision,node_aimlabcontrol toneMint
class node_mouse toneRose
class node_models,node_mouseout toneIndigo
class node_simulator toneTeal
```

## Components

### DL application

- [DL entry](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/main.cpp): `src/AImer-DL/main.cpp`
- [Launcher UI](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/launcher/Launcher.cpp): `src/AImer-DL/launcher/Launcher.cpp`
- [Game settings](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/Games.cpp): `src/AImer-DL/Games.cpp`
- [DL aim loop](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/autoAim.cpp): `src/AImer-DL/autoAim.cpp`

### Capture and detection

- [DXGI capture](https://github.com/hehaoyang1124/aimer/blob/main/src/capture/ScreenCapture.cpp): `src/capture/ScreenCapture.cpp`
- [Detector interface](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/detector/Detector.cpp): `src/AImer-DL/detector/Detector.cpp`
- [ONNX inference](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/detector/OnnxDetector.cpp): `src/AImer-DL/detector/OnnxDetector.cpp`
- [OpenVINO inference](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-DL/detector/OpenvinoDetector.cpp): `src/AImer-DL/detector/OpenvinoDetector.cpp`

### Aimlabs application

- [Aimlabs entry](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-aimlab/main.cpp): `src/AImer-aimlab/main.cpp`
- [Sphere detection](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-aimlab/autoAim.cpp): `src/AImer-aimlab/autoAim.cpp`
- [Aimlabs correction](https://github.com/hehaoyang1124/aimer/blob/main/src/AImer-aimlab/autoAim.cpp): `src/AImer-aimlab/autoAim.cpp`

### Mouse input

- [Mouse controller](https://github.com/hehaoyang1124/aimer/blob/main/src/controller/MouseController.cpp): `src/controller/MouseController.cpp`

### Other components

- **User**
- **Game screen**
- **Model files**
- [Input simulator](https://github.com/hehaoyang1124/aimer/blob/main/deps/IbInputSimulator/InputSimulator.hpp): `deps/IbInputSimulator/InputSimulator.hpp`
- **Game mouse input**

## Connections

- User → DL entry: starts
- DL entry → Launcher UI: initializes
- User → Launcher UI: selects options
- Launcher UI → Game settings: loads settings
- Launcher UI → DL aim loop: launches
- Game screen → DXGI capture: provides frames
- DXGI capture → DL aim loop: supplies frames
- DL aim loop → Detector interface: requests detection
- Detector interface → ONNX inference: uses backend
- Detector interface → OpenVINO inference: uses backend
- Model files → ONNX inference: loads model
- Model files → OpenVINO inference: loads model
- User → Aimlabs entry: starts
- Aimlabs entry → DXGI capture: captures via
- DXGI capture → Sphere detection: supplies frames
- Sphere detection → Aimlabs correction: returns offset
- Aimlabs correction → Mouse controller: requests movement
- DL aim loop → Mouse controller: requests movement
- Mouse controller → Input simulator: sends input
- Input simulator → Game mouse input: simulates
