nightshade-api 0.46.0

Procedural high level API for the nightshade game engine
Documentation
//! Render layers and culling masks: put an entity on a layer, and choose which
//! layers a camera sees. The pair keeps first person arms, editor gizmos, a
//! minimap, or a render-to-texture pass out of views that should not show them.

use nightshade::ecs::primitives::{CameraCullingMask, RenderLayer};
use nightshade::ecs::world::{CAMERA_CULLING_MASK, RENDER_LAYER};
use nightshade::prelude::*;

/// Puts the entity on a render layer, a bitmask. A camera renders the entity
/// only when its layers (see [`set_camera_layers`]) include this one. Entities
/// default to layer 1.
pub fn set_render_layer(world: &mut World, entity: Entity, layer: u32) {
    world.core.add_components(entity, RENDER_LAYER);
    world.core.set_render_layer(entity, RenderLayer(layer));
}

/// Sets which render layers a camera sees, a bitmask. An entity renders into
/// this camera only when its [`set_render_layer`] is in the mask. Cameras
/// default to seeing every layer.
pub fn set_camera_layers(world: &mut World, camera: Entity, mask: u32) {
    world.core.add_components(camera, CAMERA_CULLING_MASK);
    world
        .core
        .set_camera_culling_mask(camera, CameraCullingMask(mask));
}