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.