~starkingdoms/starkingdoms

06f4e4a24e833f920faa0dfaaefea8f09e706eba — ghostly_zsh 13 hours ago 313a1a7 master
feat: radiation area
M crates/unified/assets/config/parts/hearty.part.toml => crates/unified/assets/config/parts/hearty.part.toml +2 -1
@@ 3,7 3,8 @@ name = "Hearty"
sprite_connected = "textures/hearty.png"
sprite_disconnected = "textures/hearty.png"
emissivity = 0.1
specific_heat = 100.0
specific_heat = 800.0
radiation_area = 200.0

[physics]
width = 50

M crates/unified/assets/config/parts/housing.part.toml => crates/unified/assets/config/parts/housing.part.toml +3 -2
@@ 2,8 2,9 @@
name = "Housing"
sprite_connected = "textures/thruster_on.png"
sprite_disconnected = "textures/thruster_off.png"
emissivity = 0.2
specific_heat = 100.0
emissivity = 0.1
specific_heat = 500.0
radiation_area = 20.0

[physics]
width = 50

M crates/unified/src/config/part.rs => crates/unified/src/config/part.rs +1 -0
@@ 23,6 23,7 @@ pub struct PartPartConfig {
    pub sprite_disconnected: String,
    pub emissivity: f32,
    pub specific_heat: f32,
    pub radiation_area: f32,
}
#[derive(Deserialize, TypePath, Serialize, Clone, Debug, PartialEq)]
pub struct PartPhysicsConfig {

M crates/unified/src/server/heat/radiation.rs => crates/unified/src/server/heat/radiation.rs +0 -1
@@ 26,7 26,6 @@ fn part_radiation(
        // x_n+1 = x_n - g(x_n)/g'(x_n)
        // where x_n is the previous guess for T_n+1
        let initial_temp = temperature.0;
        // temporary specific heat (c) of 1000.0
        let k = (radiator.emissivity * STEFAN_BOLTZMANN * radiator.surface_area)
            / (part.strong_config.physics.mass * part.strong_config.part.specific_heat);
        let dt = time.delta_secs();

M crates/unified/src/server/part.rs => crates/unified/src/server/part.rs +1 -1
@@ 130,7 130,7 @@ fn calculate_bundle(config: &PartConfig, handle: &Handle<PartConfig>) -> impl Bu
    let temperature = Temperature(298.0); // note that this is 25 degrees C
    let radiator = Radiator {
        emissivity: config.part.emissivity,
        surface_area: config.physics.width * config.physics.height,
        surface_area: config.part.radiation_area,
    };

    (