Sigil documentation
ReferenceRust referencesigil-nova

sigil-nova · building

Source declarations, signatures and documentation for building.

Source: sigil/node/sigil-nova/src/building.rs. SHA-256: cc97049d0646da8c424b58c8a4fd92910051c207eac9b911790a028e01f67280.

This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.

building::MAX_POLYCOUNT

Maximum polycount for a single building (performance budget).

pub const MAX_POLYCOUNT: u32;

Source line: 15.

building::BuildingId

Unique building identifier.

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct BuildingId(pub String);

Source line: 19.

building::BoundingBox

Axis-aligned bounding box for a building.

#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub struct BoundingBox {
pub min: WorldPosition,
pub max: WorldPosition
}

Source line: 23.

building::BuildingManifest

Manifest describing a building asset before placement.

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BuildingManifest {
pub id: BuildingId,
pub name: String,
/// DID of the 3D asset in MARS registry.

pub asset_did: String,
pub polycount: u32,
pub bounding_box: BoundingBox,
/// Number of Level-of-Detail levels.

pub lod_levels: u8,
/// DID of the building creator.

pub creator_did: String
}

Source line: 30.

building::BuildingPlacement

A building placed on a specific parcel in the world.

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BuildingPlacement {
pub manifest: BuildingManifest,
pub parcel_id: ParcelId,
pub position: WorldPosition,
/// Rotation in degrees around the Y axis.

pub rotation: f32,
pub placed_at: u64,
pub permissions: BuildingPermissions
}

Source line: 45.

building::BuildingPermissions

Access control for a building.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BuildingPermissions {
pub owner_did: String,
pub can_enter: AccessLevel,
pub can_modify: AccessLevel
}

Source line: 57.

building::AccessLevel

Access level for building interactions.

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum AccessLevel {
    Public,
    Members,
    Owner,
    Deny,
}

Source line: 65.

building::BuildingRegistry

On-chain registry of deployed buildings.

#[derive(Debug, Clone, Default)]
pub struct BuildingRegistry {

}

Source line: 74.

building::BuildingRegistry::new

Create an empty building registry.

pub fn new() -> Self;

Source line: 80.

building::BuildingRegistry::deploy_building

Deploy a building onto a parcel.

Validates polycount limits. The caller must ensure parcel ownership externally before calling this method.

pub fn deploy_building(
        &mut self,
        manifest: BuildingManifest,
        parcel_id: ParcelId,
        position: WorldPosition,
        rotation: f32,
        timestamp: u64,
        owner_did: &str,
    ) -> Result<BuildingPlacement, NovaError>;

Source line: 88.

building::BuildingRegistry::remove_building

Remove a building. Only the owner may remove it.

pub fn remove_building(
        &mut self,
        building_id: &BuildingId,
        caller_did: &str,
    ) -> Result<BuildingPlacement, NovaError>;

Source line: 163.

building::BuildingRegistry::get_buildings_in_parcel

Get all buildings placed in a given chunk.

Uses a simple linear scan; production would use a spatial index.

pub fn get_buildings_in_parcel(&self, parcel_id: &ParcelId) -> Vec<&BuildingPlacement>;

Source line: 188.

building::BuildingRegistry::update_permissions

Update the permissions on an existing building.

pub fn update_permissions(
        &mut self,
        building_id: &BuildingId,
        caller_did: &str,
        new_perms: BuildingPermissions,
    ) -> Result<(), NovaError>;

Source line: 196.

building::BuildingRegistry::get_building

Get a building by ID.

pub fn get_building(&self, building_id: &BuildingId) -> Option<&BuildingPlacement>;

Source line: 219.

building::BuildingRegistry::building_count

Total number of deployed buildings.

pub fn building_count(&self) -> usize;

Source line: 224.

On this page