diff --git a/OpenMetaverse/ParcelManager.cs b/OpenMetaverse/ParcelManager.cs index 58ef4f11..61f5b128 100644 --- a/OpenMetaverse/ParcelManager.cs +++ b/OpenMetaverse/ParcelManager.cs @@ -669,7 +669,7 @@ namespace OpenMetaverse /// public DateTime Time; /// Flags for specific entry in white/black lists - public uint Flags; + public AccessList Flags; } /// @@ -1568,7 +1568,7 @@ namespace OpenMetaverse ParcelAccessEntry pae = new ParcelAccessEntry(); pae.AgentID = reply.List[i].ID; pae.Time = Utils.UnixTimeToDateTime((uint)reply.List[i].Time); - pae.Flags = reply.List[i].Flags; + pae.Flags = (AccessList)reply.List[i].Flags; accessList.Add(pae); } diff --git a/OpenMetaverse/_Packets_.cs b/OpenMetaverse/_Packets_.cs index 8e5a4e29..8361ea66 100644 --- a/OpenMetaverse/_Packets_.cs +++ b/OpenMetaverse/_Packets_.cs @@ -1224,6 +1224,403 @@ namespace OpenMetaverse.Packets return PacketType.Default; } + public static Packet BuildPacket(PacketType type) + { + if(type == PacketType.StartPingCheck) return new StartPingCheckPacket(); + if(type == PacketType.CompletePingCheck) return new CompletePingCheckPacket(); + if(type == PacketType.AgentUpdate) return new AgentUpdatePacket(); + if(type == PacketType.AgentAnimation) return new AgentAnimationPacket(); + if(type == PacketType.AgentRequestSit) return new AgentRequestSitPacket(); + if(type == PacketType.AgentSit) return new AgentSitPacket(); + if(type == PacketType.RequestImage) return new RequestImagePacket(); + if(type == PacketType.ImageData) return new ImageDataPacket(); + if(type == PacketType.ImagePacket) return new ImagePacketPacket(); + if(type == PacketType.LayerData) return new LayerDataPacket(); + if(type == PacketType.ObjectUpdate) return new ObjectUpdatePacket(); + if(type == PacketType.ObjectUpdateCompressed) return new ObjectUpdateCompressedPacket(); + if(type == PacketType.ObjectUpdateCached) return new ObjectUpdateCachedPacket(); + if(type == PacketType.ImprovedTerseObjectUpdate) return new ImprovedTerseObjectUpdatePacket(); + if(type == PacketType.KillObject) return new KillObjectPacket(); + if(type == PacketType.TransferPacket) return new TransferPacketPacket(); + if(type == PacketType.SendXferPacket) return new SendXferPacketPacket(); + if(type == PacketType.ConfirmXferPacket) return new ConfirmXferPacketPacket(); + if(type == PacketType.AvatarAnimation) return new AvatarAnimationPacket(); + if(type == PacketType.AvatarSitResponse) return new AvatarSitResponsePacket(); + if(type == PacketType.CameraConstraint) return new CameraConstraintPacket(); + if(type == PacketType.ParcelProperties) return new ParcelPropertiesPacket(); + if(type == PacketType.ChildAgentUpdate) return new ChildAgentUpdatePacket(); + if(type == PacketType.ChildAgentAlive) return new ChildAgentAlivePacket(); + if(type == PacketType.ChildAgentPositionUpdate) return new ChildAgentPositionUpdatePacket(); + if(type == PacketType.SoundTrigger) return new SoundTriggerPacket(); + if(type == PacketType.ObjectAdd) return new ObjectAddPacket(); + if(type == PacketType.MultipleObjectUpdate) return new MultipleObjectUpdatePacket(); + if(type == PacketType.RequestMultipleObjects) return new RequestMultipleObjectsPacket(); + if(type == PacketType.ObjectPosition) return new ObjectPositionPacket(); + if(type == PacketType.RequestObjectPropertiesFamily) return new RequestObjectPropertiesFamilyPacket(); + if(type == PacketType.CoarseLocationUpdate) return new CoarseLocationUpdatePacket(); + if(type == PacketType.CrossedRegion) return new CrossedRegionPacket(); + if(type == PacketType.ConfirmEnableSimulator) return new ConfirmEnableSimulatorPacket(); + if(type == PacketType.ObjectProperties) return new ObjectPropertiesPacket(); + if(type == PacketType.ObjectPropertiesFamily) return new ObjectPropertiesFamilyPacket(); + if(type == PacketType.ParcelPropertiesRequest) return new ParcelPropertiesRequestPacket(); + if(type == PacketType.AttachedSound) return new AttachedSoundPacket(); + if(type == PacketType.AttachedSoundGainChange) return new AttachedSoundGainChangePacket(); + if(type == PacketType.PreloadSound) return new PreloadSoundPacket(); + if(type == PacketType.ViewerEffect) return new ViewerEffectPacket(); + if(type == PacketType.TestMessage) return new TestMessagePacket(); + if(type == PacketType.UseCircuitCode) return new UseCircuitCodePacket(); + if(type == PacketType.TelehubInfo) return new TelehubInfoPacket(); + if(type == PacketType.EconomyDataRequest) return new EconomyDataRequestPacket(); + if(type == PacketType.EconomyData) return new EconomyDataPacket(); + if(type == PacketType.AvatarPickerRequest) return new AvatarPickerRequestPacket(); + if(type == PacketType.AvatarPickerReply) return new AvatarPickerReplyPacket(); + if(type == PacketType.PlacesQuery) return new PlacesQueryPacket(); + if(type == PacketType.PlacesReply) return new PlacesReplyPacket(); + if(type == PacketType.DirFindQuery) return new DirFindQueryPacket(); + if(type == PacketType.DirPlacesQuery) return new DirPlacesQueryPacket(); + if(type == PacketType.DirPlacesReply) return new DirPlacesReplyPacket(); + if(type == PacketType.DirPeopleReply) return new DirPeopleReplyPacket(); + if(type == PacketType.DirEventsReply) return new DirEventsReplyPacket(); + if(type == PacketType.DirGroupsReply) return new DirGroupsReplyPacket(); + if(type == PacketType.DirClassifiedQuery) return new DirClassifiedQueryPacket(); + if(type == PacketType.DirClassifiedReply) return new DirClassifiedReplyPacket(); + if(type == PacketType.AvatarClassifiedReply) return new AvatarClassifiedReplyPacket(); + if(type == PacketType.ClassifiedInfoRequest) return new ClassifiedInfoRequestPacket(); + if(type == PacketType.ClassifiedInfoReply) return new ClassifiedInfoReplyPacket(); + if(type == PacketType.ClassifiedInfoUpdate) return new ClassifiedInfoUpdatePacket(); + if(type == PacketType.ClassifiedDelete) return new ClassifiedDeletePacket(); + if(type == PacketType.ClassifiedGodDelete) return new ClassifiedGodDeletePacket(); + if(type == PacketType.DirLandQuery) return new DirLandQueryPacket(); + if(type == PacketType.DirLandReply) return new DirLandReplyPacket(); + if(type == PacketType.DirPopularQuery) return new DirPopularQueryPacket(); + if(type == PacketType.DirPopularReply) return new DirPopularReplyPacket(); + if(type == PacketType.ParcelInfoRequest) return new ParcelInfoRequestPacket(); + if(type == PacketType.ParcelInfoReply) return new ParcelInfoReplyPacket(); + if(type == PacketType.ParcelObjectOwnersRequest) return new ParcelObjectOwnersRequestPacket(); + if(type == PacketType.ParcelObjectOwnersReply) return new ParcelObjectOwnersReplyPacket(); + if(type == PacketType.GroupNoticesListRequest) return new GroupNoticesListRequestPacket(); + if(type == PacketType.GroupNoticesListReply) return new GroupNoticesListReplyPacket(); + if(type == PacketType.GroupNoticeRequest) return new GroupNoticeRequestPacket(); + if(type == PacketType.TeleportRequest) return new TeleportRequestPacket(); + if(type == PacketType.TeleportLocationRequest) return new TeleportLocationRequestPacket(); + if(type == PacketType.TeleportLocal) return new TeleportLocalPacket(); + if(type == PacketType.TeleportLandmarkRequest) return new TeleportLandmarkRequestPacket(); + if(type == PacketType.TeleportProgress) return new TeleportProgressPacket(); + if(type == PacketType.TeleportFinish) return new TeleportFinishPacket(); + if(type == PacketType.StartLure) return new StartLurePacket(); + if(type == PacketType.TeleportLureRequest) return new TeleportLureRequestPacket(); + if(type == PacketType.TeleportCancel) return new TeleportCancelPacket(); + if(type == PacketType.TeleportStart) return new TeleportStartPacket(); + if(type == PacketType.TeleportFailed) return new TeleportFailedPacket(); + if(type == PacketType.Undo) return new UndoPacket(); + if(type == PacketType.Redo) return new RedoPacket(); + if(type == PacketType.UndoLand) return new UndoLandPacket(); + if(type == PacketType.AgentPause) return new AgentPausePacket(); + if(type == PacketType.AgentResume) return new AgentResumePacket(); + if(type == PacketType.ChatFromViewer) return new ChatFromViewerPacket(); + if(type == PacketType.AgentThrottle) return new AgentThrottlePacket(); + if(type == PacketType.AgentFOV) return new AgentFOVPacket(); + if(type == PacketType.AgentHeightWidth) return new AgentHeightWidthPacket(); + if(type == PacketType.AgentSetAppearance) return new AgentSetAppearancePacket(); + if(type == PacketType.AgentQuitCopy) return new AgentQuitCopyPacket(); + if(type == PacketType.ImageNotInDatabase) return new ImageNotInDatabasePacket(); + if(type == PacketType.RebakeAvatarTextures) return new RebakeAvatarTexturesPacket(); + if(type == PacketType.SetAlwaysRun) return new SetAlwaysRunPacket(); + if(type == PacketType.ObjectDelete) return new ObjectDeletePacket(); + if(type == PacketType.ObjectDuplicate) return new ObjectDuplicatePacket(); + if(type == PacketType.ObjectDuplicateOnRay) return new ObjectDuplicateOnRayPacket(); + if(type == PacketType.ObjectScale) return new ObjectScalePacket(); + if(type == PacketType.ObjectRotation) return new ObjectRotationPacket(); + if(type == PacketType.ObjectFlagUpdate) return new ObjectFlagUpdatePacket(); + if(type == PacketType.ObjectClickAction) return new ObjectClickActionPacket(); + if(type == PacketType.ObjectImage) return new ObjectImagePacket(); + if(type == PacketType.ObjectMaterial) return new ObjectMaterialPacket(); + if(type == PacketType.ObjectShape) return new ObjectShapePacket(); + if(type == PacketType.ObjectExtraParams) return new ObjectExtraParamsPacket(); + if(type == PacketType.ObjectOwner) return new ObjectOwnerPacket(); + if(type == PacketType.ObjectGroup) return new ObjectGroupPacket(); + if(type == PacketType.ObjectBuy) return new ObjectBuyPacket(); + if(type == PacketType.BuyObjectInventory) return new BuyObjectInventoryPacket(); + if(type == PacketType.DerezContainer) return new DerezContainerPacket(); + if(type == PacketType.ObjectPermissions) return new ObjectPermissionsPacket(); + if(type == PacketType.ObjectSaleInfo) return new ObjectSaleInfoPacket(); + if(type == PacketType.ObjectName) return new ObjectNamePacket(); + if(type == PacketType.ObjectDescription) return new ObjectDescriptionPacket(); + if(type == PacketType.ObjectCategory) return new ObjectCategoryPacket(); + if(type == PacketType.ObjectSelect) return new ObjectSelectPacket(); + if(type == PacketType.ObjectDeselect) return new ObjectDeselectPacket(); + if(type == PacketType.ObjectAttach) return new ObjectAttachPacket(); + if(type == PacketType.ObjectDetach) return new ObjectDetachPacket(); + if(type == PacketType.ObjectDrop) return new ObjectDropPacket(); + if(type == PacketType.ObjectLink) return new ObjectLinkPacket(); + if(type == PacketType.ObjectDelink) return new ObjectDelinkPacket(); + if(type == PacketType.ObjectGrab) return new ObjectGrabPacket(); + if(type == PacketType.ObjectGrabUpdate) return new ObjectGrabUpdatePacket(); + if(type == PacketType.ObjectDeGrab) return new ObjectDeGrabPacket(); + if(type == PacketType.ObjectSpinStart) return new ObjectSpinStartPacket(); + if(type == PacketType.ObjectSpinUpdate) return new ObjectSpinUpdatePacket(); + if(type == PacketType.ObjectSpinStop) return new ObjectSpinStopPacket(); + if(type == PacketType.ObjectExportSelected) return new ObjectExportSelectedPacket(); + if(type == PacketType.ModifyLand) return new ModifyLandPacket(); + if(type == PacketType.VelocityInterpolateOn) return new VelocityInterpolateOnPacket(); + if(type == PacketType.VelocityInterpolateOff) return new VelocityInterpolateOffPacket(); + if(type == PacketType.StateSave) return new StateSavePacket(); + if(type == PacketType.ReportAutosaveCrash) return new ReportAutosaveCrashPacket(); + if(type == PacketType.SimWideDeletes) return new SimWideDeletesPacket(); + if(type == PacketType.TrackAgent) return new TrackAgentPacket(); + if(type == PacketType.ViewerStats) return new ViewerStatsPacket(); + if(type == PacketType.ScriptAnswerYes) return new ScriptAnswerYesPacket(); + if(type == PacketType.UserReport) return new UserReportPacket(); + if(type == PacketType.AlertMessage) return new AlertMessagePacket(); + if(type == PacketType.AgentAlertMessage) return new AgentAlertMessagePacket(); + if(type == PacketType.MeanCollisionAlert) return new MeanCollisionAlertPacket(); + if(type == PacketType.ViewerFrozenMessage) return new ViewerFrozenMessagePacket(); + if(type == PacketType.HealthMessage) return new HealthMessagePacket(); + if(type == PacketType.ChatFromSimulator) return new ChatFromSimulatorPacket(); + if(type == PacketType.SimStats) return new SimStatsPacket(); + if(type == PacketType.RequestRegionInfo) return new RequestRegionInfoPacket(); + if(type == PacketType.RegionInfo) return new RegionInfoPacket(); + if(type == PacketType.GodUpdateRegionInfo) return new GodUpdateRegionInfoPacket(); + if(type == PacketType.NearestLandingRegionUpdated) return new NearestLandingRegionUpdatedPacket(); + if(type == PacketType.RegionHandshake) return new RegionHandshakePacket(); + if(type == PacketType.RegionHandshakeReply) return new RegionHandshakeReplyPacket(); + if(type == PacketType.SimulatorViewerTimeMessage) return new SimulatorViewerTimeMessagePacket(); + if(type == PacketType.EnableSimulator) return new EnableSimulatorPacket(); + if(type == PacketType.DisableSimulator) return new DisableSimulatorPacket(); + if(type == PacketType.TransferRequest) return new TransferRequestPacket(); + if(type == PacketType.TransferInfo) return new TransferInfoPacket(); + if(type == PacketType.TransferAbort) return new TransferAbortPacket(); + if(type == PacketType.RequestXfer) return new RequestXferPacket(); + if(type == PacketType.AbortXfer) return new AbortXferPacket(); + if(type == PacketType.AvatarAppearance) return new AvatarAppearancePacket(); + if(type == PacketType.SetFollowCamProperties) return new SetFollowCamPropertiesPacket(); + if(type == PacketType.ClearFollowCamProperties) return new ClearFollowCamPropertiesPacket(); + if(type == PacketType.RequestPayPrice) return new RequestPayPricePacket(); + if(type == PacketType.PayPriceReply) return new PayPriceReplyPacket(); + if(type == PacketType.KickUser) return new KickUserPacket(); + if(type == PacketType.KickUserAck) return new KickUserAckPacket(); + if(type == PacketType.GodKickUser) return new GodKickUserPacket(); + if(type == PacketType.EjectUser) return new EjectUserPacket(); + if(type == PacketType.FreezeUser) return new FreezeUserPacket(); + if(type == PacketType.AvatarPropertiesRequest) return new AvatarPropertiesRequestPacket(); + if(type == PacketType.AvatarPropertiesReply) return new AvatarPropertiesReplyPacket(); + if(type == PacketType.AvatarInterestsReply) return new AvatarInterestsReplyPacket(); + if(type == PacketType.AvatarGroupsReply) return new AvatarGroupsReplyPacket(); + if(type == PacketType.AvatarPropertiesUpdate) return new AvatarPropertiesUpdatePacket(); + if(type == PacketType.AvatarInterestsUpdate) return new AvatarInterestsUpdatePacket(); + if(type == PacketType.AvatarNotesReply) return new AvatarNotesReplyPacket(); + if(type == PacketType.AvatarNotesUpdate) return new AvatarNotesUpdatePacket(); + if(type == PacketType.AvatarPicksReply) return new AvatarPicksReplyPacket(); + if(type == PacketType.EventInfoRequest) return new EventInfoRequestPacket(); + if(type == PacketType.EventInfoReply) return new EventInfoReplyPacket(); + if(type == PacketType.EventNotificationAddRequest) return new EventNotificationAddRequestPacket(); + if(type == PacketType.EventNotificationRemoveRequest) return new EventNotificationRemoveRequestPacket(); + if(type == PacketType.EventGodDelete) return new EventGodDeletePacket(); + if(type == PacketType.PickInfoReply) return new PickInfoReplyPacket(); + if(type == PacketType.PickInfoUpdate) return new PickInfoUpdatePacket(); + if(type == PacketType.PickDelete) return new PickDeletePacket(); + if(type == PacketType.PickGodDelete) return new PickGodDeletePacket(); + if(type == PacketType.ScriptQuestion) return new ScriptQuestionPacket(); + if(type == PacketType.ScriptControlChange) return new ScriptControlChangePacket(); + if(type == PacketType.ScriptDialog) return new ScriptDialogPacket(); + if(type == PacketType.ScriptDialogReply) return new ScriptDialogReplyPacket(); + if(type == PacketType.ForceScriptControlRelease) return new ForceScriptControlReleasePacket(); + if(type == PacketType.RevokePermissions) return new RevokePermissionsPacket(); + if(type == PacketType.LoadURL) return new LoadURLPacket(); + if(type == PacketType.ScriptTeleportRequest) return new ScriptTeleportRequestPacket(); + if(type == PacketType.ParcelOverlay) return new ParcelOverlayPacket(); + if(type == PacketType.ParcelPropertiesRequestByID) return new ParcelPropertiesRequestByIDPacket(); + if(type == PacketType.ParcelPropertiesUpdate) return new ParcelPropertiesUpdatePacket(); + if(type == PacketType.ParcelReturnObjects) return new ParcelReturnObjectsPacket(); + if(type == PacketType.ParcelSetOtherCleanTime) return new ParcelSetOtherCleanTimePacket(); + if(type == PacketType.ParcelDisableObjects) return new ParcelDisableObjectsPacket(); + if(type == PacketType.ParcelSelectObjects) return new ParcelSelectObjectsPacket(); + if(type == PacketType.EstateCovenantRequest) return new EstateCovenantRequestPacket(); + if(type == PacketType.EstateCovenantReply) return new EstateCovenantReplyPacket(); + if(type == PacketType.ForceObjectSelect) return new ForceObjectSelectPacket(); + if(type == PacketType.ParcelBuyPass) return new ParcelBuyPassPacket(); + if(type == PacketType.ParcelDeedToGroup) return new ParcelDeedToGroupPacket(); + if(type == PacketType.ParcelReclaim) return new ParcelReclaimPacket(); + if(type == PacketType.ParcelClaim) return new ParcelClaimPacket(); + if(type == PacketType.ParcelJoin) return new ParcelJoinPacket(); + if(type == PacketType.ParcelDivide) return new ParcelDividePacket(); + if(type == PacketType.ParcelRelease) return new ParcelReleasePacket(); + if(type == PacketType.ParcelBuy) return new ParcelBuyPacket(); + if(type == PacketType.ParcelGodForceOwner) return new ParcelGodForceOwnerPacket(); + if(type == PacketType.ParcelAccessListRequest) return new ParcelAccessListRequestPacket(); + if(type == PacketType.ParcelAccessListReply) return new ParcelAccessListReplyPacket(); + if(type == PacketType.ParcelAccessListUpdate) return new ParcelAccessListUpdatePacket(); + if(type == PacketType.ParcelDwellRequest) return new ParcelDwellRequestPacket(); + if(type == PacketType.ParcelDwellReply) return new ParcelDwellReplyPacket(); + if(type == PacketType.ParcelGodMarkAsContent) return new ParcelGodMarkAsContentPacket(); + if(type == PacketType.ViewerStartAuction) return new ViewerStartAuctionPacket(); + if(type == PacketType.UUIDNameRequest) return new UUIDNameRequestPacket(); + if(type == PacketType.UUIDNameReply) return new UUIDNameReplyPacket(); + if(type == PacketType.UUIDGroupNameRequest) return new UUIDGroupNameRequestPacket(); + if(type == PacketType.UUIDGroupNameReply) return new UUIDGroupNameReplyPacket(); + if(type == PacketType.ChildAgentDying) return new ChildAgentDyingPacket(); + if(type == PacketType.ChildAgentUnknown) return new ChildAgentUnknownPacket(); + if(type == PacketType.GetScriptRunning) return new GetScriptRunningPacket(); + if(type == PacketType.ScriptRunningReply) return new ScriptRunningReplyPacket(); + if(type == PacketType.SetScriptRunning) return new SetScriptRunningPacket(); + if(type == PacketType.ScriptReset) return new ScriptResetPacket(); + if(type == PacketType.ScriptSensorRequest) return new ScriptSensorRequestPacket(); + if(type == PacketType.ScriptSensorReply) return new ScriptSensorReplyPacket(); + if(type == PacketType.CompleteAgentMovement) return new CompleteAgentMovementPacket(); + if(type == PacketType.AgentMovementComplete) return new AgentMovementCompletePacket(); + if(type == PacketType.LogoutRequest) return new LogoutRequestPacket(); + if(type == PacketType.LogoutReply) return new LogoutReplyPacket(); + if(type == PacketType.ImprovedInstantMessage) return new ImprovedInstantMessagePacket(); + if(type == PacketType.RetrieveInstantMessages) return new RetrieveInstantMessagesPacket(); + if(type == PacketType.FindAgent) return new FindAgentPacket(); + if(type == PacketType.RequestGodlikePowers) return new RequestGodlikePowersPacket(); + if(type == PacketType.GrantGodlikePowers) return new GrantGodlikePowersPacket(); + if(type == PacketType.GodlikeMessage) return new GodlikeMessagePacket(); + if(type == PacketType.EstateOwnerMessage) return new EstateOwnerMessagePacket(); + if(type == PacketType.GenericMessage) return new GenericMessagePacket(); + if(type == PacketType.MuteListRequest) return new MuteListRequestPacket(); + if(type == PacketType.UpdateMuteListEntry) return new UpdateMuteListEntryPacket(); + if(type == PacketType.RemoveMuteListEntry) return new RemoveMuteListEntryPacket(); + if(type == PacketType.CopyInventoryFromNotecard) return new CopyInventoryFromNotecardPacket(); + if(type == PacketType.UpdateInventoryItem) return new UpdateInventoryItemPacket(); + if(type == PacketType.UpdateCreateInventoryItem) return new UpdateCreateInventoryItemPacket(); + if(type == PacketType.MoveInventoryItem) return new MoveInventoryItemPacket(); + if(type == PacketType.CopyInventoryItem) return new CopyInventoryItemPacket(); + if(type == PacketType.RemoveInventoryItem) return new RemoveInventoryItemPacket(); + if(type == PacketType.ChangeInventoryItemFlags) return new ChangeInventoryItemFlagsPacket(); + if(type == PacketType.SaveAssetIntoInventory) return new SaveAssetIntoInventoryPacket(); + if(type == PacketType.CreateInventoryFolder) return new CreateInventoryFolderPacket(); + if(type == PacketType.UpdateInventoryFolder) return new UpdateInventoryFolderPacket(); + if(type == PacketType.MoveInventoryFolder) return new MoveInventoryFolderPacket(); + if(type == PacketType.RemoveInventoryFolder) return new RemoveInventoryFolderPacket(); + if(type == PacketType.FetchInventoryDescendents) return new FetchInventoryDescendentsPacket(); + if(type == PacketType.InventoryDescendents) return new InventoryDescendentsPacket(); + if(type == PacketType.FetchInventory) return new FetchInventoryPacket(); + if(type == PacketType.FetchInventoryReply) return new FetchInventoryReplyPacket(); + if(type == PacketType.BulkUpdateInventory) return new BulkUpdateInventoryPacket(); + if(type == PacketType.RequestInventoryAsset) return new RequestInventoryAssetPacket(); + if(type == PacketType.InventoryAssetResponse) return new InventoryAssetResponsePacket(); + if(type == PacketType.RemoveInventoryObjects) return new RemoveInventoryObjectsPacket(); + if(type == PacketType.PurgeInventoryDescendents) return new PurgeInventoryDescendentsPacket(); + if(type == PacketType.UpdateTaskInventory) return new UpdateTaskInventoryPacket(); + if(type == PacketType.RemoveTaskInventory) return new RemoveTaskInventoryPacket(); + if(type == PacketType.MoveTaskInventory) return new MoveTaskInventoryPacket(); + if(type == PacketType.RequestTaskInventory) return new RequestTaskInventoryPacket(); + if(type == PacketType.ReplyTaskInventory) return new ReplyTaskInventoryPacket(); + if(type == PacketType.DeRezObject) return new DeRezObjectPacket(); + if(type == PacketType.DeRezAck) return new DeRezAckPacket(); + if(type == PacketType.RezObject) return new RezObjectPacket(); + if(type == PacketType.RezObjectFromNotecard) return new RezObjectFromNotecardPacket(); + if(type == PacketType.AcceptFriendship) return new AcceptFriendshipPacket(); + if(type == PacketType.DeclineFriendship) return new DeclineFriendshipPacket(); + if(type == PacketType.FormFriendship) return new FormFriendshipPacket(); + if(type == PacketType.TerminateFriendship) return new TerminateFriendshipPacket(); + if(type == PacketType.OfferCallingCard) return new OfferCallingCardPacket(); + if(type == PacketType.AcceptCallingCard) return new AcceptCallingCardPacket(); + if(type == PacketType.DeclineCallingCard) return new DeclineCallingCardPacket(); + if(type == PacketType.RezScript) return new RezScriptPacket(); + if(type == PacketType.CreateInventoryItem) return new CreateInventoryItemPacket(); + if(type == PacketType.CreateLandmarkForEvent) return new CreateLandmarkForEventPacket(); + if(type == PacketType.RegionHandleRequest) return new RegionHandleRequestPacket(); + if(type == PacketType.RegionIDAndHandleReply) return new RegionIDAndHandleReplyPacket(); + if(type == PacketType.MoneyTransferRequest) return new MoneyTransferRequestPacket(); + if(type == PacketType.MoneyBalanceRequest) return new MoneyBalanceRequestPacket(); + if(type == PacketType.MoneyBalanceReply) return new MoneyBalanceReplyPacket(); + if(type == PacketType.RoutedMoneyBalanceReply) return new RoutedMoneyBalanceReplyPacket(); + if(type == PacketType.ActivateGestures) return new ActivateGesturesPacket(); + if(type == PacketType.DeactivateGestures) return new DeactivateGesturesPacket(); + if(type == PacketType.MuteListUpdate) return new MuteListUpdatePacket(); + if(type == PacketType.UseCachedMuteList) return new UseCachedMuteListPacket(); + if(type == PacketType.GrantUserRights) return new GrantUserRightsPacket(); + if(type == PacketType.ChangeUserRights) return new ChangeUserRightsPacket(); + if(type == PacketType.OnlineNotification) return new OnlineNotificationPacket(); + if(type == PacketType.OfflineNotification) return new OfflineNotificationPacket(); + if(type == PacketType.SetStartLocationRequest) return new SetStartLocationRequestPacket(); + if(type == PacketType.AssetUploadRequest) return new AssetUploadRequestPacket(); + if(type == PacketType.AssetUploadComplete) return new AssetUploadCompletePacket(); + if(type == PacketType.CreateGroupRequest) return new CreateGroupRequestPacket(); + if(type == PacketType.CreateGroupReply) return new CreateGroupReplyPacket(); + if(type == PacketType.UpdateGroupInfo) return new UpdateGroupInfoPacket(); + if(type == PacketType.GroupRoleChanges) return new GroupRoleChangesPacket(); + if(type == PacketType.JoinGroupRequest) return new JoinGroupRequestPacket(); + if(type == PacketType.JoinGroupReply) return new JoinGroupReplyPacket(); + if(type == PacketType.EjectGroupMemberRequest) return new EjectGroupMemberRequestPacket(); + if(type == PacketType.EjectGroupMemberReply) return new EjectGroupMemberReplyPacket(); + if(type == PacketType.LeaveGroupRequest) return new LeaveGroupRequestPacket(); + if(type == PacketType.LeaveGroupReply) return new LeaveGroupReplyPacket(); + if(type == PacketType.InviteGroupRequest) return new InviteGroupRequestPacket(); + if(type == PacketType.GroupProfileRequest) return new GroupProfileRequestPacket(); + if(type == PacketType.GroupProfileReply) return new GroupProfileReplyPacket(); + if(type == PacketType.GroupAccountSummaryRequest) return new GroupAccountSummaryRequestPacket(); + if(type == PacketType.GroupAccountSummaryReply) return new GroupAccountSummaryReplyPacket(); + if(type == PacketType.GroupAccountDetailsRequest) return new GroupAccountDetailsRequestPacket(); + if(type == PacketType.GroupAccountDetailsReply) return new GroupAccountDetailsReplyPacket(); + if(type == PacketType.GroupAccountTransactionsRequest) return new GroupAccountTransactionsRequestPacket(); + if(type == PacketType.GroupAccountTransactionsReply) return new GroupAccountTransactionsReplyPacket(); + if(type == PacketType.GroupActiveProposalsRequest) return new GroupActiveProposalsRequestPacket(); + if(type == PacketType.GroupActiveProposalItemReply) return new GroupActiveProposalItemReplyPacket(); + if(type == PacketType.GroupVoteHistoryRequest) return new GroupVoteHistoryRequestPacket(); + if(type == PacketType.GroupVoteHistoryItemReply) return new GroupVoteHistoryItemReplyPacket(); + if(type == PacketType.StartGroupProposal) return new StartGroupProposalPacket(); + if(type == PacketType.GroupProposalBallot) return new GroupProposalBallotPacket(); + if(type == PacketType.GroupMembersRequest) return new GroupMembersRequestPacket(); + if(type == PacketType.GroupMembersReply) return new GroupMembersReplyPacket(); + if(type == PacketType.ActivateGroup) return new ActivateGroupPacket(); + if(type == PacketType.SetGroupContribution) return new SetGroupContributionPacket(); + if(type == PacketType.SetGroupAcceptNotices) return new SetGroupAcceptNoticesPacket(); + if(type == PacketType.GroupRoleDataRequest) return new GroupRoleDataRequestPacket(); + if(type == PacketType.GroupRoleDataReply) return new GroupRoleDataReplyPacket(); + if(type == PacketType.GroupRoleMembersRequest) return new GroupRoleMembersRequestPacket(); + if(type == PacketType.GroupRoleMembersReply) return new GroupRoleMembersReplyPacket(); + if(type == PacketType.GroupTitlesRequest) return new GroupTitlesRequestPacket(); + if(type == PacketType.GroupTitlesReply) return new GroupTitlesReplyPacket(); + if(type == PacketType.GroupTitleUpdate) return new GroupTitleUpdatePacket(); + if(type == PacketType.GroupRoleUpdate) return new GroupRoleUpdatePacket(); + if(type == PacketType.LiveHelpGroupRequest) return new LiveHelpGroupRequestPacket(); + if(type == PacketType.LiveHelpGroupReply) return new LiveHelpGroupReplyPacket(); + if(type == PacketType.AgentWearablesRequest) return new AgentWearablesRequestPacket(); + if(type == PacketType.AgentWearablesUpdate) return new AgentWearablesUpdatePacket(); + if(type == PacketType.AgentIsNowWearing) return new AgentIsNowWearingPacket(); + if(type == PacketType.AgentCachedTexture) return new AgentCachedTexturePacket(); + if(type == PacketType.AgentCachedTextureResponse) return new AgentCachedTextureResponsePacket(); + if(type == PacketType.AgentDataUpdateRequest) return new AgentDataUpdateRequestPacket(); + if(type == PacketType.AgentDataUpdate) return new AgentDataUpdatePacket(); + if(type == PacketType.GroupDataUpdate) return new GroupDataUpdatePacket(); + if(type == PacketType.AgentGroupDataUpdate) return new AgentGroupDataUpdatePacket(); + if(type == PacketType.AgentDropGroup) return new AgentDropGroupPacket(); + if(type == PacketType.CreateTrustedCircuit) return new CreateTrustedCircuitPacket(); + if(type == PacketType.DenyTrustedCircuit) return new DenyTrustedCircuitPacket(); + if(type == PacketType.RequestTrustedCircuit) return new RequestTrustedCircuitPacket(); + if(type == PacketType.RezSingleAttachmentFromInv) return new RezSingleAttachmentFromInvPacket(); + if(type == PacketType.RezMultipleAttachmentsFromInv) return new RezMultipleAttachmentsFromInvPacket(); + if(type == PacketType.DetachAttachmentIntoInv) return new DetachAttachmentIntoInvPacket(); + if(type == PacketType.CreateNewOutfitAttachments) return new CreateNewOutfitAttachmentsPacket(); + if(type == PacketType.UserInfoRequest) return new UserInfoRequestPacket(); + if(type == PacketType.UserInfoReply) return new UserInfoReplyPacket(); + if(type == PacketType.UpdateUserInfo) return new UpdateUserInfoPacket(); + if(type == PacketType.InitiateDownload) return new InitiateDownloadPacket(); + if(type == PacketType.SystemMessage) return new SystemMessagePacket(); + if(type == PacketType.MapLayerRequest) return new MapLayerRequestPacket(); + if(type == PacketType.MapLayerReply) return new MapLayerReplyPacket(); + if(type == PacketType.MapBlockRequest) return new MapBlockRequestPacket(); + if(type == PacketType.MapNameRequest) return new MapNameRequestPacket(); + if(type == PacketType.MapBlockReply) return new MapBlockReplyPacket(); + if(type == PacketType.MapItemRequest) return new MapItemRequestPacket(); + if(type == PacketType.MapItemReply) return new MapItemReplyPacket(); + if(type == PacketType.SendPostcard) return new SendPostcardPacket(); + if(type == PacketType.ParcelMediaCommandMessage) return new ParcelMediaCommandMessagePacket(); + if(type == PacketType.ParcelMediaUpdate) return new ParcelMediaUpdatePacket(); + if(type == PacketType.LandStatRequest) return new LandStatRequestPacket(); + if(type == PacketType.LandStatReply) return new LandStatReplyPacket(); + if(type == PacketType.Error) return new ErrorPacket(); + if(type == PacketType.ObjectIncludeInSearch) return new ObjectIncludeInSearchPacket(); + if(type == PacketType.PacketAck) return new PacketAckPacket(); + if(type == PacketType.OpenCircuit) return new OpenCircuitPacket(); + if(type == PacketType.CloseCircuit) return new CloseCircuitPacket(); + return null; + + } + public static Packet BuildPacket(byte[] packetBuffer, ref int packetEnd, byte[] zeroBuffer) { byte[] bytes; ushort id; PacketFrequency freq; diff --git a/Programs/mapgenerator/mapgenerator.cs b/Programs/mapgenerator/mapgenerator.cs index 0b3c9bc4..526e8f05 100644 --- a/Programs/mapgenerator/mapgenerator.cs +++ b/Programs/mapgenerator/mapgenerator.cs @@ -75,13 +75,13 @@ namespace mapgenerator writer.WriteLine(" public byte[] " + field.Name + Environment.NewLine + " {"); writer.WriteLine(" get { return _" + field.Name.ToLower() + "; }"); writer.WriteLine(" set" + Environment.NewLine + " {"); - writer.WriteLine(" if (value == null) { _" + + writer.WriteLine(" if (value == null) { _" + field.Name.ToLower() + " = null; return; }"); - writer.WriteLine(" if (value.Length > " + - ((field.Count == 1) ? "255" : "1100") + ") { throw new OverflowException(" + + writer.WriteLine(" if (value.Length > " + + ((field.Count == 1) ? "255" : "1100") + ") { throw new OverflowException(" + "\"Value exceeds " + ((field.Count == 1) ? "255" : "1100") + " characters\"); }"); writer.WriteLine(" else { _" + field.Name.ToLower() + - " = new byte[value.Length]; Buffer.BlockCopy(value, 0, _" + + " = new byte[value.Length]; Buffer.BlockCopy(value, 0, _" + field.Name.ToLower() + ", 0, value.Length); }"); writer.WriteLine(" }" + Environment.NewLine + " }"); } @@ -110,7 +110,7 @@ namespace mapgenerator break; case FieldType.IPADDR: case FieldType.U32: - writer.WriteLine(" " + field.Name + + writer.WriteLine(" " + field.Name + " = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));"); break; case FieldType.IPPORT: @@ -119,7 +119,7 @@ namespace mapgenerator " = (ushort)((bytes[i++] << 8) + bytes[i++]);"); break; case FieldType.U16: - writer.WriteLine(" " + field.Name + + writer.WriteLine(" " + field.Name + " = (ushort)(bytes[i++] + (bytes[i++] << 8));"); break; case FieldType.LLQuaternion: @@ -195,7 +195,7 @@ namespace mapgenerator writer.WriteLine("Utils.DoubleToBytes(" + field.Name + ", bytes, i); i += 8;"); break; case FieldType.Fixed: - writer.WriteLine("Buffer.BlockCopy(" + field.Name + ", 0, bytes, i, " + field.Count + ");" + + writer.WriteLine("Buffer.BlockCopy(" + field.Name + ", 0, bytes, i, " + field.Count + ");" + "i += " + field.Count + ";"); break; case FieldType.IPPORT: @@ -247,10 +247,10 @@ namespace mapgenerator else { writer.WriteLine("bytes[i++] = (byte)(" + field.Name + ".Length % 256);"); - writer.WriteLine(" bytes[i++] = (byte)((" + + writer.WriteLine(" bytes[i++] = (byte)((" + field.Name + ".Length >> 8) % 256);"); } - writer.WriteLine(" Buffer.BlockCopy(" + field.Name + ", 0, bytes, i, " + + writer.WriteLine(" Buffer.BlockCopy(" + field.Name + ", 0, bytes, i, " + field.Name + ".Length); " + "i += " + field.Name + ".Length;"); break; default: @@ -261,7 +261,7 @@ namespace mapgenerator static int GetFieldLength(TextWriter writer, MapField field) { - switch(field.Type) + switch (field.Type) { case FieldType.BOOL: case FieldType.U8: @@ -315,7 +315,7 @@ namespace mapgenerator writer.WriteLine(""); //writer.WriteLine(" /// Length of this block serialized in bytes"); writer.WriteLine(" public override int Length" + Environment.NewLine + - " {" + Environment.NewLine + + " {" + Environment.NewLine + " get" + Environment.NewLine + " {"); int length = 0; @@ -354,13 +354,13 @@ namespace mapgenerator // Constructor for building the class from bytes //writer.WriteLine(" /// Constructor for building the block from a byte array"); - writer.WriteLine(" public " + block.Name + "Block(byte[] bytes, ref int i)" + Environment.NewLine + - " {" + Environment.NewLine + - " FromBytes(bytes, ref i);" + Environment.NewLine + + writer.WriteLine(" public " + block.Name + "Block(byte[] bytes, ref int i)" + Environment.NewLine + + " {" + Environment.NewLine + + " FromBytes(bytes, ref i);" + Environment.NewLine + " }" + Environment.NewLine); // Initiates instance variables from a byte message - writer.WriteLine(" public override void FromBytes(byte[] bytes, ref int i)" + Environment.NewLine + + writer.WriteLine(" public override void FromBytes(byte[] bytes, ref int i)" + Environment.NewLine + " {"); // Declare a length variable if we need it for variable fields in this constructor @@ -374,15 +374,15 @@ namespace mapgenerator WriteFieldFromBytes(writer, field); } - writer.WriteLine(" }" + Environment.NewLine + + writer.WriteLine(" }" + Environment.NewLine + " catch (Exception)" + Environment.NewLine + - " {" + Environment.NewLine + + " {" + Environment.NewLine + " throw new MalformedDataException();" + Environment.NewLine + " }" + Environment.NewLine + " }" + Environment.NewLine); // ToBytes() function //writer.WriteLine(" /// Serialize this block to a byte array"); - writer.WriteLine(" public override void ToBytes(byte[] bytes, ref int i)" + Environment.NewLine + + writer.WriteLine(" public override void ToBytes(byte[] bytes, ref int i)" + Environment.NewLine + " {"); foreach (MapField field in block.Fields) @@ -438,7 +438,7 @@ namespace mapgenerator // PacketType member //writer.WriteLine(" /// Will return PacketType." + packet.Name+ ""); - writer.WriteLine(" public override PacketType Type { get { return PacketType." + + writer.WriteLine(" public override PacketType Type { get { return PacketType." + packet.Name + "; } }"); // Block members @@ -534,7 +534,7 @@ namespace mapgenerator else { // Multiple count block - writer.WriteLine(" if(" + sanitizedName + ".Length < " + block.Count+") {"); + writer.WriteLine(" if(" + sanitizedName + ".Length < " + block.Count + ") {"); writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[" + block.Count + "];"); writer.WriteLine(" for(int j = 0; j < " + block.Count + "; j++) " + sanitizedName + "[j] = new " + block.Name + "Block();"); writer.WriteLine(" }"); @@ -593,7 +593,7 @@ namespace mapgenerator else { // Multiple count block - writer.WriteLine(" if(" + sanitizedName + ".Length < " + block.Count+") {"); + writer.WriteLine(" if(" + sanitizedName + ".Length < " + block.Count + ") {"); writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[" + block.Count + "];"); writer.WriteLine(" for(int j = 0; j < " + block.Count + "; j++) " + sanitizedName + "[j] = new " + block.Name + "Block();"); writer.WriteLine(" }"); @@ -687,9 +687,9 @@ namespace mapgenerator if (block.Count == -1) { // Variable count block - writer.WriteLine(" for (int j = 0; j < " + + writer.WriteLine(" for (int j = 0; j < " + sanitizedName + ".Length; j++)" + Environment.NewLine + " {"); - writer.WriteLine(" output += " + sanitizedName + + writer.WriteLine(" output += " + sanitizedName + "[j].ToString() + Environment.NewLine;" + Environment.NewLine + " }"); } else if (block.Count == 1) @@ -699,9 +699,9 @@ namespace mapgenerator else { // Multiple count block - writer.WriteLine(" for (int j = 0; j < " + + writer.WriteLine(" for (int j = 0; j < " + block.Count + "; j++)" + Environment.NewLine + " {"); - writer.WriteLine(" output += " + sanitizedName + + writer.WriteLine(" output += " + sanitizedName + "[j].ToString() + Environment.NewLine;" + Environment.NewLine + " }"); } } @@ -730,9 +730,9 @@ namespace mapgenerator protocol = new ProtocolManager(args[0]); // Build a list of unused packets - using (StreamReader unusedReader = new StreamReader(args[2])) + using (StreamReader unusedReader = new StreamReader(args[2])) { - while (unusedReader.Peek() >= 0) + while (unusedReader.Peek() >= 0) { unused.Add(unusedReader.ReadLine().Trim()); } @@ -780,7 +780,7 @@ namespace mapgenerator " Default,"); foreach (MapPacket packet in protocol.LowMaps) if (packet != null) - writer.WriteLine(" " + packet.Name + " = " + (0x10000 | packet.ID) + ","); + writer.WriteLine(" " + packet.Name + " = " + (0x10000 | packet.ID) + ","); foreach (MapPacket packet in protocol.MediumMaps) if (packet != null) writer.WriteLine(" " + packet.Name + " = " + (0x20000 | packet.ID) + ","); @@ -791,10 +791,10 @@ namespace mapgenerator // Write the base Packet class writer.WriteLine( - " public abstract partial class Packet" + Environment.NewLine + " {" + Environment.NewLine + + " public abstract partial class Packet" + Environment.NewLine + " {" + Environment.NewLine + " public abstract Header Header { get; set; }" + Environment.NewLine + " public abstract PacketType Type { get; }" + Environment.NewLine + - " public abstract void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer);" + Environment.NewLine + + " public abstract void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer);" + Environment.NewLine + " public abstract void FromBytes(Header header, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer);" + Environment.NewLine + " public abstract byte[] ToBytes();" ); @@ -804,22 +804,22 @@ namespace mapgenerator writer.WriteLine( " public static PacketType GetType(ushort id, PacketFrequency frequency)" + Environment.NewLine + " {" + Environment.NewLine + - " switch (frequency)" + Environment.NewLine + - " {" + Environment.NewLine + + " switch (frequency)" + Environment.NewLine + + " {" + Environment.NewLine + " case PacketFrequency.Low:" + Environment.NewLine + - " switch (id)" + Environment.NewLine + + " switch (id)" + Environment.NewLine + " {"); foreach (MapPacket packet in protocol.LowMaps) if (packet != null) writer.WriteLine(" case " + packet.ID + ": return PacketType." + packet.Name + ";"); - writer.WriteLine(" }" + Environment.NewLine + + writer.WriteLine(" }" + Environment.NewLine + " break;" + Environment.NewLine + " case PacketFrequency.Medium:" + Environment.NewLine + " switch (id)" + Environment.NewLine + " {"); foreach (MapPacket packet in protocol.MediumMaps) if (packet != null) writer.WriteLine(" case " + packet.ID + ": return PacketType." + packet.Name + ";"); - writer.WriteLine(" }" + Environment.NewLine + + writer.WriteLine(" }" + Environment.NewLine + " break;" + Environment.NewLine + " case PacketFrequency.High:" + Environment.NewLine + " switch (id)" + Environment.NewLine + " {"); @@ -830,11 +830,26 @@ namespace mapgenerator " break;" + Environment.NewLine + " }" + Environment.NewLine + Environment.NewLine + " return PacketType.Default;" + Environment.NewLine + " }" + Environment.NewLine); + // Write the Packet.BuildPacket(PacketType) function + writer.WriteLine(" public static Packet BuildPacket(PacketType type)"); + writer.WriteLine(" {"); + foreach (MapPacket packet in protocol.HighMaps) + if (packet != null) + writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name + "Packet();"); + foreach (MapPacket packet in protocol.MediumMaps) + if (packet != null) + writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name + "Packet();"); + foreach (MapPacket packet in protocol.LowMaps) + if (packet != null) + writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name + "Packet();"); + writer.WriteLine(" return null;" + Environment.NewLine); + writer.WriteLine(" }" + Environment.NewLine); + // Write the Packet.BuildPacket() function writer.WriteLine( " public static Packet BuildPacket(byte[] packetBuffer, ref int packetEnd, byte[] zeroBuffer)" + Environment.NewLine + " {" + Environment.NewLine + - " byte[] bytes; ushort id; PacketFrequency freq;" + Environment.NewLine + + " byte[] bytes; ushort id; PacketFrequency freq;" + Environment.NewLine + " int i = 0;" + Environment.NewLine + " Header header = Header.BuildHeader(packetBuffer, ref i, ref packetEnd);" + Environment.NewLine + " if (header.Zerocoded)" + Environment.NewLine + @@ -856,7 +871,7 @@ namespace mapgenerator foreach (MapPacket packet in protocol.LowMaps) if (packet != null) writer.WriteLine(" case " + packet.ID + ": return new " + packet.Name + "Packet(header, bytes, ref i);"); - writer.WriteLine(" }" + Environment.NewLine + " }" + Environment.NewLine + + writer.WriteLine(" }" + Environment.NewLine + " }" + Environment.NewLine + " else" + Environment.NewLine + " {" + Environment.NewLine + " id = (ushort)bytes[7]; freq = PacketFrequency.Medium;" + Environment.NewLine + " switch (id)" + Environment.NewLine + " {");