Implement land, terrain, environment, and sound managers (#70)
All checks were successful
Native code generation / deterministic (push) Successful in 15m1s
Imaging and meshing gate / native (push) Successful in 5m22s
Native Rust workspace compile / compile (push) Successful in 5m10s

This commit is contained in:
2026-08-10 16:53:35 +00:00
parent 13f85bfa34
commit d537a37172
14 changed files with 4890 additions and 2028 deletions

View File

@@ -147,6 +147,36 @@ NATIVE_TYPES = {
"T:LibreMetaverse.RegionExperiencesEventArgs": "crate::agent_messages::RegionExperiencesEventArgs",
"T:LibreMetaverse.SetDisplayNameReplyEventArgs": "crate::agent_messages::SetDisplayNameReplyEventArgs",
"T:LibreMetaverse.TeleportEventArgs": "crate::agent_movement::TeleportEventArgs",
"T:LibreMetaverse.TerrainCompressor": "crate::terrain_codec::TerrainCompressor",
"T:LibreMetaverse.TerrainPatch": "crate::terrain_codec::TerrainPatch",
"T:LibreMetaverse.TerrainPatch.GroupHeader": "crate::terrain_codec::TerrainPatchGroupHeader",
"T:LibreMetaverse.TerrainPatch.Header": "crate::terrain_codec::TerrainPatchHeader",
"T:LibreMetaverse.TerrainManager": "crate::terrain_manager::TerrainManager",
"T:LibreMetaverse.LandPatchReceivedEventArgs": "crate::terrain_manager::LandPatchReceivedEventArgs",
"T:LibreMetaverse.SoundManager": "crate::sound_manager::SoundManager",
"T:LibreMetaverse.AttachedSoundEventArgs": "crate::sound_manager::AttachedSoundEventArgs",
"T:LibreMetaverse.AttachedSoundGainChangeEventArgs": "crate::sound_manager::AttachedSoundGainChangeEventArgs",
"T:LibreMetaverse.PreloadSoundEventArgs": "crate::sound_manager::PreloadSoundEventArgs",
"T:LibreMetaverse.SoundTriggerEventArgs": "crate::sound_manager::SoundTriggerEventArgs",
"T:LibreMetaverse.Parcel": "crate::parcel_manager::Parcel",
"T:LibreMetaverse.ParcelInfo": "crate::parcel_manager::ParcelInfo",
"T:LibreMetaverse.ParcelMedia": "crate::parcel_manager::ParcelMedia",
"T:LibreMetaverse.ParcelManager": "crate::parcel_manager::ParcelManager",
"T:LibreMetaverse.ParcelManager.ParcelAccessEntry": "crate::parcel_manager::ParcelManagerParcelAccessEntry",
"T:LibreMetaverse.ParcelManager.ParcelPrimOwners": "crate::parcel_manager::ParcelManagerParcelPrimOwners",
"T:LibreMetaverse.ForceSelectObjectsReplyEventArgs": "crate::parcel_manager::ForceSelectObjectsReplyEventArgs",
"T:LibreMetaverse.ParcelAccessListReplyEventArgs": "crate::parcel_manager::ParcelAccessListReplyEventArgs",
"T:LibreMetaverse.ParcelDwellReplyEventArgs": "crate::parcel_manager::ParcelDwellReplyEventArgs",
"T:LibreMetaverse.ParcelInfoReplyEventArgs": "crate::parcel_manager::ParcelInfoReplyEventArgs",
"T:LibreMetaverse.ParcelMediaCommandEventArgs": "crate::parcel_manager::ParcelMediaCommandEventArgs",
"T:LibreMetaverse.ParcelMediaUpdateReplyEventArgs": "crate::parcel_manager::ParcelMediaUpdateReplyEventArgs",
"T:LibreMetaverse.ParcelObjectOwnersReplyEventArgs": "crate::parcel_manager::ParcelObjectOwnersReplyEventArgs",
"T:LibreMetaverse.ParcelOverlayEventArgs": "crate::parcel_manager::ParcelOverlayEventArgs",
"T:LibreMetaverse.ParcelPropertiesEventArgs": "crate::parcel_manager::ParcelPropertiesEventArgs",
"T:LibreMetaverse.SimParcelsDownloadedEventArgs": "crate::parcel_manager::SimParcelsDownloadedEventArgs",
"T:LibreMetaverse.Messages.Linden.ObjectResourcesDetail": "crate::parcel_manager::ObjectResourcesDetail",
"T:LibreMetaverse.Messages.Linden.ParcelResourcesDetail": "crate::parcel_manager::ParcelResourcesDetail",
"T:LibreMetaverse.Messages.Linden.LandResourcesInfo": "crate::parcel_manager::LandResourcesInfo",
"T:LibreMetaverse.ProductInfoEventArgs": "crate::agent_messages::ProductInfoEventArgs",
"T:LibreMetaverse.RegionCrossedEventArgs": "crate::agent_movement::RegionCrossedEventArgs",
"T:LibreMetaverse.RegionCrossingPredictionEventArgs": "crate::agent_movement::RegionCrossingPredictionEventArgs",
@@ -177,6 +207,13 @@ NATIVE_TYPES = {
"T:LibreMetaverse.Caps.EventQueueCallback": "crate::network_manager::CapsEventQueueCallback",
"T:LibreMetaverse.CapsEventDictionary": "crate::network_manager::CapsEventDictionary",
"T:LibreMetaverse.DisconnectedEventArgs": "crate::network_manager::DisconnectedEventArgs",
"T:LibreMetaverse.EnvironmentManager": "crate::environment_manager::EnvironmentManager",
"T:LibreMetaverse.LegacyEnvironmentEventArgs": "crate::environment_manager::LegacyEnvironmentEventArgs",
"T:LibreMetaverse.ParcelEnvironmentEventArgs": "crate::environment_manager::ParcelEnvironmentEventArgs",
"T:LibreMetaverse.RegionEnvironmentEventArgs": "crate::environment_manager::RegionEnvironmentEventArgs",
"T:LibreMetaverse.Messages.Linden.EnvironmentData": "crate::environment_manager::EnvironmentData",
"T:LibreMetaverse.Messages.Linden.ExtEnvironmentMessage": "crate::environment_manager::ExtEnvironmentMessage",
"T:LibreMetaverse.Messages.Linden.LegacyEnvironmentMessage": "crate::environment_manager::LegacyEnvironmentMessage",
"T:LibreMetaverse.EventQueueRunningEventArgs": "crate::network_manager::EventQueueRunningEventArgs",
"T:LibreMetaverse.GenericStreamingMessageEventArgs": "crate::network_manager::GenericStreamingMessageEventArgs",
"T:LibreMetaverse.NetworkManager.IncomingPacket": "crate::network_manager::NetworkManagerIncomingPacket",
@@ -358,6 +395,19 @@ NATIVE_DECLARATIONS = {
}
NATIVE_MEMBER_BODIES = {
"P:LibreMetaverse.GridClient.Environment":
"self.native_environment().unwrap_or_else(|_| panic!(\"failed to construct EnvironmentManager\"))",
"P:LibreMetaverse.GridClient.Environment#set": "self.native_set_environment(value)",
"P:LibreMetaverse.GridClient.Terrain": "self.native_terrain().unwrap_or_else(|_| panic!(\"failed to construct TerrainManager\"))",
"P:LibreMetaverse.GridClient.Terrain#set": "self.native_set_terrain(value)",
"P:LibreMetaverse.GridClient.Sound": "self.native_sound().unwrap_or_else(|_| panic!(\"failed to construct SoundManager\"))",
"P:LibreMetaverse.GridClient.Sound#set": "self.native_set_sound(value)",
"P:LibreMetaverse.GridClient.Parcels": "self.native_parcels().unwrap_or_else(|_| panic!(\"failed to construct ParcelManager\"))",
"P:LibreMetaverse.GridClient.Parcels#set": "self.native_set_parcels(value)",
"M:LibreMetaverse.Simulator.IsParcelMapFull": "Ok(self.native_is_parcel_map_full())",
"M:LibreMetaverse.Simulator.TerrainHeightAtPoint(System.Int32,System.Int32,System.Single@)": "self.native_terrain_height_at_point(x, y, height)",
"P:LibreMetaverse.Simulator.ParcelMap": "self.native_parcel_map_snapshot()",
"P:LibreMetaverse.Simulator.Parcels": "std::sync::RwLock::new(self.native_parcels_snapshot())",
"E:LibreMetaverse.ObjectManager.AvatarSitChanged":
"self.native_subscribe_avatar_sit_changed(handler)",
"E:LibreMetaverse.ObjectManager.AvatarUpdate":