use anyhow::{Result, bail};
use bevy_ecs::prelude::*;
use serde_json::Value;
use crate::prelude::*;
pub fn despawn(mut params: In<Option<Value>>, mut mods: Mods) -> Result<Value> {
let values: Vec<Value> = match params.take().unwrap_or(Value::Null) {
Value::Null => bail!("expected at least one param"),
Value::Array(values) => values,
value => vec![value],
};
for entity in values
.iter()
.filter_map(Value::as_u64)
.map(Entity::from_bits)
{
mods.despawn(entity);
}
Ok(Value::Null)
}
pub fn despawn_all(_: In<Option<Value>>, mut mods: Mods) -> Result<Value> {
mods.despawn_all();
Ok(Value::Null)
}