Вьюмодель включена по умолчанию (пистолет)
Some checks are pending
CI / checks (push) Waiting to run

`SOURCE_RS_VIEW_MODEL=off` гасит вьюмодель, пустое значение и отсутствие
переменной — пистолет (models/weapons/v_pistol.mdl), другое значение — путь к
модели. В ассетах нет v_physgun.mdl (это модель GMod), поэтому откат идёт на
пистолет и монтировку. Замер: центр габарита пистолета (0,26, −15,84, 52,03) —
именно его вычитает посадка.
This commit is contained in:
Niko Marmeladkov 2026-10-17 10:46:08 +03:00
parent de126d0784
commit 8cf226d954

View file

@ -245,15 +245,18 @@ pub fn map(assets: Option<PathBuf>, args: MapArgs) -> anyhow::Result<()> {
// `SOURCE_RS_VIEW_MODEL` — путь к модели; пустое значение — физган, а если
// его в ассетах нет — монтировка.
let mut view_model_center = math::Vec3::ZERO;
// По умолчанию вьюмодель включена (пистолет); `SOURCE_RS_VIEW_MODEL=off`
// её гасит, другое значение — путь к модели.
let view_model_instance = match std::env::var("SOURCE_RS_VIEW_MODEL") {
Ok(value) if value.trim().is_empty() => Some("models/weapons/v_physgun.mdl".to_string()),
Ok(value) if value.trim().eq_ignore_ascii_case("off") => None,
Ok(value) if value.trim().is_empty() => Some("models/weapons/v_pistol.mdl".to_string()),
Ok(value) => Some(value),
Err(_) => None,
Err(_) => Some("models/weapons/v_pistol.mdl".to_string()),
}
.and_then(|name| {
let candidates = [
name.clone(),
"models/weapons/v_physgun.mdl".to_string(),
"models/weapons/v_pistol.mdl".to_string(),
"models/weapons/v_crowbar.mdl".to_string(),
];
for candidate in candidates {