diff --git a/.gitignore b/.gitignore index d3a929b5..e0a4e76e 100644 --- a/.gitignore +++ b/.gitignore @@ -339,6 +339,8 @@ unreal/**/Saved unreal/**/Package unreal/**/.vscode unreal/**/ProjectAirSim/SimLibs +unreal/**/DerivedDataCache +unreal/**/Samples # VS Code projects *.code-workspace @@ -376,3 +378,5 @@ env/ # Simulink cache **/slprj *.slxc + +venv \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 3713ee90..26d06737 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,48 @@ { - "cmake.buildDirectory": "${workspaceFolder}/build/${variant:platform}/${variant:buildType}", - "cmake.generator": "Ninja", - "python.formatting.provider": "black", - "python.analysis.extraPaths": [ - "client/python" - ] + "editor.tabSize": 2, + "editor.showFoldingControls": "always", + "editor.minimap.showSlider": "always", + "editor.rulers": [ + 80 + ], + "files.trimTrailingWhitespace": true, + "files.exclude": { + "**/Intermediate": false, + "**/Binaries": true, + "**/Saved": true, + "**/Content": true, + "**/.pytest_cache": true, + "**/__pycache__": true, + "**/Plugins/ProjectAirSim/SimLibs": true + }, + "debug.onTaskErrors": "abort", + "debug.toolBarLocation": "docked", + "debug.showBreakpointsInOverviewRuler": true, + "terminal.integrated.scrollback": 1000000, + "cmake.configureOnOpen": false, + "cmake.autoSelectActiveFolder": false, + "C_Cpp.intelliSenseEngineFallback": "Enabled", + "C_Cpp.vcpkg.enabled": false, + "[cpp]": { + "editor.defaultFormatter": "ms-vscode.cpptools" + }, + "testMate.cpp.test.executables": "build/**/Debug/**/*test*", + "python.linting.enabled": true, + "python.linting.pylintEnabled": false, + "python.linting.flake8Enabled": true, + "python.linting.flake8CategorySeverity.E": "Information", + "python.linting.flake8Args": [ + "--max-line-length=88" + ], + "[python]": { + "editor.defaultFormatter": "ms-python.python", + "editor.rulers": [ + 88 + ], + }, + "python.formatting.provider": "black", + "python.formatting.blackArgs": [ + "--line-length", + "88" + ] } \ No newline at end of file diff --git a/Architecture.md b/Architecture.md new file mode 100644 index 00000000..a4790b90 --- /dev/null +++ b/Architecture.md @@ -0,0 +1,1272 @@ +# Project AirSim Complete Architecture Overview + +## System Overview + +Project AirSim is a comprehensive simulation platform that transforms Unreal Engine 5 into a robotics and autonomous systems development environment. It combines photo-realistic 3D rendering, advanced physics simulation, and network-based APIs to create a complete ecosystem for testing and developing autonomous vehicles. + +``` +┌─────────────────────────────────────────────────────────────────────────────────┐ +│ PROJECT AIRSIM SYSTEM │ +│ ┌─────────────────────────────────────────────────────────────────────────┐ │ +│ │ UNREAL ENGINE 5 SIMULATION ENVIRONMENT │ │ +│ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ +│ │ │ PROJECTAIRSIM PLUGIN (UE INTEGRATION) │ │ │ +│ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ +│ │ │ │ SIM LIBS (C++ CORE SIMULATION) │ │ │ │ +│ │ │ │ ┌─────────────┬─────────────┬─────────────┐ │ │ │ │ +│ │ │ │ │ VEHICLE │ PHYSICS │ SENSORS │ │ │ │ │ +│ │ │ │ │ APIS │ ENGINES │ SYSTEM │ │ │ │ │ +│ │ │ │ └─────────────┴─────────────┴─────────────┘ │ │ │ │ +│ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ +│ │ └─────────────────────────────────────────────────────────────────┘ │ │ +│ └─────────────────────────────────────────────────────────────────────────┘ │ +└─────────────────────┬───────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────────┐ +│ CLIENT APPLICATIONS │ +│ ┌─────────────┬─────────────┬─────────────┬─────────────┐ │ +│ │ PYTHON │ ROS │ MAVLINK │ CUSTOM │ │ +│ │ API │ BRIDGE │ GCS │ CONTROLLERS │ │ +│ └─────────────┴─────────────┴─────────────┴─────────────┘ │ +└─────────────────────────────────────────────────────────────────────────────────┘ +``` + +## Core Architecture Components + +### 1. Unreal Engine 5 Foundation + +**Blocks Project** (`unreal/Blocks/`) +- Primary UE5 project containing the simulation environment +- Configured for UE 5.7 with ProjectAirSim plugin enabled +- Contains simulation levels (BlocksMap.umap, GISMap.umap) +- Manages content assets and Blueprints + +**Key Configuration**: +```json +{ + "EngineAssociation": "5.7", + "Plugins": ["ProjectAirSim"], + "TargetPlatforms": ["WindowsNoEditor", "LinuxNoEditor"] +} +``` + +### 2. ProjectAirSim Plugin (Bridge Layer) + +**Location**: `unreal/Blocks/Plugins/ProjectAirSim/` + +**Purpose**: Native UE5 plugin that integrates C++ simulation libraries with Unreal's runtime. + +**Architecture**: +``` +Plugin Structure +├── ProjectAirSim.uplugin (Plugin manifest) +├── Source/ProjectAirSim/ (C++ source) +│ ├── Public/ (API headers) +│ └── Private/ (Implementation) +├── SimLibs/ (Compiled C++ DLLs) +├── Content/ (UE assets) +└── Binaries/ (Platform binaries) +``` + +**Key Classes**: +- `AProjectAirSimGameMode`: Manages simulation lifecycle +- `AUnrealSimLoader`: Loads and manages Sim Libs +- `AUnrealRobot`: UE Actor representing robots +- `AUnrealSensor`: Base class for sensors + +### 3. Sim Libs (Core Simulation Engine) + +**Location**: `projectairsim/` (root CMake project) + +**Purpose**: Cross-platform C++ libraries providing the simulation framework. + +**Component Architecture**: +``` +Sim Libs Modules +├── core_sim/ (Simulation loop, scene management) +├── vehicle_apis/ (Robot controllers: MAVLink, ArduPilot, PX4) +├── physics/ (Physics engines: PhysX, Bullet, custom) +├── mavlinkcom/ (MAVLink protocol implementation) +├── rendering/ (Rendering components) +├── sensors/ (Sensor simulation) +└── simserver/ (Network server, API management) +``` + +## System Startup and Initialization + +### 1. UE5 Editor Launch Sequence + +``` +UE5 Editor Start + ↓ +Load Blocks.uproject + ↓ +Initialize ProjectAirSim Plugin + ↓ +FProjectAirSimModule::StartupModule() + ↓ +Register AProjectAirSimGameMode + ↓ +Ready for Play Mode +``` + +### 2. Simulation Launch Sequence + +``` +Press "Play" in UE Editor + ↓ +AProjectAirSimGameMode::StartPlay() + ↓ +AUnrealSimLoader::LaunchSimulation() + ↓ +├── Configure UE Settings (CustomDepth, etc.) +├── Load SimServer (C++ DLL) +├── Load Scene Configuration (JSON) +├── Spawn UE Actors (Robots, Sensors) +├── Start Network Server (Ports 8989/8990) +└── Begin Physics Simulation Loop +``` + +### 3. Client Connection Sequence + +``` +Client Application Starts + ↓ +ProjectAirSimClient.connect() + ↓ +TCP Connection to Ports 8989/8990 + ↓ +Authentication (optional) + ↓ +Subscribe to Topics + ↓ +Ready for Control Commands +``` + +## Data Flow Architecture + +### Control Flow (Client → Simulation) + +``` +Client Command → TCP Socket → SimServer → Vehicle API → Physics Engine → UE Actor Update → Visual Feedback +``` + +**Detailed Path**: +1. **Client Layer**: Python/ROS/MAVLink client sends command +2. **Network Layer**: pynng TCP transport (ports 8989/8990) +3. **Server Layer**: SimServer receives and deserializes MessagePack +4. **API Layer**: Vehicle API (MAVLink, ArduPilot, etc.) processes command +5. **Physics Layer**: Physics engine applies forces/torques +6. **UE Integration**: UE Actor position/orientation updated +7. **Rendering**: UE renders new state + +### Sensor Data Flow (Simulation → Client) + +``` +UE Sensor Tick → Data Collection → Serialization → TCP Socket → Client Processing → User Application +``` + +**Detailed Path**: +1. **UE Sensor**: Unreal sensor actor samples environment +2. **Data Processing**: Sensor data processed by Sim Libs +3. **Serialization**: MessagePack serialization +4. **Network**: TCP streaming via pynng +5. **Client**: Python/ROS client receives data +6. **Application**: User code processes sensor data + +## Communication Architecture + +### Network Protocol Stack + +``` +Application Layer +├── Python API (projectairsim.Client) +├── ROS Bridge (ros2_node.py) +└── MAVLink Protocol (mavlinkcom/) + +Transport Layer +├── TCP/IP (Ports 8989/8990) +├── pynng Sockets (NNG library) +└── Message Serialization (MessagePack + JSON) + +Simulation Layer +├── SimServer (C++ core) +├── Scene Management +└── API Routing +``` + +### Message Patterns + +**Topics (Publish/Subscribe - Port 8989)**: +- **Sensor Streaming**: Camera images, LiDAR, IMU, GPS +- **State Updates**: Robot position, velocity, orientation +- **System Events**: Scene changes, actor updates + +**Services (Request/Response - Port 8990)**: +- **Control Commands**: Movement, configuration changes +- **Synchronous Queries**: Current state, settings +- **Administrative**: Reset, pause, load scene + +## Component Integration Details + +### UE5 ↔ Sim Libs Integration + +**Runtime DLL Loading**: +```cpp +// In UnrealSimLoader.cpp +SimServer = std::make_shared(); + +// Bind UE callbacks to C++ simulation +SimServer->SetCallbackLoadExternalScene( + [this]() { LoadUnrealScene(); }); +``` + +**Actor Synchronization**: +```cpp +// UE Actor position updated from physics +void AUnrealRobot::Tick(float DeltaTime) { + // Get position from Sim Libs physics + auto pose = VehicleAPI->getPose(); + + // Update UE Actor transform + SetActorLocation(pose.position); + SetActorRotation(pose.orientation); +} +``` + +### Physics Integration + +**Multi-Physics Backend Support**: +``` +Physics Engine Options +├── PhysX (UE5 Default) +├── Bullet Physics +├── Custom Physics +└── Runtime Switching +``` + +**Integration Pattern**: +```cpp +// Physics abstraction in Sim Libs +class PhysicsEngine { + virtual void update(float dt) = 0; + virtual void applyForce(Vector3 force) = 0; +}; + +// UE integration +void AUnrealSimLoader::UpdatePhysics() { + PhysicsEngine->update(DeltaTime); + SyncActorTransforms(); +} +``` + +## Development Workflow + +### 1. Build Process + +``` +Source Code Changes + ↓ +Build Sim Libs (CMake) + ↓ +build.sh simlibs_debug + ↓ +Build UE Plugin + ↓ +BlocksEditor Win64 DebugGame + ↓ +Launch UE Editor + ↓ +Test in Play Mode +``` + +### 2. Development Environments + +**Windows Development**: +- Visual Studio 2019/2022 for Sim Libs +- UE5 Editor for plugin development +- VS Code multi-root workspace + +**Linux Development**: +- CMake + Ninja for Sim Libs +- UE5 Editor for plugin development +- VS Code with WSL integration + +### 3. Multi-Root Workspace + +**VS Code Configuration** (`Blocks.code-workspace`): +```json +{ + "folders": [ + {"path": "unreal/Blocks"}, + {"path": "core_sim"}, + {"path": "vehicle_apis"}, + {"path": "physics"}, + {"path": "mavlinkcom"} + ] +} +``` + +## API Ecosystem + +### Python Client API + +**Architecture**: +``` +Python Client Layers +├── ProjectAirSimClient (Network connection) +├── World (Scene management) +├── Drone/Rover (Vehicle control) +└── Sensor Interfaces (Data access) +``` + +**Usage Pattern**: +```python +# Connect and control +client = ProjectAirSimClient() +client.connect() + +world = World(client, "scene_config.jsonc") +drone = Drone(client, world, "Drone1") + +# Control loop +while True: + # Send commands + await drone.move_by_velocity_async(vx, vy, vz) + + # Receive sensor data + image = drone.get_camera_image("front_camera") + lidar = drone.get_lidar_data("lidar") +``` + +### ROS Integration + +**ROS2 Bridge Architecture**: +``` +ROS2 Integration +├── ros2_node.py (ROS2 node implementation) +├── Message Translation (UE ↔ ROS formats) +├── TF Broadcasting (Coordinate transforms) +└── Service Bridges (ROS services ↔ UE) +``` + +**Topic Mapping**: +``` +/airsim/drone/front_camera → sensor_msgs/Image +/airsim/drone/lidar → sensor_msgs/PointCloud2 +/airsim/drone/imu → sensor_msgs/Imu +/airsim/drone/cmd_vel → geometry_msgs/Twist +``` + +### MAVLink Integration + +**MAVLink Stack**: +``` +MAVLink Integration +├── mavlinkcom/ (Protocol implementation) +├── Vehicle APIs (PX4, ArduPilot integration) +├── Ground Control Station support +└── Custom MAVLink dialects +``` + +## Performance and Scalability + +### Rendering Optimization + +**UE5 Features Utilized**: +- **Lumen**: Dynamic global illumination +- **Nanite**: Geometry LOD system +- **Virtual Shadow Maps**: Efficient shadowing +- **Custom Depth**: Segmentation rendering + +### Sensor Processing + +**GPU Acceleration**: +- **Compute Shaders**: LiDAR point cloud generation +- **Async Tasks**: Image compression and formatting +- **Render Targets**: Off-screen rendering for cameras + +### Network Optimization + +**Efficient Data Streaming**: +- **MessagePack**: Compact binary serialization +- **Topic Filtering**: Selective data subscription +- **Compression**: Optional data compression +- **Async Processing**: Non-blocking network operations + +## Deployment and Distribution + +### Build Targets + +**Development Builds**: +- `BlocksEditor Win64 DebugGame` - Editor debugging +- `BlocksEditor Win64 Development` - Full UE features + +**Production Builds**: +- `Blocks Win64 Development` - Packaged application +- `Blocks Win64 Shipping` - Optimized release + +### Packaging Process + +``` +Build Sim Libs → Package Plugin → Cook Content → Package Game → Distribute +``` + +### Platform Support + +**Supported Platforms**: +- **Windows 11**: Full development and runtime +- **Ubuntu 22.04**: Full development and runtime +- **Container Support**: Docker integration + +## Advanced Features + +### Geographic Information Systems + +**GIS Integration**: +- **Cesium Integration**: Real-world terrain and imagery +- **Geodetic Conversion**: GPS ↔ UE coordinate systems +- **Large World Support**: World partitioning for vast areas + +### Multi-Robot Simulation + +**Multi-Agent Support**: +- **Concurrent Robots**: Multiple vehicles in same scene +- **Independent Control**: Separate APIs per robot +- **Inter-Agent Communication**: Robot-to-robot messaging + +### Custom Content Pipeline + +**Asset Integration**: +- **FBX Import**: 3D model import with physics +- **Material System**: Physically-based rendering +- **Blueprint Scripting**: Visual logic for custom behaviors + +## System Requirements and Dependencies + +### Hardware Requirements + +**Minimum**: +- CPU: Quad-core 3.0 GHz +- RAM: 16 GB +- GPU: GTX 1060 or equivalent +- Storage: 50 GB SSD + +**Recommended**: +- CPU: Octa-core 4.0 GHz +- RAM: 32 GB +- GPU: RTX 3070 or equivalent +- Storage: 100 GB NVMe SSD + +### Software Dependencies + +**Core Dependencies**: +- Unreal Engine 5.7 +- Visual Studio 2019/2022 (Windows) +- CMake 3.20+ +- Python 3.7+ + +**Optional Dependencies**: +- ROS2 Humble/Foxy +- PX4/ArduPilot +- Cesium for Unreal + +## Troubleshooting and Debugging + +### Common Issues + +**Build Problems**: +- **Sim Libs Build**: Check CMake configuration +- **UE Plugin**: Verify plugin dependencies +- **Network Issues**: Check firewall and port availability + +**Runtime Issues**: +- **Connection Failures**: Verify ports 8989/8990 available +- **Physics Problems**: Check UE physics settings +- **Sensor Issues**: Verify sensor configuration in JSON + +### Debug Tools + +**UE5 Debugging**: +- **Visual Logger**: Record and replay simulation +- **Console Commands**: Runtime configuration +- **Stat Commands**: Performance profiling + +**Network Debugging**: +- **Wireshark**: Network traffic analysis +- **Client Logs**: Detailed connection logging +- **Server Logs**: Sim Libs debug output + +--- + +# Project AirSim Architecture from Unreal Engine Perspective + +From the Unreal Engine developer's viewpoint, Project AirSim is a sophisticated plugin ecosystem that transforms UE5 into a robotics simulation platform. The architecture seamlessly integrates C++ simulation libraries with Unreal's visual and physics systems, providing developers with familiar UE tools while enabling complex autonomous systems simulation. + +## Unreal Engine Integration Architecture + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Unreal Engine 5.7 Editor │ +│ ┌─────────────────────────────────────────────────────┐ │ +│ │ Blocks Project │ │ +│ │ ┌─────────────────────────────────────────────┐ │ │ +│ │ │ ProjectAirSim Plugin │ │ │ +│ │ │ ┌─────────────────────────────────────┐ │ │ │ +│ │ │ │ Sim Libs Integration │ │ │ │ +│ │ │ │ (C++ DLLs loaded at runtime) │ │ │ │ +│ │ │ └─────────────────────────────────────┘ │ │ │ +│ │ └─────────────────────────────────────────────┘ │ │ +│ └─────────────────────────────────────────────────────┘ │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ External Client Applications │ +│ (Python API, ROS, MAVLink GCS, Custom Controllers) │ +└─────────────────────────────────────────────────────────────┘ +``` + +## Core Components in Unreal Engine + +### 1. Blocks Project (Main UE Project) + +**Location**: `unreal/Blocks/` + +**Purpose**: The primary Unreal Engine project that serves as the simulation environment. + +**Key Files**: +- `Blocks.uproject` - Project manifest with plugin dependencies +- `BlocksMap.umap` - Main simulation level +- `GISMap.umap` - Geographic information system level + +**Project Configuration**: +```json +{ + "EngineAssociation": "5.7", + "Plugins": ["ProjectAirSim"], + "TargetPlatforms": ["WindowsNoEditor", "LinuxNoEditor"] +} +``` + +### 2. ProjectAirSim Plugin Architecture + +**Location**: `unreal/Blocks/Plugins/ProjectAirSim/` + +**Plugin Structure**: +``` +ProjectAirSim Plugin +├── ProjectAirSim.uplugin (Plugin manifest) +├── Source/ProjectAirSim/ (C++ source) +│ ├── Public/ (API headers) +│ └── Private/ (Implementation) +├── SimLibs/ (Compiled C++ DLLs) +├── Content/ (UE assets) +└── Binaries/ (Platform binaries) +``` + +**Plugin Manifest**: +```json +{ + "Modules": [ + { + "Name": "ProjectAirSim", + "Type": "Runtime", + "LoadingPhase": "PostConfigInit" + } + ], + "Plugins": [ + {"Name": "ProceduralMeshComponent", "Enabled": true}, + {"Name": "SunPosition", "Enabled": true}, + {"Name": "PixelStreaming", "Enabled": true} + ] +} +``` + +### 3. GameMode Integration + +**Key Class**: `AProjectAirSimGameMode` + +**Lifecycle Management**: +```cpp +class AProjectAirSimGameMode : public AGameModeBase { + void StartPlay() override { + Super::StartPlay(); + UnrealSimLoader.LaunchSimulation(this->GetWorld()); + } + + void EndPlay() override { + UnrealSimLoader.TeardownSimulation(); + } +}; +``` + +**Responsibilities**: +- Initializes simulation when Play is pressed in UE Editor +- Manages UnrealSimLoader lifecycle +- Sets deterministic seed for reproducible simulations + +## Simulation Loading Architecture + +### UnrealSimLoader (Core Integration Point) + +**Class**: `AUnrealSimLoader` + +**Purpose**: Bridges between Unreal Engine and Project AirSim Sim Libs. + +**Key Methods**: +```cpp +void LaunchSimulation(UWorld* World) { + // 1. Configure Unreal Engine settings + SetUnrealEngineSettings(); + + // 2. Load simulator with network ports + SimServer->LoadSimulator(topicsPort, servicesPort, authKey); + + // 3. Load scene configuration + SimServer->LoadScene(); + + // 4. Create Unreal scene actors + LoadUnrealScene(); + + // 5. Start network server + SimServer->StartSimulator(); + + // 6. Begin simulation + StartUnrealScene(); + SimServer->StartScene(); +} +``` + +**Architecture Flow**: +``` +UE Editor Play Button + ↓ +AProjectAirSimGameMode::StartPlay() + ↓ +AUnrealSimLoader::LaunchSimulation() + ↓ +├── Configure UE Settings (CustomDepth, etc.) +├── Load SimServer (C++ DLL) +├── Load Scene Config (JSON) +├── Spawn UE Actors (Robots, Sensors) +├── Start Network Server (Ports 8989/8990) +└── Begin Physics Simulation +``` + +## Actor Hierarchy in Unreal Engine + +### Robot Actor System + +``` +Unreal Actor Hierarchy +├── AUnrealRobot (Base Robot Class) +│ ├── Skeletal Mesh Component +│ ├── Physics Components +│ └── Sensor Attachments +├── AUnrealRobotLink (Robot Links) +│ ├── Collision Shapes +│ ├── Visual Meshes +│ └── Joint Attachments +└── AUnrealRobotJoint (Robot Joints) + ├── Constraint Components + ├── Motor Controllers + └── State Publishers +``` + +### Sensor Actor System + +``` +Sensor Integration +├── AUnrealSensor (Base Sensor) +│ ├── Tick-based Updates +│ ├── Data Publishing +│ └── Configuration Management +├── Camera Sensors +│ ├── AUnrealCamera +│ ├── AUnrealViewportCamera +│ └── Render Request System +├── Distance Sensors +│ ├── AUnrealLidar (Raycasting + GPU Compute) +│ ├── AUnrealRadar +│ └── AUnrealDistanceSensor +└── Environmental Sensors + ├── IMU Simulation + ├── GPS/Geodetic Conversion + └── Barometer/Altimeter +``` + +## Rendering and Sensor Pipeline + +### Camera Rendering Architecture + +``` +Camera Pipeline +├── Unreal Camera Actor +│ ├── Scene Capture Component 2D +│ └── Render Target +├── Image Packing (Async Task) +│ ├── GPU → CPU Transfer +│ ├── Format Conversion +│ └── Compression +└── Network Publishing + ├── MessagePack Serialization + └── TCP Streaming (Port 8989) +``` + +### LiDAR Rendering System + +``` +LiDAR Pipeline +├── GPULidar Actor +│ ├── Compute Shader (LidarPointCloudCS) +│ ├── Scene View Extension +│ └── Intensity Calculation +├── Point Cloud Generation +│ ├── Ray Marching +│ ├── Distance Calculation +│ └── Intensity Mapping +└── Data Publishing + ├── Point Cloud Serialization + └── ROS/MAVLink Bridge +``` + +## Development Workflow in Unreal Engine + +### 1. Project Setup and Building + +**Build Targets**: +``` +BlocksEditor Win64 Development - For Editor development +Blocks Win64 Development - For packaged game builds +BlocksEditor Win64 DebugGame - For debugging with Sim Libs +``` + +**Development Cycle**: +``` +1. Modify C++ Sim Libs (CMake) +2. Build Sim Libs (build.sh simlibs_debug) +3. Build UE Plugin (BlocksEditor Win64 DebugGame) +4. Launch UE Editor +5. Press Play → Simulation starts +6. Connect client (Python/ROS/MAVLink) +7. Debug and iterate +``` + +### 2. Multi-Root Workspace Development + +**VS Code Integration**: +- `Blocks.code-workspace` - Multi-root workspace +- Simultaneous editing of UE Plugin and Sim Libs +- Integrated debugging across C++ and Blueprint + +**Workspace Structure**: +``` +Blocks.code-workspace +├── unreal/Blocks/ (UE Plugin & Project) +├── core_sim/ (Simulation Core) +├── vehicle_apis/ (Robot Controllers) +├── physics/ (Physics Engines) +└── mavlinkcom/ (Communication) +``` + +### 3. Content Creation Pipeline + +**Asset Organization**: +``` +Content/ +├── BlocksMap.umap (Main simulation level) +├── GISMap.umap (Geographic level) +├── Robots/ (Robot Blueprints/Meshes) +├── Environments/ (Scene assets) +└── Sensors/ (Sensor configurations) +``` + +**Level Design Considerations**: +- **Scale**: 1 UE unit = 1 cm (for physics accuracy) +- **Lighting**: Must support CustomDepth for segmentation +- **Navigation**: Recast navmesh for ground robots +- **Streaming**: Level streaming for large environments + +## Plugin Architecture Deep Dive + +### Module Dependencies + +**Build.cs Configuration**: +```csharp +public class ProjectAirSim : ModuleRules { + PublicIncludePaths.AddRange(new string[] { + "ProjectAirSim/Public" + }); + + PrivateIncludePaths.AddRange(new string[] { + EngineDirectory + "/Source/Runtime/Renderer/Private" + }); + + // Sim Libs integration + if (Target.Platform == UnrealTargetPlatform.Win64) { + PublicIncludePaths.Add( + PluginDirectory + "/SimLibs/core_sim/include" + ); + // ... additional Sim Lib paths + } +} +``` + +### Runtime Library Loading + +**Dynamic Library Integration**: +``` +Plugin Load Process +├── UE Plugin loads (ProjectAirSim.uplugin) +├── Module initializes (FProjectAirSimModule) +├── Sim Libs DLLs loaded at runtime +├── SimServer instantiated +└── Callbacks bound for scene management +``` + +**Callback System**: +```cpp +// Bind C++ simulation callbacks to UE functions +SimServer->SetCallbackLoadExternalScene( + [this]() { LoadUnrealScene(); }); +``` + +## Communication Architecture from UE Perspective + +### Network Integration + +**Server-Side Architecture**: +``` +Unreal Engine (Server) +├── SimServer (C++ Core) +│ ├── TCP Listener (Ports 8989/8990) +│ ├── Message Deserialization +│ └── Command Processing +├── Unreal Scene +│ ├── Actor Updates +│ ├── Physics Simulation +│ └── Sensor Data Collection +└── Data Publishing + ├── Topic Broadcasting + └── Service Responses +``` + +**Client Connection Flow**: +``` +Client Connects → SimServer Accepts → Authentication → Scene Sync → Ready for Commands +``` + +### Data Flow Architecture + +``` +Control Commands (Client → UE) +├── Network Reception (pynng/TCP) +├── Message Deserialization (MessagePack) +├── Command Routing (SimServer) +├── Physics Updates (UE Physics) +└── Visual Feedback (UE Rendering) + +Sensor Data (UE → Client) +├── Sensor Sampling (UE Tick) +├── Data Processing (C++ Sim Libs) +├── Serialization (MessagePack) +├── Network Transmission (pynng/TCP) +└── Client Reception +``` + +## ROS Integration from UE Perspective + +### ROS Bridge Architecture + +``` +ROS Integration Layers +├── UE Plugin (ProjectAirSim) +│ ├── Sensor Data Publishers +│ ├── Control Command Subscribers +│ └── TF Transform Broadcasting +├── ROS2 Node Bridge (Python) +│ ├── rclpy Integration +│ ├── Topic/Message Translation +│ └── Service Proxies +└── ROS Ecosystem + ├── RViz Visualization + ├── ROS Control + └── Navigation Stack +``` + +### UE-Specific ROS Features + +**Transform Broadcasting**: +- UE coordinate system to ROS TF +- Real-time transform updates +- Geographic coordinate integration + +**Sensor Integration**: +- UE cameras → ROS image topics +- UE LiDAR → ROS PointCloud2 +- UE IMU → ROS Imu messages + +## Development Best Practices + +### 1. Performance Optimization + +**UE-Specific Considerations**: +- **Tick Groups**: Use appropriate tick groups for sensors +- **Async Tasks**: Offload heavy computations (image packing) +- **Render Threads**: Minimize main thread blocking +- **Memory Management**: Pool reusable assets + +### 2. Debugging Techniques + +**UE Editor Debugging**: +- **Visualize Sensors**: Debug drawing for raycasts/LiDAR +- **Physics Debugging**: Show collision shapes and constraints +- **Network Debugging**: Log message traffic and timing + +**Multi-Target Debugging**: +- Attach debugger to UE Editor + Python client simultaneously +- Cross-reference UE logs with client application logs + +### 3. Content Pipeline + +**Asset Optimization**: +- **LOD System**: Configure level-of-detail for performance +- **Texture Streaming**: Manage texture memory for large environments +- **Instancing**: Use instanced static meshes for repeated assets + +## Advanced UE Features Integration + +### 1. Rendering Features + +**Custom Rendering**: +- **Scene View Extensions**: For specialized sensor rendering (LiDAR intensity) +- **Compute Shaders**: GPU-accelerated sensor processing +- **Post-Processing**: Custom materials for sensor simulation + +### 2. Physics Integration + +**UE Physics Extensions**: +- **Custom Physics Engines**: Runtime switching between physics backends +- **Constraint Systems**: Advanced joint and linkage simulation +- **Collision Detection**: Custom collision shapes for sensors + +### 3. Multiplayer/Network Features + +**Distributed Simulation**: +- **Pixel Streaming**: Web-based visualization +- **Multi-Client Support**: Multiple clients connecting simultaneously +- **State Synchronization**: Consistent simulation state across clients + +--- + +# Project AirSim Architecture Analysis + +## Overview + +Project AirSim is a simulation platform for drones, robots, and other autonomous systems built on Unreal Engine 5. It consists of C++ simulation libraries, an Unreal Engine plugin, and Python client libraries for API interactions. + +## High-Level Architecture + +``` +┌─────────────────────────────────────────────────────────────┐ +│ User Applications │ +│ (Python scripts, ROS nodes, MAVLink GCS, etc.) │ +└─────────────────────┬───────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ Project AirSim Client Library │ +│ (Python API, ROS Bridge, MAVLink Protocol) │ +└─────────────────────┬───────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ Project AirSim Plugin │ +│ (Unreal Engine Plugin - Runtime Integration) │ +└─────────────────────┬───────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ Project AirSim Sim Libs │ +│ (C++ Core Simulation Framework) │ +└─────────────────────────────────────────────────────────────┘ +``` + +## Detailed Architecture Components + +### 1. Project AirSim Sim Libs (Core Layer) + +**Location**: `projectairsim/` (root CMake project) + +**Purpose**: Base infrastructure for defining a generic robot structure and simulation scene tick loop. + +**Key Components**: +- **Core Simulation** (`core_sim/`): Main simulation loop and scene management +- **Physics Integration** (`physics/`): Physics engines and dynamics +- **Vehicle APIs** (`vehicle_apis/`): Robot-specific control interfaces +- **MAVLink Communication** (`mavlinkcom/`): MAVLink protocol implementation +- **Rendering** (`rendering/`): Visual rendering components + +**Architecture**: +``` +Sim Libs +├── Core Simulation Framework +│ ├── Scene Management +│ ├── Robot Definitions +│ └── Simulation Tick Loop +├── Vehicle APIs +│ ├── Multirotor API +│ │ ├── MAVLink API +│ │ ├── ArduCopter API +│ │ ├── SimpleFlight API +│ │ └── Manual Controller API +│ └── Rover API +├── Physics Engines +├── Sensors Framework +└── Communication Layer +``` + +### 2. Project AirSim Plugin (Integration Layer) + +**Location**: `projectairsim/unreal/Blocks/Plugins/ProjectAirSim/` + +**Purpose**: Host package (currently an Unreal Plugin) that builds on the sim libs to connect external components (controller, physics, rendering) at runtime that are specific to each configured robot-type scenario (ex. quadrotor drones) + +### 3. Project AirSim Client Library (Interface Layer) + +**Location**: `projectairsim/client/python/projectairsim/` + +**Purpose**: End-user library to enable API calls to interact with the robot and simulation over a network connection + +**Communication Architecture**: +``` +Client Library +├── Connection Management +│ ├── TCP Socket (pynng) +│ ├── Topics (Port 8989) - Pub/Sub +│ └── Services (Port 8990) - Req/Rep +├── API Objects +│ ├── ProjectAirSimClient +│ ├── World +│ └── Drone/Rover +└── Protocol Bridges + ├── ROS1/ROS2 Bridge + └── MAVLink Bridge +``` + +## Drone Interface Architecture + +### Vehicle Control Hierarchy + +``` +Drone Control Interfaces +├── Python API (High-level) +│ ├── Drone Class +│ │ ├── Movement Commands +│ │ │ ├── move_by_velocity_async() +│ │ │ ├── move_to_position_async() +│ │ │ └── rotate_by_yaw_rate_async() +│ │ ├── Sensor Access +│ │ │ ├── get_camera_images() +│ │ │ ├── get_lidar_data() +│ │ │ └── get_imu_data() +│ │ └── State Queries +│ │ ├── get_position() +│ │ ├── get_velocity() +│ │ └── get_orientation() +│ └── World Class +│ ├── Scene Management +│ ├── Weather Control +│ └── Time Management +├── MAVLink Protocol (Low-level) +│ ├── MAVLink API Implementation +│ ├── PX4/ArduPilot Integration +│ └── Ground Control Station Support +└── ROS Integration + ├── ROS2 Node Bridge + ├── Topic Publishing + └── Service Calls +``` + +### Communication Flow + +``` +Control Flow: +User Code → Python API → TCP (pynng) → Unreal Plugin → Sim Libs → Physics Engine + +Data Flow: +Sensors → Sim Libs → Unreal Plugin → TCP (pynng) → Python API → User Code + +MAVLink Flow: +GCS/ROS → MAVLink Protocol → MAVLink API → Vehicle Controller → Physics +``` + +## Communication Logic + +### Network Architecture + +Project AirSim uses a sophisticated multi-channel communication system: + +**1. TCP-based Transport** +- **Library**: pynng (NNG - nanomsg next generation) +- **Ports**: + - Topics: 8989 (Publish/Subscribe pattern) + - Services: 8990 (Request/Response pattern) + +**2. Message Serialization** +- **Primary**: MessagePack with JSON hybrid (MSGPACK_JSON) +- **Fallback**: Pure JSON +- **Security**: Optional client authorization with public key tokens + +**3. Communication Patterns** + +``` +Topics (Pub/Sub - Port 8989): +├── Sensor Data Streaming +│ ├── Camera Images +│ ├── LiDAR Point Clouds +│ ├── IMU Data +│ ├── GPS Coordinates +│ └── Vehicle State +└── System Events + ├── Scene Changes + └── Actor Updates + +Services (Req/Rep - Port 8990): +├── Control Commands +│ ├── Movement Instructions +│ ├── Configuration Changes +│ └── Administrative Actions +└── Synchronous Queries + ├── State Information + └── Configuration Data +``` + +### Protocol Stack + +``` +Application Layer +├── Python Client API +├── ROS Bridge +└── MAVLink Interface + +Transport Layer +├── TCP/IP +├── pynng Sockets +└── Message Serialization + +Simulation Layer +├── Unreal Engine Plugin +├── Physics Integration +└── Sensor Simulation +``` + +## ROS2 Integration + +Project AirSim provides comprehensive ROS2 support through a dedicated bridge package. + +### ROS2 Architecture + +``` +ROS2 Integration +├── ROS2 Node Package +│ ├── projectairsim-ros2/ +│ │ ├── setup.py +│ │ ├── ros2_node.py +│ │ └── ros1_compatibility.py +│ └── Dependencies +│ └── rclpy +├── Bridge Components +│ ├── Publisher Wrappers +│ ├── Subscriber Wrappers +│ └── Service Proxies +└── Message Translation + ├── Sensor Data → ROS Messages + ├── Control Commands ← ROS Messages + └── TF Transformations +``` + +### ROS2 Node Implementation + +The ROS2 bridge (`ros2_node.py`) provides: + +**1. Publisher Implementation** +```python +class Publisher: + - Wraps rclpy.publisher.Publisher + - Handles topic naming + - Manages message publishing +``` + +**2. Subscriber Implementation** +```python +class Subscriber: + - Wraps rclpy.subscription.Subscription + - Manages topic subscriptions + - Handles message callbacks +``` + +**3. Sensor Helper** +```python +class SensorHelper: + - Camera info configuration + - Message format adaptation + - ROS2-specific sensor data handling +``` + +### ROS2 Usage Pattern + +``` +ROS2 Node ←→ Project AirSim Bridge ←→ Simulation Server + +Topics: +├── /airsim/drone/camera ← Camera images +├── /airsim/drone/imu ← IMU data +├── /airsim/drone/lidar ← LiDAR scans +├── /airsim/drone/odom ← Odometry +└── /airsim/drone/cmd_vel → Velocity commands + +Services: +├── /airsim/takeoff → Takeoff service +├── /airsim/land → Landing service +└── /airsim/reset → Reset simulation +``` + +## Creating Architecture Diagrams + +To create visual graphs of this architecture, I recommend using one of these tools: + +### 1. Draw.io (Free, Web-based) +- Create flowcharts and system diagrams +- Export as PNG/SVG/PDF +- Real-time collaboration + +### 2. PlantUML (Text-based) +- Define diagrams in text +- Generate from code comments +- Integrates with documentation + +### 3. Lucidchart or Visio +- Professional diagramming tools +- Template libraries +- Advanced styling options + +### Suggested Diagram Types + +**1. System Context Diagram** +- Show Project AirSim in relation to external systems (ROS, MAVLink GCS, etc.) + +**2. Component Diagram** +- Detail the three main layers and their interactions + +**3. Sequence Diagrams** +- Show communication flows for specific operations (takeoff, sensor reading, etc.) + +**4. Deployment Diagram** +- Show how components are distributed across systems + +--- + +*This architecture enables Project AirSim to serve as a versatile platform for autonomous systems development, supporting everything from simple Python scripting to complex ROS-based robotic applications.* \ No newline at end of file diff --git a/client/python/example_user_scripts/keyboard_control.py b/client/python/example_user_scripts/keyboard_control.py new file mode 100644 index 00000000..00e9e2cd --- /dev/null +++ b/client/python/example_user_scripts/keyboard_control.py @@ -0,0 +1,192 @@ +import argparse +import asyncio +import time +import projectairsim +from projectairsim import Drone, World +import keyboard + +# --- Drone Control Functions --- + +async def takeoff(drone): + """Arms the drone and takes off to a default altitude.""" + print("Arming the drone...") + drone.arm() + print("Taking off...") + await drone.takeoff_async() + time.sleep(1) + + +async def land(drone): + """Lands the drone.""" + print("Landing...") + await drone.land_async() + print("Disarming the drone...") + drone.disarm() + +# --- Main Control Loop --- + +async def run_keyboard_control(drone): + """ + Controls the drone using keyboard inputs. + + Args: + drone: The Drone object. + """ + + # Enable API control + drone.enable_api_control() + + # Takeoff + await takeoff(drone) + + # Speed settings + speed = 5 # m/s + yaw_speed = 20 # degrees/s + duration = 0.1 # seconds + + print("\n--- Keyboard Control ---") + print("W/S: Pitch (Forward/Backward)") + print("A/D: Roll (Left/Right)") + print("Up/Down Arrows: Throttle (Altitude)") + print("Left/Right Arrows: Yaw (Rotation)") + print("L: Land") + print("Q: Quit") + print("--------------------") + + keep_running = True + + while keep_running: + # Reset velocity components + vx, vy, vz, yaw_rate = 0, 0, 0, 0 + + # Pitch + if keyboard.is_pressed('w'): + vx = speed + + elif keyboard.is_pressed('s'): + vx = -speed + + # Roll + if keyboard.is_pressed('a'): + vy = -speed + + elif keyboard.is_pressed('d'): + vy = speed + + # Throttle + if keyboard.is_pressed('up'): + vz = -speed # Negative Z is up + + elif keyboard.is_pressed('down'): + vz = speed + + # Yaw + if keyboard.is_pressed('left'): + yaw_rate = -yaw_speed + + elif keyboard.is_pressed('right'): + yaw_rate = yaw_speed + + # Land and exit + if keyboard.is_pressed('l'): + await land(drone) + keep_running = False + + # Quit + if keyboard.is_pressed('q'): + keep_running = False + + # Move the drone in its body frame + # vx, vy, vz are now interpreted as forward/backward, right/left, up/down relative to the drone + if vx != 0 or vy != 0 or vz != 0: + await drone.move_by_velocity_body_frame_async(vx, vy, vz, duration) + if yaw_rate != 0: + await drone.rotate_by_yaw_rate_async(yaw_rate, duration) + await asyncio.sleep(0.01) + +# --- Main Execution --- + +async def main(): + parser = argparse.ArgumentParser( + description="Example of using keyboard to control a drone in Project AirSim." + ) + + # ... (parser arguments remain the same) ... + parser.add_argument( + "--address", + help=("the IP address of the host running Project AirSim"), + type=str, + default="127.0.0.1", + ) + + parser.add_argument( + "--sceneconfigfile", + help=( + 'the Project AirSim scene config file to load, defaults to "scene_basic_drone.jsonc"' + ), + + type=str, + default="scene_basic_drone.jsonc", + ) + + parser.add_argument( + "--simconfigpath", + help=( + 'the directory containing Project AirSim config files, defaults to "sim_config"' + ), + type=str, + default="sim_config/", + ) + + parser.add_argument( + "--topicsport", + help=( + "the TCP/IP port of Project AirSim's topic pub-sub client connection " + '(see the Project AirSim command line switch "-topicsport")' + ), + type=int, + default=8989, + ) + + parser.add_argument( + "--servicesport", + help=( + "the TCP/IP port of Project AirSim's services client connection " + '(see the Project AirSim command line switch "-servicessport")' + ), + type=int, + default=8990, + ) + + args = parser.parse_args() + client = projectairsim.ProjectAirSimClient( + address=args.address, + port_topics=args.topicsport, + port_services=args.servicesport, + ) + + drone = None + try: + client.connect() + world = projectairsim.World( + client=client, + scene_config_name=args.sceneconfigfile, + sim_config_path=args.simconfigpath, + ) + drone = Drone(client, world, "Drone1") + + await run_keyboard_control(drone) + + except Exception as e: + print(f"An error occurred: {e}") + + finally: + if drone: + drone.disarm() + drone.disable_api_control() + client.disconnect() + + print("Cleaned up and disconnected.") + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/tools/lvmon/Lib/src/serverconnectiontcp.cpp b/tools/lvmon/Lib/src/serverconnectiontcp.cpp index 380ad37a..db7961ab 100644 --- a/tools/lvmon/Lib/src/serverconnectiontcp.cpp +++ b/tools/lvmon/Lib/src/serverconnectiontcp.cpp @@ -3,6 +3,8 @@ // MIT License. All rights reserved. +#include +#include #include "serverconnectiontcp.h" #include diff --git a/unreal-linux-toolchain.cmake b/unreal-linux-toolchain.cmake index 6e2e78ea..4bc4548f 100644 --- a/unreal-linux-toolchain.cmake +++ b/unreal-linux-toolchain.cmake @@ -19,7 +19,7 @@ set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR x86_64) # Set include and link dir paths to UE 4.27's bundled toolchain -set(UE_TOOLCHAIN "Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v21_clang-15.0.1-centos7") +set(UE_TOOLCHAIN "Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v22_clang-16.0.6-centos7") set(CMAKE_SYSROOT "$ENV{UE_ROOT}/${UE_TOOLCHAIN}/x86_64-unknown-linux-gnu") set(CMAKE_C_COMPILER "${CMAKE_SYSROOT}/bin/clang") set(CMAKE_CXX_COMPILER "${CMAKE_SYSROOT}/bin/clang++") diff --git a/unreal/Blocks/Blocks.uproject b/unreal/Blocks/Blocks.uproject index ba3e1b24..c5e5e712 100644 --- a/unreal/Blocks/Blocks.uproject +++ b/unreal/Blocks/Blocks.uproject @@ -1,6 +1,6 @@ { "FileVersion": 3, - "EngineAssociation": "5.1", + "EngineAssociation": "5.7", "Category": "", "Description": "", "Modules": [ diff --git a/unreal/Blocks/Config/DefaultEditor.ini b/unreal/Blocks/Config/DefaultEditor.ini index a52833a7..aa36b2d2 100644 --- a/unreal/Blocks/Config/DefaultEditor.ini +++ b/unreal/Blocks/Config/DefaultEditor.ini @@ -6,3 +6,9 @@ bAllowClassAndBlueprintPinMatching=true bReplaceBlueprintWithClass=true bDontLoadBlueprintOutsideEditor=true bBlueprintIsNotBlueprintType=true + +[/Script/AdvancedPreviewScene.SharedProfiles] ++Profiles=(ProfileName="Epic Headquarters",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=1.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=1.000000,bRotateLightingRig=False,bShowEnvironment=True,bShowFloor=True,bShowGrid=False,EnvironmentColor=(R=0.200000,G=0.200000,B=0.200000,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/EpicQuadPanorama_CC+EV1.EpicQuadPanorama_CC+EV1",bPostProcessingEnabled=True,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomGaussianIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionIntensity=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=False,bOverride_AutoExposureMaxBrightness=False,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureHighlightThresholdStrength=False,bOverride_LocalExposureShadowThresholdStrength=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainTexelSize=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldPetzvalBokeh=False,bOverride_DepthOfFieldPetzvalBokehFalloff=False,bOverride_DepthOfFieldPetzvalExclusionBoxExtents=False,bOverride_DepthOfFieldPetzvalExclusionBoxRadius=False,bOverride_DepthOfFieldAspectRatioScalar=False,bOverride_DepthOfFieldMatteBoxFlags=False,bOverride_DepthOfFieldBarrelRadius=False,bOverride_DepthOfFieldBarrelLength=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_RayTracingTranslucencyMaxPrimaryHitEvents=False,bOverride_RayTracingTranslucencyMaxSecondaryHitEvents=False,bOverride_RayTracingTranslucencyUseRayTracedRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenSkylightLeakingTint=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomGaussianIntensity=1.000000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionIntensity=1.000000,BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenSkylightLeaking=0.000000,LumenSkylightLeakingTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=0.030000,AutoExposureMaxBrightness=8.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-8.000000,HistogramLogMax=4.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureHighlightThresholdStrength=1.000000,LocalExposureShadowThresholdStrength=1.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainTexelSize=1.000000,FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldPetzvalBokeh=0.000000,DepthOfFieldPetzvalBokehFalloff=1.000000,DepthOfFieldPetzvalExclusionBoxExtents=(X=0.000000,Y=0.000000),DepthOfFieldPetzvalExclusionBoxRadius=0.000000,DepthOfFieldAspectRatioScalar=1.000000,DepthOfFieldBarrelRadius=5.000000,DepthOfFieldBarrelLength=0.000000,DepthOfFieldMatteBoxFlags[0]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[1]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[2]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyMaxPrimaryHitEvents=4,RayTracingTranslucencyMaxSecondaryHitEvents=2,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,RayTracingTranslucencyUseRayTracedRefraction=False,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=True,bShowMeshEdges=False) ++Profiles=(ProfileName="Grey Wireframe",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=1.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=1.000000,bRotateLightingRig=False,bShowEnvironment=False,bShowFloor=False,bShowGrid=True,EnvironmentColor=(R=0.039216,G=0.039216,B=0.039216,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/EpicQuadPanorama_CC+EV1.EpicQuadPanorama_CC+EV1",bPostProcessingEnabled=False,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomGaussianIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionIntensity=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=False,bOverride_AutoExposureMaxBrightness=False,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureHighlightThresholdStrength=False,bOverride_LocalExposureShadowThresholdStrength=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainTexelSize=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldPetzvalBokeh=False,bOverride_DepthOfFieldPetzvalBokehFalloff=False,bOverride_DepthOfFieldPetzvalExclusionBoxExtents=False,bOverride_DepthOfFieldPetzvalExclusionBoxRadius=False,bOverride_DepthOfFieldAspectRatioScalar=False,bOverride_DepthOfFieldMatteBoxFlags=False,bOverride_DepthOfFieldBarrelRadius=False,bOverride_DepthOfFieldBarrelLength=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_RayTracingTranslucencyMaxPrimaryHitEvents=False,bOverride_RayTracingTranslucencyMaxSecondaryHitEvents=False,bOverride_RayTracingTranslucencyUseRayTracedRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenSkylightLeakingTint=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomGaussianIntensity=1.000000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionIntensity=1.000000,BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenSkylightLeaking=0.000000,LumenSkylightLeakingTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=0.030000,AutoExposureMaxBrightness=8.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-8.000000,HistogramLogMax=4.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureHighlightThresholdStrength=1.000000,LocalExposureShadowThresholdStrength=1.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainTexelSize=1.000000,FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldPetzvalBokeh=0.000000,DepthOfFieldPetzvalBokehFalloff=1.000000,DepthOfFieldPetzvalExclusionBoxExtents=(X=0.000000,Y=0.000000),DepthOfFieldPetzvalExclusionBoxRadius=0.000000,DepthOfFieldAspectRatioScalar=1.000000,DepthOfFieldBarrelRadius=5.000000,DepthOfFieldBarrelLength=0.000000,DepthOfFieldMatteBoxFlags[0]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[1]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[2]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyMaxPrimaryHitEvents=4,RayTracingTranslucencyMaxSecondaryHitEvents=2,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,RayTracingTranslucencyUseRayTracedRefraction=False,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=False,bShowMeshEdges=True) ++Profiles=(ProfileName="Grey Ambient",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=4.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=2.000000,bRotateLightingRig=False,bShowEnvironment=True,bShowFloor=True,bShowGrid=True,EnvironmentColor=(R=0.200000,G=0.200000,B=0.200000,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/T_GreyAmbient",bPostProcessingEnabled=False,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomGaussianIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionIntensity=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=False,bOverride_AutoExposureMaxBrightness=False,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureHighlightThresholdStrength=False,bOverride_LocalExposureShadowThresholdStrength=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainTexelSize=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldPetzvalBokeh=False,bOverride_DepthOfFieldPetzvalBokehFalloff=False,bOverride_DepthOfFieldPetzvalExclusionBoxExtents=False,bOverride_DepthOfFieldPetzvalExclusionBoxRadius=False,bOverride_DepthOfFieldAspectRatioScalar=False,bOverride_DepthOfFieldMatteBoxFlags=False,bOverride_DepthOfFieldBarrelRadius=False,bOverride_DepthOfFieldBarrelLength=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_RayTracingTranslucencyMaxPrimaryHitEvents=False,bOverride_RayTracingTranslucencyMaxSecondaryHitEvents=False,bOverride_RayTracingTranslucencyUseRayTracedRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenSkylightLeakingTint=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomGaussianIntensity=1.000000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionIntensity=1.000000,BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenSkylightLeaking=0.000000,LumenSkylightLeakingTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=0.030000,AutoExposureMaxBrightness=8.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-8.000000,HistogramLogMax=4.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureHighlightThresholdStrength=1.000000,LocalExposureShadowThresholdStrength=1.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainTexelSize=1.000000,FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldPetzvalBokeh=0.000000,DepthOfFieldPetzvalBokehFalloff=1.000000,DepthOfFieldPetzvalExclusionBoxExtents=(X=0.000000,Y=0.000000),DepthOfFieldPetzvalExclusionBoxRadius=0.000000,DepthOfFieldAspectRatioScalar=1.000000,DepthOfFieldBarrelRadius=5.000000,DepthOfFieldBarrelLength=0.000000,DepthOfFieldMatteBoxFlags[0]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[1]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[2]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyMaxPrimaryHitEvents=4,RayTracingTranslucencyMaxSecondaryHitEvents=2,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,RayTracingTranslucencyUseRayTracedRefraction=False,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=False,bShowMeshEdges=False) + diff --git a/unreal/Blocks/Config/DefaultEngine.ini b/unreal/Blocks/Config/DefaultEngine.ini index 48bfd826..043d7420 100644 --- a/unreal/Blocks/Config/DefaultEngine.ini +++ b/unreal/Blocks/Config/DefaultEngine.ini @@ -8,7 +8,7 @@ ThreePlayerSplitscreenLayout=FavorTop GameInstanceClass=/Script/Engine.GameInstance GameDefaultMap=/Game/BlocksMap ServerDefaultMap=/Game/BlocksMap -GlobalDefaultGameMode=/Script/ProjectAirSim.ProjectAirSimGameMode +GlobalDefaultGameMode=/Game/Game/BP_GameMode.BP_GameMode_C GlobalDefaultServerGameMode=None [/Script/IOSRuntimeSettings.IOSRuntimeSettings] diff --git a/unreal/Blocks/Content/BlocksMap.umap b/unreal/Blocks/Content/BlocksMap.umap index 805a6fa6..d85da1ab 100644 Binary files a/unreal/Blocks/Content/BlocksMap.umap and b/unreal/Blocks/Content/BlocksMap.umap differ diff --git a/unreal/Blocks/Content/Game/BP_GameMode.uasset b/unreal/Blocks/Content/Game/BP_GameMode.uasset new file mode 100644 index 00000000..92614e14 Binary files /dev/null and b/unreal/Blocks/Content/Game/BP_GameMode.uasset differ diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/LightActorBase.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/LightActorBase.cpp index 76393e83..5223c88b 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/LightActorBase.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/LightActorBase.cpp @@ -4,6 +4,7 @@ // MIT License. All rights reserved. #include "LightActorBase.h" +#include "Components/LocalLightComponent.h" // Returns true if able to set intensity on all light components // False if any item is nullptr @@ -41,7 +42,7 @@ bool ALightActorBase::SetRadius(float NewRadius) { for(int i = 0; i < lightComponents.Num(); i++) { ULocalLightComponent* localLightComponent = - dynamic_cast(lightComponents[i]); + Cast(lightComponents[i]); if (localLightComponent != nullptr) { localLightComponent->SetAttenuationRadius(NewRadius); diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.cpp index a12ad4ae..6b17b032 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.cpp @@ -26,6 +26,7 @@ #include "bing_maps_utils.hpp" #include "tile_info.hpp" +#include "core_sim/log_level.hpp" AGISRenderer::AGISRenderer() : SimServer(nullptr), diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.h index 16013bf1..24dcc4bd 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/GISRenderer.h @@ -9,6 +9,7 @@ #include #include #include +#include #include "CoreMinimal.h" #include "GameFramework/Actor.h" diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/ProcMeshActor.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/ProcMeshActor.cpp index fa7f9356..1c567b80 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/ProcMeshActor.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Renderers/ProcMeshActor.cpp @@ -8,6 +8,7 @@ #include "KismetProceduralMeshLibrary.h" #include "Materials/Material.h" #include "Materials/MaterialInstanceDynamic.h" +#include // Sets default values AProcMeshActor::AProcMeshActor() { diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Robot/UnrealRobotLink.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Robot/UnrealRobotLink.cpp index 1ca99ae0..db434948 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Robot/UnrealRobotLink.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Robot/UnrealRobotLink.cpp @@ -14,6 +14,7 @@ #include "UnrealLogger.h" #include "core_sim/link/geometry/unreal_mesh.hpp" #include "core_sim/math_utils.hpp" +#include "UnrealHelpers.h" namespace projectairsim = microsoft::projectairsim; diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/GPULidar.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/GPULidar.cpp index 54fa52d3..e90d313c 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/GPULidar.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/GPULidar.cpp @@ -25,6 +25,7 @@ #include "UObject/ConstructorHelpers.h" #include "UnrealCameraRenderRequest.h" #include "UnrealLogger.h" +#include "UnrealTransforms.h" namespace projectairsim = microsoft::projectairsim; @@ -131,12 +132,12 @@ void UGPULidar::SetupSceneCapture( } // Hide debug points in case "draw-debug-points" is set to true - OutSceneCaptureComp->HideComponent( - Cast(UnrealWorld->LineBatcher)); - OutSceneCaptureComp->HideComponent( - Cast(UnrealWorld->PersistentLineBatcher)); - OutSceneCaptureComp->HideComponent( - Cast(UnrealWorld->ForegroundLineBatcher)); + OutSceneCaptureComp->HideComponent(Cast( + UnrealWorld->GetLineBatcher(UWorld::ELineBatcherType::World))); + OutSceneCaptureComp->HideComponent(Cast( + UnrealWorld->GetLineBatcher(UWorld::ELineBatcherType::WorldPersistent))); + OutSceneCaptureComp->HideComponent(Cast( + UnrealWorld->GetLineBatcher(UWorld::ELineBatcherType::Foreground))); OutSceneCaptureComp->RegisterComponent(); auto RenderTarget = NewObject(); diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.cpp index 0d63c29c..bfdcdee3 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.cpp @@ -8,6 +8,7 @@ #include #include "core_sim/message/image_message.hpp" +#include "UnrealLogger.h" namespace projectairsim = microsoft::projectairsim; diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.h index 84006758..0b11c439 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/ImagePackingAsyncTask.h @@ -11,6 +11,7 @@ #include "UnrealCameraRenderRequest.h" #include "core_sim/sensors/camera.hpp" #include "core_sim/transforms/transform_utils.hpp" +#include "UnrealCamera.h" // This class follows the example template in Unreal's AsyncWork.h for // FAutoDeleteAsyncTask that deletes itself after completion on a background diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.cpp index c2b6d8a9..cecf1c71 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.cpp @@ -11,6 +11,7 @@ #include "SceneRendering.h" #include "LidarIntensityShader.h" +#include "PostProcess/SceneFilterRendering.h" static const bool DEBUG_RENDER_TO_VIEWPORT = false; @@ -196,12 +197,12 @@ void FLidarIntensitySceneViewExtension::PrePostProcessPass_RenderThread( FScreenPassPipelineState(VertexShader, PixelShader, DefaultBlendState, DepthStencilState), [&](FRHICommandListImmediate& RHICmdList) { - VertexShader->SetParameters(RHICmdList, View); + VertexShader->SetParameters(RHICmdList.GetScratchShaderParameters(), View); SetShaderParameters(RHICmdList, VertexShader, VertexShader.GetVertexShader(), *PostProcessMaterialParameters); - PixelShader->SetParameters(RHICmdList, View); + PixelShader->SetParameters(RHICmdList.GetScratchShaderParameters(), View); SetShaderParameters(RHICmdList, PixelShader, PixelShader.GetPixelShader(), *PostProcessMaterialParameters); @@ -288,12 +289,12 @@ void FLidarIntensitySceneViewExtension::PrePostProcessPass_RenderThread( RDG_EVENT_NAME("FCopyBufferToCPUPass"), CopyPassParameters, ERDGPassFlags::Readback, [this, &InitialData, PointCloudBufferRDG, BufferSize](FRHICommandList& RHICmdList) { - InitialData = (float*)RHILockBuffer(PointCloudBufferRDG->GetRHI(), 0, + InitialData = (float*)RHICmdList.LockBuffer(PointCloudBufferRDG->GetRHI(), 0, BufferSize, RLM_ReadOnly); FMemory::Memcpy(LidarPointCloudData.data(), InitialData, BufferSize); - RHIUnlockBuffer(PointCloudBufferRDG->GetRHI()); + RHICmdList.UnlockBuffer(PointCloudBufferRDG->GetRHI()); }); } diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.h index f90ddd1e..83e3be38 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensitySceneViewExtension.h @@ -17,12 +17,10 @@ class FLidarIntensitySceneViewExtension : public FSceneViewExtensionBase { FSceneView& InView) override {}; virtual void BeginRenderViewFamily(FSceneViewFamily& InViewFamily) override {}; virtual void PreRenderViewFamily_RenderThread( - FRHICommandListImmediate& RHICmdList, + FRDGBuilder& GraphBuilder, FSceneViewFamily& InViewFamily) override {}; - virtual void PreRenderView_RenderThread(FRHICommandListImmediate& RHICmdList, + virtual void PreRenderView_RenderThread(FRDGBuilder& GraphBuilder, FSceneView& InView) override {}; - virtual void PostRenderBasePass_RenderThread( - FRHICommandListImmediate& RHICmdList, FSceneView& InView) override {}; // Only implement this, called right before post processing begins. virtual void PrePostProcessPass_RenderThread( diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensityShader.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensityShader.h index 673ae5e8..916d07d5 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensityShader.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/LidarIntensityShader.h @@ -2,18 +2,18 @@ #include "CoreMinimal.h" #include "UnrealCameraRenderRequest.h" -#include "Runtime/Engine/Classes/Engine/TextureRenderTarget2D.h" +#include "Engine/TextureRenderTarget2D.h" #include "RHI.h" #include "RHIStaticStates.h" -#include "Runtime/RenderCore/Public/ShaderParameterUtils.h" -#include "Runtime/RenderCore/Public/RenderResource.h" -#include "Runtime/Renderer/Public/MaterialShader.h" -#include "Runtime/RenderCore/Public/RenderGraphResources.h" +#include "ShaderParameterUtils.h" +#include "RenderResource.h" +#include "MaterialShader.h" +#include "RenderGraphResources.h" // FScreenPassTextureViewportParameters and FScreenPassTextureInput -#include "Runtime/Renderer/Private/ScreenPass.h" -#include "Runtime/Renderer/Private/SceneTextureParameters.h" +#include "ScreenPass.h" +#include "SceneTextureParameters.h" BEGIN_SHADER_PARAMETER_STRUCT(FLidarIntensityShaderInputParameters, ) SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View) @@ -51,9 +51,9 @@ class FLidarIntensityPS : public FLidarIntensityShader { const ShaderMetaType::CompiledShaderInitializerType& Initializer) : FLidarIntensityShader(Initializer) {} - void SetParameters(FRHICommandList& RHICmdList, const FSceneView& View) { + void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, const FSceneView& View) { FGlobalShader::SetParameters( - RHICmdList, RHICmdList.GetBoundPixelShader(), View.ViewUniformBuffer); + BatchedParameters, View.ViewUniformBuffer); } static void ModifyCompilationEnvironment( @@ -73,8 +73,8 @@ class FLidarIntensityVS : public FLidarIntensityShader { const ShaderMetaType::CompiledShaderInitializerType& Initializer) : FLidarIntensityShader(Initializer) {} - void SetParameters(FRHICommandList& RHICmdList, const FSceneView& View) { + void SetParameters(FRHIBatchedShaderParameters& BatchedParameters, const FSceneView& View) { FGlobalShader::SetParameters( - RHICmdList, RHICmdList.GetBoundVertexShader(), View.ViewUniformBuffer); + BatchedParameters, View.ViewUniformBuffer); } }; \ No newline at end of file diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCamera.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCamera.cpp index eb161a6d..2d6b3193 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCamera.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCamera.cpp @@ -34,6 +34,7 @@ #include "core_sim/message/image_message.hpp" #include "core_sim/sensors/camera.hpp" #include "core_sim/transforms/transform_utils.hpp" +#include "UnrealTransforms.h" namespace projectairsim = microsoft::projectairsim; @@ -149,12 +150,12 @@ void UUnrealCamera::LoadCameraMaterials() { void HideDebugDrawComponent(USceneCaptureComponent2D* CaptureComponent, UWorld* UnrealWorld) { - CaptureComponent->HideComponent( - Cast(UnrealWorld->LineBatcher)); - CaptureComponent->HideComponent( - Cast(UnrealWorld->PersistentLineBatcher)); - CaptureComponent->HideComponent( - Cast(UnrealWorld->ForegroundLineBatcher)); + CaptureComponent->HideComponent(Cast( + UnrealWorld->GetLineBatcher(UWorld::ELineBatcherType::World))); + CaptureComponent->HideComponent(Cast( + UnrealWorld->GetLineBatcher(UWorld::ELineBatcherType::WorldPersistent))); + CaptureComponent->HideComponent(Cast( + UnrealWorld->GetLineBatcher(UWorld::ELineBatcherType::Foreground))); } void UUnrealCamera::CreateComponents() { @@ -918,7 +919,7 @@ void UUnrealCamera::OnRendered( FTextureRenderTargetResource* RtResource = CaptureComponent->TextureTarget->GetRenderTargetResource(); if (RtResource) { - FRHITexture2D* Texture = RtResource->GetRenderTargetTexture(); + FRHITexture* Texture = RtResource->GetRenderTargetTexture(); // Copy pixel values out of Unreal's RHI UnrealCameraRenderRequest::RenderResult ImageResult; auto bIsDepthImage = diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.cpp index 5894073a..82eb12ff 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.cpp @@ -21,7 +21,7 @@ void OnEndPlay() { ImageWrapperModule = nullptr; } -void ReadPixels(FRHITexture2D* Texture, bool bPixelsAsFloat, +void ReadPixels(FRHITexture* Texture, bool bPixelsAsFloat, RenderResult* ImageResult) { FRHICommandListImmediate& RHICmdList = GetImmediateCommandList_ForRenderCommand(); diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.h index be488f1b..f8640f46 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealCameraRenderRequest.h @@ -7,6 +7,7 @@ #pragma once #include "CoreMinimal.h" +#include "core_sim/clock.hpp" namespace UnrealCameraRenderRequest { @@ -26,7 +27,7 @@ void OnEndPlay(); void OnBeginPlay(); -void ReadPixels(FRHITexture2D* Texture, bool bPixelsAsFloat, +void ReadPixels(FRHITexture* Texture, bool bPixelsAsFloat, RenderResult* ImageResult); bool CompressUsingImageWrapper(const TArray& UnCompressed, diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealDistanceSensor.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealDistanceSensor.cpp index 02458842..e91111bd 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealDistanceSensor.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealDistanceSensor.cpp @@ -15,6 +15,7 @@ #include "Runtime/Core/Public/Async/ParallelFor.h" #include "Runtime/Engine/Classes/Kismet/KismetMathLibrary.h" #include "UnrealLogger.h" +#include "UnrealTransforms.h" namespace projectairsim = microsoft::projectairsim; diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.cpp index 14b37186..c1c2c31b 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.cpp @@ -15,6 +15,8 @@ #include "Runtime/Core/Public/Async/ParallelFor.h" #include "Runtime/Engine/Classes/Kismet/KismetMathLibrary.h" #include "UnrealLogger.h" +#include "UnrealTransforms.h" +#include "core_sim/clock.hpp" namespace projectairsim = microsoft::projectairsim; diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.h index 1ffbcde6..a4a13c51 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealLidar.h @@ -15,6 +15,7 @@ #include "core_sim/clock.hpp" #include "core_sim/sensors/lidar.hpp" #include "core_sim/transforms/transform_utils.hpp" +#include // comment so that generated.h is always the last include file with clang-format #include "UnrealLidar.generated.h" diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealRadar.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealRadar.cpp index 34936805..e5a7fcbc 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealRadar.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/Sensors/UnrealRadar.cpp @@ -486,8 +486,8 @@ inline projectairsim::Kinematics UUnrealRadar::GetKinematicsFromActor( // cast to get their kinematics. projectairsim::Kinematics Kin; // constructs with zero values - const AUnrealRobot* RobotActor = Cast(Actor); - const AUnrealEnvActor* EnvActor = Cast(Actor); + const AUnrealRobot* RobotActor = Cast(Actor); + const AUnrealEnvActor* EnvActor = Cast(Actor); if (RobotActor) { Kin = RobotActor->GetKinematics(); diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealHelpers.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealHelpers.h index b7f31b54..07a0890e 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealHelpers.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealHelpers.h @@ -31,6 +31,7 @@ #include "Runtime/Engine/Classes/Engine/StaticMesh.h" #include "UnrealLogger.h" #include "core_sim/transforms/transform_utils.hpp" +#include "ProceduralMeshComponent.h" // comment so that generated.h is always the last include file with clang-format #include "UnrealHelpers.generated.h" diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealLogger.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealLogger.h index 16edc9f7..7fcd2a85 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealLogger.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealLogger.h @@ -14,9 +14,9 @@ DECLARE_LOG_CATEGORY_EXTERN(SimPlugin, All, All); class UnrealLogger { public: - template + template static void Log(microsoft::projectairsim::LogLevel level, - const TCHAR (&format)[N], ArgTypes... args); + UE::Core::TCheckedFormatString format, ArgTypes... args); static void LogSim(const std::string& module, microsoft::projectairsim::LogLevel level, @@ -26,9 +26,9 @@ class UnrealLogger { static std::string GetTimeStamp(); }; -template +template inline void UnrealLogger::Log(microsoft::projectairsim::LogLevel level, - const TCHAR (&format)[N], ArgTypes... args) { + UE::Core::TCheckedFormatString format, ArgTypes... args) { FString LogMessage = FString::Printf(format, args...); // Output to Unreal's native log file/console diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.cpp index d97c7e34..1b40b6c4 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.cpp @@ -22,6 +22,7 @@ #include "UnrealLogger.h" #include "World/WeatherLib.h" #include "core_sim/clock.hpp" +#include "Sensors/UnrealCamera.h" namespace projectairsim = microsoft::projectairsim; @@ -609,7 +610,6 @@ bool AUnrealScene::GetSimBoundingBox3D( nlohmann::json AUnrealScene::Get3DBoundingBoxServiceMethod( const std::string& object_name, int box_alignment) { - FRotator BoxRotation; FOrientedBox OrientedBox; projectairsim::BBox3D OutBBox; auto BoxAlignment = diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.h b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.h index 5ff20963..50ac6dec 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.h +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealScene.h @@ -117,7 +117,7 @@ class AUnrealScene : public AActor { TimeNano unreal_time; bool using_unreal_physics; - std::unique_ptr world_api; + std::unique_ptr world_api; std::shared_ptr time_of_day; std::vector objects_; diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealSimLoader.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealSimLoader.cpp index 01a37108..c0d9e3ec 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealSimLoader.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/UnrealSimLoader.cpp @@ -17,6 +17,7 @@ #include "UnrealLogger.h" #include "UnrealScene.h" #include "simserver.hpp" +#include "Constant.h" #ifdef ENABLE_CESIUM #include "Cesium3DTileset.h" diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/World/WorldSimApi.cpp b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/World/WorldSimApi.cpp index 84e85f0b..07065d82 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/World/WorldSimApi.cpp +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/Private/World/WorldSimApi.cpp @@ -15,6 +15,8 @@ #include "assimp/postprocess.h" #include "assimp/scene.h" #include "core_sim/actor/env_actor.hpp" +#include "assimp/Importer.hpp" +#include "core_sim/geodetic_converter.hpp" namespace projectairsim = microsoft::projectairsim; @@ -1246,7 +1248,7 @@ std::vector WorldSimApi::swapTextures(const std::string& tag, } if (invalidChoice) continue; - dynamic_cast(shuffler)->SwapTexture( + Cast(shuffler)->SwapTexture( tex_id, component_id, material_id); swappedObjectNames.push_back(TCHAR_TO_UTF8(*shuffler->GetName())); } diff --git a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/ProjectAirSim.Build.cs b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/ProjectAirSim.Build.cs index 5805354a..63dd0cd4 100644 --- a/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/ProjectAirSim.Build.cs +++ b/unreal/Blocks/Plugins/ProjectAirSim/Source/ProjectAirSim/ProjectAirSim.Build.cs @@ -11,9 +11,7 @@ public class ProjectAirSim : ModuleRules { public ProjectAirSim(ReadOnlyTargetRules Target) : base(Target) { - CppStandard = CppStandardVersion.Cpp17; PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; - PrivatePCHHeaderFile = "Public/ProjectAirSim.h"; // Allow Unreal's default setting for IWYU instead of setting explicitly // bEnforceIWYU = true; // UE <= 5.1 @@ -21,9 +19,6 @@ public ProjectAirSim(ReadOnlyTargetRules Target) : base(Target) bEnableExceptions = true; - // Silence MSVC 14.25.28610 deprecation warning from Eigen - PublicDefinitions.Add("_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING"); - string buildType = (Target.Configuration == UnrealTargetConfiguration.Debug || Target.Configuration == UnrealTargetConfiguration.DebugGame) ? "Debug" @@ -47,7 +42,6 @@ public ProjectAirSim(ReadOnlyTargetRules Target) : base(Target) if (Target.Platform == UnrealTargetPlatform.Win64) { List liststrIncludes = new List { - ModuleDirectory + "/Private", PluginDirectory + "/SimLibs/core_sim/include", PluginDirectory + "/SimLibs/simserver/include", PluginDirectory + "/SimLibs/physics/include", @@ -65,6 +59,7 @@ public ProjectAirSim(ReadOnlyTargetRules Target) : base(Target) if (buildType == "Debug") liststrIncludes.Add(PluginDirectory + "/SimLibs/lvmon/include"); + liststrIncludes.Add(Path.Combine(GetModuleDirectory("Renderer"), "Internal")); PrivateIncludePaths.AddRange(liststrIncludes); } diff --git a/unreal/Blocks/Source/Blocks.Target.cs b/unreal/Blocks/Source/Blocks.Target.cs index 6602933b..b6957b02 100644 --- a/unreal/Blocks/Source/Blocks.Target.cs +++ b/unreal/Blocks/Source/Blocks.Target.cs @@ -11,7 +11,7 @@ public class BlocksTarget : TargetRules public BlocksTarget(TargetInfo Target) : base(Target) { Type = TargetType.Game; - DefaultBuildSettings = BuildSettingsVersion.V2; + DefaultBuildSettings = BuildSettingsVersion.Latest; IncludeOrderVersion = EngineIncludeOrderVersion.Latest; // from UE5.1 ExtraModuleNames.AddRange(new string[] { "Blocks" }); diff --git a/unreal/Blocks/Source/BlocksEditor.Target.cs b/unreal/Blocks/Source/BlocksEditor.Target.cs index a6077732..7d51f267 100644 --- a/unreal/Blocks/Source/BlocksEditor.Target.cs +++ b/unreal/Blocks/Source/BlocksEditor.Target.cs @@ -11,7 +11,7 @@ public class BlocksEditorTarget : TargetRules public BlocksEditorTarget(TargetInfo Target) : base(Target) { Type = TargetType.Editor; - DefaultBuildSettings = BuildSettingsVersion.V2; + DefaultBuildSettings = BuildSettingsVersion.Latest; IncludeOrderVersion = EngineIncludeOrderVersion.Latest; // from UE5.1 ExtraModuleNames.AddRange(new string[] { "Blocks" });