Load engines from TOML and improve scenario audio and carb tuning
Migrate 32 engine definitions into validated startup-loaded TOML files and separate configuration and snapshots from scenario assembly. Add camera-based stereo propagation from shared pipe geometry, preserve exhaust character, tune carburetor mixtures and idle, use ignition cuts for carb engines, and support returning to the scenario menu. Validation: full Windows build and all 14 CTest checks passed.
This commit is contained in:
@@ -33,5 +33,18 @@ int main() {
|
||||
camera.orbit({40,20});camera.pan({20,15},500);camera.zoom(2);
|
||||
check(camera.pitch<=80 && camera.pitch>=-75 && camera.distance>.35f,"camera bounds");
|
||||
check(camera.target.x!=before.x || camera.target.y!=before.y,"camera panning must move target");
|
||||
for(float yaw:{-90.f,-28.f,0.f,90.f,180.f})for(float pitch:{-60.f,0.f,70.f}) {
|
||||
camera.yaw=yaw;camera.pitch=pitch;camera.target={.7f,.4f,-.2f};camera.distance=3;
|
||||
const auto listener=camera.listener(1.8f,1.1f);
|
||||
const float y=yaw*.017453293f,p=pitch*.017453293f;
|
||||
const float dx=listener.position.x-camera.target.x-1.1f;
|
||||
const float dy=listener.position.y-camera.target.y,dz=listener.position.z-camera.target.z;
|
||||
const float x1=std::cos(y)*dx+std::sin(y)*dz,z1=-std::sin(y)*dx+std::cos(y)*dz;
|
||||
check(std::abs(x1)<2e-6f && std::abs(std::cos(p)*dy-std::sin(p)*z1)<2e-6f &&
|
||||
std::abs(std::sin(p)*dy+std::cos(p)*z1-5.4f)<2e-6f,
|
||||
"audio listener must coincide with the rendered camera including fit offsets");
|
||||
check(std::abs(std::cos(y)*listener.right.x+std::sin(y)*listener.right.z-1)<1e-6f,
|
||||
"audio ears must rotate with the camera right axis");
|
||||
}
|
||||
std::cout<<"Desktop layout, spring pedal, keyboard travel and orbit camera checks passed\n";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user