aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMW2007-06-27 15:28:52 +0000
committerMW2007-06-27 15:28:52 +0000
commit646bbbc84b8010e0dacbeed5342cdb045f46cc49 (patch)
tree770b34d19855363c3c113ab9a0af9a56d821d887
downloadopensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.zip
opensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.gz
opensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.bz2
opensim-SC_OLD-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.xz
Some work on restructuring the namespaces / project names. Note this doesn't compile yet as not all the code has been changed to use the new namespaces. Am committing it now for feedback on the namespaces.
-rw-r--r--OpenGridServices.sln95
-rw-r--r--OpenSim.FxCop7241
-rw-r--r--OpenSim.sln163
-rw-r--r--OpenSim.suobin0 -> 319018 bytes
-rw-r--r--OpenSim/Framework/Communications.OGS1/GridCommsManager.cs18
-rw-r--r--OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs248
-rw-r--r--OpenSim/Framework/Communications.OGS1/OGSInterSimComms.cs70
-rw-r--r--OpenSim/Framework/Communications.OGS1/OGSUserServices.cs25
-rw-r--r--OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj142
-rw-r--r--OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj.user12
-rw-r--r--OpenSim/Framework/Communications.OGS1/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Framework/Communications/CommunicationsManager.cs51
-rw-r--r--OpenSim/Framework/Communications/IGridServices.cs51
-rw-r--r--OpenSim/Framework/Communications/IInterRegionCommunications.cs41
-rw-r--r--OpenSim/Framework/Communications/IUserServices.cs44
-rw-r--r--OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj112
-rw-r--r--OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj.user12
-rw-r--r--OpenSim/Framework/Communications/Properties/AssemblyInfo.cs62
-rw-r--r--OpenSim/Framework/Console/AssemblyInfo.cs58
-rw-r--r--OpenSim/Framework/Console/ConsoleCallbacksBase.cs39
-rw-r--r--OpenSim/Framework/Console/LogBase.cs238
-rw-r--r--OpenSim/Framework/Console/MainLog.cs49
-rw-r--r--OpenSim/Framework/Console/OpenSim.Framework.Console.csproj89
-rw-r--r--OpenSim/Framework/Console/OpenSim.Framework.Console.csproj.user12
-rw-r--r--OpenSim/Framework/Data.DB4o/DB4oGridData.cs166
-rw-r--r--OpenSim/Framework/Data.DB4o/DB4oManager.cs165
-rw-r--r--OpenSim/Framework/Data.DB4o/DB4oUserData.cs205
-rw-r--r--OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj111
-rw-r--r--OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj.user12
-rw-r--r--OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs192
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLManager.cs214
-rw-r--r--OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj104
-rw-r--r--OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj.user12
-rw-r--r--OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Framework/Data.MySQL/MySQLGridData.cs285
-rw-r--r--OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs309
-rw-r--r--OpenSim/Framework/Data.MySQL/MySQLLogData.cs107
-rw-r--r--OpenSim/Framework/Data.MySQL/MySQLManager.cs609
-rw-r--r--OpenSim/Framework/Data.MySQL/MySQLUserData.cs257
-rw-r--r--OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj117
-rw-r--r--OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj.user12
-rw-r--r--OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj108
-rw-r--r--OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj.user12
-rw-r--r--OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Framework/Data.SQLite/SQLiteGridData.cs195
-rw-r--r--OpenSim/Framework/Data.SQLite/SQLiteManager.cs209
-rw-r--r--OpenSim/Framework/Data/GridData.cs113
-rw-r--r--OpenSim/Framework/Data/ILogData.cs94
-rw-r--r--OpenSim/Framework/Data/IniConfig.cs100
-rw-r--r--OpenSim/Framework/Data/InventoryData.cs187
-rw-r--r--OpenSim/Framework/Data/OpenSim.Framework.Data.csproj116
-rw-r--r--OpenSim/Framework/Data/OpenSim.Framework.Data.csproj.user12
-rw-r--r--OpenSim/Framework/Data/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Framework/Data/ReservationData.cs51
-rw-r--r--OpenSim/Framework/Data/SimProfileData.cs114
-rw-r--r--OpenSim/Framework/Data/UserData.cs131
-rw-r--r--OpenSim/Framework/Data/UserProfileData.cs182
-rw-r--r--OpenSim/Framework/General/AgentInventory.cs267
-rw-r--r--OpenSim/Framework/General/AuthenticateSessionBase.cs132
-rw-r--r--OpenSim/Framework/General/BlockingQueue.cs60
-rw-r--r--OpenSim/Framework/General/IRegionCommsListener.cs47
-rw-r--r--OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs51
-rw-r--r--OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs42
-rw-r--r--OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs63
-rw-r--r--OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs57
-rw-r--r--OpenSim/Framework/General/Interfaces/IAssetServer.cs69
-rw-r--r--OpenSim/Framework/General/Interfaces/IClientAPI.cs160
-rw-r--r--OpenSim/Framework/General/Interfaces/ILocalStorage.cs69
-rw-r--r--OpenSim/Framework/General/Interfaces/IUserServer.cs42
-rw-r--r--OpenSim/Framework/General/Interfaces/IWorld.cs45
-rw-r--r--OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs42
-rw-r--r--OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs41
-rw-r--r--OpenSim/Framework/General/LLSDHelpers.cs246
-rw-r--r--OpenSim/Framework/General/Logger.cs85
-rw-r--r--OpenSim/Framework/General/LoginService.cs41
-rw-r--r--OpenSim/Framework/General/OpenSim.Framework.csproj213
-rw-r--r--OpenSim/Framework/General/OpenSim.Framework.csproj.user12
-rw-r--r--OpenSim/Framework/General/Properties/AssemblyInfo.cs33
-rw-r--r--OpenSim/Framework/General/RegionCommsListener.cs69
-rw-r--r--OpenSim/Framework/General/Remoting.cs136
-rw-r--r--OpenSim/Framework/General/SimProfile.cs122
-rw-r--r--OpenSim/Framework/General/Types/AgentCiruitData.cs50
-rw-r--r--OpenSim/Framework/General/Types/AgentWearable.cs60
-rw-r--r--OpenSim/Framework/General/Types/AssetBase.cs49
-rw-r--r--OpenSim/Framework/General/Types/AssetLandmark.cs61
-rw-r--r--OpenSim/Framework/General/Types/AssetStorage.cs50
-rw-r--r--OpenSim/Framework/General/Types/EstateSettings.cs97
-rw-r--r--OpenSim/Framework/General/Types/Login.cs52
-rw-r--r--OpenSim/Framework/General/Types/MapBlockData.cs25
-rw-r--r--OpenSim/Framework/General/Types/NeighbourInfo.cs50
-rw-r--r--OpenSim/Framework/General/Types/NetworkServersInfo.cs181
-rw-r--r--OpenSim/Framework/General/Types/ParcelData.cs115
-rw-r--r--OpenSim/Framework/General/Types/PrimData.cs230
-rw-r--r--OpenSim/Framework/General/Types/RegionHandle.cs120
-rw-r--r--OpenSim/Framework/General/Types/RegionInfo.cs304
-rw-r--r--OpenSim/Framework/General/UserProfile.cs89
-rw-r--r--OpenSim/Framework/General/Util.cs186
-rw-r--r--OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj93
-rw-r--r--OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj.user12
-rw-r--r--OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs123
-rw-r--r--OpenSim/Framework/Servers/BaseHttpServer.cs312
-rw-r--r--OpenSim/Framework/Servers/CheckSumServer.cs141
-rw-r--r--OpenSim/Framework/Servers/IRestHandler.cs35
-rw-r--r--OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj116
-rw-r--r--OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj.user12
-rw-r--r--OpenSim/Framework/Servers/UDPServerBase.cs95
-rw-r--r--OpenSim/Framework/Servers/XmlRpcMethod.cs34
-rw-r--r--OpenSim/Framework/UserManager/LoginResponse.cs645
-rw-r--r--OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj125
-rw-r--r--OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj.user12
-rw-r--r--OpenSim/Framework/UserManager/UserManagerBase.cs641
-rw-r--r--OpenSim/Grid/AssetServer/AssetHttpServer.cs130
-rw-r--r--OpenSim/Grid/AssetServer/Main.cs337
-rw-r--r--OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj118
-rw-r--r--OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj.user12
-rw-r--r--OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs60
-rw-r--r--OpenSim/Grid/Framework.Manager/GridManagementAgent.cs140
-rw-r--r--OpenSim/Grid/Framework.Manager/GridServerManager.cs94
-rw-r--r--OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj99
-rw-r--r--OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj.user12
-rw-r--r--OpenSim/Grid/GridServer.Config/AssemblyInfo.cs58
-rw-r--r--OpenSim/Grid/GridServer.Config/DbGridConfig.cs161
-rw-r--r--OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj107
-rw-r--r--OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj.user12
-rw-r--r--OpenSim/Grid/GridServer/GridManager.cs599
-rw-r--r--OpenSim/Grid/GridServer/Main.cs271
-rw-r--r--OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj134
-rw-r--r--OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj.user12
-rw-r--r--OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs60
-rw-r--r--OpenSim/Grid/InventoryServer/InventoryManager.cs125
-rw-r--r--OpenSim/Grid/InventoryServer/Main.cs87
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager.mds16
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager.userprefs39
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager.usertasks2
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/AssemblyInfo.cs32
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/BlockingQueue.cs33
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/Connect to grid server.cs16
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/ConnectToGridServerDialog.cs29
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/GridServerConnectionManager.cs106
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/Main.cs96
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/MainWindow.cs76
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.mdp43
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.pidbbin0 -> 12308 bytes
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/RegionBlock.cs37
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/Util.cs133
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.ConnectToGridServerDialog.cs226
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.MainWindow.cs256
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/generated.cs35
-rw-r--r--OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/gui.stetic502
-rw-r--r--OpenSim/Grid/UserServer.Config/AssemblyInfo.cs58
-rw-r--r--OpenSim/Grid/UserServer.Config/DbUserConfig.cs96
-rw-r--r--OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj107
-rw-r--r--OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj.user12
-rw-r--r--OpenSim/Grid/UserServer/Main.cs219
-rw-r--r--OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj132
-rw-r--r--OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj.user12
-rw-r--r--OpenSim/Grid/UserServer/Properties/AssemblyInfo.cs33
-rw-r--r--OpenSim/Grid/UserServer/UserManager.cs103
-rw-r--r--OpenSim/Region/Application/Application.cs121
-rw-r--r--OpenSim/Region/Application/OpenSim.csproj181
-rw-r--r--OpenSim/Region/Application/OpenSim.csproj.user13
-rw-r--r--OpenSim/Region/Application/OpenSimMain.cs476
-rw-r--r--OpenSim/Region/Caches/AssetCache.cs670
-rw-r--r--OpenSim/Region/Caches/OpenSim.Region.Caches.csproj97
-rw-r--r--OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user12
-rw-r--r--OpenSim/Region/Caches/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Region/Caps/Caps.cs258
-rw-r--r--OpenSim/Region/Caps/LLSDHelpers.cs246
-rw-r--r--OpenSim/Region/ClientStack/Assets/InventoryCache.cs337
-rw-r--r--OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs46
-rw-r--r--OpenSim/Region/ClientStack/ClientView.API.cs975
-rw-r--r--OpenSim/Region/ClientStack/ClientView.AgentAssetUpload.cs358
-rw-r--r--OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs198
-rw-r--r--OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs550
-rw-r--r--OpenSim/Region/ClientStack/ClientView.cs273
-rw-r--r--OpenSim/Region/ClientStack/ClientViewBase.cs327
-rw-r--r--OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj173
-rw-r--r--OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj.user12
-rw-r--r--OpenSim/Region/ClientStack/PacketServer.cs183
-rw-r--r--OpenSim/Region/ClientStack/RegionApplicationBase.cs129
-rw-r--r--OpenSim/Region/ClientStack/UDPServer.cs208
-rw-r--r--OpenSim/Region/ClientStack/VersionInfo.cs38
-rw-r--r--OpenSim/Region/Examples/SimpleApp/MyWorld.cs113
-rw-r--r--OpenSim/Region/Examples/SimpleApp/Program.cs128
-rw-r--r--OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs33
-rw-r--r--OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj154
-rw-r--r--OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj.user12
-rw-r--r--OpenSim/Region/GridInterfaces/Local/AssemblyInfo.cs58
-rw-r--r--OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs312
-rw-r--r--OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj107
-rw-r--r--OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj.user12
-rw-r--r--OpenSim/Region/GridInterfaces/Remote/AssemblyInfo.cs58
-rw-r--r--OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj107
-rw-r--r--OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj.user12
-rw-r--r--OpenSim/Region/GridInterfaces/Remote/RemoteAssetServer.cs135
-rw-r--r--OpenSim/Region/LocalCommunications/CommunicationsLocal.cs61
-rw-r--r--OpenSim/Region/LocalCommunications/LocalBackEndServices.cs209
-rw-r--r--OpenSim/Region/LocalCommunications/LocalUserServices.cs118
-rw-r--r--OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj121
-rw-r--r--OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj.user12
-rw-r--r--OpenSim/Region/LocalCommunications/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs58
-rw-r--r--OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs294
-rw-r--r--OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj93
-rw-r--r--OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj.user12
-rw-r--r--OpenSim/Region/Physics/Manager/AssemblyInfo.cs58
-rw-r--r--OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj112
-rw-r--r--OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj.user12
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsActor.cs161
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsManager.cs117
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsScene.cs113
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsVector.cs54
-rw-r--r--OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs58
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs456
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj97
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj.user12
-rw-r--r--OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs58
-rw-r--r--OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj97
-rw-r--r--OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj.user12
-rw-r--r--OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs424
-rw-r--r--OpenSim/Region/Scripting/Properties/AssemblyInfo.cs35
-rw-r--r--OpenSim/Region/Scripting/Script.cs32
-rw-r--r--OpenSim/Region/Scripting/ScriptAccess.cs31
-rw-r--r--OpenSim/Region/Simulation/Caps.cs258
-rw-r--r--OpenSim/Region/Simulation/EstateManager.cs301
-rw-r--r--OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj211
-rw-r--r--OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj.user12
-rw-r--r--OpenSim/Region/Simulation/ParcelManager.cs892
-rw-r--r--OpenSim/Region/Simulation/RegionManager.cs30
-rw-r--r--OpenSim/Region/Simulation/Scenes/Entity.cs194
-rw-r--r--OpenSim/Region/Simulation/Scenes/IScenePresenceBody.cs19
-rw-r--r--OpenSim/Region/Simulation/Scenes/Primitive.cs582
-rw-r--r--OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs305
-rw-r--r--OpenSim/Region/Simulation/Scenes/Scene.Scripting.cs184
-rw-r--r--OpenSim/Region/Simulation/Scenes/Scene.cs795
-rw-r--r--OpenSim/Region/Simulation/Scenes/SceneBase.cs201
-rw-r--r--OpenSim/Region/Simulation/Scenes/SceneEvents.cs52
-rw-r--r--OpenSim/Region/Simulation/Scenes/SceneObject.cs128
-rw-r--r--OpenSim/Region/Simulation/Scenes/ScenePresence.Animations.cs76
-rw-r--r--OpenSim/Region/Simulation/Scenes/ScenePresence.Body.cs90
-rw-r--r--OpenSim/Region/Simulation/Scenes/ScenePresence.cs525
-rw-r--r--OpenSim/Region/Simulation/Scenes/scripting/IScriptContext.cs40
-rw-r--r--OpenSim/Region/Simulation/Scenes/scripting/IScriptEntity.cs46
-rw-r--r--OpenSim/Region/Simulation/Scenes/scripting/IScriptHandler.cs126
-rw-r--r--OpenSim/Region/Simulation/Scenes/scripting/Script.cs53
-rw-r--r--OpenSim/Region/Simulation/Scenes/scripting/ScriptFactory.cs35
-rw-r--r--OpenSim/Region/Simulation/Scenes/scripting/Scripts/FollowRandomAvatar.cs64
-rw-r--r--OpenSim/Region/Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs117
-rw-r--r--OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj112
-rw-r--r--OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj.user12
-rw-r--r--OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Storage.LocalStorageBerkeleyDB.dll.build46
-rw-r--r--OpenSim/Region/Storage/LocalStorageDb4o/AssemblyInfo.cs58
-rw-r--r--OpenSim/Region/Storage/LocalStorageDb4o/Db4LocalStorage.cs271
-rw-r--r--OpenSim/Region/Storage/LocalStorageDb4o/MapStorage.cs43
-rw-r--r--OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj116
-rw-r--r--OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj.user12
-rw-r--r--OpenSim/Region/Storage/LocalStorageDb4o/UUIDParcelQuery.cs52
-rw-r--r--OpenSim/Region/Storage/LocalStorageDb4o/UUIDPrimQuery.cs52
-rw-r--r--OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj111
-rw-r--r--OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj.user12
-rw-r--r--OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Storage.LocalStorageSQLite.dll.build46
-rw-r--r--OpenSim/Region/Storage/LocalStorageSQLite/Properties/AssemblyInfo.cs62
-rw-r--r--OpenSim/Region/Storage/LocalStorageSQLite/SQLiteLocalStorage.cs198
-rw-r--r--OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj110
-rw-r--r--OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj.user12
-rw-r--r--OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs62
-rw-r--r--OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs786
-rw-r--r--OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs103
-rw-r--r--Prebuild/Prebuild.build67
-rw-r--r--Prebuild/Prebuild.sln19
-rw-r--r--Prebuild/Prebuild.suobin0 -> 21504 bytes
-rw-r--r--Prebuild/README230
-rw-r--r--Prebuild/TODO21
-rw-r--r--Prebuild/doc/prebuild-example1.xml300
-rw-r--r--Prebuild/doc/prebuild-example2.xml72
-rw-r--r--Prebuild/doc/prebuild-example3.xml113
-rw-r--r--Prebuild/doc/prebuild-example4.xml715
-rw-r--r--Prebuild/doc/prebuild-example5.xml187
-rw-r--r--Prebuild/prebuild2
-rw-r--r--Prebuild/scripts/Clean.bat2
-rw-r--r--Prebuild/scripts/Help.bat2
-rw-r--r--Prebuild/scripts/MonoDevelop.sh2
-rw-r--r--Prebuild/scripts/Prebuild.nsi231
-rw-r--r--Prebuild/scripts/SharpDevelop.bat4
-rw-r--r--Prebuild/scripts/SharpDevelop2.bat4
-rw-r--r--Prebuild/scripts/VS2002.bat4
-rw-r--r--Prebuild/scripts/VS2003.bat4
-rw-r--r--Prebuild/scripts/VS2005.bat4
-rw-r--r--Prebuild/scripts/autotools.bat4
-rw-r--r--Prebuild/scripts/autotools.sh2
-rw-r--r--Prebuild/scripts/nant.bat4
-rw-r--r--Prebuild/scripts/nant.sh2
-rw-r--r--Prebuild/src/App.icobin0 -> 4286 bytes
-rw-r--r--Prebuild/src/Core/Attributes/DataNodeAttribute.cs81
-rw-r--r--Prebuild/src/Core/Attributes/OptionNodeAttribute.cs80
-rw-r--r--Prebuild/src/Core/Attributes/TargetAttribute.cs80
-rw-r--r--Prebuild/src/Core/FatalException.cs94
-rw-r--r--Prebuild/src/Core/Interfaces/IDataNode.cs56
-rw-r--r--Prebuild/src/Core/Interfaces/ITarget.cs60
-rw-r--r--Prebuild/src/Core/Kernel.cs758
-rw-r--r--Prebuild/src/Core/Nodes/ConfigurationNode.cs187
-rw-r--r--Prebuild/src/Core/Nodes/DataNode.cs82
-rw-r--r--Prebuild/src/Core/Nodes/ExcludeNode.cs85
-rw-r--r--Prebuild/src/Core/Nodes/FileNode.cs238
-rw-r--r--Prebuild/src/Core/Nodes/FilesNode.cs223
-rw-r--r--Prebuild/src/Core/Nodes/MatchNode.cs299
-rw-r--r--Prebuild/src/Core/Nodes/OptionsNode.cs655
-rw-r--r--Prebuild/src/Core/Nodes/ProcessNode.cs119
-rw-r--r--Prebuild/src/Core/Nodes/ProjectNode.cs510
-rw-r--r--Prebuild/src/Core/Nodes/ReferenceNode.cs153
-rw-r--r--Prebuild/src/Core/Nodes/ReferencePathNode.cs108
-rw-r--r--Prebuild/src/Core/Nodes/SolutionNode.cs288
-rw-r--r--Prebuild/src/Core/Parse/IfContext.cs163
-rw-r--r--Prebuild/src/Core/Parse/Preprocessor.cs519
-rw-r--r--Prebuild/src/Core/Targets/AutotoolsTarget.cs926
-rw-r--r--Prebuild/src/Core/Targets/DebugTarget.cs102
-rw-r--r--Prebuild/src/Core/Targets/MonoDevelopTarget.cs458
-rw-r--r--Prebuild/src/Core/Targets/NAntTarget.cs621
-rw-r--r--Prebuild/src/Core/Targets/SharpDevelop2Target.cs90
-rw-r--r--Prebuild/src/Core/Targets/SharpDevelopTarget.cs437
-rw-r--r--Prebuild/src/Core/Targets/VS2002Target.cs96
-rw-r--r--Prebuild/src/Core/Targets/VS2003Target.cs633
-rw-r--r--Prebuild/src/Core/Targets/VS2005Target.cs883
-rw-r--r--Prebuild/src/Core/UnknownLanguageException.cs63
-rw-r--r--Prebuild/src/Core/Utilities/CommandLineCollection.cs162
-rw-r--r--Prebuild/src/Core/Utilities/CurrentDirectory.cs89
-rw-r--r--Prebuild/src/Core/Utilities/Helper.cs661
-rw-r--r--Prebuild/src/Core/Utilities/Log.cs279
-rw-r--r--Prebuild/src/Core/WarningException.cs93
-rw-r--r--Prebuild/src/Prebuild.cs165
-rw-r--r--Prebuild/src/Prebuild.csproj205
-rw-r--r--Prebuild/src/Prebuild.csproj.user12
-rw-r--r--Prebuild/src/Prebuild.exe.build80
-rw-r--r--Prebuild/src/Prebuild.snkbin0 -> 596 bytes
-rw-r--r--Prebuild/src/Properties/AssemblyInfo.cs101
-rw-r--r--Prebuild/src/data/dnpb-1.0.xsd183
-rw-r--r--Prebuild/src/data/dnpb-1.1.xsd184
-rw-r--r--Prebuild/src/data/dnpb-1.2.xsd198
-rw-r--r--Prebuild/src/data/dnpb-1.3.xsd206
-rw-r--r--Prebuild/src/data/dnpb-1.4.xsd212
-rw-r--r--Prebuild/src/data/dnpb-1.5.xsd215
-rw-r--r--Prebuild/src/data/prebuild-1.6.xsd231
-rw-r--r--Prebuild/src/data/prebuild-1.7.xsd261
-rw-r--r--ThirdPartyLicenses/Axiom.txt141
-rw-r--r--ThirdPartyLicenses/MySQL.txt78
-rw-r--r--ThirdPartyLicenses/ODE.txt13
-rw-r--r--ThirdPartyLicenses/OpenJpeg.txt30
-rw-r--r--ThirdPartyLicenses/libsl.txt23
-rw-r--r--bin/Axiom.MathLib.dllbin0 -> 69632 bytes
-rw-r--r--bin/Db4objects.Db4o.dllbin0 -> 593408 bytes
-rw-r--r--bin/DotSets.dllbin0 -> 24576 bytes
-rw-r--r--bin/Kds.Serialization.dllbin0 -> 40960 bytes
-rw-r--r--bin/Mono.PEToolkit.dllbin0 -> 131072 bytes
-rw-r--r--bin/MySql.Data.dllbin0 -> 143360 bytes
-rw-r--r--bin/Ode.NET.dllbin0 -> 57344 bytes
-rw-r--r--bin/PhysX-wrapper.dllbin0 -> 57344 bytes
-rw-r--r--bin/PhysX_Wrapper_Dotnet.dllbin0 -> 8704 bytes
-rw-r--r--bin/Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dllbin0 -> 16384 bytes
-rw-r--r--bin/Physics/OpenSim.Region.Physics.OdePlugin.dllbin0 -> 20480 bytes
-rw-r--r--bin/Physics/OpenSim.Region.Physics.PhysXPlugin.dllbin0 -> 20480 bytes
-rw-r--r--bin/Prebuild.exebin0 -> 176128 bytes
-rw-r--r--bin/System.Data.SQLite.dllbin0 -> 568832 bytes
-rw-r--r--bin/XMLRPC.dllbin0 -> 36864 bytes
-rw-r--r--bin/defaultstripe.pngbin0 -> 887 bytes
-rw-r--r--bin/libTerrain-BSD.dllbin0 -> 32768 bytes
-rw-r--r--bin/libdb_dotNET43.dllbin0 -> 221184 bytes
-rw-r--r--bin/libode.abin0 -> 8041800 bytes
-rw-r--r--bin/libode.sobin0 -> 4474949 bytes
-rw-r--r--bin/libopenjpeg-1.0.0-x86_64.sobin0 -> 117184 bytes
-rw-r--r--bin/libopenjpeg-1.0.0.sobin0 -> 111569 bytes
-rw-r--r--bin/libopenjpeg-1.1.0.dylibbin0 -> 238244 bytes
-rw-r--r--bin/libsecondlife.dllbin0 -> 2166784 bytes
-rw-r--r--bin/log4net.dllbin0 -> 270336 bytes
-rw-r--r--bin/ode.dllbin0 -> 409600 bytes
-rw-r--r--bin/openjpeg.dllbin0 -> 184320 bytes
-rw-r--r--bin/openjpegnet.dllbin0 -> 17408 bytes
-rw-r--r--prebuild.xml1105
-rw-r--r--runprebuild.bat2
-rw-r--r--share/php/generateUserFunction.php46
-rw-r--r--share/regions/config_0.xml3
-rw-r--r--share/regions/config_1.xml3
-rw-r--r--share/regions/config_10.xml3
-rw-r--r--share/regions/config_100.xml3
-rw-r--r--share/regions/config_1000.xml3
-rw-r--r--share/regions/config_1001.xml3
-rw-r--r--share/regions/config_1002.xml3
-rw-r--r--share/regions/config_1003.xml3
-rw-r--r--share/regions/config_1004.xml3
-rw-r--r--share/regions/config_1005.xml3
-rw-r--r--share/regions/config_1006.xml3
-rw-r--r--share/regions/config_1007.xml3
-rw-r--r--share/regions/config_1008.xml3
-rw-r--r--share/regions/config_1009.xml3
-rw-r--r--share/regions/config_101.xml3
-rw-r--r--share/regions/config_1010.xml3
-rw-r--r--share/regions/config_1011.xml3
-rw-r--r--share/regions/config_1012.xml3
-rw-r--r--share/regions/config_1013.xml3
-rw-r--r--share/regions/config_1014.xml3
-rw-r--r--share/regions/config_1015.xml3
-rw-r--r--share/regions/config_1016.xml3
-rw-r--r--share/regions/config_1017.xml3
-rw-r--r--share/regions/config_1018.xml3
-rw-r--r--share/regions/config_1019.xml3
-rw-r--r--share/regions/config_102.xml3
-rw-r--r--share/regions/config_1020.xml3
-rw-r--r--share/regions/config_1021.xml3
-rw-r--r--share/regions/config_1022.xml3
-rw-r--r--share/regions/config_1023.xml3
-rw-r--r--share/regions/config_103.xml3
-rw-r--r--share/regions/config_104.xml3
-rw-r--r--share/regions/config_105.xml3
-rw-r--r--share/regions/config_106.xml3
-rw-r--r--share/regions/config_107.xml3
-rw-r--r--share/regions/config_108.xml3
-rw-r--r--share/regions/config_109.xml3
-rw-r--r--share/regions/config_11.xml3
-rw-r--r--share/regions/config_110.xml3
-rw-r--r--share/regions/config_111.xml3
-rw-r--r--share/regions/config_112.xml3
-rw-r--r--share/regions/config_113.xml3
-rw-r--r--share/regions/config_114.xml3
-rw-r--r--share/regions/config_115.xml3
-rw-r--r--share/regions/config_116.xml3
-rw-r--r--share/regions/config_117.xml3
-rw-r--r--share/regions/config_118.xml3
-rw-r--r--share/regions/config_119.xml3
-rw-r--r--share/regions/config_12.xml3
-rw-r--r--share/regions/config_120.xml3
-rw-r--r--share/regions/config_121.xml3
-rw-r--r--share/regions/config_122.xml3
-rw-r--r--share/regions/config_123.xml3
-rw-r--r--share/regions/config_124.xml3
-rw-r--r--share/regions/config_125.xml3
-rw-r--r--share/regions/config_126.xml3
-rw-r--r--share/regions/config_127.xml3
-rw-r--r--share/regions/config_128.xml3
-rw-r--r--share/regions/config_129.xml3
-rw-r--r--share/regions/config_13.xml3
-rw-r--r--share/regions/config_130.xml3
-rw-r--r--share/regions/config_131.xml3
-rw-r--r--share/regions/config_132.xml3
-rw-r--r--share/regions/config_133.xml3
-rw-r--r--share/regions/config_134.xml3
-rw-r--r--share/regions/config_135.xml3
-rw-r--r--share/regions/config_136.xml3
-rw-r--r--share/regions/config_137.xml3
-rw-r--r--share/regions/config_138.xml3
-rw-r--r--share/regions/config_139.xml3
-rw-r--r--share/regions/config_14.xml3
-rw-r--r--share/regions/config_140.xml3
-rw-r--r--share/regions/config_141.xml3
-rw-r--r--share/regions/config_142.xml3
-rw-r--r--share/regions/config_143.xml3
-rw-r--r--share/regions/config_144.xml3
-rw-r--r--share/regions/config_145.xml3
-rw-r--r--share/regions/config_146.xml3
-rw-r--r--share/regions/config_147.xml3
-rw-r--r--share/regions/config_148.xml3
-rw-r--r--share/regions/config_149.xml3
-rw-r--r--share/regions/config_15.xml3
-rw-r--r--share/regions/config_150.xml3
-rw-r--r--share/regions/config_151.xml3
-rw-r--r--share/regions/config_152.xml3
-rw-r--r--share/regions/config_153.xml3
-rw-r--r--share/regions/config_154.xml3
-rw-r--r--share/regions/config_155.xml3
-rw-r--r--share/regions/config_156.xml3
-rw-r--r--share/regions/config_157.xml3
-rw-r--r--share/regions/config_158.xml3
-rw-r--r--share/regions/config_159.xml3
-rw-r--r--share/regions/config_16.xml3
-rw-r--r--share/regions/config_160.xml3
-rw-r--r--share/regions/config_161.xml3
-rw-r--r--share/regions/config_162.xml3
-rw-r--r--share/regions/config_163.xml3
-rw-r--r--share/regions/config_164.xml3
-rw-r--r--share/regions/config_165.xml3
-rw-r--r--share/regions/config_166.xml3
-rw-r--r--share/regions/config_167.xml3
-rw-r--r--share/regions/config_168.xml3
-rw-r--r--share/regions/config_169.xml3
-rw-r--r--share/regions/config_17.xml3
-rw-r--r--share/regions/config_170.xml3
-rw-r--r--share/regions/config_171.xml3
-rw-r--r--share/regions/config_172.xml3
-rw-r--r--share/regions/config_173.xml3
-rw-r--r--share/regions/config_174.xml3
-rw-r--r--share/regions/config_175.xml3
-rw-r--r--share/regions/config_176.xml3
-rw-r--r--share/regions/config_177.xml3
-rw-r--r--share/regions/config_178.xml3
-rw-r--r--share/regions/config_179.xml3
-rw-r--r--share/regions/config_18.xml3
-rw-r--r--share/regions/config_180.xml3
-rw-r--r--share/regions/config_181.xml3
-rw-r--r--share/regions/config_182.xml3
-rw-r--r--share/regions/config_183.xml3
-rw-r--r--share/regions/config_184.xml3
-rw-r--r--share/regions/config_185.xml3
-rw-r--r--share/regions/config_186.xml3
-rw-r--r--share/regions/config_187.xml3
-rw-r--r--share/regions/config_188.xml3
-rw-r--r--share/regions/config_189.xml3
-rw-r--r--share/regions/config_19.xml3
-rw-r--r--share/regions/config_190.xml3
-rw-r--r--share/regions/config_191.xml3
-rw-r--r--share/regions/config_192.xml3
-rw-r--r--share/regions/config_193.xml3
-rw-r--r--share/regions/config_194.xml3
-rw-r--r--share/regions/config_195.xml3
-rw-r--r--share/regions/config_196.xml3
-rw-r--r--share/regions/config_197.xml3
-rw-r--r--share/regions/config_198.xml3
-rw-r--r--share/regions/config_199.xml3
-rw-r--r--share/regions/config_2.xml3
-rw-r--r--share/regions/config_20.xml3
-rw-r--r--share/regions/config_200.xml3
-rw-r--r--share/regions/config_201.xml3
-rw-r--r--share/regions/config_202.xml3
-rw-r--r--share/regions/config_203.xml3
-rw-r--r--share/regions/config_204.xml3
-rw-r--r--share/regions/config_205.xml3
-rw-r--r--share/regions/config_206.xml3
-rw-r--r--share/regions/config_207.xml3
-rw-r--r--share/regions/config_208.xml3
-rw-r--r--share/regions/config_209.xml3
-rw-r--r--share/regions/config_21.xml3
-rw-r--r--share/regions/config_210.xml3
-rw-r--r--share/regions/config_211.xml3
-rw-r--r--share/regions/config_212.xml3
-rw-r--r--share/regions/config_213.xml3
-rw-r--r--share/regions/config_214.xml3
-rw-r--r--share/regions/config_215.xml3
-rw-r--r--share/regions/config_216.xml3
-rw-r--r--share/regions/config_217.xml3
-rw-r--r--share/regions/config_218.xml3
-rw-r--r--share/regions/config_219.xml3
-rw-r--r--share/regions/config_22.xml3
-rw-r--r--share/regions/config_220.xml3
-rw-r--r--share/regions/config_221.xml3
-rw-r--r--share/regions/config_222.xml3
-rw-r--r--share/regions/config_223.xml3
-rw-r--r--share/regions/config_224.xml3
-rw-r--r--share/regions/config_225.xml3
-rw-r--r--share/regions/config_226.xml3
-rw-r--r--share/regions/config_227.xml3
-rw-r--r--share/regions/config_228.xml3
-rw-r--r--share/regions/config_229.xml3
-rw-r--r--share/regions/config_23.xml3
-rw-r--r--share/regions/config_230.xml3
-rw-r--r--share/regions/config_231.xml3
-rw-r--r--share/regions/config_232.xml3
-rw-r--r--share/regions/config_233.xml3
-rw-r--r--share/regions/config_234.xml3
-rw-r--r--share/regions/config_235.xml3
-rw-r--r--share/regions/config_236.xml3
-rw-r--r--share/regions/config_237.xml3
-rw-r--r--share/regions/config_238.xml3
-rw-r--r--share/regions/config_239.xml3
-rw-r--r--share/regions/config_24.xml3
-rw-r--r--share/regions/config_240.xml3
-rw-r--r--share/regions/config_241.xml3
-rw-r--r--share/regions/config_242.xml3
-rw-r--r--share/regions/config_243.xml3
-rw-r--r--share/regions/config_244.xml3
-rw-r--r--share/regions/config_245.xml3
-rw-r--r--share/regions/config_246.xml3
-rw-r--r--share/regions/config_247.xml3
-rw-r--r--share/regions/config_248.xml3
-rw-r--r--share/regions/config_249.xml3
-rw-r--r--share/regions/config_25.xml3
-rw-r--r--share/regions/config_250.xml3
-rw-r--r--share/regions/config_251.xml3
-rw-r--r--share/regions/config_252.xml3
-rw-r--r--share/regions/config_253.xml3
-rw-r--r--share/regions/config_254.xml3
-rw-r--r--share/regions/config_255.xml3
-rw-r--r--share/regions/config_256.xml3
-rw-r--r--share/regions/config_257.xml3
-rw-r--r--share/regions/config_258.xml3
-rw-r--r--share/regions/config_259.xml3
-rw-r--r--share/regions/config_26.xml3
-rw-r--r--share/regions/config_260.xml3
-rw-r--r--share/regions/config_261.xml3
-rw-r--r--share/regions/config_262.xml3
-rw-r--r--share/regions/config_263.xml3
-rw-r--r--share/regions/config_264.xml3
-rw-r--r--share/regions/config_265.xml3
-rw-r--r--share/regions/config_266.xml3
-rw-r--r--share/regions/config_267.xml3
-rw-r--r--share/regions/config_268.xml3
-rw-r--r--share/regions/config_269.xml3
-rw-r--r--share/regions/config_27.xml3
-rw-r--r--share/regions/config_270.xml3
-rw-r--r--share/regions/config_271.xml3
-rw-r--r--share/regions/config_272.xml3
-rw-r--r--share/regions/config_273.xml3
-rw-r--r--share/regions/config_274.xml3
-rw-r--r--share/regions/config_275.xml3
-rw-r--r--share/regions/config_276.xml3
-rw-r--r--share/regions/config_277.xml3
-rw-r--r--share/regions/config_278.xml3
-rw-r--r--share/regions/config_279.xml3
-rw-r--r--share/regions/config_28.xml3
-rw-r--r--share/regions/config_280.xml3
-rw-r--r--share/regions/config_281.xml3
-rw-r--r--share/regions/config_282.xml3
-rw-r--r--share/regions/config_283.xml3
-rw-r--r--share/regions/config_284.xml3
-rw-r--r--share/regions/config_285.xml3
-rw-r--r--share/regions/config_286.xml3
-rw-r--r--share/regions/config_287.xml3
-rw-r--r--share/regions/config_288.xml3
-rw-r--r--share/regions/config_289.xml3
-rw-r--r--share/regions/config_29.xml3
-rw-r--r--share/regions/config_290.xml3
-rw-r--r--share/regions/config_291.xml3
-rw-r--r--share/regions/config_292.xml3
-rw-r--r--share/regions/config_293.xml3
-rw-r--r--share/regions/config_294.xml3
-rw-r--r--share/regions/config_295.xml3
-rw-r--r--share/regions/config_296.xml3
-rw-r--r--share/regions/config_297.xml3
-rw-r--r--share/regions/config_298.xml3
-rw-r--r--share/regions/config_299.xml3
-rw-r--r--share/regions/config_3.xml3
-rw-r--r--share/regions/config_30.xml3
-rw-r--r--share/regions/config_300.xml3
-rw-r--r--share/regions/config_301.xml3
-rw-r--r--share/regions/config_302.xml3
-rw-r--r--share/regions/config_303.xml3
-rw-r--r--share/regions/config_304.xml3
-rw-r--r--share/regions/config_305.xml3
-rw-r--r--share/regions/config_306.xml3
-rw-r--r--share/regions/config_307.xml3
-rw-r--r--share/regions/config_308.xml3
-rw-r--r--share/regions/config_309.xml3
-rw-r--r--share/regions/config_31.xml3
-rw-r--r--share/regions/config_310.xml3
-rw-r--r--share/regions/config_311.xml3
-rw-r--r--share/regions/config_312.xml3
-rw-r--r--share/regions/config_313.xml3
-rw-r--r--share/regions/config_314.xml3
-rw-r--r--share/regions/config_315.xml3
-rw-r--r--share/regions/config_316.xml3
-rw-r--r--share/regions/config_317.xml3
-rw-r--r--share/regions/config_318.xml3
-rw-r--r--share/regions/config_319.xml3
-rw-r--r--share/regions/config_32.xml3
-rw-r--r--share/regions/config_320.xml3
-rw-r--r--share/regions/config_321.xml3
-rw-r--r--share/regions/config_322.xml3
-rw-r--r--share/regions/config_323.xml3
-rw-r--r--share/regions/config_324.xml3
-rw-r--r--share/regions/config_325.xml3
-rw-r--r--share/regions/config_326.xml3
-rw-r--r--share/regions/config_327.xml3
-rw-r--r--share/regions/config_328.xml3
-rw-r--r--share/regions/config_329.xml3
-rw-r--r--share/regions/config_33.xml3
-rw-r--r--share/regions/config_330.xml3
-rw-r--r--share/regions/config_331.xml3
-rw-r--r--share/regions/config_332.xml3
-rw-r--r--share/regions/config_333.xml3
-rw-r--r--share/regions/config_334.xml3
-rw-r--r--share/regions/config_335.xml3
-rw-r--r--share/regions/config_336.xml3
-rw-r--r--share/regions/config_337.xml3
-rw-r--r--share/regions/config_338.xml3
-rw-r--r--share/regions/config_339.xml3
-rw-r--r--share/regions/config_34.xml3
-rw-r--r--share/regions/config_340.xml3
-rw-r--r--share/regions/config_341.xml3
-rw-r--r--share/regions/config_342.xml3
-rw-r--r--share/regions/config_343.xml3
-rw-r--r--share/regions/config_344.xml3
-rw-r--r--share/regions/config_345.xml3
-rw-r--r--share/regions/config_346.xml3
-rw-r--r--share/regions/config_347.xml3
-rw-r--r--share/regions/config_348.xml3
-rw-r--r--share/regions/config_349.xml3
-rw-r--r--share/regions/config_35.xml3
-rw-r--r--share/regions/config_350.xml3
-rw-r--r--share/regions/config_351.xml3
-rw-r--r--share/regions/config_352.xml3
-rw-r--r--share/regions/config_353.xml3
-rw-r--r--share/regions/config_354.xml3
-rw-r--r--share/regions/config_355.xml3
-rw-r--r--share/regions/config_356.xml3
-rw-r--r--share/regions/config_357.xml3
-rw-r--r--share/regions/config_358.xml3
-rw-r--r--share/regions/config_359.xml3
-rw-r--r--share/regions/config_36.xml3
-rw-r--r--share/regions/config_360.xml3
-rw-r--r--share/regions/config_361.xml3
-rw-r--r--share/regions/config_362.xml3
-rw-r--r--share/regions/config_363.xml3
-rw-r--r--share/regions/config_364.xml3
-rw-r--r--share/regions/config_365.xml3
-rw-r--r--share/regions/config_366.xml3
-rw-r--r--share/regions/config_367.xml3
-rw-r--r--share/regions/config_368.xml3
-rw-r--r--share/regions/config_369.xml3
-rw-r--r--share/regions/config_37.xml3
-rw-r--r--share/regions/config_370.xml3
-rw-r--r--share/regions/config_371.xml3
-rw-r--r--share/regions/config_372.xml3
-rw-r--r--share/regions/config_373.xml3
-rw-r--r--share/regions/config_374.xml3
-rw-r--r--share/regions/config_375.xml3
-rw-r--r--share/regions/config_376.xml3
-rw-r--r--share/regions/config_377.xml3
-rw-r--r--share/regions/config_378.xml3
-rw-r--r--share/regions/config_379.xml3
-rw-r--r--share/regions/config_38.xml3
-rw-r--r--share/regions/config_380.xml3
-rw-r--r--share/regions/config_381.xml3
-rw-r--r--share/regions/config_382.xml3
-rw-r--r--share/regions/config_383.xml3
-rw-r--r--share/regions/config_384.xml3
-rw-r--r--share/regions/config_385.xml3
-rw-r--r--share/regions/config_386.xml3
-rw-r--r--share/regions/config_387.xml3
-rw-r--r--share/regions/config_388.xml3
-rw-r--r--share/regions/config_389.xml3
-rw-r--r--share/regions/config_39.xml3
-rw-r--r--share/regions/config_390.xml3
-rw-r--r--share/regions/config_391.xml3
-rw-r--r--share/regions/config_392.xml3
-rw-r--r--share/regions/config_393.xml3
-rw-r--r--share/regions/config_394.xml3
-rw-r--r--share/regions/config_395.xml3
-rw-r--r--share/regions/config_396.xml3
-rw-r--r--share/regions/config_397.xml3
-rw-r--r--share/regions/config_398.xml3
-rw-r--r--share/regions/config_399.xml3
-rw-r--r--share/regions/config_4.xml3
-rw-r--r--share/regions/config_40.xml3
-rw-r--r--share/regions/config_400.xml3
-rw-r--r--share/regions/config_401.xml3
-rw-r--r--share/regions/config_402.xml3
-rw-r--r--share/regions/config_403.xml3
-rw-r--r--share/regions/config_404.xml3
-rw-r--r--share/regions/config_405.xml3
-rw-r--r--share/regions/config_406.xml3
-rw-r--r--share/regions/config_407.xml3
-rw-r--r--share/regions/config_408.xml3
-rw-r--r--share/regions/config_409.xml3
-rw-r--r--share/regions/config_41.xml3
-rw-r--r--share/regions/config_410.xml3
-rw-r--r--share/regions/config_411.xml3
-rw-r--r--share/regions/config_412.xml3
-rw-r--r--share/regions/config_413.xml3
-rw-r--r--share/regions/config_414.xml3
-rw-r--r--share/regions/config_415.xml3
-rw-r--r--share/regions/config_416.xml3
-rw-r--r--share/regions/config_417.xml3
-rw-r--r--share/regions/config_418.xml3
-rw-r--r--share/regions/config_419.xml3
-rw-r--r--share/regions/config_42.xml3
-rw-r--r--share/regions/config_420.xml3
-rw-r--r--share/regions/config_421.xml3
-rw-r--r--share/regions/config_422.xml3
-rw-r--r--share/regions/config_423.xml3
-rw-r--r--share/regions/config_424.xml3
-rw-r--r--share/regions/config_425.xml3
-rw-r--r--share/regions/config_426.xml3
-rw-r--r--share/regions/config_427.xml3
-rw-r--r--share/regions/config_428.xml3
-rw-r--r--share/regions/config_429.xml3
-rw-r--r--share/regions/config_43.xml3
-rw-r--r--share/regions/config_430.xml3
-rw-r--r--share/regions/config_431.xml3
-rw-r--r--share/regions/config_432.xml3
-rw-r--r--share/regions/config_433.xml3
-rw-r--r--share/regions/config_434.xml3
-rw-r--r--share/regions/config_435.xml3
-rw-r--r--share/regions/config_436.xml3
-rw-r--r--share/regions/config_437.xml3
-rw-r--r--share/regions/config_438.xml3
-rw-r--r--share/regions/config_439.xml3
-rw-r--r--share/regions/config_44.xml3
-rw-r--r--share/regions/config_440.xml3
-rw-r--r--share/regions/config_441.xml3
-rw-r--r--share/regions/config_442.xml3
-rw-r--r--share/regions/config_443.xml3
-rw-r--r--share/regions/config_444.xml3
-rw-r--r--share/regions/config_445.xml3
-rw-r--r--share/regions/config_446.xml3
-rw-r--r--share/regions/config_447.xml3
-rw-r--r--share/regions/config_448.xml3
-rw-r--r--share/regions/config_449.xml3
-rw-r--r--share/regions/config_45.xml3
-rw-r--r--share/regions/config_450.xml3
-rw-r--r--share/regions/config_451.xml3
-rw-r--r--share/regions/config_452.xml3
-rw-r--r--share/regions/config_453.xml3
-rw-r--r--share/regions/config_454.xml3
-rw-r--r--share/regions/config_455.xml3
-rw-r--r--share/regions/config_456.xml3
-rw-r--r--share/regions/config_457.xml3
-rw-r--r--share/regions/config_458.xml3
-rw-r--r--share/regions/config_459.xml3
-rw-r--r--share/regions/config_46.xml3
-rw-r--r--share/regions/config_460.xml3
-rw-r--r--share/regions/config_461.xml3
-rw-r--r--share/regions/config_462.xml3
-rw-r--r--share/regions/config_463.xml3
-rw-r--r--share/regions/config_464.xml3
-rw-r--r--share/regions/config_465.xml3
-rw-r--r--share/regions/config_466.xml3
-rw-r--r--share/regions/config_467.xml3
-rw-r--r--share/regions/config_468.xml3
-rw-r--r--share/regions/config_469.xml3
-rw-r--r--share/regions/config_47.xml3
-rw-r--r--share/regions/config_470.xml3
-rw-r--r--share/regions/config_471.xml3
-rw-r--r--share/regions/config_472.xml3
-rw-r--r--share/regions/config_473.xml3
-rw-r--r--share/regions/config_474.xml3
-rw-r--r--share/regions/config_475.xml3
-rw-r--r--share/regions/config_476.xml3
-rw-r--r--share/regions/config_477.xml3
-rw-r--r--share/regions/config_478.xml3
-rw-r--r--share/regions/config_479.xml3
-rw-r--r--share/regions/config_48.xml3
-rw-r--r--share/regions/config_480.xml3
-rw-r--r--share/regions/config_481.xml3
-rw-r--r--share/regions/config_482.xml3
-rw-r--r--share/regions/config_483.xml3
-rw-r--r--share/regions/config_484.xml3
-rw-r--r--share/regions/config_485.xml3
-rw-r--r--share/regions/config_486.xml3
-rw-r--r--share/regions/config_487.xml3
-rw-r--r--share/regions/config_488.xml3
-rw-r--r--share/regions/config_489.xml3
-rw-r--r--share/regions/config_49.xml3
-rw-r--r--share/regions/config_490.xml3
-rw-r--r--share/regions/config_491.xml3
-rw-r--r--share/regions/config_492.xml3
-rw-r--r--share/regions/config_493.xml3
-rw-r--r--share/regions/config_494.xml3
-rw-r--r--share/regions/config_495.xml3
-rw-r--r--share/regions/config_496.xml3
-rw-r--r--share/regions/config_497.xml3
-rw-r--r--share/regions/config_498.xml3
-rw-r--r--share/regions/config_499.xml3
-rw-r--r--share/regions/config_5.xml3
-rw-r--r--share/regions/config_50.xml3
-rw-r--r--share/regions/config_500.xml3
-rw-r--r--share/regions/config_501.xml3
-rw-r--r--share/regions/config_502.xml3
-rw-r--r--share/regions/config_503.xml3
-rw-r--r--share/regions/config_504.xml3
-rw-r--r--share/regions/config_505.xml3
-rw-r--r--share/regions/config_506.xml3
-rw-r--r--share/regions/config_507.xml3
-rw-r--r--share/regions/config_508.xml3
-rw-r--r--share/regions/config_509.xml3
-rw-r--r--share/regions/config_51.xml3
-rw-r--r--share/regions/config_510.xml3
-rw-r--r--share/regions/config_511.xml3
-rw-r--r--share/regions/config_512.xml3
-rw-r--r--share/regions/config_513.xml3
-rw-r--r--share/regions/config_514.xml3
-rw-r--r--share/regions/config_515.xml3
-rw-r--r--share/regions/config_516.xml3
-rw-r--r--share/regions/config_517.xml3
-rw-r--r--share/regions/config_518.xml3
-rw-r--r--share/regions/config_519.xml3
-rw-r--r--share/regions/config_52.xml3
-rw-r--r--share/regions/config_520.xml3
-rw-r--r--share/regions/config_521.xml3
-rw-r--r--share/regions/config_522.xml3
-rw-r--r--share/regions/config_523.xml3
-rw-r--r--share/regions/config_524.xml3
-rw-r--r--share/regions/config_525.xml3
-rw-r--r--share/regions/config_526.xml3
-rw-r--r--share/regions/config_527.xml3
-rw-r--r--share/regions/config_528.xml3
-rw-r--r--share/regions/config_529.xml3
-rw-r--r--share/regions/config_53.xml3
-rw-r--r--share/regions/config_530.xml3
-rw-r--r--share/regions/config_531.xml3
-rw-r--r--share/regions/config_532.xml3
-rw-r--r--share/regions/config_533.xml3
-rw-r--r--share/regions/config_534.xml3
-rw-r--r--share/regions/config_535.xml3
-rw-r--r--share/regions/config_536.xml3
-rw-r--r--share/regions/config_537.xml3
-rw-r--r--share/regions/config_538.xml3
-rw-r--r--share/regions/config_539.xml3
-rw-r--r--share/regions/config_54.xml3
-rw-r--r--share/regions/config_540.xml3
-rw-r--r--share/regions/config_541.xml3
-rw-r--r--share/regions/config_542.xml3
-rw-r--r--share/regions/config_543.xml3
-rw-r--r--share/regions/config_544.xml3
-rw-r--r--share/regions/config_545.xml3
-rw-r--r--share/regions/config_546.xml3
-rw-r--r--share/regions/config_547.xml3
-rw-r--r--share/regions/config_548.xml3
-rw-r--r--share/regions/config_549.xml3
-rw-r--r--share/regions/config_55.xml3
-rw-r--r--share/regions/config_550.xml3
-rw-r--r--share/regions/config_551.xml3
-rw-r--r--share/regions/config_552.xml3
-rw-r--r--share/regions/config_553.xml3
-rw-r--r--share/regions/config_554.xml3
-rw-r--r--share/regions/config_555.xml3
-rw-r--r--share/regions/config_556.xml3
-rw-r--r--share/regions/config_557.xml3
-rw-r--r--share/regions/config_558.xml3
-rw-r--r--share/regions/config_559.xml3
-rw-r--r--share/regions/config_56.xml3
-rw-r--r--share/regions/config_560.xml3
-rw-r--r--share/regions/config_561.xml3
-rw-r--r--share/regions/config_562.xml3
-rw-r--r--share/regions/config_563.xml3
-rw-r--r--share/regions/config_564.xml3
-rw-r--r--share/regions/config_565.xml3
-rw-r--r--share/regions/config_566.xml3
-rw-r--r--share/regions/config_567.xml3
-rw-r--r--share/regions/config_568.xml3
-rw-r--r--share/regions/config_569.xml3
-rw-r--r--share/regions/config_57.xml3
-rw-r--r--share/regions/config_570.xml3
-rw-r--r--share/regions/config_571.xml3
-rw-r--r--share/regions/config_572.xml3
-rw-r--r--share/regions/config_573.xml3
-rw-r--r--share/regions/config_574.xml3
-rw-r--r--share/regions/config_575.xml3
-rw-r--r--share/regions/config_576.xml3
-rw-r--r--share/regions/config_577.xml3
-rw-r--r--share/regions/config_578.xml3
-rw-r--r--share/regions/config_579.xml3
-rw-r--r--share/regions/config_58.xml3
-rw-r--r--share/regions/config_580.xml3
-rw-r--r--share/regions/config_581.xml3
-rw-r--r--share/regions/config_582.xml3
-rw-r--r--share/regions/config_583.xml3
-rw-r--r--share/regions/config_584.xml3
-rw-r--r--share/regions/config_585.xml3
-rw-r--r--share/regions/config_586.xml3
-rw-r--r--share/regions/config_587.xml3
-rw-r--r--share/regions/config_588.xml3
-rw-r--r--share/regions/config_589.xml3
-rw-r--r--share/regions/config_59.xml3
-rw-r--r--share/regions/config_590.xml3
-rw-r--r--share/regions/config_591.xml3
-rw-r--r--share/regions/config_592.xml3
-rw-r--r--share/regions/config_593.xml3
-rw-r--r--share/regions/config_594.xml3
-rw-r--r--share/regions/config_595.xml3
-rw-r--r--share/regions/config_596.xml3
-rw-r--r--share/regions/config_597.xml3
-rw-r--r--share/regions/config_598.xml3
-rw-r--r--share/regions/config_599.xml3
-rw-r--r--share/regions/config_6.xml3
-rw-r--r--share/regions/config_60.xml3
-rw-r--r--share/regions/config_600.xml3
-rw-r--r--share/regions/config_601.xml3
-rw-r--r--share/regions/config_602.xml3
-rw-r--r--share/regions/config_603.xml3
-rw-r--r--share/regions/config_604.xml3
-rw-r--r--share/regions/config_605.xml3
-rw-r--r--share/regions/config_606.xml3
-rw-r--r--share/regions/config_607.xml3
-rw-r--r--share/regions/config_608.xml3
-rw-r--r--share/regions/config_609.xml3
-rw-r--r--share/regions/config_61.xml3
-rw-r--r--share/regions/config_610.xml3
-rw-r--r--share/regions/config_611.xml3
-rw-r--r--share/regions/config_612.xml3
-rw-r--r--share/regions/config_613.xml3
-rw-r--r--share/regions/config_614.xml3
-rw-r--r--share/regions/config_615.xml3
-rw-r--r--share/regions/config_616.xml3
-rw-r--r--share/regions/config_617.xml3
-rw-r--r--share/regions/config_618.xml3
-rw-r--r--share/regions/config_619.xml3
-rw-r--r--share/regions/config_62.xml3
-rw-r--r--share/regions/config_620.xml3
-rw-r--r--share/regions/config_621.xml3
-rw-r--r--share/regions/config_622.xml3
-rw-r--r--share/regions/config_623.xml3
-rw-r--r--share/regions/config_624.xml3
-rw-r--r--share/regions/config_625.xml3
-rw-r--r--share/regions/config_626.xml3
-rw-r--r--share/regions/config_627.xml3
-rw-r--r--share/regions/config_628.xml3
-rw-r--r--share/regions/config_629.xml3
-rw-r--r--share/regions/config_63.xml3
-rw-r--r--share/regions/config_630.xml3
-rw-r--r--share/regions/config_631.xml3
-rw-r--r--share/regions/config_632.xml3
-rw-r--r--share/regions/config_633.xml3
-rw-r--r--share/regions/config_634.xml3
-rw-r--r--share/regions/config_635.xml3
-rw-r--r--share/regions/config_636.xml3
-rw-r--r--share/regions/config_637.xml3
-rw-r--r--share/regions/config_638.xml3
-rw-r--r--share/regions/config_639.xml3
-rw-r--r--share/regions/config_64.xml3
-rw-r--r--share/regions/config_640.xml3
-rw-r--r--share/regions/config_641.xml3
-rw-r--r--share/regions/config_642.xml3
-rw-r--r--share/regions/config_643.xml3
-rw-r--r--share/regions/config_644.xml3
-rw-r--r--share/regions/config_645.xml3
-rw-r--r--share/regions/config_646.xml3
-rw-r--r--share/regions/config_647.xml3
-rw-r--r--share/regions/config_648.xml3
-rw-r--r--share/regions/config_649.xml3
-rw-r--r--share/regions/config_65.xml3
-rw-r--r--share/regions/config_650.xml3
-rw-r--r--share/regions/config_651.xml3
-rw-r--r--share/regions/config_652.xml3
-rw-r--r--share/regions/config_653.xml3
-rw-r--r--share/regions/config_654.xml3
-rw-r--r--share/regions/config_655.xml3
-rw-r--r--share/regions/config_656.xml3
-rw-r--r--share/regions/config_657.xml3
-rw-r--r--share/regions/config_658.xml3
-rw-r--r--share/regions/config_659.xml3
-rw-r--r--share/regions/config_66.xml3
-rw-r--r--share/regions/config_660.xml3
-rw-r--r--share/regions/config_661.xml3
-rw-r--r--share/regions/config_662.xml3
-rw-r--r--share/regions/config_663.xml3
-rw-r--r--share/regions/config_664.xml3
-rw-r--r--share/regions/config_665.xml3
-rw-r--r--share/regions/config_666.xml3
-rw-r--r--share/regions/config_667.xml3
-rw-r--r--share/regions/config_668.xml3
-rw-r--r--share/regions/config_669.xml3
-rw-r--r--share/regions/config_67.xml3
-rw-r--r--share/regions/config_670.xml3
-rw-r--r--share/regions/config_671.xml3
-rw-r--r--share/regions/config_672.xml3
-rw-r--r--share/regions/config_673.xml3
-rw-r--r--share/regions/config_674.xml3
-rw-r--r--share/regions/config_675.xml3
-rw-r--r--share/regions/config_676.xml3
-rw-r--r--share/regions/config_677.xml3
-rw-r--r--share/regions/config_678.xml3
-rw-r--r--share/regions/config_679.xml3
-rw-r--r--share/regions/config_68.xml3
-rw-r--r--share/regions/config_680.xml3
-rw-r--r--share/regions/config_681.xml3
-rw-r--r--share/regions/config_682.xml3
-rw-r--r--share/regions/config_683.xml3
-rw-r--r--share/regions/config_684.xml3
-rw-r--r--share/regions/config_685.xml3
-rw-r--r--share/regions/config_686.xml3
-rw-r--r--share/regions/config_687.xml3
-rw-r--r--share/regions/config_688.xml3
-rw-r--r--share/regions/config_689.xml3
-rw-r--r--share/regions/config_69.xml3
-rw-r--r--share/regions/config_690.xml3
-rw-r--r--share/regions/config_691.xml3
-rw-r--r--share/regions/config_692.xml3
-rw-r--r--share/regions/config_693.xml3
-rw-r--r--share/regions/config_694.xml3
-rw-r--r--share/regions/config_695.xml3
-rw-r--r--share/regions/config_696.xml3
-rw-r--r--share/regions/config_697.xml3
-rw-r--r--share/regions/config_698.xml3
-rw-r--r--share/regions/config_699.xml3
-rw-r--r--share/regions/config_7.xml3
-rw-r--r--share/regions/config_70.xml3
-rw-r--r--share/regions/config_700.xml3
-rw-r--r--share/regions/config_701.xml3
-rw-r--r--share/regions/config_702.xml3
-rw-r--r--share/regions/config_703.xml3
-rw-r--r--share/regions/config_704.xml3
-rw-r--r--share/regions/config_705.xml3
-rw-r--r--share/regions/config_706.xml3
-rw-r--r--share/regions/config_707.xml3
-rw-r--r--share/regions/config_708.xml3
-rw-r--r--share/regions/config_709.xml3
-rw-r--r--share/regions/config_71.xml3
-rw-r--r--share/regions/config_710.xml3
-rw-r--r--share/regions/config_711.xml3
-rw-r--r--share/regions/config_712.xml3
-rw-r--r--share/regions/config_713.xml3
-rw-r--r--share/regions/config_714.xml3
-rw-r--r--share/regions/config_715.xml3
-rw-r--r--share/regions/config_716.xml3
-rw-r--r--share/regions/config_717.xml3
-rw-r--r--share/regions/config_718.xml3
-rw-r--r--share/regions/config_719.xml3
-rw-r--r--share/regions/config_72.xml3
-rw-r--r--share/regions/config_720.xml3
-rw-r--r--share/regions/config_721.xml3
-rw-r--r--share/regions/config_722.xml3
-rw-r--r--share/regions/config_723.xml3
-rw-r--r--share/regions/config_724.xml3
-rw-r--r--share/regions/config_725.xml3
-rw-r--r--share/regions/config_726.xml3
-rw-r--r--share/regions/config_727.xml3
-rw-r--r--share/regions/config_728.xml3
-rw-r--r--share/regions/config_729.xml3
-rw-r--r--share/regions/config_73.xml3
-rw-r--r--share/regions/config_730.xml3
-rw-r--r--share/regions/config_731.xml3
-rw-r--r--share/regions/config_732.xml3
-rw-r--r--share/regions/config_733.xml3
-rw-r--r--share/regions/config_734.xml3
-rw-r--r--share/regions/config_735.xml3
-rw-r--r--share/regions/config_736.xml3
-rw-r--r--share/regions/config_737.xml3
-rw-r--r--share/regions/config_738.xml3
-rw-r--r--share/regions/config_739.xml3
-rw-r--r--share/regions/config_74.xml3
-rw-r--r--share/regions/config_740.xml3
-rw-r--r--share/regions/config_741.xml3
-rw-r--r--share/regions/config_742.xml3
-rw-r--r--share/regions/config_743.xml3
-rw-r--r--share/regions/config_744.xml3
-rw-r--r--share/regions/config_745.xml3
-rw-r--r--share/regions/config_746.xml3
-rw-r--r--share/regions/config_747.xml3
-rw-r--r--share/regions/config_748.xml3
-rw-r--r--share/regions/config_749.xml3
-rw-r--r--share/regions/config_75.xml3
-rw-r--r--share/regions/config_750.xml3
-rw-r--r--share/regions/config_751.xml3
-rw-r--r--share/regions/config_752.xml3
-rw-r--r--share/regions/config_753.xml3
-rw-r--r--share/regions/config_754.xml3
-rw-r--r--share/regions/config_755.xml3
-rw-r--r--share/regions/config_756.xml3
-rw-r--r--share/regions/config_757.xml3
-rw-r--r--share/regions/config_758.xml3
-rw-r--r--share/regions/config_759.xml3
-rw-r--r--share/regions/config_76.xml3
-rw-r--r--share/regions/config_760.xml3
-rw-r--r--share/regions/config_761.xml3
-rw-r--r--share/regions/config_762.xml3
-rw-r--r--share/regions/config_763.xml3
-rw-r--r--share/regions/config_764.xml3
-rw-r--r--share/regions/config_765.xml3
-rw-r--r--share/regions/config_766.xml3
-rw-r--r--share/regions/config_767.xml3
-rw-r--r--share/regions/config_768.xml3
-rw-r--r--share/regions/config_769.xml3
-rw-r--r--share/regions/config_77.xml3
-rw-r--r--share/regions/config_770.xml3
-rw-r--r--share/regions/config_771.xml3
-rw-r--r--share/regions/config_772.xml3
-rw-r--r--share/regions/config_773.xml3
-rw-r--r--share/regions/config_774.xml3
-rw-r--r--share/regions/config_775.xml3
-rw-r--r--share/regions/config_776.xml3
-rw-r--r--share/regions/config_777.xml3
-rw-r--r--share/regions/config_778.xml3
-rw-r--r--share/regions/config_779.xml3
-rw-r--r--share/regions/config_78.xml3
-rw-r--r--share/regions/config_780.xml3
-rw-r--r--share/regions/config_781.xml3
-rw-r--r--share/regions/config_782.xml3
-rw-r--r--share/regions/config_783.xml3
-rw-r--r--share/regions/config_784.xml3
-rw-r--r--share/regions/config_785.xml3
-rw-r--r--share/regions/config_786.xml3
-rw-r--r--share/regions/config_787.xml3
-rw-r--r--share/regions/config_788.xml3
-rw-r--r--share/regions/config_789.xml3
-rw-r--r--share/regions/config_79.xml3
-rw-r--r--share/regions/config_790.xml3
-rw-r--r--share/regions/config_791.xml3
-rw-r--r--share/regions/config_792.xml3
-rw-r--r--share/regions/config_793.xml3
-rw-r--r--share/regions/config_794.xml3
-rw-r--r--share/regions/config_795.xml3
-rw-r--r--share/regions/config_796.xml3
-rw-r--r--share/regions/config_797.xml3
-rw-r--r--share/regions/config_798.xml3
-rw-r--r--share/regions/config_799.xml3
-rw-r--r--share/regions/config_8.xml3
-rw-r--r--share/regions/config_80.xml3
-rw-r--r--share/regions/config_800.xml3
-rw-r--r--share/regions/config_801.xml3
-rw-r--r--share/regions/config_802.xml3
-rw-r--r--share/regions/config_803.xml3
-rw-r--r--share/regions/config_804.xml3
-rw-r--r--share/regions/config_805.xml3
-rw-r--r--share/regions/config_806.xml3
-rw-r--r--share/regions/config_807.xml3
-rw-r--r--share/regions/config_808.xml3
-rw-r--r--share/regions/config_809.xml3
-rw-r--r--share/regions/config_81.xml3
-rw-r--r--share/regions/config_810.xml3
-rw-r--r--share/regions/config_811.xml3
-rw-r--r--share/regions/config_812.xml3
-rw-r--r--share/regions/config_813.xml3
-rw-r--r--share/regions/config_814.xml3
-rw-r--r--share/regions/config_815.xml3
-rw-r--r--share/regions/config_816.xml3
-rw-r--r--share/regions/config_817.xml3
-rw-r--r--share/regions/config_818.xml3
-rw-r--r--share/regions/config_819.xml3
-rw-r--r--share/regions/config_82.xml3
-rw-r--r--share/regions/config_820.xml3
-rw-r--r--share/regions/config_821.xml3
-rw-r--r--share/regions/config_822.xml3
-rw-r--r--share/regions/config_823.xml3
-rw-r--r--share/regions/config_824.xml3
-rw-r--r--share/regions/config_825.xml3
-rw-r--r--share/regions/config_826.xml3
-rw-r--r--share/regions/config_827.xml3
-rw-r--r--share/regions/config_828.xml3
-rw-r--r--share/regions/config_829.xml3
-rw-r--r--share/regions/config_83.xml3
-rw-r--r--share/regions/config_830.xml3
-rw-r--r--share/regions/config_831.xml3
-rw-r--r--share/regions/config_832.xml3
-rw-r--r--share/regions/config_833.xml3
-rw-r--r--share/regions/config_834.xml3
-rw-r--r--share/regions/config_835.xml3
-rw-r--r--share/regions/config_836.xml3
-rw-r--r--share/regions/config_837.xml3
-rw-r--r--share/regions/config_838.xml3
-rw-r--r--share/regions/config_839.xml3
-rw-r--r--share/regions/config_84.xml3
-rw-r--r--share/regions/config_840.xml3
-rw-r--r--share/regions/config_841.xml3
-rw-r--r--share/regions/config_842.xml3
-rw-r--r--share/regions/config_843.xml3
-rw-r--r--share/regions/config_844.xml3
-rw-r--r--share/regions/config_845.xml3
-rw-r--r--share/regions/config_846.xml3
-rw-r--r--share/regions/config_847.xml3
-rw-r--r--share/regions/config_848.xml3
-rw-r--r--share/regions/config_849.xml3
-rw-r--r--share/regions/config_85.xml3
-rw-r--r--share/regions/config_850.xml3
-rw-r--r--share/regions/config_851.xml3
-rw-r--r--share/regions/config_852.xml3
-rw-r--r--share/regions/config_853.xml3
-rw-r--r--share/regions/config_854.xml3
-rw-r--r--share/regions/config_855.xml3
-rw-r--r--share/regions/config_856.xml3
-rw-r--r--share/regions/config_857.xml3
-rw-r--r--share/regions/config_858.xml3
-rw-r--r--share/regions/config_859.xml3
-rw-r--r--share/regions/config_86.xml3
-rw-r--r--share/regions/config_860.xml3
-rw-r--r--share/regions/config_861.xml3
-rw-r--r--share/regions/config_862.xml3
-rw-r--r--share/regions/config_863.xml3
-rw-r--r--share/regions/config_864.xml3
-rw-r--r--share/regions/config_865.xml3
-rw-r--r--share/regions/config_866.xml3
-rw-r--r--share/regions/config_867.xml3
-rw-r--r--share/regions/config_868.xml3
-rw-r--r--share/regions/config_869.xml3
-rw-r--r--share/regions/config_87.xml3
-rw-r--r--share/regions/config_870.xml3
-rw-r--r--share/regions/config_871.xml3
-rw-r--r--share/regions/config_872.xml3
-rw-r--r--share/regions/config_873.xml3
-rw-r--r--share/regions/config_874.xml3
-rw-r--r--share/regions/config_875.xml3
-rw-r--r--share/regions/config_876.xml3
-rw-r--r--share/regions/config_877.xml3
-rw-r--r--share/regions/config_878.xml3
-rw-r--r--share/regions/config_879.xml3
-rw-r--r--share/regions/config_88.xml3
-rw-r--r--share/regions/config_880.xml3
-rw-r--r--share/regions/config_881.xml3
-rw-r--r--share/regions/config_882.xml3
-rw-r--r--share/regions/config_883.xml3
-rw-r--r--share/regions/config_884.xml3
-rw-r--r--share/regions/config_885.xml3
-rw-r--r--share/regions/config_886.xml3
-rw-r--r--share/regions/config_887.xml3
-rw-r--r--share/regions/config_888.xml3
-rw-r--r--share/regions/config_889.xml3
-rw-r--r--share/regions/config_89.xml3
-rw-r--r--share/regions/config_890.xml3
-rw-r--r--share/regions/config_891.xml3
-rw-r--r--share/regions/config_892.xml3
-rw-r--r--share/regions/config_893.xml3
-rw-r--r--share/regions/config_894.xml3
-rw-r--r--share/regions/config_895.xml3
-rw-r--r--share/regions/config_896.xml3
-rw-r--r--share/regions/config_897.xml3
-rw-r--r--share/regions/config_898.xml3
-rw-r--r--share/regions/config_899.xml3
-rw-r--r--share/regions/config_9.xml3
-rw-r--r--share/regions/config_90.xml3
-rw-r--r--share/regions/config_900.xml3
-rw-r--r--share/regions/config_901.xml3
-rw-r--r--share/regions/config_902.xml3
-rw-r--r--share/regions/config_903.xml3
-rw-r--r--share/regions/config_904.xml3
-rw-r--r--share/regions/config_905.xml3
-rw-r--r--share/regions/config_906.xml3
-rw-r--r--share/regions/config_907.xml3
-rw-r--r--share/regions/config_908.xml3
-rw-r--r--share/regions/config_909.xml3
-rw-r--r--share/regions/config_91.xml3
-rw-r--r--share/regions/config_910.xml3
-rw-r--r--share/regions/config_911.xml3
-rw-r--r--share/regions/config_912.xml3
-rw-r--r--share/regions/config_913.xml3
-rw-r--r--share/regions/config_914.xml3
-rw-r--r--share/regions/config_915.xml3
-rw-r--r--share/regions/config_916.xml3
-rw-r--r--share/regions/config_917.xml3
-rw-r--r--share/regions/config_918.xml3
-rw-r--r--share/regions/config_919.xml3
-rw-r--r--share/regions/config_92.xml3
-rw-r--r--share/regions/config_920.xml3
-rw-r--r--share/regions/config_921.xml3
-rw-r--r--share/regions/config_922.xml3
-rw-r--r--share/regions/config_923.xml3
-rw-r--r--share/regions/config_924.xml3
-rw-r--r--share/regions/config_925.xml3
-rw-r--r--share/regions/config_926.xml3
-rw-r--r--share/regions/config_927.xml3
-rw-r--r--share/regions/config_928.xml3
-rw-r--r--share/regions/config_929.xml3
-rw-r--r--share/regions/config_93.xml3
-rw-r--r--share/regions/config_930.xml3
-rw-r--r--share/regions/config_931.xml3
-rw-r--r--share/regions/config_932.xml3
-rw-r--r--share/regions/config_933.xml3
-rw-r--r--share/regions/config_934.xml3
-rw-r--r--share/regions/config_935.xml3
-rw-r--r--share/regions/config_936.xml3
-rw-r--r--share/regions/config_937.xml3
-rw-r--r--share/regions/config_938.xml3
-rw-r--r--share/regions/config_939.xml3
-rw-r--r--share/regions/config_94.xml3
-rw-r--r--share/regions/config_940.xml3
-rw-r--r--share/regions/config_941.xml3
-rw-r--r--share/regions/config_942.xml3
-rw-r--r--share/regions/config_943.xml3
-rw-r--r--share/regions/config_944.xml3
-rw-r--r--share/regions/config_945.xml3
-rw-r--r--share/regions/config_946.xml3
-rw-r--r--share/regions/config_947.xml3
-rw-r--r--share/regions/config_948.xml3
-rw-r--r--share/regions/config_949.xml3
-rw-r--r--share/regions/config_95.xml3
-rw-r--r--share/regions/config_950.xml3
-rw-r--r--share/regions/config_951.xml3
-rw-r--r--share/regions/config_952.xml3
-rw-r--r--share/regions/config_953.xml3
-rw-r--r--share/regions/config_954.xml3
-rw-r--r--share/regions/config_955.xml3
-rw-r--r--share/regions/config_956.xml3
-rw-r--r--share/regions/config_957.xml3
-rw-r--r--share/regions/config_958.xml3
-rw-r--r--share/regions/config_959.xml3
-rw-r--r--share/regions/config_96.xml3
-rw-r--r--share/regions/config_960.xml3
-rw-r--r--share/regions/config_961.xml3
-rw-r--r--share/regions/config_962.xml3
-rw-r--r--share/regions/config_963.xml3
-rw-r--r--share/regions/config_964.xml3
-rw-r--r--share/regions/config_965.xml3
-rw-r--r--share/regions/config_966.xml3
-rw-r--r--share/regions/config_967.xml3
-rw-r--r--share/regions/config_968.xml3
-rw-r--r--share/regions/config_969.xml3
-rw-r--r--share/regions/config_97.xml3
-rw-r--r--share/regions/config_970.xml3
-rw-r--r--share/regions/config_971.xml3
-rw-r--r--share/regions/config_972.xml3
-rw-r--r--share/regions/config_973.xml3
-rw-r--r--share/regions/config_974.xml3
-rw-r--r--share/regions/config_975.xml3
-rw-r--r--share/regions/config_976.xml3
-rw-r--r--share/regions/config_977.xml3
-rw-r--r--share/regions/config_978.xml3
-rw-r--r--share/regions/config_979.xml3
-rw-r--r--share/regions/config_98.xml3
-rw-r--r--share/regions/config_980.xml3
-rw-r--r--share/regions/config_981.xml3
-rw-r--r--share/regions/config_982.xml3
-rw-r--r--share/regions/config_983.xml3
-rw-r--r--share/regions/config_984.xml3
-rw-r--r--share/regions/config_985.xml3
-rw-r--r--share/regions/config_986.xml3
-rw-r--r--share/regions/config_987.xml3
-rw-r--r--share/regions/config_988.xml3
-rw-r--r--share/regions/config_989.xml3
-rw-r--r--share/regions/config_99.xml3
-rw-r--r--share/regions/config_990.xml3
-rw-r--r--share/regions/config_991.xml3
-rw-r--r--share/regions/config_992.xml3
-rw-r--r--share/regions/config_993.xml3
-rw-r--r--share/regions/config_994.xml3
-rw-r--r--share/regions/config_995.xml3
-rw-r--r--share/regions/config_996.xml3
-rw-r--r--share/regions/config_997.xml3
-rw-r--r--share/regions/config_998.xml3
-rw-r--r--share/regions/config_999.xml3
-rw-r--r--share/sql/mysql-agents.sql24
-rw-r--r--share/sql/mysql-inventoryfolders.sql9
-rw-r--r--share/sql/mysql-inventoryitems.sql14
-rw-r--r--share/sql/mysql-logs.sql10
-rw-r--r--share/sql/mysql-regions.sql29
-rw-r--r--share/sql/mysql-reservations.txt16
-rw-r--r--share/sql/mysql-users.sql34
1413 files changed, 62000 insertions, 0 deletions
diff --git a/OpenGridServices.sln b/OpenGridServices.sln
new file mode 100644
index 0000000..2a6079e
--- /dev/null
+++ b/OpenGridServices.sln
@@ -0,0 +1,95 @@
1Microsoft Visual Studio Solution File, Format Version 9.00
2# Visual Studio 2005
3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Data", "OpenSim\Framework\Data\OpenSim.Framework.Data.csproj", "{36B72A9B-0000-0000-0000-000000000000}"
4EndProject
5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Data.DB4o", "OpenSim\Framework\Data.DB4o\OpenSim.Framework.Data.DB4o.csproj", "{FD2D303D-0000-0000-0000-000000000000}"
6EndProject
7Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Data.MSSQL", "OpenSim\Framework\Data.MSSQL\OpenSim.Framework.Data.MSSQL.csproj", "{17F7F694-0000-0000-0000-000000000000}"
8EndProject
9Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Data.MySQL", "OpenSim\Framework\Data.MySQL\OpenSim.Framework.Data.MySQL.csproj", "{17F7F6BE-0000-0000-0000-000000000000}"
10EndProject
11Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Data.SQLite", "OpenSim\Framework\Data.SQLite\OpenSim.Framework.Data.SQLite.csproj", "{6ECC56A9-0000-0000-0000-000000000000}"
12EndProject
13Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.UserManagement", "OpenSim\Framework\UserManager\OpenSim.Framework.UserManagement.csproj", "{586E2916-0000-0000-0000-000000000000}"
14EndProject
15Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.AssetServer", "OpenSim\Grid\AssetServer\OpenSim.Grid.AssetServer.csproj", "{E5F1A03B-0000-0000-0000-000000000000}"
16EndProject
17Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.Framework.Manager", "OpenSim\Grid\Framework.Manager\OpenSim.Grid.Framework.Manager.csproj", "{4B7BFD1C-0000-0000-0000-000000000000}"
18EndProject
19Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.GridServer", "OpenSim\Grid\GridServer\OpenSim.Grid.GridServer.csproj", "{60FCC3A6-0000-0000-0000-000000000000}"
20EndProject
21Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.GridServer.Config", "OpenSim\Grid\GridServer.Config\OpenSim.Grid.GridServer.Config.csproj", "{1442B635-0000-0000-0000-000000000000}"
22EndProject
23Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.UserServer", "OpenSim\Grid\UserServer\OpenSim.Grid.UserServer.csproj", "{2FC96F92-0000-0000-0000-000000000000}"
24EndProject
25Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.UserServer.Config", "OpenSim\Grid\UserServer.Config\OpenSim.Grid.UserServer.Config.csproj", "{08F87229-0000-0000-0000-000000000000}"
26EndProject
27Global
28 GlobalSection(SolutionConfigurationPlatforms) = preSolution
29 Debug|Any CPU = Debug|Any CPU
30 Release|Any CPU = Release|Any CPU
31 EndGlobalSection
32 GlobalSection(ProjectDependencies) = postSolution
33 ({FD2D303D-0000-0000-0000-000000000000}).2 = ({36B72A9B-0000-0000-0000-000000000000})
34 ({17F7F694-0000-0000-0000-000000000000}).1 = ({36B72A9B-0000-0000-0000-000000000000})
35 ({17F7F6BE-0000-0000-0000-000000000000}).2 = ({36B72A9B-0000-0000-0000-000000000000})
36 ({6ECC56A9-0000-0000-0000-000000000000}).1 = ({36B72A9B-0000-0000-0000-000000000000})
37 ({586E2916-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000})
38 ({60FCC3A6-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000})
39 ({60FCC3A6-0000-0000-0000-000000000000}).7 = ({4B7BFD1C-0000-0000-0000-000000000000})
40 ({2FC96F92-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000})
41 EndGlobalSection
42 GlobalSection(ProjectConfigurationPlatforms) = postSolution
43 {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
44 {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
45 {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
46 {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
47 {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
48 {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
49 {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
50 {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
51 {17F7F694-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52 {17F7F694-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
53 {17F7F694-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
54 {17F7F694-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
55 {17F7F6BE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
56 {17F7F6BE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
57 {17F7F6BE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
58 {17F7F6BE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
59 {6ECC56A9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
60 {6ECC56A9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
61 {6ECC56A9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
62 {6ECC56A9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
63 {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
64 {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
65 {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
66 {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
67 {E5F1A03B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
68 {E5F1A03B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
69 {E5F1A03B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
70 {E5F1A03B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
71 {4B7BFD1C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
72 {4B7BFD1C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
73 {4B7BFD1C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
74 {4B7BFD1C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
75 {60FCC3A6-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
76 {60FCC3A6-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
77 {60FCC3A6-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
78 {60FCC3A6-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
79 {1442B635-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
80 {1442B635-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
81 {1442B635-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
82 {1442B635-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
83 {2FC96F92-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
84 {2FC96F92-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
85 {2FC96F92-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
86 {2FC96F92-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
87 {08F87229-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
88 {08F87229-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
89 {08F87229-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
90 {08F87229-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
91 EndGlobalSection
92 GlobalSection(SolutionProperties) = preSolution
93 HideSolutionNode = FALSE
94 EndGlobalSection
95EndGlobal
diff --git a/OpenSim.FxCop b/OpenSim.FxCop
new file mode 100644
index 0000000..1e2ea2d
--- /dev/null
+++ b/OpenSim.FxCop
@@ -0,0 +1,7241 @@
1<?xml version="1.0" encoding="utf-8"?>
2<FxCopProject Version="1.35" Name="OpenSim">
3 <ProjectOptions>
4 <SharedProject>True</SharedProject>
5 <Stylesheet Apply="False">http://www.gotdotnet.com/team/fxcop//xsl/1.35/FxCopReport.xsl</Stylesheet>
6 <SaveMessages>
7 <Project Status="Active, Excluded" NewOnly="False" />
8 <Report Status="Active" NewOnly="False" />
9 </SaveMessages>
10 <ProjectFile Compress="True" DefaultTargetCheck="True" DefaultRuleCheck="True" SaveByRuleGroup="" Deterministic="True" />
11 <EnableMultithreadedLoad>True</EnableMultithreadedLoad>
12 <EnableMultithreadedAnalysis>True</EnableMultithreadedAnalysis>
13 <SourceLookup>True</SourceLookup>
14 <AnalysisExceptionsThreshold>10</AnalysisExceptionsThreshold>
15 <RuleExceptionsThreshold>1</RuleExceptionsThreshold>
16 <Spelling Locale="en-us" />
17 <VersionAware>False</VersionAware>
18 <OverrideRuleVisibilities>False</OverrideRuleVisibilities>
19 <CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" />
20 <SearchGlobalAssemblyCache>False</SearchGlobalAssemblyCache>
21 <DeadlockDetectionTimeout>120</DeadlockDetectionTimeout>
22 </ProjectOptions>
23 <Targets>
24 <AssemblyReferenceDirectories>
25 <Directory>$(ProjectDir)/lib/</Directory>
26 </AssemblyReferenceDirectories>
27 <Target Name="$(ProjectDir)/bin/OpenGridServices.ServerConsole.dll" Analyze="True" AnalyzeAllChildren="True" />
28 <Target Name="$(ProjectDir)/bin/OpenSim.Config.SimConfigDb4o.dll" Analyze="True" AnalyzeAllChildren="True" />
29 <Target Name="$(ProjectDir)/bin/OpenSim.exe" Analyze="True" AnalyzeAllChildren="True" />
30 <Target Name="$(ProjectDir)/bin/OpenSim.Framework.Console.dll" Analyze="True" AnalyzeAllChildren="True" />
31 <Target Name="$(ProjectDir)/bin/OpenSim.Framework.dll" Analyze="True" AnalyzeAllChildren="True" />
32 <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Local.dll" Analyze="True" AnalyzeAllChildren="True" />
33 <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Remote.dll" Analyze="True" AnalyzeAllChildren="True" />
34 <Target Name="$(ProjectDir)/bin/OpenSim.Physics.Manager.dll" Analyze="True" AnalyzeAllChildren="True" />
35 <Target Name="$(ProjectDir)/bin/OpenSim.RegionServer.dll" Analyze="True" AnalyzeAllChildren="True" />
36 <Target Name="$(ProjectDir)/bin/OpenSim.Storage.LocalStorageDb4o.dll" Analyze="True" AnalyzeAllChildren="True" />
37 <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.BasicPhysicsPlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
38 <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.OdePlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
39 <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.PhysXPlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
40 </Targets>
41 <Rules>
42 <RuleFiles>
43 <RuleFile Name="$(FxCopDir)\Rules\DesignRules.dll" Enabled="True" AllRulesEnabled="True" />
44 <RuleFile Name="$(FxCopDir)\Rules\GlobalizationRules.dll" Enabled="True" AllRulesEnabled="True" />
45 <RuleFile Name="$(FxCopDir)\Rules\InteroperabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
46 <RuleFile Name="$(FxCopDir)\Rules\MobilityRules.dll" Enabled="True" AllRulesEnabled="True" />
47 <RuleFile Name="$(FxCopDir)\Rules\NamingRules.dll" Enabled="True" AllRulesEnabled="True" />
48 <RuleFile Name="$(FxCopDir)\Rules\PerformanceRules.dll" Enabled="True" AllRulesEnabled="True" />
49 <RuleFile Name="$(FxCopDir)\Rules\PortabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
50 <RuleFile Name="$(FxCopDir)\Rules\SecurityRules.dll" Enabled="True" AllRulesEnabled="True" />
51 <RuleFile Name="$(FxCopDir)\Rules\UsageRules.dll" Enabled="True" AllRulesEnabled="True" />
52 </RuleFiles>
53 <Groups />
54 <Settings />
55 </Rules>
56 <FxCopReport Version="1.35">
57 <Namespaces>
58 <Namespace Name="OpenSim">
59 <Messages>
60 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
61 <Issue Name="Namespace">
62 <Item>Sim</Item>
63 <Item>OpenSim</Item>
64 </Issue>
65 </Message>
66 </Messages>
67 </Namespace>
68 <Namespace Name="OpenSim.Assets">
69 <Messages>
70 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
71 <Issue Name="Namespace">
72 <Item>Sim</Item>
73 <Item>OpenSim.Assets</Item>
74 </Issue>
75 </Message>
76 </Messages>
77 </Namespace>
78 <Namespace Name="OpenSim.CAPS">
79 <Messages>
80 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
81 <Issue>
82 <Item>OpenSim.CAPS</Item>
83 </Issue>
84 </Message>
85 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
86 <Issue Name="Namespace">
87 <Item>Sim</Item>
88 <Item>OpenSim.CAPS</Item>
89 </Issue>
90 </Message>
91 <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
92 <Issue Name="Namespace">
93 <Item>OpenSim.CAPS</Item>
94 </Issue>
95 </Message>
96 </Messages>
97 </Namespace>
98 <Namespace Name="OpenSim.Config.SimConfigDb4o">
99 <Messages>
100 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
101 <Issue Name="Namespace">
102 <Item>Sim</Item>
103 <Item>OpenSim.Config.SimConfigDb4o</Item>
104 </Issue>
105 <Issue Name="Namespace">
106 <Item>Sim</Item>
107 <Item>OpenSim.Config.SimConfigDb4o</Item>
108 </Issue>
109 </Message>
110 </Messages>
111 </Namespace>
112 <Namespace Name="OpenSim.Framework.Assets">
113 <Messages>
114 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
115 <Issue>
116 <Item>OpenSim.Framework.Assets</Item>
117 </Issue>
118 </Message>
119 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
120 <Issue Name="Namespace">
121 <Item>Sim</Item>
122 <Item>OpenSim.Framework.Assets</Item>
123 </Issue>
124 </Message>
125 </Messages>
126 </Namespace>
127 <Namespace Name="OpenSim.Framework.Console">
128 <Messages>
129 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
130 <Issue Name="Namespace">
131 <Item>Sim</Item>
132 <Item>OpenSim.Framework.Console</Item>
133 </Issue>
134 </Message>
135 </Messages>
136 </Namespace>
137 <Namespace Name="OpenSim.Framework.Grid">
138 <Messages>
139 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
140 <Issue>
141 <Item>OpenSim.Framework.Grid</Item>
142 </Issue>
143 </Message>
144 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
145 <Issue Name="Namespace">
146 <Item>Sim</Item>
147 <Item>OpenSim.Framework.Grid</Item>
148 </Issue>
149 </Message>
150 </Messages>
151 </Namespace>
152 <Namespace Name="OpenSim.Framework.Interfaces">
153 <Messages>
154 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
155 <Issue Name="Namespace">
156 <Item>Sim</Item>
157 <Item>OpenSim.Framework.Interfaces</Item>
158 </Issue>
159 </Message>
160 </Messages>
161 </Namespace>
162 <Namespace Name="OpenSim.Framework.Inventory">
163 <Messages>
164 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
165 <Issue>
166 <Item>OpenSim.Framework.Inventory</Item>
167 </Issue>
168 </Message>
169 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
170 <Issue Name="Namespace">
171 <Item>Sim</Item>
172 <Item>OpenSim.Framework.Inventory</Item>
173 </Issue>
174 </Message>
175 </Messages>
176 </Namespace>
177 <Namespace Name="OpenSim.Framework.Sims">
178 <Messages>
179 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
180 <Issue>
181 <Item>OpenSim.Framework.Sims</Item>
182 </Issue>
183 </Message>
184 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
185 <Issue Name="Namespace">
186 <Item>Sim</Item>
187 <Item>OpenSim.Framework.Sims</Item>
188 </Issue>
189 </Message>
190 </Messages>
191 </Namespace>
192 <Namespace Name="OpenSim.Framework.Terrain">
193 <Messages>
194 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
195 <Issue>
196 <Item>OpenSim.Framework.Terrain</Item>
197 </Issue>
198 </Message>
199 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
200 <Issue Name="Namespace">
201 <Item>Sim</Item>
202 <Item>OpenSim.Framework.Terrain</Item>
203 </Issue>
204 </Message>
205 </Messages>
206 </Namespace>
207 <Namespace Name="OpenSim.Framework.User">
208 <Messages>
209 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
210 <Issue>
211 <Item>OpenSim.Framework.User</Item>
212 </Issue>
213 </Message>
214 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
215 <Issue Name="Namespace">
216 <Item>Sim</Item>
217 <Item>OpenSim.Framework.User</Item>
218 </Issue>
219 </Message>
220 </Messages>
221 </Namespace>
222 <Namespace Name="OpenSim.Framework.Utilities">
223 <Messages>
224 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
225 <Issue>
226 <Item>OpenSim.Framework.Utilities</Item>
227 </Issue>
228 </Message>
229 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
230 <Issue Name="Namespace">
231 <Item>Sim</Item>
232 <Item>OpenSim.Framework.Utilities</Item>
233 </Issue>
234 </Message>
235 </Messages>
236 </Namespace>
237 <Namespace Name="OpenSim.GridInterfaces.Local">
238 <Messages>
239 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
240 <Issue Name="Namespace">
241 <Item>Sim</Item>
242 <Item>OpenSim.GridInterfaces.Local</Item>
243 </Issue>
244 </Message>
245 </Messages>
246 </Namespace>
247 <Namespace Name="OpenSim.GridInterfaces.Remote">
248 <Messages>
249 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
250 <Issue>
251 <Item>OpenSim.GridInterfaces.Remote</Item>
252 </Issue>
253 </Message>
254 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
255 <Issue Name="Namespace">
256 <Item>Sim</Item>
257 <Item>OpenSim.GridInterfaces.Remote</Item>
258 </Issue>
259 </Message>
260 </Messages>
261 </Namespace>
262 <Namespace Name="OpenSim.Physics.BasicPhysicsPlugin">
263 <Messages>
264 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
265 <Issue Name="Namespace">
266 <Item>Plugin</Item>
267 <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
268 </Issue>
269 </Message>
270 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
271 <Issue Name="Namespace">
272 <Item>Sim</Item>
273 <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
274 </Issue>
275 </Message>
276 </Messages>
277 </Namespace>
278 <Namespace Name="OpenSim.Physics.Manager">
279 <Messages>
280 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
281 <Issue Name="Namespace">
282 <Item>Sim</Item>
283 <Item>OpenSim.Physics.Manager</Item>
284 </Issue>
285 </Message>
286 </Messages>
287 </Namespace>
288 <Namespace Name="OpenSim.Physics.OdePlugin">
289 <Messages>
290 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
291 <Issue>
292 <Item>OpenSim.Physics.OdePlugin</Item>
293 </Issue>
294 </Message>
295 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
296 <Issue Name="Namespace">
297 <Item>Plugin</Item>
298 <Item>OpenSim.Physics.OdePlugin</Item>
299 </Issue>
300 </Message>
301 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
302 <Issue Name="Namespace">
303 <Item>Sim</Item>
304 <Item>OpenSim.Physics.OdePlugin</Item>
305 </Issue>
306 </Message>
307 </Messages>
308 </Namespace>
309 <Namespace Name="OpenSim.Physics.PhysXPlugin">
310 <Messages>
311 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
312 <Issue>
313 <Item>OpenSim.Physics.PhysXPlugin</Item>
314 </Issue>
315 </Message>
316 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
317 <Issue Name="Namespace">
318 <Item>Plugin</Item>
319 <Item>OpenSim.Physics.PhysXPlugin</Item>
320 </Issue>
321 </Message>
322 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
323 <Issue Name="Namespace">
324 <Item>Sim</Item>
325 <Item>OpenSim.Physics.PhysXPlugin</Item>
326 </Issue>
327 </Message>
328 </Messages>
329 </Namespace>
330 <Namespace Name="OpenSim.Storage.LocalStorageDb4o">
331 <Messages>
332 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
333 <Issue Name="Namespace">
334 <Item>Sim</Item>
335 <Item>OpenSim.Storage.LocalStorageDb4o</Item>
336 </Issue>
337 </Message>
338 </Messages>
339 </Namespace>
340 <Namespace Name="OpenSim.types">
341 <Messages>
342 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
343 <Issue>
344 <Item>OpenSim.types</Item>
345 </Issue>
346 </Message>
347 <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
348 <Issue Name="Namespace">
349 <Item>OpenSim.types</Item>
350 </Issue>
351 </Message>
352 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
353 <Issue Name="Namespace">
354 <Item>Sim</Item>
355 <Item>OpenSim.types</Item>
356 </Issue>
357 </Message>
358 </Messages>
359 </Namespace>
360 <Namespace Name="OpenSim.UserServer">
361 <Messages>
362 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
363 <Issue>
364 <Item>OpenSim.UserServer</Item>
365 </Issue>
366 </Message>
367 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
368 <Issue Name="Namespace">
369 <Item>Sim</Item>
370 <Item>OpenSim.UserServer</Item>
371 </Issue>
372 </Message>
373 </Messages>
374 </Namespace>
375 <Namespace Name="OpenSim.world">
376 <Messages>
377 <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
378 <Issue Name="Namespace">
379 <Item>OpenSim.world</Item>
380 </Issue>
381 </Message>
382 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
383 <Issue Name="Namespace">
384 <Item>Sim</Item>
385 <Item>OpenSim.world</Item>
386 </Issue>
387 </Message>
388 </Messages>
389 </Namespace>
390 <Namespace Name="OpenSim.world.scripting">
391 <Messages>
392 <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
393 <Issue>
394 <Item>OpenSim.world.scripting</Item>
395 </Issue>
396 </Message>
397 <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
398 <Issue Name="Namespace">
399 <Item>OpenSim.world.scripting</Item>
400 </Issue>
401 <Issue Name="Namespace">
402 <Item>OpenSim.world.scripting</Item>
403 </Issue>
404 </Message>
405 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
406 <Issue Name="Namespace">
407 <Item>Sim</Item>
408 <Item>OpenSim.world.scripting</Item>
409 </Issue>
410 </Message>
411 </Messages>
412 </Namespace>
413 </Namespaces>
414 <Targets>
415 <Target Name="$(ProjectDir)/bin/OpenGridServices.ServerConsole.dll">
416 <Modules>
417 <Module Name="opengridservices.serverconsole.dll">
418 <Messages>
419 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
420 <Issue>
421 <Item>OpenGridServices.ServerConsole</Item>
422 </Issue>
423 </Message>
424 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
425 <Issue Name="NoStrongName">
426 <Item>OpenGridServices.ServerConsole</Item>
427 </Issue>
428 </Message>
429 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
430 <Issue Name="NoAttr">
431 <Item>OpenGridServices.ServerConsole</Item>
432 </Issue>
433 </Message>
434 </Messages>
435 <Namespaces>
436 <Namespace Name="ServerConsole">
437 <Types>
438 <Type Name="conscmd_callback">
439 <Messages>
440 <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
441 <Issue Name="Type">
442 <Item>conscmd_callback</Item>
443 </Issue>
444 </Message>
445 <Message Id="conscmd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
446 <Issue Name="Type">
447 <Item>conscmd</Item>
448 <Item>ServerConsole.conscmd_callback</Item>
449 </Issue>
450 </Message>
451 <Message TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
452 <Issue Name="Type">
453 <Item>conscmd_callback</Item>
454 </Issue>
455 </Message>
456 </Messages>
457 <Members>
458 <Member Name="RunCmd(System.String,System.String[]):System.Void">
459 <Messages>
460 <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
461 <Issue Name="Parameter">
462 <Item>conscmd_callback.RunCmd(String, String[]):Void</Item>
463 <Item>cmdparams</Item>
464 <Item>cmdparams</Item>
465 </Issue>
466 </Message>
467 </Messages>
468 </Member>
469 <Member Name="Show(System.String):System.Void">
470 <Messages>
471 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
472 <Issue Name="Parameter">
473 <Item>ShowWhat</Item>
474 </Issue>
475 </Message>
476 </Messages>
477 </Member>
478 </Members>
479 </Type>
480 <Type Name="ConsoleBase">
481 <Members>
482 <Member Name="CmdPrompt(System.String,System.String):System.String">
483 <Messages>
484 <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
485 <Issue Name="Parameter">
486 <Item>ConsoleBase.CmdPrompt(String, String):String</Item>
487 <Item>defaultresponse</Item>
488 <Item>defaultresponse</Item>
489 </Issue>
490 </Message>
491 </Messages>
492 </Member>
493 <Member Name="CmdPrompt(System.String,System.String,System.String,System.String):System.String">
494 <Messages>
495 <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
496 <Issue Name="Parameter">
497 <Item>OptionA</Item>
498 </Issue>
499 </Message>
500 <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
501 <Issue Name="Parameter">
502 <Item>OptionB</Item>
503 </Issue>
504 </Message>
505 <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
506 <Issue Name="Parameter">
507 <Item>ConsoleBase.CmdPrompt(String, String, String, String):String</Item>
508 <Item>defaultresponse</Item>
509 <Item>defaultresponse</Item>
510 </Issue>
511 </Message>
512 </Messages>
513 </Member>
514 <Member Name="PasswdPrompt(System.String):System.String">
515 <Messages>
516 <Message Id="Passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
517 <Issue Name="Member">
518 <Item>Passwd</Item>
519 <Item>ConsoleBase.PasswdPrompt(String):String</Item>
520 </Issue>
521 </Message>
522 </Messages>
523 </Member>
524 <Member Name="RunCmd(System.String,System.String[]):System.Object">
525 <Messages>
526 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
527 <Issue Name="Parameter">
528 <Item>Cmd</Item>
529 </Issue>
530 </Message>
531 <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
532 <Issue Name="Parameter">
533 <Item>ConsoleBase.RunCmd(String, String[]):Object</Item>
534 <Item>cmdparams</Item>
535 <Item>cmdparams</Item>
536 </Issue>
537 </Message>
538 </Messages>
539 </Member>
540 <Member Name="ShowCommands(System.String):System.Void">
541 <Messages>
542 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
543 <Issue Name="Parameter">
544 <Item>ShowWhat</Item>
545 </Issue>
546 </Message>
547 </Messages>
548 </Member>
549 <Member Name="Write(System.String):System.Void">
550 <Messages>
551 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
552 <Issue Name="Parameter">
553 <Item>Line</Item>
554 </Issue>
555 </Message>
556 </Messages>
557 </Member>
558 <Member Name="WriteLine(System.String):System.Void">
559 <Messages>
560 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
561 <Issue Name="Parameter">
562 <Item>Line</Item>
563 </Issue>
564 </Message>
565 </Messages>
566 </Member>
567 </Members>
568 </Type>
569 <Type Name="ConsoleBase+ConsoleType">
570 <Members>
571 <Member Name="SimChat">
572 <Messages>
573 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
574 <Issue Name="Member">
575 <Item>Sim</Item>
576 <Item>ConsoleType.SimChat</Item>
577 </Issue>
578 </Message>
579 </Messages>
580 </Member>
581 <Member Name="TCP">
582 <Messages>
583 <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
584 <Issue Name="Member">
585 <Item>ConsoleType.TCP</Item>
586 </Issue>
587 </Message>
588 </Messages>
589 </Member>
590 </Members>
591 </Type>
592 <Type Name="MainConsole">
593 <Messages>
594 <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
595 <Issue>
596 <Item>MainConsole</Item>
597 </Issue>
598 </Message>
599 </Messages>
600 </Type>
601 </Types>
602 </Namespace>
603 </Namespaces>
604 </Module>
605 </Modules>
606 </Target>
607 <Target Name="$(ProjectDir)/bin/OpenSim.Config.SimConfigDb4o.dll">
608 <Modules>
609 <Module Name="opensim.config.simconfigdb4o.dll">
610 <Messages>
611 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
612 <Issue>
613 <Item>OpenSim.Config.SimConfigDb4o</Item>
614 </Issue>
615 </Message>
616 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
617 <Issue Name="NoStrongName">
618 <Item>OpenSim.Config.SimConfigDb4o</Item>
619 </Issue>
620 </Message>
621 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
622 <Issue Name="NoAttr">
623 <Item>OpenSim.Config.SimConfigDb4o</Item>
624 </Issue>
625 </Message>
626 </Messages>
627 <Namespaces>
628 <Namespace Name="OpenSim.Config.SimConfigDb4o">
629 <Types>
630 <Type Name="Db40ConfigPlugin">
631 <Messages>
632 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
633 <Issue Name="Type">
634 <Item>Plugin</Item>
635 <Item>OpenSim.Config.SimConfigDb4o.Db40ConfigPlugin</Item>
636 </Issue>
637 </Message>
638 </Messages>
639 </Type>
640 <Type Name="DbSimConfig">
641 <Messages>
642 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
643 <Issue Name="Type">
644 <Item>Sim</Item>
645 <Item>OpenSim.Config.SimConfigDb4o.DbSimConfig</Item>
646 </Issue>
647 </Message>
648 <Message TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
649 <Issue Name="Type">
650 <Item>Db</Item>
651 <Item>OpenSim.Config.SimConfigDb4o.DbSimConfig</Item>
652 </Issue>
653 </Message>
654 </Messages>
655 <Members>
656 <Member Name="InitConfig(System.Boolean):System.Void">
657 <Messages>
658 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
659 <Issue>
660 <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
661 <Item>System.Exception</Item>
662 </Issue>
663 </Message>
664 <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
665 <Issue>
666 <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
667 <Item>System.UInt32.ToString</Item>
668 <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
669 </Issue>
670 </Message>
671 <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
672 <Issue>
673 <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
674 <Item>System.UInt64.ToString</Item>
675 <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
676 </Issue>
677 </Message>
678 </Messages>
679 </Member>
680 <Member Name="LoadDefaults():System.Void">
681 <Messages>
682 <Message Id="System.Convert.ToInt32(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
683 <Issue>
684 <Item>DbSimConfig.LoadDefaults():Void</Item>
685 <Item>System.Convert.ToInt32(System.String)</Item>
686 <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
687 </Issue>
688 <Issue>
689 <Item>DbSimConfig.LoadDefaults():Void</Item>
690 <Item>System.Convert.ToInt32(System.String)</Item>
691 <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
692 </Issue>
693 <Issue>
694 <Item>DbSimConfig.LoadDefaults():Void</Item>
695 <Item>System.Convert.ToInt32(System.String)</Item>
696 <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
697 </Issue>
698 </Message>
699 </Messages>
700 </Member>
701 </Members>
702 </Type>
703 <Type Name="MapStorage">
704 <Members>
705 <Member Name="Map">
706 <Messages>
707 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
708 <Issue>
709 <Item>Map</Item>
710 </Issue>
711 </Message>
712 </Messages>
713 </Member>
714 </Members>
715 </Type>
716 </Types>
717 </Namespace>
718 </Namespaces>
719 </Module>
720 </Modules>
721 </Target>
722 <Target Name="$(ProjectDir)/bin/OpenSim.exe">
723 <Modules>
724 <Module Name="opensim.exe">
725 <Messages>
726 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
727 <Issue>
728 <Item>OpenSim</Item>
729 </Issue>
730 </Message>
731 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
732 <Issue Name="NoStrongName">
733 <Item>OpenSim</Item>
734 </Issue>
735 </Message>
736 <Message TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016" Created="2007-03-27 04:29:04Z">
737 <Issue>
738 <Item>OpenSim</Item>
739 </Issue>
740 </Message>
741 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
742 <Issue Name="NoAttr">
743 <Item>OpenSim</Item>
744 </Issue>
745 </Message>
746 <Message TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017" Created="2007-03-27 04:29:04Z">
747 <Issue Name="NoAttribute" Level="CriticalError">
748 <Item>OpenSim</Item>
749 </Issue>
750 </Message>
751 </Messages>
752 <Namespaces>
753 <Namespace Name="OpenSim">
754 <Types>
755 <Type Name="RegionServer">
756 <Members>
757 <Member Name="Main(System.String[]):System.Void">
758 <Messages>
759 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
760 <Issue>
761 <Item>'args'</Item>
762 <Item>RegionServer.Main(String[]):Void</Item>
763 </Issue>
764 <Issue>
765 <Item>'args'</Item>
766 <Item>RegionServer.Main(String[]):Void</Item>
767 </Issue>
768 </Message>
769 </Messages>
770 </Member>
771 </Members>
772 </Type>
773 </Types>
774 </Namespace>
775 </Namespaces>
776 </Module>
777 </Modules>
778 </Target>
779 <Target Name="$(ProjectDir)/bin/OpenSim.Framework.Console.dll">
780 <Modules>
781 <Module Name="opensim.framework.console.dll">
782 <Messages>
783 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
784 <Issue>
785 <Item>OpenSim.Framework.Console</Item>
786 </Issue>
787 </Message>
788 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
789 <Issue Name="NoStrongName">
790 <Item>OpenSim.Framework.Console</Item>
791 </Issue>
792 </Message>
793 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
794 <Issue Name="NoAttr">
795 <Item>OpenSim.Framework.Console</Item>
796 </Issue>
797 </Message>
798 </Messages>
799 <Namespaces>
800 <Namespace Name="OpenSim.Framework.Console">
801 <Types>
802 <Type Name="ConsoleBase">
803 <Members>
804 <Member Name="CmdPrompt(System.String,System.String):System.String">
805 <Messages>
806 <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
807 <Issue Name="Parameter">
808 <Item>ConsoleBase.CmdPrompt(String, String):String</Item>
809 <Item>defaultresponse</Item>
810 <Item>defaultresponse</Item>
811 </Issue>
812 </Message>
813 </Messages>
814 </Member>
815 <Member Name="CmdPrompt(System.String,System.String,System.String,System.String):System.String">
816 <Messages>
817 <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
818 <Issue Name="Parameter">
819 <Item>OptionA</Item>
820 </Issue>
821 </Message>
822 <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
823 <Issue Name="Parameter">
824 <Item>OptionB</Item>
825 </Issue>
826 </Message>
827 <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
828 <Issue Name="Parameter">
829 <Item>ConsoleBase.CmdPrompt(String, String, String, String):String</Item>
830 <Item>defaultresponse</Item>
831 <Item>defaultresponse</Item>
832 </Issue>
833 </Message>
834 </Messages>
835 </Member>
836 <Member Name="RunCmd(System.String,System.String[]):System.Object">
837 <Messages>
838 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
839 <Issue Name="Parameter">
840 <Item>Cmd</Item>
841 </Issue>
842 </Message>
843 <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
844 <Issue Name="Parameter">
845 <Item>ConsoleBase.RunCmd(String, String[]):Object</Item>
846 <Item>cmdparams</Item>
847 <Item>cmdparams</Item>
848 </Issue>
849 </Message>
850 </Messages>
851 </Member>
852 <Member Name="ShowCommands(System.String):System.Void">
853 <Messages>
854 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
855 <Issue Name="Parameter">
856 <Item>ShowWhat</Item>
857 </Issue>
858 </Message>
859 </Messages>
860 </Member>
861 </Members>
862 </Type>
863 <Type Name="ConsoleBase+ConsoleType">
864 <Members>
865 <Member Name="SimChat">
866 <Messages>
867 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
868 <Issue Name="Member">
869 <Item>Sim</Item>
870 <Item>ConsoleType.SimChat</Item>
871 </Issue>
872 </Message>
873 </Messages>
874 </Member>
875 <Member Name="TCP">
876 <Messages>
877 <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
878 <Issue Name="Member">
879 <Item>ConsoleType.TCP</Item>
880 </Issue>
881 </Message>
882 </Messages>
883 </Member>
884 </Members>
885 </Type>
886 <Type Name="MainConsole">
887 <Messages>
888 <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
889 <Issue>
890 <Item>MainConsole</Item>
891 </Issue>
892 </Message>
893 </Messages>
894 </Type>
895 </Types>
896 </Namespace>
897 </Namespaces>
898 </Module>
899 </Modules>
900 </Target>
901 <Target Name="$(ProjectDir)/bin/OpenSim.Framework.dll">
902 <Modules>
903 <Module Name="opensim.framework.dll">
904 <Messages>
905 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
906 <Issue>
907 <Item>OpenSim.Framework</Item>
908 </Issue>
909 </Message>
910 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
911 <Issue Name="NoStrongName">
912 <Item>OpenSim.Framework</Item>
913 </Issue>
914 </Message>
915 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
916 <Issue Name="NoAttr">
917 <Item>OpenSim.Framework</Item>
918 </Issue>
919 </Message>
920 </Messages>
921 <Namespaces>
922 <Namespace Name="OpenSim.Framework.Assets">
923 <Types>
924 <Type Name="AssetBase">
925 <Members>
926 <Member Name="Data">
927 <Messages>
928 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
929 <Issue>
930 <Item>Data</Item>
931 </Issue>
932 </Message>
933 </Messages>
934 </Member>
935 <Member Name="Description">
936 <Messages>
937 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
938 <Issue>
939 <Item>Description</Item>
940 </Issue>
941 </Message>
942 </Messages>
943 </Member>
944 <Member Name="FullID">
945 <Messages>
946 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
947 <Issue>
948 <Item>FullID</Item>
949 </Issue>
950 </Message>
951 </Messages>
952 </Member>
953 <Member Name="InvType">
954 <Messages>
955 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
956 <Issue>
957 <Item>InvType</Item>
958 </Issue>
959 </Message>
960 </Messages>
961 </Member>
962 <Member Name="Name">
963 <Messages>
964 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
965 <Issue>
966 <Item>Name</Item>
967 </Issue>
968 </Message>
969 </Messages>
970 </Member>
971 <Member Name="Type">
972 <Messages>
973 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
974 <Issue>
975 <Item>Type</Item>
976 </Issue>
977 </Message>
978 </Messages>
979 </Member>
980 </Members>
981 </Type>
982 <Type Name="PrimData">
983 <Members>
984 <Member Name=".ctor()">
985 <Messages>
986 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
987 <Issue>
988 <Item>PrimData.PrimData()</Item>
989 <Item>ParentID</Item>
990 <Item>System.UInt32</Item>
991 <Item>0</Item>
992 </Issue>
993 </Message>
994 </Messages>
995 </Member>
996 <Member Name="FullID">
997 <Messages>
998 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
999 <Issue>
1000 <Item>FullID</Item>
1001 </Issue>
1002 </Message>
1003 </Messages>
1004 </Member>
1005 <Member Name="LocalID">
1006 <Messages>
1007 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1008 <Issue>
1009 <Item>LocalID</Item>
1010 </Issue>
1011 </Message>
1012 </Messages>
1013 </Member>
1014 <Member Name="OwnerID">
1015 <Messages>
1016 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1017 <Issue>
1018 <Item>OwnerID</Item>
1019 </Issue>
1020 </Message>
1021 </Messages>
1022 </Member>
1023 <Member Name="ParentID">
1024 <Messages>
1025 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1026 <Issue>
1027 <Item>ParentID</Item>
1028 </Issue>
1029 </Message>
1030 </Messages>
1031 </Member>
1032 <Member Name="PathBegin">
1033 <Messages>
1034 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1035 <Issue>
1036 <Item>PathBegin</Item>
1037 </Issue>
1038 </Message>
1039 </Messages>
1040 </Member>
1041 <Member Name="PathCurve">
1042 <Messages>
1043 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1044 <Issue>
1045 <Item>PathCurve</Item>
1046 </Issue>
1047 </Message>
1048 </Messages>
1049 </Member>
1050 <Member Name="PathEnd">
1051 <Messages>
1052 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1053 <Issue>
1054 <Item>PathEnd</Item>
1055 </Issue>
1056 </Message>
1057 </Messages>
1058 </Member>
1059 <Member Name="PathRadiusOffset">
1060 <Messages>
1061 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1062 <Issue>
1063 <Item>PathRadiusOffset</Item>
1064 </Issue>
1065 </Message>
1066 </Messages>
1067 </Member>
1068 <Member Name="PathRevolutions">
1069 <Messages>
1070 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1071 <Issue>
1072 <Item>PathRevolutions</Item>
1073 </Issue>
1074 </Message>
1075 </Messages>
1076 </Member>
1077 <Member Name="PathScaleX">
1078 <Messages>
1079 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1080 <Issue>
1081 <Item>PathScaleX</Item>
1082 </Issue>
1083 </Message>
1084 </Messages>
1085 </Member>
1086 <Member Name="PathScaleY">
1087 <Messages>
1088 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1089 <Issue>
1090 <Item>PathScaleY</Item>
1091 </Issue>
1092 </Message>
1093 </Messages>
1094 </Member>
1095 <Member Name="PathShearX">
1096 <Messages>
1097 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1098 <Issue>
1099 <Item>PathShearX</Item>
1100 </Issue>
1101 </Message>
1102 </Messages>
1103 </Member>
1104 <Member Name="PathShearY">
1105 <Messages>
1106 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1107 <Issue>
1108 <Item>PathShearY</Item>
1109 </Issue>
1110 </Message>
1111 </Messages>
1112 </Member>
1113 <Member Name="PathSkew">
1114 <Messages>
1115 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1116 <Issue>
1117 <Item>PathSkew</Item>
1118 </Issue>
1119 </Message>
1120 </Messages>
1121 </Member>
1122 <Member Name="PathTaperX">
1123 <Messages>
1124 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1125 <Issue>
1126 <Item>PathTaperX</Item>
1127 </Issue>
1128 </Message>
1129 </Messages>
1130 </Member>
1131 <Member Name="PathTaperY">
1132 <Messages>
1133 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1134 <Issue>
1135 <Item>PathTaperY</Item>
1136 </Issue>
1137 </Message>
1138 </Messages>
1139 </Member>
1140 <Member Name="PathTwist">
1141 <Messages>
1142 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1143 <Issue>
1144 <Item>PathTwist</Item>
1145 </Issue>
1146 </Message>
1147 </Messages>
1148 </Member>
1149 <Member Name="PathTwistBegin">
1150 <Messages>
1151 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1152 <Issue>
1153 <Item>PathTwistBegin</Item>
1154 </Issue>
1155 </Message>
1156 </Messages>
1157 </Member>
1158 <Member Name="PCode">
1159 <Messages>
1160 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1161 <Issue>
1162 <Item>PCode</Item>
1163 </Issue>
1164 </Message>
1165 </Messages>
1166 </Member>
1167 <Member Name="Position">
1168 <Messages>
1169 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1170 <Issue>
1171 <Item>Position</Item>
1172 </Issue>
1173 </Message>
1174 </Messages>
1175 </Member>
1176 <Member Name="ProfileBegin">
1177 <Messages>
1178 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1179 <Issue>
1180 <Item>ProfileBegin</Item>
1181 </Issue>
1182 </Message>
1183 </Messages>
1184 </Member>
1185 <Member Name="ProfileCurve">
1186 <Messages>
1187 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1188 <Issue>
1189 <Item>ProfileCurve</Item>
1190 </Issue>
1191 </Message>
1192 </Messages>
1193 </Member>
1194 <Member Name="ProfileEnd">
1195 <Messages>
1196 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1197 <Issue>
1198 <Item>ProfileEnd</Item>
1199 </Issue>
1200 </Message>
1201 </Messages>
1202 </Member>
1203 <Member Name="ProfileHollow">
1204 <Messages>
1205 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1206 <Issue>
1207 <Item>ProfileHollow</Item>
1208 </Issue>
1209 </Message>
1210 </Messages>
1211 </Member>
1212 <Member Name="Rotation">
1213 <Messages>
1214 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1215 <Issue>
1216 <Item>Rotation</Item>
1217 </Issue>
1218 </Message>
1219 </Messages>
1220 </Member>
1221 <Member Name="Scale">
1222 <Messages>
1223 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1224 <Issue>
1225 <Item>Scale</Item>
1226 </Issue>
1227 </Message>
1228 </Messages>
1229 </Member>
1230 <Member Name="Texture">
1231 <Messages>
1232 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1233 <Issue>
1234 <Item>Texture</Item>
1235 </Issue>
1236 </Message>
1237 </Messages>
1238 </Member>
1239 </Members>
1240 </Type>
1241 </Types>
1242 </Namespace>
1243 <Namespace Name="OpenSim.Framework.Grid">
1244 <Types>
1245 <Type Name="LoginService">
1246 <Messages>
1247 <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
1248 <Issue Name="Type">
1249 <Item>Login</Item>
1250 <Item>LoginService</Item>
1251 <Item>LogOn</Item>
1252 </Issue>
1253 </Message>
1254 </Messages>
1255 </Type>
1256 </Types>
1257 </Namespace>
1258 <Namespace Name="OpenSim.Framework.Interfaces">
1259 <Types>
1260 <Type Name="AgentCircuitData">
1261 <Members>
1262 <Member Name="AgentID">
1263 <Messages>
1264 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1265 <Issue>
1266 <Item>AgentID</Item>
1267 </Issue>
1268 </Message>
1269 </Messages>
1270 </Member>
1271 <Member Name="circuitcode">
1272 <Messages>
1273 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1274 <Issue>
1275 <Item>circuitcode</Item>
1276 </Issue>
1277 </Message>
1278 <Message Id="circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1279 <Issue Name="Member">
1280 <Item>circuitcode</Item>
1281 <Item>AgentCircuitData.circuitcode</Item>
1282 </Issue>
1283 </Message>
1284 </Messages>
1285 </Member>
1286 <Member Name="firstname">
1287 <Messages>
1288 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1289 <Issue>
1290 <Item>firstname</Item>
1291 </Issue>
1292 </Message>
1293 <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1294 <Issue Name="Member">
1295 <Item>firstname</Item>
1296 <Item>AgentCircuitData.firstname</Item>
1297 </Issue>
1298 </Message>
1299 </Messages>
1300 </Member>
1301 <Member Name="lastname">
1302 <Messages>
1303 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1304 <Issue>
1305 <Item>lastname</Item>
1306 </Issue>
1307 </Message>
1308 <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1309 <Issue Name="Member">
1310 <Item>lastname</Item>
1311 <Item>AgentCircuitData.lastname</Item>
1312 </Issue>
1313 </Message>
1314 </Messages>
1315 </Member>
1316 <Member Name="SecureSessionID">
1317 <Messages>
1318 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1319 <Issue>
1320 <Item>SecureSessionID</Item>
1321 </Issue>
1322 </Message>
1323 </Messages>
1324 </Member>
1325 <Member Name="SessionID">
1326 <Messages>
1327 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1328 <Issue>
1329 <Item>SessionID</Item>
1330 </Issue>
1331 </Message>
1332 </Messages>
1333 </Member>
1334 </Members>
1335 </Type>
1336 <Type Name="ARequest">
1337 <Messages>
1338 <Message TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815" Created="2007-03-27 04:29:04Z">
1339 <Issue Name="Equals">
1340 <Item>OpenSim.Framework.Interfaces.ARequest</Item>
1341 </Issue>
1342 <Issue Name="op_Equality">
1343 <Item>OpenSim.Framework.Interfaces.ARequest</Item>
1344 </Issue>
1345 </Message>
1346 </Messages>
1347 <Members>
1348 <Member Name="AssetID">
1349 <Messages>
1350 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1351 <Issue>
1352 <Item>AssetID</Item>
1353 </Issue>
1354 </Message>
1355 </Messages>
1356 </Member>
1357 <Member Name="IsTexture">
1358 <Messages>
1359 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1360 <Issue>
1361 <Item>IsTexture</Item>
1362 </Issue>
1363 </Message>
1364 </Messages>
1365 </Member>
1366 </Members>
1367 </Type>
1368 <Type Name="AuthenticateResponse">
1369 <Members>
1370 <Member Name="Authorised">
1371 <Messages>
1372 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1373 <Issue>
1374 <Item>Authorised</Item>
1375 </Issue>
1376 </Message>
1377 <Message Id="Authorised" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1378 <Issue Name="Member">
1379 <Item>Authorised</Item>
1380 <Item>AuthenticateResponse.Authorised</Item>
1381 </Issue>
1382 </Message>
1383 </Messages>
1384 </Member>
1385 <Member Name="LoginInfo">
1386 <Messages>
1387 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1388 <Issue>
1389 <Item>LoginInfo</Item>
1390 </Issue>
1391 </Message>
1392 <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
1393 <Issue Name="Member">
1394 <Item>Login</Item>
1395 <Item>LoginInfo</Item>
1396 <Item>LogOn</Item>
1397 </Issue>
1398 </Message>
1399 </Messages>
1400 </Member>
1401 </Members>
1402 </Type>
1403 <Type Name="IAssetPlugin">
1404 <Messages>
1405 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1406 <Issue Name="Type">
1407 <Item>Plugin</Item>
1408 <Item>OpenSim.Framework.Interfaces.IAssetPlugin</Item>
1409 </Issue>
1410 </Message>
1411 </Messages>
1412 <Members>
1413 <Member Name="GetAssetServer():OpenSim.Framework.Interfaces.IAssetServer">
1414 <Messages>
1415 <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
1416 <Issue Certainty="50">
1417 <Item>GetAssetServer</Item>
1418 </Issue>
1419 </Message>
1420 </Messages>
1421 </Member>
1422 </Members>
1423 </Type>
1424 <Type Name="IAssetReceiver">
1425 <Members>
1426 <Member Name="AssetReceived(OpenSim.Framework.Assets.AssetBase,System.Boolean):System.Void">
1427 <Messages>
1428 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1429 <Issue Name="Parameter">
1430 <Item>IsTexture</Item>
1431 </Issue>
1432 </Message>
1433 </Messages>
1434 </Member>
1435 </Members>
1436 </Type>
1437 <Type Name="IAssetServer">
1438 <Members>
1439 <Member Name="RequestAsset(libsecondlife.LLUUID,System.Boolean):System.Void">
1440 <Messages>
1441 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
1442 <Issue Name="ParameterId">
1443 <Item>ID</Item>
1444 <Item>assetID</Item>
1445 <Item>Id</Item>
1446 </Issue>
1447 </Message>
1448 </Messages>
1449 </Member>
1450 <Member Name="SetServerInfo(System.String,System.String):System.Void">
1451 <Messages>
1452 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1453 <Issue Name="Parameter">
1454 <Item>ServerUrl</Item>
1455 </Issue>
1456 </Message>
1457 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1458 <Issue Name="Parameter">
1459 <Item>ServerKey</Item>
1460 </Issue>
1461 </Message>
1462 <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
1463 <Issue>
1464 <Item>ServerUrl</Item>
1465 <Item>IAssetServer.SetServerInfo(String, String):Void</Item>
1466 </Issue>
1467 </Message>
1468 </Messages>
1469 </Member>
1470 </Members>
1471 </Type>
1472 <Type Name="IGridPlugin">
1473 <Messages>
1474 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1475 <Issue Name="Type">
1476 <Item>Plugin</Item>
1477 <Item>OpenSim.Framework.Interfaces.IGridPlugin</Item>
1478 </Issue>
1479 </Message>
1480 </Messages>
1481 <Members>
1482 <Member Name="GetGridServer():OpenSim.Framework.Interfaces.IGridServer">
1483 <Messages>
1484 <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
1485 <Issue Certainty="50">
1486 <Item>GetGridServer</Item>
1487 </Issue>
1488 </Message>
1489 </Messages>
1490 </Member>
1491 </Members>
1492 </Type>
1493 <Type Name="IGridServer">
1494 <Members>
1495 <Member Name="AuthenticateSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):OpenSim.Framework.Interfaces.AuthenticateResponse">
1496 <Messages>
1497 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
1498 <Issue Name="ParameterId">
1499 <Item>ID</Item>
1500 <Item>sessionID</Item>
1501 <Item>Id</Item>
1502 </Issue>
1503 </Message>
1504 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
1505 <Issue Name="ParameterId">
1506 <Item>ID</Item>
1507 <Item>agentID</Item>
1508 <Item>Id</Item>
1509 </Issue>
1510 </Message>
1511 </Messages>
1512 </Member>
1513 <Member Name="GetName():System.String">
1514 <Messages>
1515 <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
1516 <Issue Certainty="50">
1517 <Item>GetName</Item>
1518 </Issue>
1519 </Message>
1520 </Messages>
1521 </Member>
1522 <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
1523 <Messages>
1524 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
1525 <Issue Name="ParameterId">
1526 <Item>ID</Item>
1527 <Item>sessionID</Item>
1528 <Item>Id</Item>
1529 </Issue>
1530 </Message>
1531 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
1532 <Issue Name="ParameterId">
1533 <Item>ID</Item>
1534 <Item>agentID</Item>
1535 <Item>Id</Item>
1536 </Issue>
1537 </Message>
1538 <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
1539 <Issue Name="Member">
1540 <Item>Logout</Item>
1541 <Item>LogoutSession</Item>
1542 <Item>LogOff</Item>
1543 </Issue>
1544 </Message>
1545 </Messages>
1546 </Member>
1547 <Member Name="RequestNeighbours():OpenSim.Framework.Interfaces.NeighbourInfo[]">
1548 <Messages>
1549 <Message Id="Neighbours" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1550 <Issue Name="Member">
1551 <Item>Neighbours</Item>
1552 <Item>IGridServer.RequestNeighbours():NeighbourInfo[]</Item>
1553 </Issue>
1554 </Message>
1555 </Messages>
1556 </Member>
1557 <Member Name="RequestUUIDBlock():OpenSim.Framework.Interfaces.UUIDBlock">
1558 <Messages>
1559 <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
1560 <Issue Name="Member">
1561 <Item>IGridServer.RequestUUIDBlock():UUIDBlock</Item>
1562 </Issue>
1563 </Message>
1564 </Messages>
1565 </Member>
1566 <Member Name="SetServerInfo(System.String,System.String,System.String):System.Void">
1567 <Messages>
1568 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1569 <Issue Name="Parameter">
1570 <Item>ServerUrl</Item>
1571 </Issue>
1572 </Message>
1573 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1574 <Issue Name="Parameter">
1575 <Item>SendKey</Item>
1576 </Issue>
1577 </Message>
1578 <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1579 <Issue Name="Parameter">
1580 <Item>RecvKey</Item>
1581 </Issue>
1582 </Message>
1583 <Message Id="2#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1584 <Issue Name="Parameter">
1585 <Item>IGridServer.SetServerInfo(String, String, String):Void</Item>
1586 <Item>Recv</Item>
1587 <Item>RecvKey</Item>
1588 </Issue>
1589 </Message>
1590 <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
1591 <Issue>
1592 <Item>ServerUrl</Item>
1593 <Item>IGridServer.SetServerInfo(String, String, String):Void</Item>
1594 </Issue>
1595 </Message>
1596 </Messages>
1597 </Member>
1598 </Members>
1599 </Type>
1600 <Type Name="ILocalStorage">
1601 <Members>
1602 <Member Name="RemovePrim(libsecondlife.LLUUID):System.Void">
1603 <Messages>
1604 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
1605 <Issue Name="ParameterId">
1606 <Item>ID</Item>
1607 <Item>primID</Item>
1608 <Item>Id</Item>
1609 </Issue>
1610 </Message>
1611 </Messages>
1612 </Member>
1613 <Member Name="ShutDown():System.Void">
1614 <Messages>
1615 <Message Id="ShutDown" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
1616 <Issue Name="ShouldBeDiscreteTerm">
1617 <Item>ShutDown</Item>
1618 <Item>method</Item>
1619 <Item>ShutDown</Item>
1620 <Item>Shutdown</Item>
1621 </Issue>
1622 </Message>
1623 </Messages>
1624 </Member>
1625 </Members>
1626 </Type>
1627 <Type Name="ISimConfig">
1628 <Messages>
1629 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1630 <Issue Name="Type">
1631 <Item>Sim</Item>
1632 <Item>OpenSim.Framework.Interfaces.ISimConfig</Item>
1633 </Issue>
1634 </Message>
1635 </Messages>
1636 <Members>
1637 <Member Name="GetConfigObject():OpenSim.Framework.Interfaces.SimConfig">
1638 <Messages>
1639 <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
1640 <Issue Certainty="50">
1641 <Item>GetConfigObject</Item>
1642 </Issue>
1643 </Message>
1644 </Messages>
1645 </Member>
1646 </Members>
1647 </Type>
1648 <Type Name="IUserServer">
1649 <Members>
1650 <Member Name="RequestAgentsInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
1651 <Messages>
1652 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
1653 <Issue Name="ParameterId">
1654 <Item>ID</Item>
1655 <Item>agentID</Item>
1656 <Item>Id</Item>
1657 </Issue>
1658 </Message>
1659 </Messages>
1660 </Member>
1661 <Member Name="SetServerInfo(System.String,System.String,System.String):System.Void">
1662 <Messages>
1663 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1664 <Issue Name="Parameter">
1665 <Item>ServerUrl</Item>
1666 </Issue>
1667 </Message>
1668 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1669 <Issue Name="Parameter">
1670 <Item>SendKey</Item>
1671 </Issue>
1672 </Message>
1673 <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1674 <Issue Name="Parameter">
1675 <Item>RecvKey</Item>
1676 </Issue>
1677 </Message>
1678 <Message Id="2#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1679 <Issue Name="Parameter">
1680 <Item>IUserServer.SetServerInfo(String, String, String):Void</Item>
1681 <Item>Recv</Item>
1682 <Item>RecvKey</Item>
1683 </Issue>
1684 </Message>
1685 <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
1686 <Issue>
1687 <Item>ServerUrl</Item>
1688 <Item>IUserServer.SetServerInfo(String, String, String):Void</Item>
1689 </Issue>
1690 </Message>
1691 </Messages>
1692 </Member>
1693 </Members>
1694 </Type>
1695 <Type Name="LocalGridBase">
1696 <Members>
1697 <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
1698 <Messages>
1699 <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
1700 <Issue Name="Member">
1701 <Item>Logout</Item>
1702 <Item>LogoutSession</Item>
1703 <Item>LogOff</Item>
1704 </Issue>
1705 </Message>
1706 </Messages>
1707 </Member>
1708 </Members>
1709 </Type>
1710 <Type Name="Login">
1711 <Messages>
1712 <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
1713 <Issue Name="Type">
1714 <Item>Login</Item>
1715 <Item>Login</Item>
1716 <Item>LogOn</Item>
1717 </Issue>
1718 </Message>
1719 </Messages>
1720 <Members>
1721 <Member Name="Agent">
1722 <Messages>
1723 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1724 <Issue>
1725 <Item>Agent</Item>
1726 </Issue>
1727 </Message>
1728 </Messages>
1729 </Member>
1730 <Member Name="BaseFolder">
1731 <Messages>
1732 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1733 <Issue>
1734 <Item>BaseFolder</Item>
1735 </Issue>
1736 </Message>
1737 </Messages>
1738 </Member>
1739 <Member Name="First">
1740 <Messages>
1741 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1742 <Issue>
1743 <Item>First</Item>
1744 </Issue>
1745 </Message>
1746 </Messages>
1747 </Member>
1748 <Member Name="InventoryFolder">
1749 <Messages>
1750 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1751 <Issue>
1752 <Item>InventoryFolder</Item>
1753 </Issue>
1754 </Message>
1755 </Messages>
1756 </Member>
1757 <Member Name="Last">
1758 <Messages>
1759 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1760 <Issue>
1761 <Item>Last</Item>
1762 </Issue>
1763 </Message>
1764 </Messages>
1765 </Member>
1766 <Member Name="SecureSession">
1767 <Messages>
1768 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1769 <Issue>
1770 <Item>SecureSession</Item>
1771 </Issue>
1772 </Message>
1773 </Messages>
1774 </Member>
1775 <Member Name="Session">
1776 <Messages>
1777 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1778 <Issue>
1779 <Item>Session</Item>
1780 </Issue>
1781 </Message>
1782 </Messages>
1783 </Member>
1784 </Members>
1785 </Type>
1786 <Type Name="NeighbourInfo">
1787 <Messages>
1788 <Message Id="Neighbour" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1789 <Issue Name="Type">
1790 <Item>Neighbour</Item>
1791 <Item>OpenSim.Framework.Interfaces.NeighbourInfo</Item>
1792 </Issue>
1793 </Message>
1794 </Messages>
1795 <Members>
1796 <Member Name="regionhandle">
1797 <Messages>
1798 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1799 <Issue>
1800 <Item>regionhandle</Item>
1801 </Issue>
1802 </Message>
1803 <Message Id="regionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1804 <Issue Name="Member">
1805 <Item>regionhandle</Item>
1806 <Item>NeighbourInfo.regionhandle</Item>
1807 </Issue>
1808 </Message>
1809 </Messages>
1810 </Member>
1811 <Member Name="RegionLocX">
1812 <Messages>
1813 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1814 <Issue>
1815 <Item>RegionLocX</Item>
1816 </Issue>
1817 </Message>
1818 </Messages>
1819 </Member>
1820 <Member Name="RegionLocY">
1821 <Messages>
1822 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1823 <Issue>
1824 <Item>RegionLocY</Item>
1825 </Issue>
1826 </Message>
1827 </Messages>
1828 </Member>
1829 <Member Name="sim_ip">
1830 <Messages>
1831 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1832 <Issue>
1833 <Item>sim_ip</Item>
1834 </Issue>
1835 </Message>
1836 <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1837 <Issue Name="Member">
1838 <Item>sim</Item>
1839 <Item>NeighbourInfo.sim_ip</Item>
1840 </Issue>
1841 </Message>
1842 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
1843 <Issue Name="Member">
1844 <Item>sim_ip</Item>
1845 </Issue>
1846 </Message>
1847 </Messages>
1848 </Member>
1849 <Member Name="sim_port">
1850 <Messages>
1851 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1852 <Issue>
1853 <Item>sim_port</Item>
1854 </Issue>
1855 </Message>
1856 <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1857 <Issue Name="Member">
1858 <Item>sim</Item>
1859 <Item>NeighbourInfo.sim_port</Item>
1860 </Issue>
1861 </Message>
1862 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
1863 <Issue Name="Member">
1864 <Item>sim_port</Item>
1865 </Issue>
1866 </Message>
1867 </Messages>
1868 </Member>
1869 </Members>
1870 </Type>
1871 <Type Name="RemoteGridBase">
1872 <Members>
1873 <Member Name="agentcircuits">
1874 <Messages>
1875 <Message TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227" Created="2007-03-27 04:29:04Z">
1876 <Issue>
1877 <Item>agentcircuits</Item>
1878 </Issue>
1879 </Message>
1880 <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
1881 <Issue Name="Member">
1882 <Item>agentcircuits</Item>
1883 </Issue>
1884 </Message>
1885 <Message Id="agentcircuits" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1886 <Issue Name="Member">
1887 <Item>agentcircuits</Item>
1888 <Item>RemoteGridBase.agentcircuits:Dictionary`2&lt;System.UInt32,OpenSim.Framework.Interfaces.AgentCircuitData&gt;</Item>
1889 </Issue>
1890 </Message>
1891 </Messages>
1892 </Member>
1893 <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
1894 <Messages>
1895 <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
1896 <Issue Name="Member">
1897 <Item>Logout</Item>
1898 <Item>LogoutSession</Item>
1899 <Item>LogOff</Item>
1900 </Issue>
1901 </Message>
1902 </Messages>
1903 </Member>
1904 </Members>
1905 </Type>
1906 <Type Name="SimConfig">
1907 <Messages>
1908 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1909 <Issue Name="Type">
1910 <Item>Sim</Item>
1911 <Item>OpenSim.Framework.Interfaces.SimConfig</Item>
1912 </Issue>
1913 </Message>
1914 </Messages>
1915 <Members>
1916 <Member Name="AssetSendKey">
1917 <Messages>
1918 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1919 <Issue>
1920 <Item>AssetSendKey</Item>
1921 </Issue>
1922 </Message>
1923 </Messages>
1924 </Member>
1925 <Member Name="AssetURL">
1926 <Messages>
1927 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1928 <Issue>
1929 <Item>AssetURL</Item>
1930 </Issue>
1931 </Message>
1932 </Messages>
1933 </Member>
1934 <Member Name="GridRecvKey">
1935 <Messages>
1936 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1937 <Issue>
1938 <Item>GridRecvKey</Item>
1939 </Issue>
1940 </Message>
1941 <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1942 <Issue Name="Member">
1943 <Item>Recv</Item>
1944 <Item>SimConfig.GridRecvKey</Item>
1945 </Issue>
1946 </Message>
1947 </Messages>
1948 </Member>
1949 <Member Name="GridSendKey">
1950 <Messages>
1951 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1952 <Issue>
1953 <Item>GridSendKey</Item>
1954 </Issue>
1955 </Message>
1956 </Messages>
1957 </Member>
1958 <Member Name="GridURL">
1959 <Messages>
1960 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1961 <Issue>
1962 <Item>GridURL</Item>
1963 </Issue>
1964 </Message>
1965 </Messages>
1966 </Member>
1967 <Member Name="IPListenAddr">
1968 <Messages>
1969 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1970 <Issue>
1971 <Item>IPListenAddr</Item>
1972 </Issue>
1973 </Message>
1974 <Message Id="Addr" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
1975 <Issue Name="Member">
1976 <Item>Addr</Item>
1977 <Item>SimConfig.IPListenAddr</Item>
1978 </Issue>
1979 </Message>
1980 </Messages>
1981 </Member>
1982 <Member Name="IPListenPort">
1983 <Messages>
1984 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1985 <Issue>
1986 <Item>IPListenPort</Item>
1987 </Issue>
1988 </Message>
1989 </Messages>
1990 </Member>
1991 <Member Name="RegionHandle">
1992 <Messages>
1993 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
1994 <Issue>
1995 <Item>RegionHandle</Item>
1996 </Issue>
1997 </Message>
1998 </Messages>
1999 </Member>
2000 <Member Name="RegionLocX">
2001 <Messages>
2002 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2003 <Issue>
2004 <Item>RegionLocX</Item>
2005 </Issue>
2006 </Message>
2007 </Messages>
2008 </Member>
2009 <Member Name="RegionLocY">
2010 <Messages>
2011 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2012 <Issue>
2013 <Item>RegionLocY</Item>
2014 </Issue>
2015 </Message>
2016 </Messages>
2017 </Member>
2018 <Member Name="RegionName">
2019 <Messages>
2020 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2021 <Issue>
2022 <Item>RegionName</Item>
2023 </Issue>
2024 </Message>
2025 </Messages>
2026 </Member>
2027 <Member Name="SaveMap(System.Single[]):System.Void">
2028 <Messages>
2029 <Message Id="0#heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2030 <Issue Name="Parameter">
2031 <Item>SimConfig.SaveMap(Single[]):Void</Item>
2032 <Item>heightmap</Item>
2033 <Item>heightmap</Item>
2034 </Issue>
2035 </Message>
2036 </Messages>
2037 </Member>
2038 <Member Name="UserRecvKey">
2039 <Messages>
2040 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2041 <Issue>
2042 <Item>UserRecvKey</Item>
2043 </Issue>
2044 </Message>
2045 <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2046 <Issue Name="Member">
2047 <Item>Recv</Item>
2048 <Item>SimConfig.UserRecvKey</Item>
2049 </Issue>
2050 </Message>
2051 </Messages>
2052 </Member>
2053 <Member Name="UserSendKey">
2054 <Messages>
2055 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2056 <Issue>
2057 <Item>UserSendKey</Item>
2058 </Issue>
2059 </Message>
2060 </Messages>
2061 </Member>
2062 <Member Name="UserURL">
2063 <Messages>
2064 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2065 <Issue>
2066 <Item>UserURL</Item>
2067 </Issue>
2068 </Message>
2069 </Messages>
2070 </Member>
2071 </Members>
2072 </Type>
2073 <Type Name="UUIDBlock">
2074 <Messages>
2075 <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
2076 <Issue Name="Type">
2077 <Item>UUIDBlock</Item>
2078 </Issue>
2079 </Message>
2080 <Message TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815" Created="2007-03-27 04:29:04Z">
2081 <Issue Name="Equals">
2082 <Item>OpenSim.Framework.Interfaces.UUIDBlock</Item>
2083 </Issue>
2084 <Issue Name="op_Equality">
2085 <Item>OpenSim.Framework.Interfaces.UUIDBlock</Item>
2086 </Issue>
2087 </Message>
2088 </Messages>
2089 <Members>
2090 <Member Name="BlockEnd">
2091 <Messages>
2092 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2093 <Issue>
2094 <Item>BlockEnd</Item>
2095 </Issue>
2096 </Message>
2097 </Messages>
2098 </Member>
2099 <Member Name="BlockStart">
2100 <Messages>
2101 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2102 <Issue>
2103 <Item>BlockStart</Item>
2104 </Issue>
2105 </Message>
2106 </Messages>
2107 </Member>
2108 </Members>
2109 </Type>
2110 </Types>
2111 </Namespace>
2112 <Namespace Name="OpenSim.Framework.Inventory">
2113 <Types>
2114 <Type Name="AgentInventory">
2115 <Members>
2116 <Member Name=".ctor()">
2117 <Messages>
2118 <Message TypeName="DoNotCallOverridableMethodsInConstructors" Category="Microsoft.Usage" CheckId="CA2214" Created="2007-03-27 04:29:04Z">
2119 <Issue>
2120 <Item>AgentInventory.AgentInventory()</Item>
2121 <Item>&#xD;&#xA;&#xD;&#xA;AgentInventory.AgentInventory()&#xD;&#xA;AgentInventory.Initialise():Void</Item>
2122 </Issue>
2123 </Message>
2124 </Messages>
2125 </Member>
2126 <Member Name="AddToInventory(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):libsecondlife.LLUUID">
2127 <Messages>
2128 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
2129 <Issue Name="ParameterId">
2130 <Item>ID</Item>
2131 <Item>folderID</Item>
2132 <Item>Id</Item>
2133 </Issue>
2134 </Message>
2135 </Messages>
2136 </Member>
2137 <Member Name="AgentID">
2138 <Messages>
2139 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2140 <Issue>
2141 <Item>AgentID</Item>
2142 </Issue>
2143 </Message>
2144 </Messages>
2145 </Member>
2146 <Member Name="CreateNewFolder(libsecondlife.LLUUID,System.UInt16):System.Boolean">
2147 <Messages>
2148 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
2149 <Issue Name="ParameterId">
2150 <Item>ID</Item>
2151 <Item>folderID</Item>
2152 <Item>Id</Item>
2153 </Issue>
2154 </Message>
2155 </Messages>
2156 </Member>
2157 <Member Name="Initialise():System.Void">
2158 <Messages>
2159 <Message Id="Initialise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2160 <Issue Name="Member">
2161 <Item>Initialise</Item>
2162 <Item>AgentInventory.Initialise():Void</Item>
2163 </Issue>
2164 </Message>
2165 </Messages>
2166 </Member>
2167 <Member Name="InventoryFolders">
2168 <Messages>
2169 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2170 <Issue>
2171 <Item>InventoryFolders</Item>
2172 </Issue>
2173 </Message>
2174 </Messages>
2175 </Member>
2176 <Member Name="InventoryItems">
2177 <Messages>
2178 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2179 <Issue>
2180 <Item>InventoryItems</Item>
2181 </Issue>
2182 </Message>
2183 </Messages>
2184 </Member>
2185 <Member Name="InventoryRoot">
2186 <Messages>
2187 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2188 <Issue>
2189 <Item>InventoryRoot</Item>
2190 </Issue>
2191 </Message>
2192 </Messages>
2193 </Member>
2194 <Member Name="LastCached">
2195 <Messages>
2196 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2197 <Issue>
2198 <Item>LastCached</Item>
2199 </Issue>
2200 </Message>
2201 </Messages>
2202 </Member>
2203 <Member Name="UpdateItem(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Boolean">
2204 <Messages>
2205 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
2206 <Issue Name="ParameterId">
2207 <Item>ID</Item>
2208 <Item>itemID</Item>
2209 <Item>Id</Item>
2210 </Issue>
2211 </Message>
2212 </Messages>
2213 </Member>
2214 <Member Name="Wearables">
2215 <Messages>
2216 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2217 <Issue>
2218 <Item>Wearables</Item>
2219 </Issue>
2220 </Message>
2221 <Message Id="Wearables" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2222 <Issue Name="Member">
2223 <Item>Wearables</Item>
2224 <Item>AgentInventory.Wearables</Item>
2225 </Issue>
2226 </Message>
2227 </Messages>
2228 </Member>
2229 </Members>
2230 </Type>
2231 <Type Name="AvatarWearable">
2232 <Members>
2233 <Member Name="AssetID">
2234 <Messages>
2235 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2236 <Issue>
2237 <Item>AssetID</Item>
2238 </Issue>
2239 </Message>
2240 </Messages>
2241 </Member>
2242 <Member Name="ItemID">
2243 <Messages>
2244 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2245 <Issue>
2246 <Item>ItemID</Item>
2247 </Issue>
2248 </Message>
2249 </Messages>
2250 </Member>
2251 </Members>
2252 </Type>
2253 <Type Name="InventoryFolder">
2254 <Members>
2255 <Member Name="DefaultType">
2256 <Messages>
2257 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2258 <Issue>
2259 <Item>DefaultType</Item>
2260 </Issue>
2261 </Message>
2262 </Messages>
2263 </Member>
2264 <Member Name="FolderID">
2265 <Messages>
2266 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2267 <Issue>
2268 <Item>FolderID</Item>
2269 </Issue>
2270 </Message>
2271 </Messages>
2272 </Member>
2273 <Member Name="FolderName">
2274 <Messages>
2275 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2276 <Issue>
2277 <Item>FolderName</Item>
2278 </Issue>
2279 </Message>
2280 </Messages>
2281 </Member>
2282 <Member Name="Items">
2283 <Messages>
2284 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2285 <Issue>
2286 <Item>Items</Item>
2287 </Issue>
2288 </Message>
2289 <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
2290 <Issue>
2291 <Item>System.Collections.Generic.List`1&lt;OpenSim.Framework.Inventory.InventoryItem&gt;</Item>
2292 <Item>InventoryFolder.Items</Item>
2293 </Issue>
2294 </Message>
2295 </Messages>
2296 </Member>
2297 <Member Name="OwnerID">
2298 <Messages>
2299 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2300 <Issue>
2301 <Item>OwnerID</Item>
2302 </Issue>
2303 </Message>
2304 </Messages>
2305 </Member>
2306 <Member Name="ParentID">
2307 <Messages>
2308 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2309 <Issue>
2310 <Item>ParentID</Item>
2311 </Issue>
2312 </Message>
2313 </Messages>
2314 </Member>
2315 <Member Name="Version">
2316 <Messages>
2317 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2318 <Issue>
2319 <Item>Version</Item>
2320 </Issue>
2321 </Message>
2322 </Messages>
2323 </Member>
2324 </Members>
2325 </Type>
2326 <Type Name="InventoryItem">
2327 <Members>
2328 <Member Name="AssetID">
2329 <Messages>
2330 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2331 <Issue>
2332 <Item>AssetID</Item>
2333 </Issue>
2334 </Message>
2335 </Messages>
2336 </Member>
2337 <Member Name="CreatorID">
2338 <Messages>
2339 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2340 <Issue>
2341 <Item>CreatorID</Item>
2342 </Issue>
2343 </Message>
2344 </Messages>
2345 </Member>
2346 <Member Name="Description">
2347 <Messages>
2348 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2349 <Issue>
2350 <Item>Description</Item>
2351 </Issue>
2352 </Message>
2353 </Messages>
2354 </Member>
2355 <Member Name="FolderID">
2356 <Messages>
2357 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2358 <Issue>
2359 <Item>FolderID</Item>
2360 </Issue>
2361 </Message>
2362 </Messages>
2363 </Member>
2364 <Member Name="InvType">
2365 <Messages>
2366 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2367 <Issue>
2368 <Item>InvType</Item>
2369 </Issue>
2370 </Message>
2371 </Messages>
2372 </Member>
2373 <Member Name="ItemID">
2374 <Messages>
2375 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2376 <Issue>
2377 <Item>ItemID</Item>
2378 </Issue>
2379 </Message>
2380 </Messages>
2381 </Member>
2382 <Member Name="Name">
2383 <Messages>
2384 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2385 <Issue>
2386 <Item>Name</Item>
2387 </Issue>
2388 </Message>
2389 </Messages>
2390 </Member>
2391 <Member Name="OwnerID">
2392 <Messages>
2393 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2394 <Issue>
2395 <Item>OwnerID</Item>
2396 </Issue>
2397 </Message>
2398 </Messages>
2399 </Member>
2400 <Member Name="Type">
2401 <Messages>
2402 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2403 <Issue>
2404 <Item>Type</Item>
2405 </Issue>
2406 </Message>
2407 </Messages>
2408 </Member>
2409 </Members>
2410 </Type>
2411 </Types>
2412 </Namespace>
2413 <Namespace Name="OpenSim.Framework.Sims">
2414 <Types>
2415 <Type Name="SimProfile">
2416 <Messages>
2417 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2418 <Issue Name="Type">
2419 <Item>Sim</Item>
2420 <Item>OpenSim.Framework.Sims.SimProfile</Item>
2421 </Issue>
2422 </Message>
2423 </Messages>
2424 <Members>
2425 <Member Name="LoadFromGrid(System.UInt64,System.String,System.String,System.String):OpenSim.Framework.Sims.SimProfile">
2426 <Messages>
2427 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
2428 <Issue>
2429 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2430 <Item>System.Exception</Item>
2431 </Issue>
2432 </Message>
2433 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
2434 <Issue Name="Parameter">
2435 <Item>GridURL</Item>
2436 </Issue>
2437 </Message>
2438 <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
2439 <Issue Name="Parameter">
2440 <Item>SendKey</Item>
2441 </Issue>
2442 </Message>
2443 <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
2444 <Issue Name="Parameter">
2445 <Item>RecvKey</Item>
2446 </Issue>
2447 </Message>
2448 <Message Id="3#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2449 <Issue Name="Parameter">
2450 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2451 <Item>Recv</Item>
2452 <Item>RecvKey</Item>
2453 </Issue>
2454 </Message>
2455 <Message Id="0#" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
2456 <Issue Name="Parameter">
2457 <Item>region_handle</Item>
2458 </Issue>
2459 </Message>
2460 <Message Id="1#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
2461 <Issue Name="Parameter">
2462 <Item>GridURL</Item>
2463 </Issue>
2464 </Message>
2465 <Message Id="RecvKey" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
2466 <Issue>
2467 <Item>RecvKey</Item>
2468 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2469 </Issue>
2470 </Message>
2471 <Message Id="System.Convert.ToUInt16(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
2472 <Issue>
2473 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2474 <Item>System.Convert.ToUInt16(System.Object)</Item>
2475 <Item>System.Convert.ToUInt16(System.Object,System.IFormatProvider)</Item>
2476 </Issue>
2477 </Message>
2478 <Message Id="System.Convert.ToUInt32(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
2479 <Issue>
2480 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2481 <Item>System.Convert.ToUInt32(System.Object)</Item>
2482 <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
2483 </Issue>
2484 <Issue>
2485 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2486 <Item>System.Convert.ToUInt32(System.Object)</Item>
2487 <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
2488 </Issue>
2489 </Message>
2490 <Message Id="System.Convert.ToUInt64(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
2491 <Issue>
2492 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2493 <Item>System.Convert.ToUInt64(System.Object)</Item>
2494 <Item>System.Convert.ToUInt64(System.Object,System.IFormatProvider)</Item>
2495 </Issue>
2496 </Message>
2497 <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
2498 <Issue>
2499 <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
2500 <Item>System.UInt64.ToString</Item>
2501 <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
2502 </Issue>
2503 </Message>
2504 </Messages>
2505 </Member>
2506 </Members>
2507 </Type>
2508 <Type Name="SimProfileBase">
2509 <Messages>
2510 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2511 <Issue Name="Type">
2512 <Item>Sim</Item>
2513 <Item>OpenSim.Framework.Sims.SimProfileBase</Item>
2514 </Issue>
2515 </Message>
2516 </Messages>
2517 <Members>
2518 <Member Name="caps_url">
2519 <Messages>
2520 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2521 <Issue>
2522 <Item>caps_url</Item>
2523 </Issue>
2524 </Message>
2525 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
2526 <Issue Name="Member">
2527 <Item>caps_url</Item>
2528 </Issue>
2529 </Message>
2530 </Messages>
2531 </Member>
2532 <Member Name="recvkey">
2533 <Messages>
2534 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2535 <Issue>
2536 <Item>recvkey</Item>
2537 </Issue>
2538 </Message>
2539 <Message Id="recvkey" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2540 <Issue Name="Member">
2541 <Item>recvkey</Item>
2542 <Item>SimProfileBase.recvkey</Item>
2543 </Issue>
2544 </Message>
2545 </Messages>
2546 </Member>
2547 <Member Name="regionhandle">
2548 <Messages>
2549 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2550 <Issue>
2551 <Item>regionhandle</Item>
2552 </Issue>
2553 </Message>
2554 <Message Id="regionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2555 <Issue Name="Member">
2556 <Item>regionhandle</Item>
2557 <Item>SimProfileBase.regionhandle</Item>
2558 </Issue>
2559 </Message>
2560 </Messages>
2561 </Member>
2562 <Member Name="RegionLocX">
2563 <Messages>
2564 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2565 <Issue>
2566 <Item>RegionLocX</Item>
2567 </Issue>
2568 </Message>
2569 </Messages>
2570 </Member>
2571 <Member Name="RegionLocY">
2572 <Messages>
2573 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2574 <Issue>
2575 <Item>RegionLocY</Item>
2576 </Issue>
2577 </Message>
2578 </Messages>
2579 </Member>
2580 <Member Name="regionname">
2581 <Messages>
2582 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2583 <Issue>
2584 <Item>regionname</Item>
2585 </Issue>
2586 </Message>
2587 <Message Id="regionname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2588 <Issue Name="Member">
2589 <Item>regionname</Item>
2590 <Item>SimProfileBase.regionname</Item>
2591 </Issue>
2592 </Message>
2593 </Messages>
2594 </Member>
2595 <Member Name="sendkey">
2596 <Messages>
2597 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2598 <Issue>
2599 <Item>sendkey</Item>
2600 </Issue>
2601 </Message>
2602 <Message Id="sendkey" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2603 <Issue Name="Member">
2604 <Item>sendkey</Item>
2605 <Item>SimProfileBase.sendkey</Item>
2606 </Issue>
2607 </Message>
2608 </Messages>
2609 </Member>
2610 <Member Name="sim_ip">
2611 <Messages>
2612 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2613 <Issue>
2614 <Item>sim_ip</Item>
2615 </Issue>
2616 </Message>
2617 <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2618 <Issue Name="Member">
2619 <Item>sim</Item>
2620 <Item>SimProfileBase.sim_ip</Item>
2621 </Issue>
2622 </Message>
2623 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
2624 <Issue Name="Member">
2625 <Item>sim_ip</Item>
2626 </Issue>
2627 </Message>
2628 </Messages>
2629 </Member>
2630 <Member Name="sim_port">
2631 <Messages>
2632 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2633 <Issue>
2634 <Item>sim_port</Item>
2635 </Issue>
2636 </Message>
2637 <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2638 <Issue Name="Member">
2639 <Item>sim</Item>
2640 <Item>SimProfileBase.sim_port</Item>
2641 </Issue>
2642 </Message>
2643 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
2644 <Issue Name="Member">
2645 <Item>sim_port</Item>
2646 </Issue>
2647 </Message>
2648 </Messages>
2649 </Member>
2650 <Member Name="UUID">
2651 <Messages>
2652 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2653 <Issue>
2654 <Item>UUID</Item>
2655 </Issue>
2656 </Message>
2657 </Messages>
2658 </Member>
2659 </Members>
2660 </Type>
2661 </Types>
2662 </Namespace>
2663 <Namespace Name="OpenSim.Framework.Terrain">
2664 <Types>
2665 <Type Name="HeightmapGenHills">
2666 <Messages>
2667 <Message Id="Heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2668 <Issue Name="Type">
2669 <Item>Heightmap</Item>
2670 <Item>OpenSim.Framework.Terrain.HeightmapGenHills</Item>
2671 </Issue>
2672 </Message>
2673 </Messages>
2674 <Members>
2675 <Member Name="GenerateHeightmap(System.Int32,System.Single,System.Single,System.Boolean):System.Single[]">
2676 <Messages>
2677 <Message Id="0#num" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2678 <Issue Name="Parameter">
2679 <Item>HeightmapGenHills.GenerateHeightmap(Int32, Single, Single, Boolean):Single[]</Item>
2680 <Item>num</Item>
2681 <Item>numHills</Item>
2682 </Issue>
2683 </Message>
2684 <Message Id="Heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2685 <Issue Name="Member">
2686 <Item>Heightmap</Item>
2687 <Item>HeightmapGenHills.GenerateHeightmap(Int32, Single, Single, Boolean):Single[]</Item>
2688 </Issue>
2689 </Message>
2690 </Messages>
2691 </Member>
2692 <Member Name="NumHills">
2693 <Messages>
2694 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
2695 <Issue>
2696 <Item>HeightmapGenHills.NumHills</Item>
2697 </Issue>
2698 </Message>
2699 </Messages>
2700 </Member>
2701 </Members>
2702 </Type>
2703 </Types>
2704 </Namespace>
2705 <Namespace Name="OpenSim.Framework.User">
2706 <Types>
2707 <Type Name="UserProfile">
2708 <Members>
2709 <Member Name=".ctor()">
2710 <Messages>
2711 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
2712 <Issue>
2713 <Item>UserProfile.UserProfile()</Item>
2714 <Item>IsGridGod</Item>
2715 <Item>System.Boolean</Item>
2716 <Item>false</Item>
2717 </Issue>
2718 </Message>
2719 </Messages>
2720 </Member>
2721 <Member Name="AddSimCircuit(System.UInt32,libsecondlife.LLUUID):System.Void">
2722 <Messages>
2723 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2724 <Issue Name="Member">
2725 <Item>Sim</Item>
2726 <Item>UserProfile.AddSimCircuit(UInt32, LLUUID):Void</Item>
2727 </Issue>
2728 </Message>
2729 <Message Id="1#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
2730 <Issue Name="Parameter">
2731 <Item>regionUUID</Item>
2732 </Issue>
2733 </Message>
2734 </Messages>
2735 </Member>
2736 <Member Name="AssetURL">
2737 <Messages>
2738 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2739 <Issue>
2740 <Item>AssetURL</Item>
2741 </Issue>
2742 </Message>
2743 </Messages>
2744 </Member>
2745 <Member Name="Circuits">
2746 <Messages>
2747 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2748 <Issue>
2749 <Item>Circuits</Item>
2750 </Issue>
2751 </Message>
2752 </Messages>
2753 </Member>
2754 <Member Name="CurrentSecureSessionID">
2755 <Messages>
2756 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2757 <Issue>
2758 <Item>CurrentSecureSessionID</Item>
2759 </Issue>
2760 </Message>
2761 </Messages>
2762 </Member>
2763 <Member Name="CurrentSessionID">
2764 <Messages>
2765 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2766 <Issue>
2767 <Item>CurrentSessionID</Item>
2768 </Issue>
2769 </Message>
2770 </Messages>
2771 </Member>
2772 <Member Name="firstname">
2773 <Messages>
2774 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2775 <Issue>
2776 <Item>firstname</Item>
2777 </Issue>
2778 </Message>
2779 <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2780 <Issue Name="Member">
2781 <Item>firstname</Item>
2782 <Item>UserProfile.firstname</Item>
2783 </Issue>
2784 </Message>
2785 </Messages>
2786 </Member>
2787 <Member Name="homelookat">
2788 <Messages>
2789 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2790 <Issue>
2791 <Item>homelookat</Item>
2792 </Issue>
2793 </Message>
2794 <Message Id="homelookat" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2795 <Issue Name="Member">
2796 <Item>homelookat</Item>
2797 <Item>UserProfile.homelookat</Item>
2798 </Issue>
2799 </Message>
2800 </Messages>
2801 </Member>
2802 <Member Name="homepos">
2803 <Messages>
2804 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2805 <Issue>
2806 <Item>homepos</Item>
2807 </Issue>
2808 </Message>
2809 <Message Id="homepos" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2810 <Issue Name="Member">
2811 <Item>homepos</Item>
2812 <Item>UserProfile.homepos</Item>
2813 </Issue>
2814 </Message>
2815 </Messages>
2816 </Member>
2817 <Member Name="homeregionhandle">
2818 <Messages>
2819 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2820 <Issue>
2821 <Item>homeregionhandle</Item>
2822 </Issue>
2823 </Message>
2824 <Message Id="homeregionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2825 <Issue Name="Member">
2826 <Item>homeregionhandle</Item>
2827 <Item>UserProfile.homeregionhandle</Item>
2828 </Issue>
2829 </Message>
2830 </Messages>
2831 </Member>
2832 <Member Name="Inventory">
2833 <Messages>
2834 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2835 <Issue>
2836 <Item>Inventory</Item>
2837 </Issue>
2838 </Message>
2839 </Messages>
2840 </Member>
2841 <Member Name="IsGridGod">
2842 <Messages>
2843 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2844 <Issue>
2845 <Item>IsGridGod</Item>
2846 </Issue>
2847 </Message>
2848 </Messages>
2849 </Member>
2850 <Member Name="IsLocal">
2851 <Messages>
2852 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2853 <Issue>
2854 <Item>IsLocal</Item>
2855 </Issue>
2856 </Message>
2857 </Messages>
2858 </Member>
2859 <Member Name="lastname">
2860 <Messages>
2861 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2862 <Issue>
2863 <Item>lastname</Item>
2864 </Issue>
2865 </Message>
2866 <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2867 <Issue Name="Member">
2868 <Item>lastname</Item>
2869 <Item>UserProfile.lastname</Item>
2870 </Issue>
2871 </Message>
2872 </Messages>
2873 </Member>
2874 <Member Name="MD5passwd">
2875 <Messages>
2876 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2877 <Issue>
2878 <Item>MD5passwd</Item>
2879 </Issue>
2880 </Message>
2881 </Messages>
2882 </Member>
2883 <Member Name="UUID">
2884 <Messages>
2885 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2886 <Issue>
2887 <Item>UUID</Item>
2888 </Issue>
2889 </Message>
2890 </Messages>
2891 </Member>
2892 </Members>
2893 </Type>
2894 <Type Name="UserProfileManager">
2895 <Members>
2896 <Member Name="CustomiseResponse(System.Collections.Hashtable&amp;,OpenSim.Framework.User.UserProfile):System.Void">
2897 <Messages>
2898 <Message Id="0#" TypeName="DoNotPassTypesByReference" Category="Microsoft.Design" CheckId="CA1045" Created="2007-03-27 04:29:04Z">
2899 <Issue Level="CriticalWarning">
2900 <Item>response</Item>
2901 </Issue>
2902 </Message>
2903 <Message Id="Customise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2904 <Issue Name="Member">
2905 <Item>Customise</Item>
2906 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2907 </Issue>
2908 </Message>
2909 <Message Id="GridResp" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
2910 <Issue>
2911 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2912 <Item>GridResp</Item>
2913 <Item>Nwc.XmlRpc.XmlRpcResponse</Item>
2914 </Issue>
2915 </Message>
2916 <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
2917 <Issue>
2918 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2919 <Item>System.Single.ToString</Item>
2920 <Item>System.Single.ToString(System.IFormatProvider)</Item>
2921 </Issue>
2922 <Issue>
2923 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2924 <Item>System.Single.ToString</Item>
2925 <Item>System.Single.ToString(System.IFormatProvider)</Item>
2926 </Issue>
2927 <Issue>
2928 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2929 <Item>System.Single.ToString</Item>
2930 <Item>System.Single.ToString(System.IFormatProvider)</Item>
2931 </Issue>
2932 <Issue>
2933 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2934 <Item>System.Single.ToString</Item>
2935 <Item>System.Single.ToString(System.IFormatProvider)</Item>
2936 </Issue>
2937 <Issue>
2938 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2939 <Item>System.Single.ToString</Item>
2940 <Item>System.Single.ToString(System.IFormatProvider)</Item>
2941 </Issue>
2942 <Issue>
2943 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2944 <Item>System.Single.ToString</Item>
2945 <Item>System.Single.ToString(System.IFormatProvider)</Item>
2946 </Issue>
2947 </Message>
2948 <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
2949 <Issue>
2950 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2951 <Item>System.UInt32.ToString</Item>
2952 <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
2953 </Issue>
2954 <Issue>
2955 <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
2956 <Item>System.UInt32.ToString</Item>
2957 <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
2958 </Issue>
2959 </Message>
2960 </Messages>
2961 </Member>
2962 <Member Name="DefaultStartupMsg">
2963 <Messages>
2964 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2965 <Issue>
2966 <Item>DefaultStartupMsg</Item>
2967 </Issue>
2968 </Message>
2969 </Messages>
2970 </Member>
2971 <Member Name="GridRecvKey">
2972 <Messages>
2973 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2974 <Issue>
2975 <Item>GridRecvKey</Item>
2976 </Issue>
2977 </Message>
2978 <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
2979 <Issue Name="Member">
2980 <Item>Recv</Item>
2981 <Item>UserProfileManager.GridRecvKey</Item>
2982 </Issue>
2983 </Message>
2984 </Messages>
2985 </Member>
2986 <Member Name="GridSendKey">
2987 <Messages>
2988 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2989 <Issue>
2990 <Item>GridSendKey</Item>
2991 </Issue>
2992 </Message>
2993 </Messages>
2994 </Member>
2995 <Member Name="GridURL">
2996 <Messages>
2997 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
2998 <Issue>
2999 <Item>GridURL</Item>
3000 </Issue>
3001 </Message>
3002 </Messages>
3003 </Member>
3004 <Member Name="ParseXMLRPC(System.String):System.String">
3005 <Messages>
3006 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
3007 <Issue>
3008 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3009 <Item>System.Exception</Item>
3010 </Issue>
3011 </Message>
3012 <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
3013 <Issue Name="Member">
3014 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3015 </Issue>
3016 </Message>
3017 <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
3018 <Issue>
3019 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3020 <Item>System.Int32.ToString</Item>
3021 <Item>System.Int32.ToString(System.IFormatProvider)</Item>
3022 </Issue>
3023 <Issue>
3024 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3025 <Item>System.Int32.ToString</Item>
3026 <Item>System.Int32.ToString(System.IFormatProvider)</Item>
3027 </Issue>
3028 </Message>
3029 <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
3030 <Issue>
3031 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3032 <Item>System.Single.ToString</Item>
3033 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3034 </Issue>
3035 <Issue>
3036 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3037 <Item>System.Single.ToString</Item>
3038 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3039 </Issue>
3040 <Issue>
3041 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3042 <Item>System.Single.ToString</Item>
3043 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3044 </Issue>
3045 <Issue>
3046 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3047 <Item>System.Single.ToString</Item>
3048 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3049 </Issue>
3050 <Issue>
3051 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3052 <Item>System.Single.ToString</Item>
3053 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3054 </Issue>
3055 <Issue>
3056 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3057 <Item>System.Single.ToString</Item>
3058 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3059 </Issue>
3060 <Issue>
3061 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3062 <Item>System.Single.ToString</Item>
3063 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3064 </Issue>
3065 <Issue>
3066 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3067 <Item>System.Single.ToString</Item>
3068 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3069 </Issue>
3070 <Issue>
3071 <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
3072 <Item>System.Single.ToString</Item>
3073 <Item>System.Single.ToString(System.IFormatProvider)</Item>
3074 </Issue>
3075 </Message>
3076 </Messages>
3077 </Member>
3078 <Member Name="SetKeys(System.String,System.String,System.String,System.String):System.Void">
3079 <Messages>
3080 <Message Id="1#recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3081 <Issue Name="Parameter">
3082 <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
3083 <Item>recv</Item>
3084 <Item>recvKey</Item>
3085 </Issue>
3086 </Message>
3087 <Message Id="2#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
3088 <Issue>
3089 <Item>url</Item>
3090 <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
3091 </Issue>
3092 </Message>
3093 </Messages>
3094 </Member>
3095 </Members>
3096 </Type>
3097 <Type Name="UserProfileManagerBase">
3098 <Members>
3099 <Member Name="AuthenticateUser(System.String,System.String,System.String):System.Boolean">
3100 <Messages>
3101 <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3102 <Issue Name="Parameter">
3103 <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
3104 <Item>firstname</Item>
3105 <Item>firstname</Item>
3106 </Issue>
3107 </Message>
3108 <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3109 <Issue Name="Parameter">
3110 <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
3111 <Item>lastname</Item>
3112 <Item>lastname</Item>
3113 </Issue>
3114 </Message>
3115 <Message Id="2#passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3116 <Issue Name="Parameter">
3117 <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
3118 <Item>passwd</Item>
3119 <Item>passwd</Item>
3120 </Issue>
3121 </Message>
3122 </Messages>
3123 </Member>
3124 <Member Name="CreateNewProfile(System.String,System.String,System.String):OpenSim.Framework.User.UserProfile">
3125 <Messages>
3126 <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
3127 <Issue Name="Parameter">
3128 <Item>MD5passwd</Item>
3129 </Issue>
3130 </Message>
3131 <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3132 <Issue Name="Parameter">
3133 <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
3134 <Item>firstname</Item>
3135 <Item>firstname</Item>
3136 </Issue>
3137 </Message>
3138 <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3139 <Issue Name="Parameter">
3140 <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
3141 <Item>lastname</Item>
3142 <Item>lastname</Item>
3143 </Issue>
3144 </Message>
3145 <Message Id="2#M" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3146 <Issue Name="Parameter">
3147 <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
3148 <Item>M</Item>
3149 <Item>MD5passwd</Item>
3150 </Issue>
3151 </Message>
3152 </Messages>
3153 </Member>
3154 <Member Name="GetProfileByLLUUID(libsecondlife.LLUUID):OpenSim.Framework.User.UserProfile">
3155 <Messages>
3156 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
3157 <Issue Name="Parameter">
3158 <Item>ProfileLLUUID</Item>
3159 </Issue>
3160 </Message>
3161 <Message Id="0#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
3162 <Issue Name="Parameter">
3163 <Item>ProfileLLUUID</Item>
3164 </Issue>
3165 </Message>
3166 <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
3167 <Issue Name="Member">
3168 <Item>UserProfileManagerBase.GetProfileByLLUUID(LLUUID):UserProfile</Item>
3169 </Issue>
3170 </Message>
3171 </Messages>
3172 </Member>
3173 <Member Name="GetProfileByName(System.String,System.String):OpenSim.Framework.User.UserProfile">
3174 <Messages>
3175 <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3176 <Issue Name="Parameter">
3177 <Item>UserProfileManagerBase.GetProfileByName(String, String):UserProfile</Item>
3178 <Item>firstname</Item>
3179 <Item>firstname</Item>
3180 </Issue>
3181 </Message>
3182 <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3183 <Issue Name="Parameter">
3184 <Item>UserProfileManagerBase.GetProfileByName(String, String):UserProfile</Item>
3185 <Item>lastname</Item>
3186 <Item>lastname</Item>
3187 </Issue>
3188 </Message>
3189 </Messages>
3190 </Member>
3191 <Member Name="GetUsersInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
3192 <Messages>
3193 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
3194 <Issue Name="ParameterId">
3195 <Item>ID</Item>
3196 <Item>agentID</Item>
3197 <Item>Id</Item>
3198 </Issue>
3199 </Message>
3200 </Messages>
3201 </Member>
3202 <Member Name="SetGod(libsecondlife.LLUUID):System.Void">
3203 <Messages>
3204 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
3205 <Issue Name="Parameter">
3206 <Item>GodID</Item>
3207 </Issue>
3208 </Message>
3209 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
3210 <Issue Name="ParameterId">
3211 <Item>ID</Item>
3212 <Item>GodID</Item>
3213 <Item>Id</Item>
3214 </Issue>
3215 </Message>
3216 </Messages>
3217 </Member>
3218 <Member Name="UserProfiles">
3219 <Messages>
3220 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3221 <Issue>
3222 <Item>UserProfiles</Item>
3223 </Issue>
3224 </Message>
3225 </Messages>
3226 </Member>
3227 </Members>
3228 </Type>
3229 </Types>
3230 </Namespace>
3231 <Namespace Name="OpenSim.Framework.Utilities">
3232 <Types>
3233 <Type Name="BlockingQueue`1">
3234 <Messages>
3235 <Message TypeName="IdentifiersShouldNotHaveIncorrectSuffix" Category="Microsoft.Naming" CheckId="CA1711" Created="2007-03-27 04:29:04Z">
3236 <Issue>
3237 <Item>OpenSim.Framework.Utilities.BlockingQueue`1</Item>
3238 <Item>Queue</Item>
3239 </Issue>
3240 </Message>
3241 </Messages>
3242 </Type>
3243 <Type Name="Util">
3244 <Messages>
3245 <Message Id="Util" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3246 <Issue Name="Type">
3247 <Item>Util</Item>
3248 <Item>OpenSim.Framework.Utilities.Util</Item>
3249 </Issue>
3250 </Message>
3251 <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
3252 <Issue>
3253 <Item>Util</Item>
3254 </Issue>
3255 </Message>
3256 <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
3257 <Issue>
3258 <Item>Util</Item>
3259 <Item>System.Web.Util</Item>
3260 </Issue>
3261 </Message>
3262 </Messages>
3263 <Members>
3264 <Member Name="GetNextXferID():System.UInt32">
3265 <Messages>
3266 <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3267 <Issue Name="Member">
3268 <Item>Xfer</Item>
3269 <Item>Util.GetNextXferID():UInt32</Item>
3270 </Issue>
3271 </Message>
3272 <Message Id="Member" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
3273 <Issue Name="MemberId">
3274 <Item>Util.GetNextXferID():UInt32</Item>
3275 </Issue>
3276 </Message>
3277 <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
3278 <Issue>
3279 <Item>GetNextXferID</Item>
3280 </Issue>
3281 </Message>
3282 </Messages>
3283 </Member>
3284 <Member Name="UIntsToLong(System.UInt32,System.UInt32):System.UInt64">
3285 <Messages>
3286 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
3287 <Issue Name="Parameter">
3288 <Item>X</Item>
3289 </Issue>
3290 </Message>
3291 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
3292 <Issue Name="Parameter">
3293 <Item>Y</Item>
3294 </Issue>
3295 </Message>
3296 <Message Id="0#X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3297 <Issue Name="ParameterOneLetter">
3298 <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
3299 <Item>X</Item>
3300 </Issue>
3301 </Message>
3302 <Message Id="1#Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3303 <Issue Name="ParameterOneLetter">
3304 <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
3305 <Item>Y</Item>
3306 </Issue>
3307 </Message>
3308 <Message Id="Ints" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3309 <Issue Name="Member">
3310 <Item>Ints</Item>
3311 <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
3312 </Issue>
3313 </Message>
3314 </Messages>
3315 </Member>
3316 </Members>
3317 </Type>
3318 </Types>
3319 </Namespace>
3320 </Namespaces>
3321 </Module>
3322 </Modules>
3323 </Target>
3324 <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Local.dll">
3325 <Modules>
3326 <Module Name="opensim.gridinterfaces.local.dll">
3327 <Messages>
3328 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
3329 <Issue>
3330 <Item>OpenSim.GridInterfaces.Local</Item>
3331 </Issue>
3332 </Message>
3333 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
3334 <Issue Name="NoStrongName">
3335 <Item>OpenSim.GridInterfaces.Local</Item>
3336 </Issue>
3337 </Message>
3338 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
3339 <Issue Name="NoAttr">
3340 <Item>OpenSim.GridInterfaces.Local</Item>
3341 </Issue>
3342 </Message>
3343 </Messages>
3344 <Namespaces>
3345 <Namespace Name="OpenSim.GridInterfaces.Local">
3346 <Types>
3347 <Type Name="AssetStorage">
3348 <Members>
3349 <Member Name="Data">
3350 <Messages>
3351 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3352 <Issue>
3353 <Item>Data</Item>
3354 </Issue>
3355 </Message>
3356 </Messages>
3357 </Member>
3358 <Member Name="Name">
3359 <Messages>
3360 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3361 <Issue>
3362 <Item>Name</Item>
3363 </Issue>
3364 </Message>
3365 </Messages>
3366 </Member>
3367 <Member Name="Type">
3368 <Messages>
3369 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3370 <Issue>
3371 <Item>Type</Item>
3372 </Issue>
3373 </Message>
3374 </Messages>
3375 </Member>
3376 <Member Name="UUID">
3377 <Messages>
3378 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3379 <Issue>
3380 <Item>UUID</Item>
3381 </Issue>
3382 </Message>
3383 </Messages>
3384 </Member>
3385 </Members>
3386 </Type>
3387 <Type Name="AssetUUIDQuery">
3388 <Messages>
3389 <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
3390 <Issue Name="Type">
3391 <Item>AssetUUIDQuery</Item>
3392 </Issue>
3393 </Message>
3394 </Messages>
3395 <Members>
3396 <Member Name="Match(OpenSim.GridInterfaces.Local.AssetStorage):System.Boolean">
3397 <Messages>
3398 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
3399 <Issue>
3400 <Item>'asset'</Item>
3401 <Item>AssetUUIDQuery.Match(AssetStorage):Boolean</Item>
3402 </Issue>
3403 </Message>
3404 </Messages>
3405 </Member>
3406 </Members>
3407 </Type>
3408 <Type Name="LocalAssetPlugin">
3409 <Messages>
3410 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3411 <Issue Name="Type">
3412 <Item>Plugin</Item>
3413 <Item>OpenSim.GridInterfaces.Local.LocalAssetPlugin</Item>
3414 </Issue>
3415 </Message>
3416 </Messages>
3417 </Type>
3418 <Type Name="LocalAssetServer">
3419 <Members>
3420 <Member Name=".ctor()">
3421 <Messages>
3422 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
3423 <Issue>
3424 <Item>LocalAssetServer.LocalAssetServer()</Item>
3425 <Item>System.Exception</Item>
3426 </Issue>
3427 </Message>
3428 </Messages>
3429 </Member>
3430 <Member Name="LoadAsset(OpenSim.Framework.Assets.AssetBase,System.Boolean,System.String):System.Void">
3431 <Messages>
3432 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
3433 <Issue>
3434 <Item>LocalAssetServer.LoadAsset(AssetBase, Boolean, String):Void</Item>
3435 </Issue>
3436 </Message>
3437 <Message Id="image" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
3438 <Issue>
3439 <Item>image</Item>
3440 <Item>LocalAssetServer.LoadAsset(AssetBase, Boolean, String):Void</Item>
3441 </Issue>
3442 </Message>
3443 </Messages>
3444 </Member>
3445 <Member Name="UploadNewAsset(OpenSim.Framework.Assets.AssetBase):System.Void">
3446 <Messages>
3447 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
3448 <Issue>
3449 <Item>'asset'</Item>
3450 <Item>LocalAssetServer.UploadNewAsset(AssetBase):Void</Item>
3451 </Issue>
3452 </Message>
3453 </Messages>
3454 </Member>
3455 </Members>
3456 </Type>
3457 <Type Name="LocalGridPlugin">
3458 <Messages>
3459 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3460 <Issue Name="Type">
3461 <Item>Plugin</Item>
3462 <Item>OpenSim.GridInterfaces.Local.LocalGridPlugin</Item>
3463 </Issue>
3464 </Message>
3465 </Messages>
3466 </Type>
3467 <Type Name="LocalGridServer">
3468 <Members>
3469 <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
3470 <Messages>
3471 <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
3472 <Issue Name="Member">
3473 <Item>Logout</Item>
3474 <Item>LogoutSession</Item>
3475 <Item>LogOff</Item>
3476 </Issue>
3477 </Message>
3478 </Messages>
3479 </Member>
3480 <Member Name="Sessions">
3481 <Messages>
3482 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3483 <Issue>
3484 <Item>Sessions</Item>
3485 </Issue>
3486 </Message>
3487 <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
3488 <Issue>
3489 <Item>System.Collections.Generic.List`1&lt;OpenSim.Framework.Interfaces.Login&gt;</Item>
3490 <Item>LocalGridServer.Sessions</Item>
3491 </Issue>
3492 </Message>
3493 </Messages>
3494 </Member>
3495 </Members>
3496 </Type>
3497 </Types>
3498 </Namespace>
3499 </Namespaces>
3500 </Module>
3501 </Modules>
3502 </Target>
3503 <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Remote.dll">
3504 <Modules>
3505 <Module Name="opensim.gridinterfaces.remote.dll">
3506 <Messages>
3507 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
3508 <Issue>
3509 <Item>OpenSim.GridInterfaces.Remote</Item>
3510 </Issue>
3511 </Message>
3512 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
3513 <Issue Name="NoStrongName">
3514 <Item>OpenSim.GridInterfaces.Remote</Item>
3515 </Issue>
3516 </Message>
3517 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
3518 <Issue Name="NoAttr">
3519 <Item>OpenSim.GridInterfaces.Remote</Item>
3520 </Issue>
3521 </Message>
3522 </Messages>
3523 <Namespaces>
3524 <Namespace Name="OpenSim.GridInterfaces.Remote">
3525 <Types>
3526 <Type Name="RemoteAssetPlugin">
3527 <Messages>
3528 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3529 <Issue Name="Type">
3530 <Item>Plugin</Item>
3531 <Item>OpenSim.GridInterfaces.Remote.RemoteAssetPlugin</Item>
3532 </Issue>
3533 </Message>
3534 </Messages>
3535 </Type>
3536 <Type Name="RemoteGridPlugin">
3537 <Messages>
3538 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3539 <Issue Name="Type">
3540 <Item>Plugin</Item>
3541 <Item>OpenSim.GridInterfaces.Remote.RemoteGridPlugin</Item>
3542 </Issue>
3543 </Message>
3544 </Messages>
3545 </Type>
3546 <Type Name="RemoteGridServer">
3547 <Members>
3548 <Member Name="agentcircuits">
3549 <Messages>
3550 <Message TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227" Created="2007-03-27 04:29:04Z">
3551 <Issue>
3552 <Item>agentcircuits</Item>
3553 </Issue>
3554 </Message>
3555 </Messages>
3556 </Member>
3557 <Member Name="AuthenticateSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):OpenSim.Framework.Interfaces.AuthenticateResponse">
3558 <Messages>
3559 <Message Id="2#" TypeName="ParameterNamesShouldMatchBaseDeclaration" Category="Microsoft.Naming" CheckId="CA1725" Created="2007-03-27 04:29:04Z">
3560 <Issue>
3561 <Item>circuitcode</Item>
3562 <Item>RemoteGridServer.AuthenticateSession(LLUUID, LLUUID, UInt32):AuthenticateResponse</Item>
3563 <Item>circuitCode</Item>
3564 <Item>IGridServer.AuthenticateSession(LLUUID, LLUUID, UInt32):AuthenticateResponse</Item>
3565 </Issue>
3566 </Message>
3567 </Messages>
3568 </Member>
3569 <Member Name="GridRecvKey">
3570 <Messages>
3571 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
3572 <Issue>
3573 <Item>RemoteGridServer.GridRecvKey</Item>
3574 </Issue>
3575 </Message>
3576 </Messages>
3577 </Member>
3578 <Member Name="GridSendKey">
3579 <Messages>
3580 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
3581 <Issue>
3582 <Item>RemoteGridServer.GridSendKey</Item>
3583 </Issue>
3584 </Message>
3585 </Messages>
3586 </Member>
3587 <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
3588 <Messages>
3589 <Message TypeName="PassSystemUriObjectsInsteadOfStrings" Category="Microsoft.Usage" CheckId="CA2234" Created="2007-03-27 04:29:04Z">
3590 <Issue>
3591 <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
3592 <Item>WebRequest.Create(Uri):WebRequest</Item>
3593 <Item>WebRequest.Create(String):WebRequest</Item>
3594 </Issue>
3595 </Message>
3596 <Message Id="GridResponse" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
3597 <Issue>
3598 <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
3599 <Item>GridResponse</Item>
3600 <Item>System.String</Item>
3601 </Issue>
3602 </Message>
3603 <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
3604 <Issue Name="Member">
3605 <Item>Logout</Item>
3606 <Item>LogoutSession</Item>
3607 <Item>LogOff</Item>
3608 </Issue>
3609 </Message>
3610 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
3611 <Issue>
3612 <Item>'sessionID'</Item>
3613 <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
3614 </Issue>
3615 </Message>
3616 </Messages>
3617 </Member>
3618 </Members>
3619 </Type>
3620 </Types>
3621 </Namespace>
3622 </Namespaces>
3623 </Module>
3624 </Modules>
3625 </Target>
3626 <Target Name="$(ProjectDir)/bin/OpenSim.Physics.Manager.dll">
3627 <Modules>
3628 <Module Name="opensim.physics.manager.dll">
3629 <Messages>
3630 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
3631 <Issue>
3632 <Item>OpenSim.Physics.Manager</Item>
3633 </Issue>
3634 </Message>
3635 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
3636 <Issue Name="NoStrongName">
3637 <Item>OpenSim.Physics.Manager</Item>
3638 </Issue>
3639 </Message>
3640 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
3641 <Issue Name="NoAttr">
3642 <Item>OpenSim.Physics.Manager</Item>
3643 </Issue>
3644 </Message>
3645 </Messages>
3646 <Namespaces>
3647 <Namespace Name="OpenSim.Physics.Manager">
3648 <Types>
3649 <Type Name="IPhysicsPlugin">
3650 <Messages>
3651 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3652 <Issue Name="Type">
3653 <Item>Plugin</Item>
3654 <Item>OpenSim.Physics.Manager.IPhysicsPlugin</Item>
3655 </Issue>
3656 </Message>
3657 </Messages>
3658 <Members>
3659 <Member Name="GetName():System.String">
3660 <Messages>
3661 <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
3662 <Issue Certainty="50">
3663 <Item>GetName</Item>
3664 </Issue>
3665 </Message>
3666 </Messages>
3667 </Member>
3668 <Member Name="GetScene():OpenSim.Physics.Manager.PhysicsScene">
3669 <Messages>
3670 <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
3671 <Issue Certainty="50">
3672 <Item>GetScene</Item>
3673 </Issue>
3674 </Message>
3675 </Messages>
3676 </Member>
3677 </Members>
3678 </Type>
3679 <Type Name="NullPhysicsScene">
3680 <Members>
3681 <Member Name="SetTerrain(System.Single[]):System.Void">
3682 <Messages>
3683 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
3684 <Issue>
3685 <Item>'heightMap'</Item>
3686 <Item>NullPhysicsScene.SetTerrain(Single[]):Void</Item>
3687 </Issue>
3688 </Message>
3689 </Messages>
3690 </Member>
3691 <Member Name="Simulate(System.Single):System.Void">
3692 <Messages>
3693 <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
3694 <Issue>
3695 <Item>NullPhysicsScene.Simulate(Single):Void</Item>
3696 <Item>System.Int32.ToString</Item>
3697 <Item>System.Int32.ToString(System.IFormatProvider)</Item>
3698 </Issue>
3699 </Message>
3700 </Messages>
3701 </Member>
3702 </Members>
3703 </Type>
3704 <Type Name="PhysicsActor">
3705 <Members>
3706 <Member Name="Kinematic">
3707 <Messages>
3708 <Message Id="Kinematic" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3709 <Issue Name="Member">
3710 <Item>Kinematic</Item>
3711 <Item>PhysicsActor.Kinematic:Boolean</Item>
3712 </Issue>
3713 </Message>
3714 </Messages>
3715 </Member>
3716 </Members>
3717 </Type>
3718 <Type Name="PhysicsManager">
3719 <Members>
3720 <Member Name="GetPhysicsScene(System.String):OpenSim.Physics.Manager.PhysicsScene">
3721 <Messages>
3722 <Message Id="System.String.Format(System.String,System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
3723 <Issue>
3724 <Item>PhysicsManager.GetPhysicsScene(String):PhysicsScene</Item>
3725 <Item>System.String.Format(System.String,System.Object)</Item>
3726 <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
3727 </Issue>
3728 </Message>
3729 </Messages>
3730 </Member>
3731 <Member Name="LoadPlugins():System.Void">
3732 <Messages>
3733 <Message Id="Plugins" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3734 <Issue Name="Member">
3735 <Item>Plugins</Item>
3736 <Item>PhysicsManager.LoadPlugins():Void</Item>
3737 </Issue>
3738 </Message>
3739 </Messages>
3740 </Member>
3741 </Members>
3742 </Type>
3743 <Type Name="PhysicsVector">
3744 <Members>
3745 <Member Name=".ctor(System.Single,System.Single,System.Single)">
3746 <Messages>
3747 <Message Id="0#x" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3748 <Issue Name="ParameterOneLetter">
3749 <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
3750 <Item>x</Item>
3751 </Issue>
3752 </Message>
3753 <Message Id="1#y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3754 <Issue Name="ParameterOneLetter">
3755 <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
3756 <Item>y</Item>
3757 </Issue>
3758 </Message>
3759 <Message Id="2#z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3760 <Issue Name="ParameterOneLetter">
3761 <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
3762 <Item>z</Item>
3763 </Issue>
3764 </Message>
3765 </Messages>
3766 </Member>
3767 <Member Name="X">
3768 <Messages>
3769 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3770 <Issue>
3771 <Item>X</Item>
3772 </Issue>
3773 </Message>
3774 <Message Id="X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3775 <Issue Name="MemberOneLetter">
3776 <Item>X</Item>
3777 <Item>PhysicsVector.X</Item>
3778 </Issue>
3779 </Message>
3780 </Messages>
3781 </Member>
3782 <Member Name="Y">
3783 <Messages>
3784 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3785 <Issue>
3786 <Item>Y</Item>
3787 </Issue>
3788 </Message>
3789 <Message Id="Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3790 <Issue Name="MemberOneLetter">
3791 <Item>Y</Item>
3792 <Item>PhysicsVector.Y</Item>
3793 </Issue>
3794 </Message>
3795 </Messages>
3796 </Member>
3797 <Member Name="Z">
3798 <Messages>
3799 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3800 <Issue>
3801 <Item>Z</Item>
3802 </Issue>
3803 </Message>
3804 <Message Id="Z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3805 <Issue Name="MemberOneLetter">
3806 <Item>Z</Item>
3807 <Item>PhysicsVector.Z</Item>
3808 </Issue>
3809 </Message>
3810 </Messages>
3811 </Member>
3812 <Member Name="Zero">
3813 <Messages>
3814 <Message TypeName="DoNotDeclareReadOnlyMutableReferenceTypes" Category="Microsoft.Security" CheckId="CA2104" Created="2007-03-27 04:29:04Z">
3815 <Issue>
3816 <Item>PhysicsVector.Zero</Item>
3817 <Item>OpenSim.Physics.Manager.PhysicsVector</Item>
3818 </Issue>
3819 </Message>
3820 </Messages>
3821 </Member>
3822 </Members>
3823 </Type>
3824 </Types>
3825 </Namespace>
3826 </Namespaces>
3827 </Module>
3828 </Modules>
3829 </Target>
3830 <Target Name="$(ProjectDir)/bin/OpenSim.RegionServer.dll">
3831 <Modules>
3832 <Module Name="opensim.regionserver.dll">
3833 <Messages>
3834 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
3835 <Issue>
3836 <Item>OpenSim.RegionServer</Item>
3837 </Issue>
3838 </Message>
3839 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
3840 <Issue Name="NoStrongName">
3841 <Item>OpenSim.RegionServer</Item>
3842 </Issue>
3843 </Message>
3844 <Message TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016" Created="2007-03-27 04:29:04Z">
3845 <Issue>
3846 <Item>OpenSim.RegionServer</Item>
3847 </Issue>
3848 </Message>
3849 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
3850 <Issue Name="NoAttr">
3851 <Item>OpenSim.RegionServer</Item>
3852 </Issue>
3853 </Message>
3854 <Message TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017" Created="2007-03-27 04:29:04Z">
3855 <Issue Name="NoAttribute" Level="CriticalError">
3856 <Item>OpenSim.RegionServer</Item>
3857 </Issue>
3858 </Message>
3859 </Messages>
3860 <Namespaces>
3861 <Namespace Name="OpenSim">
3862 <Types>
3863 <Type Name="AgentAssetUpload">
3864 <Members>
3865 <Member Name="AddUpload(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Void">
3866 <Messages>
3867 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
3868 <Issue Name="ParameterId">
3869 <Item>ID</Item>
3870 <Item>transactionID</Item>
3871 <Item>Id</Item>
3872 </Issue>
3873 </Message>
3874 </Messages>
3875 </Member>
3876 <Member Name="AddUploadToAssetCache(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
3877 <Messages>
3878 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
3879 <Issue Name="ParameterId">
3880 <Item>ID</Item>
3881 <Item>transactionID</Item>
3882 <Item>Id</Item>
3883 </Issue>
3884 </Message>
3885 </Messages>
3886 </Member>
3887 <Member Name="GetUpload(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
3888 <Messages>
3889 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
3890 <Issue Name="ParameterId">
3891 <Item>ID</Item>
3892 <Item>transactionID</Item>
3893 <Item>Id</Item>
3894 </Issue>
3895 </Message>
3896 </Messages>
3897 </Member>
3898 <Member Name="HandleUploadPacket(libsecondlife.Packets.AssetUploadRequestPacket,libsecondlife.LLUUID):System.Void">
3899 <Messages>
3900 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
3901 <Issue Name="ParameterId">
3902 <Item>ID</Item>
3903 <Item>assetID</Item>
3904 <Item>Id</Item>
3905 </Issue>
3906 </Message>
3907 <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
3908 <Issue>
3909 <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
3910 <Item>System.Int32.ToString(System.String)</Item>
3911 <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
3912 </Issue>
3913 <Issue>
3914 <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
3915 <Item>System.Int32.ToString(System.String)</Item>
3916 <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
3917 </Issue>
3918 </Message>
3919 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
3920 <Issue>
3921 <Item>'assetID'</Item>
3922 <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
3923 </Issue>
3924 <Issue>
3925 <Item>'pack'</Item>
3926 <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
3927 </Issue>
3928 </Message>
3929 </Messages>
3930 </Member>
3931 <Member Name="HandleXferPacket(libsecondlife.Packets.SendXferPacketPacket):System.Void">
3932 <Messages>
3933 <Message Id="0#xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3934 <Issue Name="Parameter">
3935 <Item>AgentAssetUpload.HandleXferPacket(SendXferPacketPacket):Void</Item>
3936 <Item>xfer</Item>
3937 <Item>xferPacket</Item>
3938 </Issue>
3939 </Message>
3940 <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
3941 <Issue Name="Member">
3942 <Item>Xfer</Item>
3943 <Item>AgentAssetUpload.HandleXferPacket(SendXferPacketPacket):Void</Item>
3944 </Issue>
3945 </Message>
3946 </Messages>
3947 </Member>
3948 </Members>
3949 </Type>
3950 <Type Name="AssetTransaction">
3951 <Members>
3952 <Member Name=".ctor()">
3953 <Messages>
3954 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
3955 <Issue>
3956 <Item>AssetTransaction.AssetTransaction()</Item>
3957 <Item>UploadComplete</Item>
3958 <Item>System.Boolean</Item>
3959 <Item>false</Item>
3960 </Issue>
3961 </Message>
3962 </Messages>
3963 </Member>
3964 <Member Name="AddToInventory">
3965 <Messages>
3966 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3967 <Issue>
3968 <Item>AddToInventory</Item>
3969 </Issue>
3970 </Message>
3971 </Messages>
3972 </Member>
3973 <Member Name="Asset">
3974 <Messages>
3975 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3976 <Issue>
3977 <Item>Asset</Item>
3978 </Issue>
3979 </Message>
3980 </Messages>
3981 </Member>
3982 <Member Name="InventFolder">
3983 <Messages>
3984 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3985 <Issue>
3986 <Item>InventFolder</Item>
3987 </Issue>
3988 </Message>
3989 </Messages>
3990 </Member>
3991 <Member Name="TransactionID">
3992 <Messages>
3993 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
3994 <Issue>
3995 <Item>TransactionID</Item>
3996 </Issue>
3997 </Message>
3998 </Messages>
3999 </Member>
4000 <Member Name="UploadComplete">
4001 <Messages>
4002 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4003 <Issue>
4004 <Item>UploadComplete</Item>
4005 </Issue>
4006 </Message>
4007 </Messages>
4008 </Member>
4009 <Member Name="XferID">
4010 <Messages>
4011 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4012 <Issue>
4013 <Item>XferID</Item>
4014 </Issue>
4015 </Message>
4016 <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4017 <Issue Name="Member">
4018 <Item>Xfer</Item>
4019 <Item>AssetTransaction.XferID</Item>
4020 </Issue>
4021 </Message>
4022 </Messages>
4023 </Member>
4024 </Members>
4025 </Type>
4026 <Type Name="Grid">
4027 <Messages>
4028 <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
4029 <Issue>
4030 <Item>Grid</Item>
4031 <Item>OpenSim.Framework.Grid</Item>
4032 </Issue>
4033 </Message>
4034 </Messages>
4035 <Members>
4036 <Member Name="AssetDll">
4037 <Messages>
4038 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4039 <Issue>
4040 <Item>AssetDll</Item>
4041 </Issue>
4042 </Message>
4043 </Messages>
4044 </Member>
4045 <Member Name="AssetServer">
4046 <Messages>
4047 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4048 <Issue>
4049 <Item>AssetServer</Item>
4050 </Issue>
4051 </Message>
4052 </Messages>
4053 </Member>
4054 <Member Name="GridDll">
4055 <Messages>
4056 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4057 <Issue>
4058 <Item>GridDll</Item>
4059 </Issue>
4060 </Message>
4061 </Messages>
4062 </Member>
4063 <Member Name="GridServer">
4064 <Messages>
4065 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4066 <Issue>
4067 <Item>GridServer</Item>
4068 </Issue>
4069 </Message>
4070 </Messages>
4071 </Member>
4072 <Member Name="Initialise():System.Void">
4073 <Messages>
4074 <Message Id="Initialise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4075 <Issue Name="Member">
4076 <Item>Initialise</Item>
4077 <Item>Grid.Initialise():Void</Item>
4078 </Issue>
4079 </Message>
4080 </Messages>
4081 </Member>
4082 <Member Name="LoadAssetDll(System.String):OpenSim.Framework.Interfaces.IAssetServer">
4083 <Messages>
4084 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
4085 <Issue>
4086 <Item>Grid.LoadAssetDll(String):IAssetServer</Item>
4087 </Issue>
4088 </Message>
4089 </Messages>
4090 </Member>
4091 <Member Name="LoadGridDll(System.String):OpenSim.Framework.Interfaces.IGridServer">
4092 <Messages>
4093 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
4094 <Issue>
4095 <Item>Grid.LoadGridDll(String):IGridServer</Item>
4096 </Issue>
4097 </Message>
4098 </Messages>
4099 </Member>
4100 </Members>
4101 </Type>
4102 <Type Name="OpenSimApplication">
4103 <Messages>
4104 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4105 <Issue Name="Type">
4106 <Item>Sim</Item>
4107 <Item>OpenSim.OpenSimApplication</Item>
4108 </Issue>
4109 </Message>
4110 </Messages>
4111 <Members>
4112 <Member Name="RemoveClientCircuit(System.UInt32):System.Void">
4113 <Messages>
4114 <Message Id="0#circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4115 <Issue Name="Parameter">
4116 <Item>OpenSimApplication.RemoveClientCircuit(UInt32):Void</Item>
4117 <Item>circuitcode</Item>
4118 <Item>circuitcode</Item>
4119 </Issue>
4120 </Message>
4121 </Messages>
4122 </Member>
4123 <Member Name="SendPacketTo(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.UInt32):System.Void">
4124 <Messages>
4125 <Message Id="3#circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4126 <Issue Name="Parameter">
4127 <Item>OpenSimApplication.SendPacketTo(Byte[], Int32, SocketFlags, UInt32):Void</Item>
4128 <Item>circuitcode</Item>
4129 <Item>circuitcode</Item>
4130 </Issue>
4131 </Message>
4132 </Messages>
4133 </Member>
4134 <Member Name="StartUp():System.Void">
4135 <Messages>
4136 <Message Id="StartUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
4137 <Issue Name="ShouldBeDiscreteTerm">
4138 <Item>StartUp</Item>
4139 <Item>method</Item>
4140 <Item>StartUp</Item>
4141 <Item>Startup</Item>
4142 </Issue>
4143 </Message>
4144 </Messages>
4145 </Member>
4146 </Members>
4147 </Type>
4148 <Type Name="OpenSimMain">
4149 <Messages>
4150 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4151 <Issue Name="Type">
4152 <Item>Sim</Item>
4153 <Item>OpenSim.OpenSimMain</Item>
4154 </Issue>
4155 </Message>
4156 <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4157 <Issue>
4158 <Item>OpenSim.OpenSimMain</Item>
4159 <Item>System.Timers.Timer, System.Net.Sockets.Socket</Item>
4160 </Issue>
4161 </Message>
4162 </Messages>
4163 <Members>
4164 <Member Name=".ctor()">
4165 <Messages>
4166 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
4167 <Issue>
4168 <Item>OpenSimMain.OpenSimMain()</Item>
4169 <Item>loginserver</Item>
4170 <Item>System.Boolean</Item>
4171 <Item>false</Item>
4172 </Issue>
4173 <Issue>
4174 <Item>OpenSimMain.OpenSimMain()</Item>
4175 <Item>sandbox</Item>
4176 <Item>System.Boolean</Item>
4177 <Item>false</Item>
4178 </Issue>
4179 </Message>
4180 </Messages>
4181 </Member>
4182 <Member Name="_physicsEngine">
4183 <Messages>
4184 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4185 <Issue>
4186 <Item>_physicsEngine</Item>
4187 </Issue>
4188 </Message>
4189 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
4190 <Issue Name="Member">
4191 <Item>_physicsEngine</Item>
4192 </Issue>
4193 </Message>
4194 </Messages>
4195 </Member>
4196 <Member Name="LoadConfigDll(System.String):OpenSim.Framework.Interfaces.SimConfig">
4197 <Messages>
4198 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
4199 <Issue>
4200 <Item>OpenSimMain.LoadConfigDll(String):SimConfig</Item>
4201 </Issue>
4202 </Message>
4203 </Messages>
4204 </Member>
4205 <Member Name="loginserver">
4206 <Messages>
4207 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4208 <Issue>
4209 <Item>loginserver</Item>
4210 </Issue>
4211 </Message>
4212 <Message Id="loginserver" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4213 <Issue Name="Member">
4214 <Item>loginserver</Item>
4215 <Item>OpenSimMain.loginserver</Item>
4216 </Issue>
4217 </Message>
4218 </Messages>
4219 </Member>
4220 <Member Name="sandbox">
4221 <Messages>
4222 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4223 <Issue>
4224 <Item>sandbox</Item>
4225 </Issue>
4226 </Message>
4227 </Messages>
4228 </Member>
4229 <Member Name="Server">
4230 <Messages>
4231 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4232 <Issue>
4233 <Item>Server</Item>
4234 </Issue>
4235 </Message>
4236 </Messages>
4237 </Member>
4238 <Member Name="StartUp():System.Void">
4239 <Messages>
4240 <Message TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601" Created="2007-03-27 04:29:04Z">
4241 <Issue>
4242 <Item>Timer.set_Interval(Double):Void</Item>
4243 <Item>OpenSimMain.StartUp():Void</Item>
4244 </Issue>
4245 </Message>
4246 <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
4247 <Issue>
4248 <Item>OpenSimMain.StartUp():Void</Item>
4249 <Item>System.UInt32.ToString</Item>
4250 <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
4251 </Issue>
4252 <Issue>
4253 <Item>OpenSimMain.StartUp():Void</Item>
4254 <Item>System.UInt32.ToString</Item>
4255 <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
4256 </Issue>
4257 </Message>
4258 </Messages>
4259 </Member>
4260 </Members>
4261 </Type>
4262 <Type Name="OpenSimRoot">
4263 <Messages>
4264 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4265 <Issue Name="Type">
4266 <Item>Sim</Item>
4267 <Item>OpenSim.OpenSimRoot</Item>
4268 </Issue>
4269 </Message>
4270 </Messages>
4271 <Members>
4272 <Member Name=".ctor()">
4273 <Messages>
4274 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
4275 <Issue>
4276 <Item>OpenSimRoot.OpenSimRoot()</Item>
4277 <Item>Sandbox</Item>
4278 <Item>System.Boolean</Item>
4279 <Item>false</Item>
4280 </Issue>
4281 </Message>
4282 </Messages>
4283 </Member>
4284 <Member Name="Application">
4285 <Messages>
4286 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4287 <Issue>
4288 <Item>Application</Item>
4289 </Issue>
4290 </Message>
4291 </Messages>
4292 </Member>
4293 <Member Name="AssetCache">
4294 <Messages>
4295 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4296 <Issue>
4297 <Item>AssetCache</Item>
4298 </Issue>
4299 </Message>
4300 </Messages>
4301 </Member>
4302 <Member Name="Cfg">
4303 <Messages>
4304 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4305 <Issue>
4306 <Item>Cfg</Item>
4307 </Issue>
4308 </Message>
4309 <Message Id="Cfg" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4310 <Issue Name="Member">
4311 <Item>Cfg</Item>
4312 <Item>OpenSimRoot.Cfg</Item>
4313 </Issue>
4314 </Message>
4315 </Messages>
4316 </Member>
4317 <Member Name="ClientThreads">
4318 <Messages>
4319 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4320 <Issue>
4321 <Item>ClientThreads</Item>
4322 </Issue>
4323 </Message>
4324 </Messages>
4325 </Member>
4326 <Member Name="GridServers">
4327 <Messages>
4328 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4329 <Issue>
4330 <Item>GridServers</Item>
4331 </Issue>
4332 </Message>
4333 </Messages>
4334 </Member>
4335 <Member Name="HttpServer">
4336 <Messages>
4337 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4338 <Issue>
4339 <Item>HttpServer</Item>
4340 </Issue>
4341 </Message>
4342 </Messages>
4343 </Member>
4344 <Member Name="InventoryCache">
4345 <Messages>
4346 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4347 <Issue>
4348 <Item>InventoryCache</Item>
4349 </Issue>
4350 </Message>
4351 </Messages>
4352 </Member>
4353 <Member Name="LocalWorld">
4354 <Messages>
4355 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4356 <Issue>
4357 <Item>LocalWorld</Item>
4358 </Issue>
4359 </Message>
4360 </Messages>
4361 </Member>
4362 <Member Name="Sandbox">
4363 <Messages>
4364 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4365 <Issue>
4366 <Item>Sandbox</Item>
4367 </Issue>
4368 </Message>
4369 </Messages>
4370 </Member>
4371 <Member Name="StartUp():System.Void">
4372 <Messages>
4373 <Message Id="StartUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
4374 <Issue Name="ShouldBeDiscreteTerm">
4375 <Item>StartUp</Item>
4376 <Item>method</Item>
4377 <Item>StartUp</Item>
4378 <Item>Startup</Item>
4379 </Issue>
4380 </Message>
4381 </Messages>
4382 </Member>
4383 <Member Name="startuptime">
4384 <Messages>
4385 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4386 <Issue>
4387 <Item>startuptime</Item>
4388 </Issue>
4389 </Message>
4390 <Message Id="startuptime" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4391 <Issue Name="Member">
4392 <Item>startuptime</Item>
4393 <Item>OpenSimRoot.startuptime</Item>
4394 </Issue>
4395 </Message>
4396 </Messages>
4397 </Member>
4398 </Members>
4399 </Type>
4400 <Type Name="QueItem">
4401 <Messages>
4402 <Message Id="Que" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4403 <Issue Name="Type">
4404 <Item>Que</Item>
4405 <Item>OpenSim.QueItem</Item>
4406 </Issue>
4407 </Message>
4408 </Messages>
4409 <Members>
4410 <Member Name="Incoming">
4411 <Messages>
4412 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4413 <Issue>
4414 <Item>Incoming</Item>
4415 </Issue>
4416 </Message>
4417 </Messages>
4418 </Member>
4419 <Member Name="Packet">
4420 <Messages>
4421 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4422 <Issue>
4423 <Item>Packet</Item>
4424 </Issue>
4425 </Message>
4426 </Messages>
4427 </Member>
4428 </Members>
4429 </Type>
4430 <Type Name="SimClient">
4431 <Messages>
4432 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4433 <Issue Name="Type">
4434 <Item>Sim</Item>
4435 <Item>OpenSim.SimClient</Item>
4436 </Issue>
4437 </Message>
4438 <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4439 <Issue>
4440 <Item>OpenSim.SimClient</Item>
4441 <Item>System.Timers.Timer</Item>
4442 </Issue>
4443 </Message>
4444 </Messages>
4445 <Members>
4446 <Member Name=".ctor(System.Net.EndPoint,libsecondlife.Packets.UseCircuitCodePacket)">
4447 <Messages>
4448 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
4449 <Issue>
4450 <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
4451 <Item>Sequence</Item>
4452 <Item>System.UInt32</Item>
4453 <Item>0</Item>
4454 </Issue>
4455 <Issue>
4456 <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
4457 <Item>debug</Item>
4458 <Item>System.Boolean</Item>
4459 <Item>false</Item>
4460 </Issue>
4461 </Message>
4462 <Message TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601" Created="2007-03-27 04:29:04Z">
4463 <Issue>
4464 <Item>Timer.Timer(Double)</Item>
4465 <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
4466 </Issue>
4467 </Message>
4468 <Message Id="1#initialcirpack" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4469 <Issue Name="Parameter">
4470 <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
4471 <Item>initialcirpack</Item>
4472 <Item>initialcirpack</Item>
4473 </Issue>
4474 </Message>
4475 </Messages>
4476 </Member>
4477 <Member Name="AgentID">
4478 <Messages>
4479 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4480 <Issue>
4481 <Item>AgentID</Item>
4482 </Issue>
4483 </Message>
4484 </Messages>
4485 </Member>
4486 <Member Name="CircuitCode">
4487 <Messages>
4488 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4489 <Issue>
4490 <Item>CircuitCode</Item>
4491 </Issue>
4492 </Message>
4493 </Messages>
4494 </Member>
4495 <Member Name="ClientAvatar">
4496 <Messages>
4497 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4498 <Issue>
4499 <Item>ClientAvatar</Item>
4500 </Issue>
4501 </Message>
4502 </Messages>
4503 </Member>
4504 <Member Name="InPacket(libsecondlife.Packets.Packet):System.Void">
4505 <Messages>
4506 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
4507 <Issue Name="Parameter">
4508 <Item>NewPack</Item>
4509 </Issue>
4510 </Message>
4511 </Messages>
4512 </Member>
4513 <Member Name="newAssetFolder">
4514 <Messages>
4515 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
4516 <Issue>
4517 <Item>SimClient.newAssetFolder</Item>
4518 </Issue>
4519 </Message>
4520 </Messages>
4521 </Member>
4522 <Member Name="OutPacket(libsecondlife.Packets.Packet):System.Void">
4523 <Messages>
4524 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
4525 <Issue Name="Parameter">
4526 <Item>NewPack</Item>
4527 </Issue>
4528 </Message>
4529 </Messages>
4530 </Member>
4531 <Member Name="ProcessInPacket(libsecondlife.Packets.Packet):System.Void">
4532 <Messages>
4533 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
4534 <Issue Name="Parameter">
4535 <Item>Pack</Item>
4536 </Issue>
4537 </Message>
4538 <Message Id="wear" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
4539 <Issue>
4540 <Item>SimClient.ProcessInPacket(Packet):Void</Item>
4541 <Item>wear</Item>
4542 <Item>libsecondlife.Packets.AgentIsNowWearingPacket</Item>
4543 </Issue>
4544 </Message>
4545 <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
4546 <Issue Name="IsNullOrEmpty">
4547 <Item>op_Equality</Item>
4548 <Item>""</Item>
4549 <Item>SimClient.ProcessInPacket(Packet):Void</Item>
4550 </Issue>
4551 </Message>
4552 </Messages>
4553 </Member>
4554 <Member Name="ProcessOutPacket(libsecondlife.Packets.Packet):System.Void">
4555 <Messages>
4556 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
4557 <Issue>
4558 <Item>SimClient.ProcessOutPacket(Packet):Void</Item>
4559 <Item>System.Exception</Item>
4560 </Issue>
4561 </Message>
4562 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
4563 <Issue Name="Parameter">
4564 <Item>Pack</Item>
4565 </Issue>
4566 </Message>
4567 </Messages>
4568 </Member>
4569 <Member Name="SecureSessionID">
4570 <Messages>
4571 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4572 <Issue>
4573 <Item>SecureSessionID</Item>
4574 </Issue>
4575 </Message>
4576 </Messages>
4577 </Member>
4578 <Member Name="SessionID">
4579 <Messages>
4580 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4581 <Issue>
4582 <Item>SessionID</Item>
4583 </Issue>
4584 </Message>
4585 </Messages>
4586 </Member>
4587 <Member Name="userEP">
4588 <Messages>
4589 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4590 <Issue>
4591 <Item>userEP</Item>
4592 </Issue>
4593 </Message>
4594 </Messages>
4595 </Member>
4596 </Members>
4597 </Type>
4598 <Type Name="SimConsole">
4599 <Messages>
4600 <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
4601 <Issue>
4602 <Item>OpenSim.SimConsole</Item>
4603 <Item> OpenSim.Framework.Console.ConsoleBase</Item>
4604 </Issue>
4605 </Message>
4606 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4607 <Issue Name="Type">
4608 <Item>Sim</Item>
4609 <Item>OpenSim.SimConsole</Item>
4610 </Issue>
4611 </Message>
4612 </Messages>
4613 <Members>
4614 <Member Name=".ctor(OpenSim.Framework.Console.ConsoleBase+ConsoleType,System.String,System.Int32)">
4615 <Messages>
4616 <Message Id="0#constype" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4617 <Issue Name="Parameter">
4618 <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
4619 <Item>constype</Item>
4620 <Item>constype</Item>
4621 </Issue>
4622 </Message>
4623 <Message Id="1#sparam" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4624 <Issue Name="Parameter">
4625 <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
4626 <Item>sparam</Item>
4627 <Item>sparam</Item>
4628 </Issue>
4629 </Message>
4630 <Message Id="2#iparam" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4631 <Issue Name="Parameter">
4632 <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
4633 <Item>iparam</Item>
4634 <Item>iparam</Item>
4635 </Issue>
4636 </Message>
4637 <Message Id="iparam" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4638 <Issue>
4639 <Item>iparam</Item>
4640 <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
4641 </Issue>
4642 </Message>
4643 <Message Id="sparam" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4644 <Issue>
4645 <Item>sparam</Item>
4646 <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
4647 </Issue>
4648 </Message>
4649 </Messages>
4650 </Member>
4651 <Member Name="CmdPrompt(System.String,System.String):System.String">
4652 <Messages>
4653 <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
4654 <Issue Name="IsNullOrEmpty">
4655 <Item>op_Equality</Item>
4656 <Item>""</Item>
4657 <Item>SimConsole.CmdPrompt(String, String):String</Item>
4658 </Issue>
4659 </Message>
4660 </Messages>
4661 </Member>
4662 <Member Name="ConsType">
4663 <Messages>
4664 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
4665 <Issue>
4666 <Item>SimConsole.ConsType</Item>
4667 </Issue>
4668 </Message>
4669 </Messages>
4670 </Member>
4671 <Member Name="MainConsolePrompt():System.Void">
4672 <Messages>
4673 <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
4674 <Issue>
4675 <Item>SimConsole.MainConsolePrompt():Void</Item>
4676 <Item>System.UInt64.ToString</Item>
4677 <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
4678 </Issue>
4679 </Message>
4680 </Messages>
4681 </Member>
4682 <Member Name="RunCmd(System.String,System.String[]):System.Object">
4683 <Messages>
4684 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
4685 <Issue>
4686 <Item>'cmdparams'</Item>
4687 <Item>SimConsole.RunCmd(String, String[]):Object</Item>
4688 </Issue>
4689 </Message>
4690 </Messages>
4691 </Member>
4692 <Member Name="ShowCommands(System.String):System.Void">
4693 <Messages>
4694 <Message Id="System.String.Format(System.String,System.Object[])" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
4695 <Issue>
4696 <Item>SimConsole.ShowCommands(String):Void</Item>
4697 <Item>System.String.Format(System.String,System.Object[])</Item>
4698 <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
4699 </Issue>
4700 <Issue>
4701 <Item>SimConsole.ShowCommands(String):Void</Item>
4702 <Item>System.String.Format(System.String,System.Object[])</Item>
4703 <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
4704 </Issue>
4705 </Message>
4706 </Messages>
4707 </Member>
4708 </Members>
4709 </Type>
4710 <Type Name="VersionInfo">
4711 <Members>
4712 <Member Name="Version">
4713 <Messages>
4714 <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
4715 <Issue>
4716 <Item>Version</Item>
4717 </Issue>
4718 </Message>
4719 </Messages>
4720 </Member>
4721 </Members>
4722 </Type>
4723 </Types>
4724 </Namespace>
4725 <Namespace Name="OpenSim.Assets">
4726 <Types>
4727 <Type Name="AssetCache">
4728 <Members>
4729 <Member Name="AddTextureRequest(OpenSim.SimClient,libsecondlife.LLUUID):System.Void">
4730 <Messages>
4731 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
4732 <Issue Name="ParameterId">
4733 <Item>ID</Item>
4734 <Item>imageID</Item>
4735 <Item>Id</Item>
4736 </Issue>
4737 </Message>
4738 </Messages>
4739 </Member>
4740 <Member Name="AssetRequests">
4741 <Messages>
4742 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4743 <Issue>
4744 <Item>AssetRequests</Item>
4745 </Issue>
4746 </Message>
4747 <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
4748 <Issue>
4749 <Item>System.Collections.Generic.List`1&lt;OpenSim.Assets.AssetRequest&gt;</Item>
4750 <Item>AssetCache.AssetRequests</Item>
4751 </Issue>
4752 </Message>
4753 </Messages>
4754 </Member>
4755 <Member Name="Assets">
4756 <Messages>
4757 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4758 <Issue>
4759 <Item>Assets</Item>
4760 </Issue>
4761 </Message>
4762 </Messages>
4763 </Member>
4764 <Member Name="CloneAsset(libsecondlife.LLUUID,OpenSim.Assets.AssetInfo):OpenSim.Assets.AssetInfo">
4765 <Messages>
4766 <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
4767 <Issue>
4768 <Item>sourceAsset</Item>
4769 <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
4770 <Item>OpenSim.Assets.AssetInfo</Item>
4771 <Item>OpenSim.Framework.Assets.AssetBase</Item>
4772 </Issue>
4773 </Message>
4774 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4775 <Issue>
4776 <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
4777 </Issue>
4778 </Message>
4779 <Message Id="newOwner" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4780 <Issue>
4781 <Item>newOwner</Item>
4782 <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
4783 </Issue>
4784 </Message>
4785 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
4786 <Issue>
4787 <Item>'sourceAsset'</Item>
4788 <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
4789 </Issue>
4790 </Message>
4791 </Messages>
4792 </Member>
4793 <Member Name="CloneImage(libsecondlife.LLUUID,OpenSim.Assets.TextureImage):OpenSim.Assets.TextureImage">
4794 <Messages>
4795 <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
4796 <Issue>
4797 <Item>source</Item>
4798 <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
4799 <Item>OpenSim.Assets.TextureImage</Item>
4800 <Item>OpenSim.Framework.Assets.AssetBase</Item>
4801 </Issue>
4802 </Message>
4803 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4804 <Issue>
4805 <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
4806 </Issue>
4807 </Message>
4808 <Message Id="newOwner" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
4809 <Issue>
4810 <Item>newOwner</Item>
4811 <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
4812 </Issue>
4813 </Message>
4814 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
4815 <Issue>
4816 <Item>'source'</Item>
4817 <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
4818 </Issue>
4819 </Message>
4820 </Messages>
4821 </Member>
4822 <Member Name="CreateNewInventorySet(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase[]">
4823 <Messages>
4824 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
4825 <Issue Name="ParameterId">
4826 <Item>ID</Item>
4827 <Item>agentID</Item>
4828 <Item>Id</Item>
4829 </Issue>
4830 </Message>
4831 </Messages>
4832 </Member>
4833 <Member Name="GetAsset(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
4834 <Messages>
4835 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
4836 <Issue Name="ParameterId">
4837 <Item>ID</Item>
4838 <Item>assetID</Item>
4839 <Item>Id</Item>
4840 </Issue>
4841 </Message>
4842 </Messages>
4843 </Member>
4844 <Member Name="RequestedAssets">
4845 <Messages>
4846 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4847 <Issue>
4848 <Item>RequestedAssets</Item>
4849 </Issue>
4850 </Message>
4851 </Messages>
4852 </Member>
4853 <Member Name="RequestedTextures">
4854 <Messages>
4855 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4856 <Issue>
4857 <Item>RequestedTextures</Item>
4858 </Issue>
4859 </Message>
4860 </Messages>
4861 </Member>
4862 <Member Name="RunAssetManager():System.Void">
4863 <Messages>
4864 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
4865 <Issue>
4866 <Item>AssetCache.RunAssetManager():Void</Item>
4867 <Item>System.Exception</Item>
4868 </Issue>
4869 </Message>
4870 </Messages>
4871 </Member>
4872 <Member Name="TextureRequests">
4873 <Messages>
4874 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4875 <Issue>
4876 <Item>TextureRequests</Item>
4877 </Issue>
4878 </Message>
4879 <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
4880 <Issue>
4881 <Item>System.Collections.Generic.List`1&lt;OpenSim.Assets.AssetRequest&gt;</Item>
4882 <Item>AssetCache.TextureRequests</Item>
4883 </Issue>
4884 </Message>
4885 </Messages>
4886 </Member>
4887 <Member Name="Textures">
4888 <Messages>
4889 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4890 <Issue>
4891 <Item>Textures</Item>
4892 </Issue>
4893 </Message>
4894 </Messages>
4895 </Member>
4896 </Members>
4897 </Type>
4898 <Type Name="AssetInfo">
4899 <Messages>
4900 <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
4901 <Issue>
4902 <Item>OpenSim.Assets.AssetInfo</Item>
4903 <Item> OpenSim.Framework.Assets.AssetBase</Item>
4904 </Issue>
4905 </Message>
4906 </Messages>
4907 <Members>
4908 <Member Name=".ctor(OpenSim.Framework.Assets.AssetBase)">
4909 <Messages>
4910 <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4911 <Issue Name="Parameter">
4912 <Item>AssetInfo.AssetInfo(AssetBase)</Item>
4913 <Item>a</Item>
4914 <Item>aBase</Item>
4915 </Issue>
4916 </Message>
4917 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
4918 <Issue>
4919 <Item>'aBase'</Item>
4920 <Item>AssetInfo.AssetInfo(AssetBase)</Item>
4921 </Issue>
4922 </Message>
4923 </Messages>
4924 </Member>
4925 </Members>
4926 </Type>
4927 <Type Name="AssetRequest">
4928 <Members>
4929 <Member Name=".ctor()">
4930 <Messages>
4931 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
4932 <Issue>
4933 <Item>AssetRequest.AssetRequest()</Item>
4934 <Item>DataPointer</Item>
4935 <Item>System.Int64</Item>
4936 <Item>0</Item>
4937 </Issue>
4938 <Issue>
4939 <Item>AssetRequest.AssetRequest()</Item>
4940 <Item>NumPackets</Item>
4941 <Item>System.Int32</Item>
4942 <Item>0</Item>
4943 </Issue>
4944 <Issue>
4945 <Item>AssetRequest.AssetRequest()</Item>
4946 <Item>PacketCounter</Item>
4947 <Item>System.Int32</Item>
4948 <Item>0</Item>
4949 </Issue>
4950 </Message>
4951 </Messages>
4952 </Member>
4953 <Member Name="AssetInf">
4954 <Messages>
4955 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4956 <Issue>
4957 <Item>AssetInf</Item>
4958 </Issue>
4959 </Message>
4960 </Messages>
4961 </Member>
4962 <Member Name="DataPointer">
4963 <Messages>
4964 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4965 <Issue>
4966 <Item>DataPointer</Item>
4967 </Issue>
4968 </Message>
4969 </Messages>
4970 </Member>
4971 <Member Name="ImageInfo">
4972 <Messages>
4973 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4974 <Issue>
4975 <Item>ImageInfo</Item>
4976 </Issue>
4977 </Message>
4978 </Messages>
4979 </Member>
4980 <Member Name="IsTextureRequest">
4981 <Messages>
4982 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4983 <Issue>
4984 <Item>IsTextureRequest</Item>
4985 </Issue>
4986 </Message>
4987 </Messages>
4988 </Member>
4989 <Member Name="NumPackets">
4990 <Messages>
4991 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
4992 <Issue>
4993 <Item>NumPackets</Item>
4994 </Issue>
4995 </Message>
4996 <Message Id="Num" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
4997 <Issue Name="Member">
4998 <Item>Num</Item>
4999 <Item>AssetRequest.NumPackets</Item>
5000 </Issue>
5001 </Message>
5002 </Messages>
5003 </Member>
5004 <Member Name="PacketCounter">
5005 <Messages>
5006 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5007 <Issue>
5008 <Item>PacketCounter</Item>
5009 </Issue>
5010 </Message>
5011 </Messages>
5012 </Member>
5013 <Member Name="RequestAssetID">
5014 <Messages>
5015 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5016 <Issue>
5017 <Item>RequestAssetID</Item>
5018 </Issue>
5019 </Message>
5020 </Messages>
5021 </Member>
5022 <Member Name="RequestUser">
5023 <Messages>
5024 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5025 <Issue>
5026 <Item>RequestUser</Item>
5027 </Issue>
5028 </Message>
5029 </Messages>
5030 </Member>
5031 <Member Name="TransferRequestID">
5032 <Messages>
5033 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5034 <Issue>
5035 <Item>TransferRequestID</Item>
5036 </Issue>
5037 </Message>
5038 </Messages>
5039 </Member>
5040 </Members>
5041 </Type>
5042 <Type Name="InventoryCache">
5043 <Members>
5044 <Member Name="AddNewInventoryItem(OpenSim.SimClient,libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):libsecondlife.LLUUID">
5045 <Messages>
5046 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
5047 <Issue Name="ParameterId">
5048 <Item>ID</Item>
5049 <Item>folderID</Item>
5050 <Item>Id</Item>
5051 </Issue>
5052 </Message>
5053 </Messages>
5054 </Member>
5055 <Member Name="ClientLeaving(libsecondlife.LLUUID):System.Void">
5056 <Messages>
5057 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
5058 <Issue Name="ParameterId">
5059 <Item>ID</Item>
5060 <Item>clientID</Item>
5061 <Item>Id</Item>
5062 </Issue>
5063 </Message>
5064 </Messages>
5065 </Member>
5066 <Member Name="CreateNewInventoryFolder(OpenSim.SimClient,libsecondlife.LLUUID):System.Boolean">
5067 <Messages>
5068 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
5069 <Issue Name="ParameterId">
5070 <Item>ID</Item>
5071 <Item>folderID</Item>
5072 <Item>Id</Item>
5073 </Issue>
5074 </Message>
5075 </Messages>
5076 </Member>
5077 <Member Name="CreateNewInventoryFolder(OpenSim.SimClient,libsecondlife.LLUUID,System.UInt16):System.Boolean">
5078 <Messages>
5079 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
5080 <Issue Name="ParameterId">
5081 <Item>ID</Item>
5082 <Item>folderID</Item>
5083 <Item>Id</Item>
5084 </Issue>
5085 </Message>
5086 </Messages>
5087 </Member>
5088 <Member Name="FetchInventory(OpenSim.SimClient,libsecondlife.Packets.FetchInventoryPacket):System.Void">
5089 <Messages>
5090 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5091 <Issue Name="Parameter">
5092 <Item>FetchItems</Item>
5093 </Issue>
5094 </Message>
5095 </Messages>
5096 </Member>
5097 <Member Name="FetchInventoryDescendents(OpenSim.SimClient,libsecondlife.Packets.FetchInventoryDescendentsPacket):System.Void">
5098 <Messages>
5099 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5100 <Issue Name="Parameter">
5101 <Item>FetchDescend</Item>
5102 </Issue>
5103 </Message>
5104 </Messages>
5105 </Member>
5106 <Member Name="GetAgentsInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
5107 <Messages>
5108 <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
5109 <Issue Name="ParameterId">
5110 <Item>ID</Item>
5111 <Item>agentID</Item>
5112 <Item>Id</Item>
5113 </Issue>
5114 </Message>
5115 </Messages>
5116 </Member>
5117 <Member Name="UpdateInventoryItem(OpenSim.SimClient,libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Boolean">
5118 <Messages>
5119 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
5120 <Issue Name="ParameterId">
5121 <Item>ID</Item>
5122 <Item>itemID</Item>
5123 <Item>Id</Item>
5124 </Issue>
5125 </Message>
5126 </Messages>
5127 </Member>
5128 </Members>
5129 </Type>
5130 <Type Name="TextureImage">
5131 <Messages>
5132 <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
5133 <Issue>
5134 <Item>OpenSim.Assets.TextureImage</Item>
5135 <Item> OpenSim.Framework.Assets.AssetBase</Item>
5136 </Issue>
5137 </Message>
5138 </Messages>
5139 <Members>
5140 <Member Name=".ctor(OpenSim.Framework.Assets.AssetBase)">
5141 <Messages>
5142 <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5143 <Issue Name="Parameter">
5144 <Item>TextureImage.TextureImage(AssetBase)</Item>
5145 <Item>a</Item>
5146 <Item>aBase</Item>
5147 </Issue>
5148 </Message>
5149 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
5150 <Issue>
5151 <Item>'aBase'</Item>
5152 <Item>TextureImage.TextureImage(AssetBase)</Item>
5153 </Issue>
5154 </Message>
5155 </Messages>
5156 </Member>
5157 </Members>
5158 </Type>
5159 </Types>
5160 </Namespace>
5161 <Namespace Name="OpenSim.CAPS">
5162 <Types>
5163 <Type Name="SimCAPSHTTPServer">
5164 <Messages>
5165 <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5166 <Issue Name="Type">
5167 <Item>Sim</Item>
5168 <Item>OpenSim.CAPS.SimCAPSHTTPServer</Item>
5169 </Issue>
5170 </Message>
5171 <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
5172 <Issue Name="Type">
5173 <Item>SimCAPSHTTPServer</Item>
5174 </Issue>
5175 </Message>
5176 <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
5177 <Issue>
5178 <Item>OpenSim.CAPS.SimCAPSHTTPServer</Item>
5179 <Item>System.Net.HttpListener</Item>
5180 </Issue>
5181 </Message>
5182 </Messages>
5183 <Members>
5184 <Member Name="HandleRequest(System.Object):System.Void">
5185 <Messages>
5186 <Message Id="0#stateinfo" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5187 <Issue Name="Parameter">
5188 <Item>SimCAPSHTTPServer.HandleRequest(Object):Void</Item>
5189 <Item>stateinfo</Item>
5190 <Item>stateinfo</Item>
5191 </Issue>
5192 </Message>
5193 </Messages>
5194 </Member>
5195 <Member Name="HTTPD">
5196 <Messages>
5197 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5198 <Issue>
5199 <Item>HTTPD</Item>
5200 </Issue>
5201 </Message>
5202 </Messages>
5203 </Member>
5204 <Member Name="Listener">
5205 <Messages>
5206 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5207 <Issue>
5208 <Item>Listener</Item>
5209 </Issue>
5210 </Message>
5211 </Messages>
5212 </Member>
5213 <Member Name="LoadAdminPage():System.Void">
5214 <Messages>
5215 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
5216 <Issue>
5217 <Item>SimCAPSHTTPServer.LoadAdminPage():Void</Item>
5218 <Item>System.Exception</Item>
5219 </Issue>
5220 </Message>
5221 </Messages>
5222 </Member>
5223 <Member Name="ParseLLSDXML(System.String):System.String">
5224 <Messages>
5225 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
5226 <Issue>
5227 <Item>SimCAPSHTTPServer.ParseLLSDXML(String):String</Item>
5228 </Issue>
5229 </Message>
5230 <Message Id="requestBody" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
5231 <Issue>
5232 <Item>requestBody</Item>
5233 <Item>SimCAPSHTTPServer.ParseLLSDXML(String):String</Item>
5234 </Issue>
5235 </Message>
5236 </Messages>
5237 </Member>
5238 <Member Name="ParseREST(System.String,System.String,System.String):System.String">
5239 <Messages>
5240 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
5241 <Issue>
5242 <Item>SimCAPSHTTPServer.ParseREST(String, String, String):String</Item>
5243 <Item>System.Exception</Item>
5244 </Issue>
5245 </Message>
5246 <Message Id="System.String.Format(System.String,System.Object[])" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5247 <Issue>
5248 <Item>SimCAPSHTTPServer.ParseREST(String, String, String):String</Item>
5249 <Item>System.String.Format(System.String,System.Object[])</Item>
5250 <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
5251 </Issue>
5252 </Message>
5253 </Messages>
5254 </Member>
5255 <Member Name="ParseXMLRPC(System.String):System.String">
5256 <Messages>
5257 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
5258 <Issue>
5259 <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
5260 <Item>System.Exception</Item>
5261 </Issue>
5262 </Message>
5263 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
5264 <Issue>
5265 <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
5266 </Issue>
5267 </Message>
5268 <Message Id="System.Convert.ToUInt32(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5269 <Issue>
5270 <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
5271 <Item>System.Convert.ToUInt32(System.Object)</Item>
5272 <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
5273 </Issue>
5274 </Message>
5275 </Messages>
5276 </Member>
5277 <Member Name="StartHTTP():System.Void">
5278 <Messages>
5279 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
5280 <Issue>
5281 <Item>SimCAPSHTTPServer.StartHTTP():Void</Item>
5282 <Item>System.Exception</Item>
5283 </Issue>
5284 </Message>
5285 <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
5286 <Issue Name="Member">
5287 <Item>SimCAPSHTTPServer.StartHTTP():Void</Item>
5288 </Issue>
5289 </Message>
5290 </Messages>
5291 </Member>
5292 </Members>
5293 </Type>
5294 </Types>
5295 </Namespace>
5296 <Namespace Name="OpenSim.types">
5297 <Types>
5298 <Type Name="Mesh">
5299 <Members>
5300 <Member Name="mesh">
5301 <Messages>
5302 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5303 <Issue>
5304 <Item>mesh</Item>
5305 </Issue>
5306 </Message>
5307 <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
5308 <Issue>
5309 <Item>System.Collections.Generic.List`1&lt;OpenSim.types.Triangle&gt;</Item>
5310 <Item>Mesh.mesh</Item>
5311 </Issue>
5312 </Message>
5313 </Messages>
5314 </Member>
5315 <Member Name="op_Addition(OpenSim.types.Mesh,OpenSim.types.Mesh):OpenSim.types.Mesh">
5316 <Messages>
5317 <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5318 <Issue Name="ParameterOneLetter">
5319 <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
5320 <Item>a</Item>
5321 </Issue>
5322 </Message>
5323 <Message Id="1#b" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5324 <Issue Name="ParameterOneLetter">
5325 <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
5326 <Item>b</Item>
5327 </Issue>
5328 </Message>
5329 <Message TypeName="OperatorOverloadsHaveNamedAlternates" Category="Microsoft.Usage" CheckId="CA2225" Created="2007-03-27 04:29:04Z">
5330 <Issue>
5331 <Item>Add</Item>
5332 <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
5333 </Issue>
5334 </Message>
5335 <Message TypeName="OverloadOperatorEqualsOnOverloadingAddAndSubtract" Category="Microsoft.Design" CheckId="CA1013" Created="2007-03-27 04:29:04Z">
5336 <Issue>
5337 <Item>Mesh</Item>
5338 <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
5339 </Issue>
5340 </Message>
5341 </Messages>
5342 </Member>
5343 </Members>
5344 </Type>
5345 <Type Name="Triangle">
5346 <Members>
5347 <Member Name=".ctor(Axiom.MathLib.Vector3,Axiom.MathLib.Vector3,Axiom.MathLib.Vector3)">
5348 <Messages>
5349 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5350 <Issue Name="Parameter">
5351 <Item>A</Item>
5352 </Issue>
5353 </Message>
5354 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5355 <Issue Name="Parameter">
5356 <Item>B</Item>
5357 </Issue>
5358 </Message>
5359 <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5360 <Issue Name="Parameter">
5361 <Item>C</Item>
5362 </Issue>
5363 </Message>
5364 <Message Id="0#A" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5365 <Issue Name="ParameterOneLetter">
5366 <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
5367 <Item>A</Item>
5368 </Issue>
5369 </Message>
5370 <Message Id="1#B" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5371 <Issue Name="ParameterOneLetter">
5372 <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
5373 <Item>B</Item>
5374 </Issue>
5375 </Message>
5376 <Message Id="2#C" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5377 <Issue Name="ParameterOneLetter">
5378 <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
5379 <Item>C</Item>
5380 </Issue>
5381 </Message>
5382 </Messages>
5383 </Member>
5384 </Members>
5385 </Type>
5386 </Types>
5387 </Namespace>
5388 <Namespace Name="OpenSim.UserServer">
5389 <Types>
5390 <Type Name="LocalUserProfileManager">
5391 <Members>
5392 <Member Name="CustomiseResponse(System.Collections.Hashtable&amp;,OpenSim.Framework.User.UserProfile):System.Void">
5393 <Messages>
5394 <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5395 <Issue>
5396 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5397 <Item>System.Int32.ToString</Item>
5398 <Item>System.Int32.ToString(System.IFormatProvider)</Item>
5399 </Issue>
5400 <Issue>
5401 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5402 <Item>System.Int32.ToString</Item>
5403 <Item>System.Int32.ToString(System.IFormatProvider)</Item>
5404 </Issue>
5405 </Message>
5406 <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5407 <Issue>
5408 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5409 <Item>System.Single.ToString</Item>
5410 <Item>System.Single.ToString(System.IFormatProvider)</Item>
5411 </Issue>
5412 <Issue>
5413 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5414 <Item>System.Single.ToString</Item>
5415 <Item>System.Single.ToString(System.IFormatProvider)</Item>
5416 </Issue>
5417 <Issue>
5418 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5419 <Item>System.Single.ToString</Item>
5420 <Item>System.Single.ToString(System.IFormatProvider)</Item>
5421 </Issue>
5422 <Issue>
5423 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5424 <Item>System.Single.ToString</Item>
5425 <Item>System.Single.ToString(System.IFormatProvider)</Item>
5426 </Issue>
5427 <Issue>
5428 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5429 <Item>System.Single.ToString</Item>
5430 <Item>System.Single.ToString(System.IFormatProvider)</Item>
5431 </Issue>
5432 <Issue>
5433 <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
5434 <Item>System.Single.ToString</Item>
5435 <Item>System.Single.ToString(System.IFormatProvider)</Item>
5436 </Issue>
5437 </Message>
5438 </Messages>
5439 </Member>
5440 </Members>
5441 </Type>
5442 <Type Name="LoginServer">
5443 <Messages>
5444 <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
5445 <Issue>
5446 <Item>OpenSim.UserServer.LoginServer</Item>
5447 <Item> OpenSim.Framework.Grid.LoginService</Item>
5448 </Issue>
5449 </Message>
5450 <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
5451 <Issue>
5452 <Item>OpenSim.UserServer.LoginServer</Item>
5453 <Item>System.Net.Sockets.Socket</Item>
5454 </Issue>
5455 </Message>
5456 <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
5457 <Issue Name="Type">
5458 <Item>Login</Item>
5459 <Item>LoginServer</Item>
5460 <Item>LogOn</Item>
5461 </Issue>
5462 </Message>
5463 </Messages>
5464 <Members>
5465 <Member Name=".ctor(OpenSim.Framework.Interfaces.IGridServer)">
5466 <Messages>
5467 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
5468 <Issue>
5469 <Item>LoginServer.LoginServer(IGridServer)</Item>
5470 <Item>_needPasswd</Item>
5471 <Item>System.Boolean</Item>
5472 <Item>false</Item>
5473 </Issue>
5474 <Issue>
5475 <Item>LoginServer.LoginServer(IGridServer)</Item>
5476 <Item>userAccounts</Item>
5477 <Item>System.Boolean</Item>
5478 <Item>false</Item>
5479 </Issue>
5480 </Message>
5481 </Messages>
5482 </Member>
5483 <Member Name="Authenticate(System.String,System.String,System.String):System.Boolean">
5484 <Messages>
5485 <Message Id="2#passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5486 <Issue Name="Parameter">
5487 <Item>LoginServer.Authenticate(String, String, String):Boolean</Item>
5488 <Item>passwd</Item>
5489 <Item>passwd</Item>
5490 </Issue>
5491 </Message>
5492 </Messages>
5493 </Member>
5494 <Member Name="clientAddress">
5495 <Messages>
5496 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5497 <Issue>
5498 <Item>clientAddress</Item>
5499 </Issue>
5500 </Message>
5501 </Messages>
5502 </Member>
5503 <Member Name="CustomiseLoginResponse(System.Collections.Hashtable,System.String,System.String):System.Void">
5504 <Messages>
5505 <Message Id="Customise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5506 <Issue Name="Member">
5507 <Item>Customise</Item>
5508 <Item>LoginServer.CustomiseLoginResponse(Hashtable, String, String):Void</Item>
5509 </Issue>
5510 </Message>
5511 <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
5512 <Issue Name="Member">
5513 <Item>Login</Item>
5514 <Item>CustomiseLoginResponse</Item>
5515 <Item>LogOn</Item>
5516 </Issue>
5517 </Message>
5518 </Messages>
5519 </Member>
5520 <Member Name="EncodePassword(System.String):System.String">
5521 <Messages>
5522 <Message Id="System.String.ToLower" TypeName="SpecifyCultureInfo" Category="Microsoft.Globalization" CheckId="CA1304" Created="2007-03-27 04:29:04Z">
5523 <Issue>
5524 <Item>LoginServer.EncodePassword(String):String</Item>
5525 <Item>System.String.ToLower</Item>
5526 <Item>System.String.ToLower(System.Globalization.CultureInfo)</Item>
5527 </Issue>
5528 </Message>
5529 </Messages>
5530 </Member>
5531 <Member Name="GetAgentId(System.String,System.String):libsecondlife.LLUUID">
5532 <Messages>
5533 <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5534 <Issue>
5535 <Item>LoginServer.GetAgentId(String, String):LLUUID</Item>
5536 <Item>System.Int32.ToString(System.String)</Item>
5537 <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
5538 </Issue>
5539 </Message>
5540 </Messages>
5541 </Member>
5542 <Member Name="InitializeLogin():System.Void">
5543 <Messages>
5544 <Message Id="OpenSim.Framework.User.UserProfileManager.SetKeys(System.String,System.String,System.String,System.String)" TypeName="DoNotPassLiteralsAsLocalizedParameters" Category="Microsoft.Globalization" CheckId="CA1303" Created="2007-03-27 04:29:04Z">
5545 <Issue>
5546 <Item>LoginServer.InitializeLogin():Void</Item>
5547 <Item>4</Item>
5548 <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
5549 <Item>Welcome to OpenSim</Item>
5550 </Issue>
5551 </Message>
5552 <Message Id="Sim" TypeName="LiteralsShouldBeSpelledCorrectly" Category="Microsoft.Usage" CheckId="CA2204" Created="2007-03-27 04:29:04Z">
5553 <Issue>
5554 <Item>Sim</Item>
5555 <Item>OpenSim</Item>
5556 </Issue>
5557 </Message>
5558 </Messages>
5559 </Member>
5560 <Member Name="LoginRequest(System.IO.StreamReader,System.IO.StreamWriter):System.Void">
5561 <Messages>
5562 <Message TypeName="DoNotRaiseReservedExceptionTypes" Category="Microsoft.Usage" CheckId="CA2201" Created="2007-03-27 04:29:04Z">
5563 <Issue Name="TooGeneric">
5564 <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
5565 <Item>System.Exception</Item>
5566 </Issue>
5567 </Message>
5568 <Message Id="System.Convert.ToInt32(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5569 <Issue>
5570 <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
5571 <Item>System.Convert.ToInt32(System.String)</Item>
5572 <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
5573 </Issue>
5574 </Message>
5575 <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
5576 <Issue Name="IsNullOrEmpty">
5577 <Item>op_Inequality</Item>
5578 <Item>""</Item>
5579 <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
5580 </Issue>
5581 </Message>
5582 </Messages>
5583 </Member>
5584 <Member Name="ProcessXmlRequest(Nwc.XmlRpc.XmlRpcRequest,System.IO.StreamWriter):System.Boolean">
5585 <Messages>
5586 <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
5587 <Issue>
5588 <Item>writer</Item>
5589 <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
5590 <Item>System.IO.StreamWriter</Item>
5591 <Item>System.IO.TextWriter</Item>
5592 </Issue>
5593 </Message>
5594 <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5595 <Issue>
5596 <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
5597 <Item>System.Int32.ToString</Item>
5598 <Item>System.Int32.ToString(System.IFormatProvider)</Item>
5599 </Issue>
5600 </Message>
5601 <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
5602 <Issue>
5603 <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
5604 <Item>System.Int32.ToString(System.String)</Item>
5605 <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
5606 </Issue>
5607 </Message>
5608 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
5609 <Issue>
5610 <Item>'request'</Item>
5611 <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
5612 </Issue>
5613 <Issue>
5614 <Item>'writer'</Item>
5615 <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
5616 </Issue>
5617 <Issue>
5618 <Item>'writer'</Item>
5619 <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
5620 </Issue>
5621 </Message>
5622 </Messages>
5623 </Member>
5624 <Member Name="remoteAddress">
5625 <Messages>
5626 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5627 <Issue>
5628 <Item>remoteAddress</Item>
5629 </Issue>
5630 </Message>
5631 </Messages>
5632 </Member>
5633 <Member Name="RunLogin():System.Void">
5634 <Messages>
5635 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
5636 <Issue>
5637 <Item>LoginServer.RunLogin():Void</Item>
5638 <Item>System.Exception</Item>
5639 </Issue>
5640 <Issue>
5641 <Item>LoginServer.RunLogin():Void</Item>
5642 <Item>System.Exception</Item>
5643 </Issue>
5644 </Message>
5645 <Message Id="clientEndPoint" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
5646 <Issue>
5647 <Item>LoginServer.RunLogin():Void</Item>
5648 <Item>clientEndPoint</Item>
5649 <Item>System.Net.IPEndPoint</Item>
5650 </Issue>
5651 </Message>
5652 </Messages>
5653 </Member>
5654 </Members>
5655 </Type>
5656 </Types>
5657 </Namespace>
5658 <Namespace Name="OpenSim.world">
5659 <Types>
5660 <Type Name="Avatar">
5661 <Members>
5662 <Member Name=".cctor()">
5663 <Messages>
5664 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
5665 <Issue>
5666 <Item>Avatar.Avatar()</Item>
5667 <Item>PhysicsEngineFlying</Item>
5668 <Item>System.Boolean</Item>
5669 <Item>false</Item>
5670 </Issue>
5671 </Message>
5672 </Messages>
5673 </Member>
5674 <Member Name=".ctor(OpenSim.SimClient)">
5675 <Messages>
5676 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
5677 <Issue>
5678 <Item>Avatar.Avatar(SimClient)</Item>
5679 <Item>_updateCount</Item>
5680 <Item>System.Int16</Item>
5681 <Item>0</Item>
5682 </Issue>
5683 <Issue>
5684 <Item>Avatar.Avatar(SimClient)</Item>
5685 <Item>avatarAppearanceTexture</Item>
5686 <Item>libsecondlife.LLObject+TextureEntry</Item>
5687 <Item>null</Item>
5688 </Issue>
5689 <Issue>
5690 <Item>Avatar.Avatar(SimClient)</Item>
5691 <Item>movementflag</Item>
5692 <Item>System.Byte</Item>
5693 <Item>0</Item>
5694 </Issue>
5695 <Issue>
5696 <Item>Avatar.Avatar(SimClient)</Item>
5697 <Item>updateflag</Item>
5698 <Item>System.Boolean</Item>
5699 <Item>false</Item>
5700 </Issue>
5701 </Message>
5702 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5703 <Issue Name="Parameter">
5704 <Item>TheClient</Item>
5705 </Issue>
5706 </Message>
5707 </Messages>
5708 </Member>
5709 <Member Name="anim_seq">
5710 <Messages>
5711 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5712 <Issue>
5713 <Item>anim_seq</Item>
5714 </Issue>
5715 </Message>
5716 <Message Id="anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5717 <Issue Name="Member">
5718 <Item>anim</Item>
5719 <Item>Avatar.anim_seq</Item>
5720 </Issue>
5721 </Message>
5722 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
5723 <Issue Name="Member">
5724 <Item>anim_seq</Item>
5725 </Issue>
5726 </Message>
5727 </Messages>
5728 </Member>
5729 <Member Name="Animations">
5730 <Messages>
5731 <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
5732 <Issue>
5733 <Item>Animations</Item>
5734 </Issue>
5735 </Message>
5736 </Messages>
5737 </Member>
5738 <Member Name="CompleteMovement(OpenSim.world.World):System.Void">
5739 <Messages>
5740 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5741 <Issue Name="Parameter">
5742 <Item>RegionInfo</Item>
5743 </Issue>
5744 </Message>
5745 <Message Id="RegionInfo" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
5746 <Issue>
5747 <Item>RegionInfo</Item>
5748 <Item>Avatar.CompleteMovement(World):Void</Item>
5749 </Issue>
5750 </Message>
5751 </Messages>
5752 </Member>
5753 <Member Name="ControllingClient">
5754 <Messages>
5755 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5756 <Issue>
5757 <Item>ControllingClient</Item>
5758 </Issue>
5759 </Message>
5760 </Messages>
5761 </Member>
5762 <Member Name="current_anim">
5763 <Messages>
5764 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5765 <Issue>
5766 <Item>current_anim</Item>
5767 </Issue>
5768 </Message>
5769 <Message Id="anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5770 <Issue Name="Member">
5771 <Item>anim</Item>
5772 <Item>Avatar.current_anim</Item>
5773 </Issue>
5774 </Message>
5775 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
5776 <Issue Name="Member">
5777 <Item>current_anim</Item>
5778 </Issue>
5779 </Message>
5780 </Messages>
5781 </Member>
5782 <Member Name="firstname">
5783 <Messages>
5784 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5785 <Issue>
5786 <Item>firstname</Item>
5787 </Issue>
5788 </Message>
5789 <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5790 <Issue Name="Member">
5791 <Item>firstname</Item>
5792 <Item>Avatar.firstname</Item>
5793 </Issue>
5794 </Message>
5795 </Messages>
5796 </Member>
5797 <Member Name="lastname">
5798 <Messages>
5799 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5800 <Issue>
5801 <Item>lastname</Item>
5802 </Issue>
5803 </Message>
5804 <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5805 <Issue Name="Member">
5806 <Item>lastname</Item>
5807 <Item>Avatar.lastname</Item>
5808 </Issue>
5809 </Message>
5810 </Messages>
5811 </Member>
5812 <Member Name="LoadAnims():System.Void">
5813 <Messages>
5814 <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5815 <Issue Name="Member">
5816 <Item>Anims</Item>
5817 <Item>Avatar.LoadAnims():Void</Item>
5818 </Issue>
5819 </Message>
5820 </Messages>
5821 </Member>
5822 <Member Name="PhysActor">
5823 <Messages>
5824 <Message TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044" Created="2007-03-27 04:29:04Z">
5825 <Issue>
5826 <Item>PhysActor</Item>
5827 </Issue>
5828 </Message>
5829 </Messages>
5830 </Member>
5831 <Member Name="PhysicsEngineFlying">
5832 <Messages>
5833 <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
5834 <Issue>
5835 <Item>PhysicsEngineFlying</Item>
5836 </Issue>
5837 </Message>
5838 </Messages>
5839 </Member>
5840 <Member Name="SendAnimPack():System.Void">
5841 <Messages>
5842 <Message Id="Anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5843 <Issue Name="Member">
5844 <Item>Anim</Item>
5845 <Item>Avatar.SendAnimPack():Void</Item>
5846 </Issue>
5847 </Message>
5848 </Messages>
5849 </Member>
5850 <Member Name="SendAppearanceToOtherAgent(OpenSim.SimClient):System.Void">
5851 <Messages>
5852 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
5853 <Issue>
5854 <Item>'userInfo'</Item>
5855 <Item>Avatar.SendAppearanceToOtherAgent(SimClient):Void</Item>
5856 </Issue>
5857 </Message>
5858 </Messages>
5859 </Member>
5860 <Member Name="SendRegionHandshake(OpenSim.world.World):System.Void">
5861 <Messages>
5862 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5863 <Issue Name="Parameter">
5864 <Item>RegionInfo</Item>
5865 </Issue>
5866 </Message>
5867 <Message Id="RegionInfo" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
5868 <Issue>
5869 <Item>RegionInfo</Item>
5870 <Item>Avatar.SendRegionHandshake(World):Void</Item>
5871 </Issue>
5872 </Message>
5873 </Messages>
5874 </Member>
5875 </Members>
5876 </Type>
5877 <Type Name="AvatarAnimations">
5878 <Members>
5879 <Member Name="AnimsLLUUID">
5880 <Messages>
5881 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5882 <Issue>
5883 <Item>AnimsLLUUID</Item>
5884 </Issue>
5885 </Message>
5886 <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5887 <Issue Name="Member">
5888 <Item>Anims</Item>
5889 <Item>AvatarAnimations.AnimsLLUUID</Item>
5890 </Issue>
5891 </Message>
5892 </Messages>
5893 </Member>
5894 <Member Name="AnimsNames">
5895 <Messages>
5896 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5897 <Issue>
5898 <Item>AnimsNames</Item>
5899 </Issue>
5900 </Message>
5901 <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5902 <Issue Name="Member">
5903 <Item>Anims</Item>
5904 <Item>AvatarAnimations.AnimsNames</Item>
5905 </Issue>
5906 </Message>
5907 </Messages>
5908 </Member>
5909 <Member Name="LoadAnims():System.Void">
5910 <Messages>
5911 <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5912 <Issue Name="Member">
5913 <Item>Anims</Item>
5914 <Item>AvatarAnimations.LoadAnims():Void</Item>
5915 </Issue>
5916 </Message>
5917 </Messages>
5918 </Member>
5919 </Members>
5920 </Type>
5921 <Type Name="Entity">
5922 <Members>
5923 <Member Name=".ctor()">
5924 <Messages>
5925 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
5926 <Issue>
5927 <Item>Entity.Entity()</Item>
5928 <Item>localid</Item>
5929 <Item>System.UInt32</Item>
5930 <Item>0</Item>
5931 </Issue>
5932 </Message>
5933 </Messages>
5934 </Member>
5935 <Member Name="addForces():System.Void">
5936 <Messages>
5937 <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5938 <Issue Name="Member">
5939 <Item>addForces</Item>
5940 </Issue>
5941 </Message>
5942 </Messages>
5943 </Member>
5944 <Member Name="BackUp():System.Void">
5945 <Messages>
5946 <Message Id="BackUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
5947 <Issue Name="ShouldBeDiscreteTerm">
5948 <Item>BackUp</Item>
5949 <Item>method</Item>
5950 <Item>BackUp</Item>
5951 <Item>Backup</Item>
5952 </Issue>
5953 </Message>
5954 </Messages>
5955 </Member>
5956 <Member Name="children">
5957 <Messages>
5958 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5959 <Issue>
5960 <Item>children</Item>
5961 </Issue>
5962 </Message>
5963 <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
5964 <Issue>
5965 <Item>System.Collections.Generic.List`1&lt;OpenSim.world.Entity&gt;</Item>
5966 <Item>Entity.children</Item>
5967 </Issue>
5968 </Message>
5969 </Messages>
5970 </Member>
5971 <Member Name="getMesh():OpenSim.types.Mesh">
5972 <Messages>
5973 <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5974 <Issue Name="Member">
5975 <Item>getMesh</Item>
5976 </Issue>
5977 </Message>
5978 </Messages>
5979 </Member>
5980 <Member Name="getName():System.String">
5981 <Messages>
5982 <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
5983 <Issue Name="Member">
5984 <Item>getName</Item>
5985 </Issue>
5986 </Message>
5987 </Messages>
5988 </Member>
5989 <Member Name="localid">
5990 <Messages>
5991 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
5992 <Issue>
5993 <Item>localid</Item>
5994 </Issue>
5995 </Message>
5996 <Message Id="localid" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
5997 <Issue Name="Member">
5998 <Item>localid</Item>
5999 <Item>Entity.localid</Item>
6000 </Issue>
6001 </Message>
6002 </Messages>
6003 </Member>
6004 <Member Name="name">
6005 <Messages>
6006 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6007 <Issue>
6008 <Item>name</Item>
6009 </Issue>
6010 </Message>
6011 </Messages>
6012 </Member>
6013 <Member Name="position">
6014 <Messages>
6015 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6016 <Issue>
6017 <Item>position</Item>
6018 </Issue>
6019 </Message>
6020 </Messages>
6021 </Member>
6022 <Member Name="rotation">
6023 <Messages>
6024 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6025 <Issue>
6026 <Item>rotation</Item>
6027 </Issue>
6028 </Message>
6029 </Messages>
6030 </Member>
6031 <Member Name="update():System.Void">
6032 <Messages>
6033 <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6034 <Issue Name="Member">
6035 <Item>update</Item>
6036 </Issue>
6037 </Message>
6038 </Messages>
6039 </Member>
6040 <Member Name="uuid">
6041 <Messages>
6042 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6043 <Issue>
6044 <Item>uuid</Item>
6045 </Issue>
6046 </Message>
6047 <Message Id="uuid" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6048 <Issue Name="Member">
6049 <Item>uuid</Item>
6050 <Item>Entity.uuid</Item>
6051 </Issue>
6052 </Message>
6053 </Messages>
6054 </Member>
6055 <Member Name="velocity">
6056 <Messages>
6057 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6058 <Issue>
6059 <Item>velocity</Item>
6060 </Issue>
6061 </Message>
6062 </Messages>
6063 </Member>
6064 </Members>
6065 </Type>
6066 <Type Name="NewForce">
6067 <Members>
6068 <Member Name="X">
6069 <Messages>
6070 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6071 <Issue>
6072 <Item>X</Item>
6073 </Issue>
6074 </Message>
6075 <Message Id="X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6076 <Issue Name="MemberOneLetter">
6077 <Item>X</Item>
6078 <Item>NewForce.X</Item>
6079 </Issue>
6080 </Message>
6081 </Messages>
6082 </Member>
6083 <Member Name="Y">
6084 <Messages>
6085 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6086 <Issue>
6087 <Item>Y</Item>
6088 </Issue>
6089 </Message>
6090 <Message Id="Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6091 <Issue Name="MemberOneLetter">
6092 <Item>Y</Item>
6093 <Item>NewForce.Y</Item>
6094 </Issue>
6095 </Message>
6096 </Messages>
6097 </Member>
6098 <Member Name="Z">
6099 <Messages>
6100 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6101 <Issue>
6102 <Item>Z</Item>
6103 </Issue>
6104 </Message>
6105 <Message Id="Z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6106 <Issue Name="MemberOneLetter">
6107 <Item>Z</Item>
6108 <Item>NewForce.Z</Item>
6109 </Issue>
6110 </Message>
6111 </Messages>
6112 </Member>
6113 </Members>
6114 </Type>
6115 <Type Name="Primitive">
6116 <Messages>
6117 <Message TypeName="IdentifiersShouldDifferByMoreThanCase" Category="Microsoft.Naming" CheckId="CA1708" Created="2007-03-27 04:29:04Z">
6118 <Issue Name="Member">
6119 <Item>'UpdateFlag'</Item>
6120 <Item>updateFlag</Item>
6121 </Issue>
6122 </Message>
6123 </Messages>
6124 <Members>
6125 <Member Name=".ctor()">
6126 <Messages>
6127 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
6128 <Issue>
6129 <Item>Primitive.Primitive()</Item>
6130 <Item>dirtyFlag</Item>
6131 <Item>System.Boolean</Item>
6132 <Item>false</Item>
6133 </Issue>
6134 <Issue>
6135 <Item>Primitive.Primitive()</Item>
6136 <Item>mesh_cutbegin</Item>
6137 <Item>System.Single</Item>
6138 <Item>0.0</Item>
6139 </Issue>
6140 <Issue>
6141 <Item>Primitive.Primitive()</Item>
6142 <Item>newPrimFlag</Item>
6143 <Item>System.Boolean</Item>
6144 <Item>false</Item>
6145 </Issue>
6146 <Issue>
6147 <Item>Primitive.Primitive()</Item>
6148 <Item>physicsEnabled</Item>
6149 <Item>System.Boolean</Item>
6150 <Item>false</Item>
6151 </Issue>
6152 <Issue>
6153 <Item>Primitive.Primitive()</Item>
6154 <Item>physicstest</Item>
6155 <Item>System.Boolean</Item>
6156 <Item>false</Item>
6157 </Issue>
6158 <Issue>
6159 <Item>Primitive.Primitive()</Item>
6160 <Item>updateFlag</Item>
6161 <Item>System.Boolean</Item>
6162 <Item>false</Item>
6163 </Issue>
6164 </Message>
6165 </Messages>
6166 </Member>
6167 <Member Name="CreateFromPacket(libsecondlife.Packets.ObjectAddPacket,libsecondlife.LLUUID,System.UInt32):System.Void">
6168 <Messages>
6169 <Message Id="localID-702000" TypeName="OperationsShouldNotOverflow" Category="Microsoft.Usage" CheckId="CA2233" Created="2007-03-27 04:29:04Z">
6170 <Issue>
6171 <Item>localID-702000</Item>
6172 <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
6173 </Issue>
6174 </Message>
6175 <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
6176 <Issue Name="ParameterId">
6177 <Item>ID</Item>
6178 <Item>agentID</Item>
6179 <Item>Id</Item>
6180 </Issue>
6181 </Message>
6182 <Message Id="2#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
6183 <Issue Name="ParameterId">
6184 <Item>ID</Item>
6185 <Item>localID</Item>
6186 <Item>Id</Item>
6187 </Issue>
6188 </Message>
6189 <Message Id="System.UInt32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
6190 <Issue>
6191 <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
6192 <Item>System.UInt32.ToString(System.String)</Item>
6193 <Item>System.UInt32.ToString(System.String,System.IFormatProvider)</Item>
6194 </Issue>
6195 </Message>
6196 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6197 <Issue>
6198 <Item>'addPacket'</Item>
6199 <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
6200 </Issue>
6201 </Message>
6202 </Messages>
6203 </Member>
6204 <Member Name="CreateFromStorage(OpenSim.Framework.Assets.PrimData):System.Void">
6205 <Messages>
6206 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6207 <Issue>
6208 <Item>'store'</Item>
6209 <Item>Primitive.CreateFromStorage(PrimData):Void</Item>
6210 </Issue>
6211 </Message>
6212 </Messages>
6213 </Member>
6214 <Member Name="dirtyFlag">
6215 <Messages>
6216 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6217 <Issue>
6218 <Item>dirtyFlag</Item>
6219 </Issue>
6220 </Message>
6221 </Messages>
6222 </Member>
6223 <Member Name="mesh_cutbegin">
6224 <Messages>
6225 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6226 <Issue>
6227 <Item>mesh_cutbegin</Item>
6228 </Issue>
6229 </Message>
6230 <Message Id="cutbegin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6231 <Issue Name="Member">
6232 <Item>cutbegin</Item>
6233 <Item>Primitive.mesh_cutbegin</Item>
6234 </Issue>
6235 </Message>
6236 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
6237 <Issue Name="Member">
6238 <Item>mesh_cutbegin</Item>
6239 </Issue>
6240 </Message>
6241 </Messages>
6242 </Member>
6243 <Member Name="mesh_cutend">
6244 <Messages>
6245 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6246 <Issue>
6247 <Item>mesh_cutend</Item>
6248 </Issue>
6249 </Message>
6250 <Message Id="cutend" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6251 <Issue Name="Member">
6252 <Item>cutend</Item>
6253 <Item>Primitive.mesh_cutend</Item>
6254 </Issue>
6255 </Message>
6256 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
6257 <Issue Name="Member">
6258 <Item>mesh_cutend</Item>
6259 </Issue>
6260 </Message>
6261 </Messages>
6262 </Member>
6263 <Member Name="newPrimFlag">
6264 <Messages>
6265 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6266 <Issue>
6267 <Item>newPrimFlag</Item>
6268 </Issue>
6269 </Message>
6270 </Messages>
6271 </Member>
6272 <Member Name="PhysActor">
6273 <Messages>
6274 <Message TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044" Created="2007-03-27 04:29:04Z">
6275 <Issue>
6276 <Item>PhysActor</Item>
6277 </Issue>
6278 </Message>
6279 </Messages>
6280 </Member>
6281 <Member Name="primData">
6282 <Messages>
6283 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6284 <Issue>
6285 <Item>primData</Item>
6286 </Issue>
6287 </Message>
6288 </Messages>
6289 </Member>
6290 <Member Name="UpdateClient(OpenSim.SimClient):System.Void">
6291 <Messages>
6292 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6293 <Issue Name="Parameter">
6294 <Item>RemoteClient</Item>
6295 </Issue>
6296 </Message>
6297 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6298 <Issue>
6299 <Item>'RemoteClient'</Item>
6300 <Item>Primitive.UpdateClient(SimClient):Void</Item>
6301 </Issue>
6302 </Message>
6303 </Messages>
6304 </Member>
6305 <Member Name="updateFlag">
6306 <Messages>
6307 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6308 <Issue>
6309 <Item>updateFlag</Item>
6310 </Issue>
6311 </Message>
6312 </Messages>
6313 </Member>
6314 <Member Name="UpdateObjectFlags(libsecondlife.Packets.ObjectFlagUpdatePacket):System.Void">
6315 <Messages>
6316 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6317 <Issue>
6318 <Item>'pack'</Item>
6319 <Item>Primitive.UpdateObjectFlags(ObjectFlagUpdatePacket):Void</Item>
6320 </Issue>
6321 </Message>
6322 </Messages>
6323 </Member>
6324 <Member Name="UpdateShape(libsecondlife.Packets.ObjectShapePacket+ObjectDataBlock):System.Void">
6325 <Messages>
6326 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6327 <Issue>
6328 <Item>'addPacket'</Item>
6329 <Item>Primitive.UpdateShape(ObjectDataBlock):Void</Item>
6330 </Issue>
6331 </Message>
6332 </Messages>
6333 </Member>
6334 </Members>
6335 </Type>
6336 <Type Name="ScriptEngine">
6337 <Members>
6338 <Member Name=".ctor(OpenSim.world.World)">
6339 <Messages>
6340 <Message Id="0#env" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6341 <Issue Name="Parameter">
6342 <Item>ScriptEngine.ScriptEngine(World)</Item>
6343 <Item>env</Item>
6344 <Item>env</Item>
6345 </Issue>
6346 </Message>
6347 <Message Id="env" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
6348 <Issue>
6349 <Item>env</Item>
6350 <Item>ScriptEngine.ScriptEngine(World)</Item>
6351 </Issue>
6352 </Message>
6353 </Messages>
6354 </Member>
6355 <Member Name="LoadScript():System.Void">
6356 <Messages>
6357 <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
6358 <Issue>
6359 <Item>ScriptEngine.LoadScript():Void</Item>
6360 </Issue>
6361 </Message>
6362 </Messages>
6363 </Member>
6364 </Members>
6365 </Type>
6366 <Type Name="SurfacePatch">
6367 <Members>
6368 <Member Name="HeightMap">
6369 <Messages>
6370 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6371 <Issue>
6372 <Item>HeightMap</Item>
6373 </Issue>
6374 </Message>
6375 </Messages>
6376 </Member>
6377 </Members>
6378 </Type>
6379 <Type Name="World">
6380 <Messages>
6381 <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
6382 <Issue>
6383 <Item>World</Item>
6384 <Item>OpenSim.world</Item>
6385 </Issue>
6386 </Message>
6387 </Messages>
6388 <Members>
6389 <Member Name=".ctor()">
6390 <Messages>
6391 <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
6392 <Issue>
6393 <Item>World.World()</Item>
6394 <Item>_localNumber</Item>
6395 <Item>System.UInt32</Item>
6396 <Item>0</Item>
6397 </Issue>
6398 </Message>
6399 </Messages>
6400 </Member>
6401 <Member Name="_localNumber">
6402 <Messages>
6403 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6404 <Issue>
6405 <Item>_localNumber</Item>
6406 </Issue>
6407 </Message>
6408 <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
6409 <Issue Name="Member">
6410 <Item>_localNumber</Item>
6411 </Issue>
6412 </Message>
6413 </Messages>
6414 </Member>
6415 <Member Name="AddNewPrim(libsecondlife.Packets.ObjectAddPacket,OpenSim.SimClient):System.Void">
6416 <Messages>
6417 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6418 <Issue Name="Parameter">
6419 <Item>AgentClient</Item>
6420 </Issue>
6421 </Message>
6422 </Messages>
6423 </Member>
6424 <Member Name="AddViewerAgent(OpenSim.SimClient):System.Void">
6425 <Messages>
6426 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6427 <Issue Name="Parameter">
6428 <Item>AgentClient</Item>
6429 </Issue>
6430 </Message>
6431 </Messages>
6432 </Member>
6433 <Member Name="DeRezObject(libsecondlife.Packets.DeRezObjectPacket,OpenSim.SimClient):System.Void">
6434 <Messages>
6435 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6436 <Issue Name="Parameter">
6437 <Item>DeRezPacket</Item>
6438 </Issue>
6439 </Message>
6440 <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6441 <Issue Name="Parameter">
6442 <Item>AgentClient</Item>
6443 </Issue>
6444 </Message>
6445 <Message Id="0#Rez" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6446 <Issue Name="Parameter">
6447 <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
6448 <Item>Rez</Item>
6449 <Item>DeRezPacket</Item>
6450 </Issue>
6451 </Message>
6452 <Message Id="Rez" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6453 <Issue Name="Member">
6454 <Item>Rez</Item>
6455 <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
6456 </Issue>
6457 </Message>
6458 <Message Id="AgentClient" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
6459 <Issue>
6460 <Item>AgentClient</Item>
6461 <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
6462 </Issue>
6463 </Message>
6464 <Message Id="Member" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
6465 <Issue Name="Member">
6466 <Item>De</Item>
6467 <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
6468 </Issue>
6469 </Message>
6470 </Messages>
6471 </Member>
6472 <Member Name="Entities">
6473 <Messages>
6474 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6475 <Issue>
6476 <Item>Entities</Item>
6477 </Issue>
6478 </Message>
6479 </Messages>
6480 </Member>
6481 <Member Name="GetInitialPrims(OpenSim.SimClient):System.Void">
6482 <Messages>
6483 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6484 <Issue Name="Parameter">
6485 <Item>RemoteClient</Item>
6486 </Issue>
6487 </Message>
6488 <Message Id="Prims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6489 <Issue Name="Member">
6490 <Item>Prims</Item>
6491 <Item>World.GetInitialPrims(SimClient):Void</Item>
6492 </Issue>
6493 </Message>
6494 </Messages>
6495 </Member>
6496 <Member Name="LandMap">
6497 <Messages>
6498 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6499 <Issue>
6500 <Item>LandMap</Item>
6501 </Issue>
6502 </Message>
6503 </Messages>
6504 </Member>
6505 <Member Name="LoadPrimsFromStorage():System.Void">
6506 <Messages>
6507 <Message Id="Prims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6508 <Issue Name="Member">
6509 <Item>Prims</Item>
6510 <Item>World.LoadPrimsFromStorage():Void</Item>
6511 </Issue>
6512 </Message>
6513 </Messages>
6514 </Member>
6515 <Member Name="LoadStorageDLL(System.String):System.Boolean">
6516 <Messages>
6517 <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
6518 <Issue Name="Member">
6519 <Item>World.LoadStorageDLL(String):Boolean</Item>
6520 </Issue>
6521 </Message>
6522 </Messages>
6523 </Member>
6524 <Member Name="localStorage">
6525 <Messages>
6526 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6527 <Issue>
6528 <Item>localStorage</Item>
6529 </Issue>
6530 </Message>
6531 </Messages>
6532 </Member>
6533 <Member Name="Rand">
6534 <Messages>
6535 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
6536 <Issue>
6537 <Item>World.Rand</Item>
6538 </Issue>
6539 </Message>
6540 </Messages>
6541 </Member>
6542 <Member Name="Scripts">
6543 <Messages>
6544 <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
6545 <Issue>
6546 <Item>Scripts</Item>
6547 </Issue>
6548 </Message>
6549 </Messages>
6550 </Member>
6551 <Member Name="SendLayerData(OpenSim.SimClient):System.Void">
6552 <Messages>
6553 <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
6554 <Issue Name="Parameter">
6555 <Item>RemoteClient</Item>
6556 </Issue>
6557 </Message>
6558 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6559 <Issue>
6560 <Item>'RemoteClient'</Item>
6561 <Item>World.SendLayerData(SimClient):Void</Item>
6562 </Issue>
6563 <Issue>
6564 <Item>'RemoteClient'</Item>
6565 <Item>World.SendLayerData(SimClient):Void</Item>
6566 </Issue>
6567 <Issue>
6568 <Item>'RemoteClient'</Item>
6569 <Item>World.SendLayerData(SimClient):Void</Item>
6570 </Issue>
6571 </Message>
6572 </Messages>
6573 </Member>
6574 </Members>
6575 </Type>
6576 </Types>
6577 </Namespace>
6578 <Namespace Name="OpenSim.world.scripting">
6579 <Types>
6580 <Type Name="IScriptHost">
6581 <Members>
6582 <Member Name="Register(OpenSim.world.scripting.IScript):System.Boolean">
6583 <Messages>
6584 <Message Id="0#iscript" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6585 <Issue Name="Parameter">
6586 <Item>IScriptHost.Register(IScript):Boolean</Item>
6587 <Item>iscript</Item>
6588 <Item>iscript</Item>
6589 </Issue>
6590 </Message>
6591 </Messages>
6592 </Member>
6593 </Members>
6594 </Type>
6595 </Types>
6596 </Namespace>
6597 </Namespaces>
6598 </Module>
6599 </Modules>
6600 </Target>
6601 <Target Name="$(ProjectDir)/bin/OpenSim.Storage.LocalStorageDb4o.dll">
6602 <Modules>
6603 <Module Name="opensim.storage.localstoragedb4o.dll">
6604 <Messages>
6605 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
6606 <Issue>
6607 <Item>OpenSim.Storage.LocalStorageDb4o</Item>
6608 </Issue>
6609 </Message>
6610 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
6611 <Issue Name="NoStrongName">
6612 <Item>OpenSim.Storage.LocalStorageDb4o</Item>
6613 </Issue>
6614 </Message>
6615 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
6616 <Issue Name="NoAttr">
6617 <Item>OpenSim.Storage.LocalStorageDb4o</Item>
6618 </Issue>
6619 </Message>
6620 </Messages>
6621 <Namespaces>
6622 <Namespace Name="OpenSim.Storage.LocalStorageDb4o">
6623 <Types>
6624 <Type Name="Db4LocalStorage">
6625 <Members>
6626 <Member Name=".ctor()">
6627 <Messages>
6628 <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
6629 <Issue>
6630 <Item>Db4LocalStorage.Db4LocalStorage()</Item>
6631 <Item>System.Exception</Item>
6632 </Issue>
6633 </Message>
6634 </Messages>
6635 </Member>
6636 <Member Name="LoadPrimitives(OpenSim.Framework.Interfaces.ILocalStorageReceiver):System.Void">
6637 <Messages>
6638 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6639 <Issue>
6640 <Item>'receiver'</Item>
6641 <Item>Db4LocalStorage.LoadPrimitives(ILocalStorageReceiver):Void</Item>
6642 </Issue>
6643 </Message>
6644 </Messages>
6645 </Member>
6646 <Member Name="StorePrim(OpenSim.Framework.Assets.PrimData):System.Void">
6647 <Messages>
6648 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6649 <Issue>
6650 <Item>'prim'</Item>
6651 <Item>Db4LocalStorage.StorePrim(PrimData):Void</Item>
6652 </Issue>
6653 </Message>
6654 </Messages>
6655 </Member>
6656 </Members>
6657 </Type>
6658 <Type Name="UUIDQuery">
6659 <Messages>
6660 <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
6661 <Issue Name="Type">
6662 <Item>UUIDQuery</Item>
6663 </Issue>
6664 </Message>
6665 </Messages>
6666 <Members>
6667 <Member Name="Match(OpenSim.Framework.Assets.PrimData):System.Boolean">
6668 <Messages>
6669 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6670 <Issue>
6671 <Item>'prim'</Item>
6672 <Item>UUIDQuery.Match(PrimData):Boolean</Item>
6673 </Issue>
6674 </Message>
6675 </Messages>
6676 </Member>
6677 </Members>
6678 </Type>
6679 </Types>
6680 </Namespace>
6681 </Namespaces>
6682 </Module>
6683 </Modules>
6684 </Target>
6685 <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.BasicPhysicsPlugin.dll">
6686 <Modules>
6687 <Module Name="opensim.physics.basicphysicsplugin.dll">
6688 <Messages>
6689 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Status="Excluded" Created="2007-03-27 04:29:04Z">
6690 <Issue>
6691 <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
6692 </Issue>
6693 <Notes>
6694 <User Name="Stefan">
6695 <Note Id="2" />
6696 </User>
6697 </Notes>
6698 </Message>
6699 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Status="Excluded" Created="2007-03-27 04:29:04Z">
6700 <Issue Name="NoStrongName">
6701 <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
6702 </Issue>
6703 <Notes>
6704 <User Name="Stefan">
6705 <Note Id="0" />
6706 </User>
6707 </Notes>
6708 </Message>
6709 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Status="Excluded" Created="2007-03-27 04:29:04Z">
6710 <Issue Name="NoAttr">
6711 <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
6712 </Issue>
6713 <Notes>
6714 <User Name="Stefan">
6715 <Note Id="1" />
6716 </User>
6717 </Notes>
6718 </Message>
6719 </Messages>
6720 <Namespaces>
6721 <Namespace Name="OpenSim.Physics.BasicPhysicsPlugin">
6722 <Types>
6723 <Type Name="BasicActor">
6724 <Members>
6725 <Member Name="flying">
6726 <Messages>
6727 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
6728 <Issue>
6729 <Item>BasicActor.flying</Item>
6730 </Issue>
6731 </Message>
6732 </Messages>
6733 </Member>
6734 <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
6735 <Messages>
6736 <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6737 <Issue Name="Parameter">
6738 <Item>BasicActor.SetAcceleration(PhysicsVector):Void</Item>
6739 <Item>accel</Item>
6740 <Item>accel</Item>
6741 </Issue>
6742 </Message>
6743 </Messages>
6744 </Member>
6745 </Members>
6746 </Type>
6747 <Type Name="BasicPhysicsPlugin">
6748 <Messages>
6749 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6750 <Issue Name="Type">
6751 <Item>Plugin</Item>
6752 <Item>OpenSim.Physics.BasicPhysicsPlugin.BasicPhysicsPlugin</Item>
6753 </Issue>
6754 </Message>
6755 <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
6756 <Issue>
6757 <Item>BasicPhysicsPlugin</Item>
6758 <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
6759 </Issue>
6760 </Message>
6761 </Messages>
6762 </Type>
6763 </Types>
6764 </Namespace>
6765 </Namespaces>
6766 </Module>
6767 </Modules>
6768 </Target>
6769 <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.OdePlugin.dll">
6770 <Modules>
6771 <Module Name="opensim.physics.odeplugin.dll">
6772 <Messages>
6773 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
6774 <Issue>
6775 <Item>OpenSim.Physics.OdePlugin</Item>
6776 </Issue>
6777 </Message>
6778 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
6779 <Issue Name="NoStrongName">
6780 <Item>OpenSim.Physics.OdePlugin</Item>
6781 </Issue>
6782 </Message>
6783 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
6784 <Issue Name="NoAttr">
6785 <Item>OpenSim.Physics.OdePlugin</Item>
6786 </Issue>
6787 </Message>
6788 </Messages>
6789 <Namespaces>
6790 <Namespace Name="OpenSim.Physics.OdePlugin">
6791 <Types>
6792 <Type Name="OdeCharacter">
6793 <Messages>
6794 <Message TypeName="TypesThatOwnNativeResourcesShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1049" Created="2007-03-27 04:29:04Z">
6795 <Issue>
6796 <Item>OdeCharacter</Item>
6797 </Issue>
6798 </Message>
6799 </Messages>
6800 <Members>
6801 <Member Name=".ctor(OpenSim.Physics.OdePlugin.OdeScene,OpenSim.Physics.Manager.PhysicsVector)">
6802 <Messages>
6803 <Message Id="parent_scene" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
6804 <Issue>
6805 <Item>parent_scene</Item>
6806 <Item>OdeCharacter.OdeCharacter(OdeScene, PhysicsVector)</Item>
6807 </Issue>
6808 </Message>
6809 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6810 <Issue>
6811 <Item>'pos'</Item>
6812 <Item>OdeCharacter.OdeCharacter(OdeScene, PhysicsVector)</Item>
6813 </Issue>
6814 </Message>
6815 </Messages>
6816 </Member>
6817 <Member Name="capsule_geom">
6818 <Messages>
6819 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
6820 <Issue>
6821 <Item>OdeCharacter.capsule_geom</Item>
6822 </Issue>
6823 </Message>
6824 </Messages>
6825 </Member>
6826 <Member Name="gravityAccel">
6827 <Messages>
6828 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
6829 <Issue>
6830 <Item>OdeCharacter.gravityAccel</Item>
6831 </Issue>
6832 </Message>
6833 </Messages>
6834 </Member>
6835 <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
6836 <Messages>
6837 <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6838 <Issue Name="Parameter">
6839 <Item>OdeCharacter.SetAcceleration(PhysicsVector):Void</Item>
6840 <Item>accel</Item>
6841 <Item>accel</Item>
6842 </Issue>
6843 </Message>
6844 </Messages>
6845 </Member>
6846 </Members>
6847 </Type>
6848 <Type Name="OdePlugin">
6849 <Messages>
6850 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6851 <Issue Name="Type">
6852 <Item>Plugin</Item>
6853 <Item>OpenSim.Physics.OdePlugin.OdePlugin</Item>
6854 </Issue>
6855 </Message>
6856 <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
6857 <Issue>
6858 <Item>OdePlugin</Item>
6859 <Item>OpenSim.Physics.OdePlugin</Item>
6860 </Issue>
6861 </Message>
6862 </Messages>
6863 </Type>
6864 <Type Name="OdePrim">
6865 <Members>
6866 <Member Name="_position">
6867 <Messages>
6868 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
6869 <Issue>
6870 <Item>OdePrim._position</Item>
6871 </Issue>
6872 </Message>
6873 </Messages>
6874 </Member>
6875 <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
6876 <Messages>
6877 <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
6878 <Issue Name="Parameter">
6879 <Item>OdePrim.SetAcceleration(PhysicsVector):Void</Item>
6880 <Item>accel</Item>
6881 <Item>accel</Item>
6882 </Issue>
6883 </Message>
6884 </Messages>
6885 </Member>
6886 </Members>
6887 </Type>
6888 <Type Name="OdeScene">
6889 <Members>
6890 <Member Name="AddPrim(OpenSim.Physics.Manager.PhysicsVector,OpenSim.Physics.Manager.PhysicsVector):OpenSim.Physics.Manager.PhysicsActor">
6891 <Messages>
6892 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6893 <Issue>
6894 <Item>'position'</Item>
6895 <Item>OdeScene.AddPrim(PhysicsVector, PhysicsVector):PhysicsActor</Item>
6896 </Issue>
6897 <Issue>
6898 <Item>'size'</Item>
6899 <Item>OdeScene.AddPrim(PhysicsVector, PhysicsVector):PhysicsActor</Item>
6900 </Issue>
6901 </Message>
6902 </Messages>
6903 </Member>
6904 <Member Name="Land">
6905 <Messages>
6906 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
6907 <Issue>
6908 <Item>OdeScene.Land</Item>
6909 </Issue>
6910 </Message>
6911 </Messages>
6912 </Member>
6913 <Member Name="LandGeom">
6914 <Messages>
6915 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
6916 <Issue>
6917 <Item>OdeScene.LandGeom</Item>
6918 </Issue>
6919 </Message>
6920 </Messages>
6921 </Member>
6922 <Member Name="SetTerrain(System.Single[]):System.Void">
6923 <Messages>
6924 <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
6925 <Issue>
6926 <Item>'heightMap'</Item>
6927 <Item>OdeScene.SetTerrain(Single[]):Void</Item>
6928 </Issue>
6929 <Issue>
6930 <Item>'heightMap'</Item>
6931 <Item>OdeScene.SetTerrain(Single[]):Void</Item>
6932 </Issue>
6933 </Message>
6934 </Messages>
6935 </Member>
6936 <Member Name="space">
6937 <Messages>
6938 <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
6939 <Issue>
6940 <Item>space</Item>
6941 </Issue>
6942 </Message>
6943 <Message TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111" Created="2007-03-27 04:29:04Z">
6944 <Issue>
6945 <Item>space</Item>
6946 </Issue>
6947 </Message>
6948 </Messages>
6949 </Member>
6950 <Member Name="world">
6951 <Messages>
6952 <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
6953 <Issue>
6954 <Item>world</Item>
6955 </Issue>
6956 </Message>
6957 <Message TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111" Created="2007-03-27 04:29:04Z">
6958 <Issue>
6959 <Item>world</Item>
6960 </Issue>
6961 </Message>
6962 </Messages>
6963 </Member>
6964 </Members>
6965 </Type>
6966 </Types>
6967 </Namespace>
6968 </Namespaces>
6969 </Module>
6970 </Modules>
6971 </Target>
6972 <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.PhysXPlugin.dll">
6973 <Modules>
6974 <Module Name="opensim.physics.physxplugin.dll">
6975 <Messages>
6976 <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
6977 <Issue>
6978 <Item>OpenSim.Physics.PhysXPlugin</Item>
6979 </Issue>
6980 </Message>
6981 <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
6982 <Issue Name="NoStrongName">
6983 <Item>OpenSim.Physics.PhysXPlugin</Item>
6984 </Issue>
6985 </Message>
6986 <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
6987 <Issue Name="NoAttr">
6988 <Item>OpenSim.Physics.PhysXPlugin</Item>
6989 </Issue>
6990 </Message>
6991 </Messages>
6992 <Namespaces>
6993 <Namespace Name="OpenSim.Physics.PhysXPlugin">
6994 <Types>
6995 <Type Name="PhysXCharacter">
6996 <Members>
6997 <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
6998 <Messages>
6999 <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
7000 <Issue Name="Parameter">
7001 <Item>PhysXCharacter.SetAcceleration(PhysicsVector):Void</Item>
7002 <Item>accel</Item>
7003 <Item>accel</Item>
7004 </Issue>
7005 </Message>
7006 </Messages>
7007 </Member>
7008 </Members>
7009 </Type>
7010 <Type Name="PhysXPlugin">
7011 <Messages>
7012 <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
7013 <Issue Name="Type">
7014 <Item>Plugin</Item>
7015 <Item>OpenSim.Physics.PhysXPlugin.PhysXPlugin</Item>
7016 </Issue>
7017 </Message>
7018 <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
7019 <Issue>
7020 <Item>PhysXPlugin</Item>
7021 <Item>OpenSim.Physics.PhysXPlugin</Item>
7022 </Issue>
7023 </Message>
7024 </Messages>
7025 </Type>
7026 <Type Name="PhysXPrim">
7027 <Members>
7028 <Member Name="_position">
7029 <Messages>
7030 <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
7031 <Issue>
7032 <Item>PhysXPrim._position</Item>
7033 </Issue>
7034 </Message>
7035 </Messages>
7036 </Member>
7037 <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
7038 <Messages>
7039 <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
7040 <Issue Name="Parameter">
7041 <Item>PhysXPrim.SetAcceleration(PhysicsVector):Void</Item>
7042 <Item>accel</Item>
7043 <Item>accel</Item>
7044 </Issue>
7045 </Message>
7046 </Messages>
7047 </Member>
7048 </Members>
7049 </Type>
7050 </Types>
7051 </Namespace>
7052 </Namespaces>
7053 </Module>
7054 </Modules>
7055 </Target>
7056 </Targets>
7057 <Notes>
7058 <User Name="Stefan">
7059 <Note Id="0" Modified="2007-03-27 04:30:24Z">Save it for a rainy day.</Note>
7060 <Note Id="1" Modified="2007-03-27 04:30:31Z">Save it for a rainy day.</Note>
7061 <Note Id="2" Modified="2007-03-27 04:30:38Z">Save it for a rainy day.</Note>
7062 </User>
7063 </Notes>
7064 <Rules>
7065 <Rule TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209">
7066 <Resolution Name="Default">No valid permission requests were found for assembly '{0}'. You should always specify the minimum security permissions using SecurityAction.RequestMinimum.</Resolution>
7067 </Rule>
7068 <Rule TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210">
7069 <Resolution Name="NoStrongName">Sign '{0}' with a strong name key.</Resolution>
7070 </Rule>
7071 <Rule TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020">
7072 <Resolution Name="Default">Consider merging the types defined in '{0}' with another namespace.</Resolution>
7073 </Rule>
7074 <Rule TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823">
7075 <Resolution Name="Default">It appears that field '{0}' is never used or is only ever assigned to. Use this field or remove it.</Resolution>
7076 </Rule>
7077 <Rule TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227">
7078 <Resolution Name="Default">Change '{0}' to be read-only by removing the property setter.</Resolution>
7079 </Rule>
7080 <Rule TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702">
7081 <Resolution Name="ShouldBeDiscreteTerm">The compound word '{0}' in {1} '{2}' exists as a discrete term. If your usage is intended to be single word, case it as '{3}'.</Resolution>
7082 </Rule>
7083 <Rule TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405">
7084 <Resolution Name="Default">'{0}' is marked ComVisible(true) but has the following ComVisible(false) types in its object hierarchy: {1}</Resolution>
7085 </Rule>
7086 <Rule TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011">
7087 <Resolution Name="Default">Consider changing the type of parameter '{0}' in {1} from {2} to its base type {3}. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.</Resolution>
7088 </Rule>
7089 <Rule TypeName="DoNotCallOverridableMethodsInConstructors" Category="Microsoft.Usage" CheckId="CA2214">
7090 <Resolution Name="Default">'{0}' contains a call chain that results in a call to a virtual method defined by the class. Review the following call stack for unintended consequences: {1}</Resolution>
7091 </Rule>
7092 <Rule TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031">
7093 <Resolution Name="Default">Modify '{0}' to catch a more specific exception than '{1}' or rethrow the exception.</Resolution>
7094 </Rule>
7095 <Rule TypeName="DoNotDeclareReadOnlyMutableReferenceTypes" Category="Microsoft.Security" CheckId="CA2104">
7096 <Resolution Name="Default">Remove the readonly declaration from '{0}' or change the field to one that is an immutable reference type. If the reference type '{1}' is, in fact, immutable, exclude this message.</Resolution>
7097 </Rule>
7098 <Rule TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051">
7099 <Resolution Name="Default">Make '{0}' private or internal (Friend in VB, public private in C++) and provide a public or protected property to access it.</Resolution>
7100 </Rule>
7101 <Rule TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002">
7102 <Resolution Name="Default">Change '{0}' in {1} to use Collection&lt;T&gt;, ReadOnlyCollection&lt;T&gt; or KeyedCollection&lt;K,V&gt;</Resolution>
7103 </Rule>
7104 <Rule TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805">
7105 <Resolution Name="Default">{0} initializes field {1} of type {2} to {3}. Remove this initialization as it will be done automatically by the runtime.</Resolution>
7106 </Rule>
7107 <Rule TypeName="DoNotPassLiteralsAsLocalizedParameters" Category="Microsoft.Globalization" CheckId="CA1303">
7108 <Resolution Name="Default">{0} passes a literal as parameter {1} of a call to {2}. Retrieve the following string argument from a resource table instead: '{3}'</Resolution>
7109 </Rule>
7110 <Rule TypeName="DoNotPassTypesByReference" Category="Microsoft.Design" CheckId="CA1045">
7111 <Resolution Name="Default">Consider a design that does not require that '{0}' be a reference parameter.</Resolution>
7112 </Rule>
7113 <Rule TypeName="DoNotRaiseReservedExceptionTypes" Category="Microsoft.Usage" CheckId="CA2201">
7114 <Resolution Name="TooGeneric">{0} creates an exception of type '{1}', an exception type that is not sufficiently specific and should never be raised by user code. If this exception instance might be thrown, use a different exception type.</Resolution>
7115 </Rule>
7116 <Rule TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601">
7117 <Resolution Name="Default">Modify the call to {0} in method {1} to set the timer interval to a value that's greater than or equal to one second.</Resolution>
7118 </Rule>
7119 <Rule TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709">
7120 <Resolution Name="Member">Correct the casing of member name '{0}'.</Resolution>
7121 <Resolution Name="Namespace">Correct the casing of namespace name '{0}'.</Resolution>
7122 <Resolution Name="Parameter">Correct the casing of parameter name '{0}'.</Resolution>
7123 <Resolution Name="Type">Correct the casing of type name '{0}'.</Resolution>
7124 </Rule>
7125 <Rule TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704">
7126 <Resolution Name="Member">Correct the spelling of the unrecognized token '{0}' in member name '{1}'.</Resolution>
7127 <Resolution Name="MemberOneLetter">Consider providing a more meaningful name than the one-letter token '{0}' in member name '{1}'.</Resolution>
7128 <Resolution Name="Namespace">Correct the spelling of the unrecognized token '{0}' in namespace '{1}'.</Resolution>
7129 <Resolution Name="Parameter">In method {0}, correct the spelling of the unrecognized token '{1}' in parameter name '{2}' or strip it entirely if it represents any sort of hungarian notation.</Resolution>
7130 <Resolution Name="ParameterOneLetter">In method {0}, consider providing a more meaningful name than the one-letter parameter name '{1}'.</Resolution>
7131 <Resolution Name="Type">Correct the spelling of the unrecognized token '{0}' in type name '{1}'.</Resolution>
7132 </Rule>
7133 <Rule TypeName="IdentifiersShouldDifferByMoreThanCase" Category="Microsoft.Naming" CheckId="CA1708">
7134 <Resolution Name="Member">Change member names {0} and '{1}' so that they differ by more than case.</Resolution>
7135 </Rule>
7136 <Rule TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707">
7137 <Resolution Name="Member">Remove all underscores from member '{0}'.</Resolution>
7138 <Resolution Name="Parameter">Remove all underscores from parameter '{0}'.</Resolution>
7139 <Resolution Name="Type">Remove all underscores from type '{0}'.</Resolution>
7140 </Rule>
7141 <Rule TypeName="IdentifiersShouldNotHaveIncorrectSuffix" Category="Microsoft.Naming" CheckId="CA1711">
7142 <Resolution Name="Default">Rename '{0}' so that it does not end in '{1}'.</Resolution>
7143 </Rule>
7144 <Rule TypeName="LiteralsShouldBeSpelledCorrectly" Category="Microsoft.Usage" CheckId="CA2204">
7145 <Resolution Name="Default">Correct the spelling of the unrecognized token '{0}' in the literal '{1}'.</Resolution>
7146 </Rule>
7147 <Rule TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705">
7148 <Resolution Name="Member">Correct the capitalization of member name '{0}'.</Resolution>
7149 <Resolution Name="Namespace">Correct the capitalization of namespace name '{0}'.</Resolution>
7150 <Resolution Name="Parameter">Correct the capitalization of parameter name '{0}'.</Resolution>
7151 <Resolution Name="Type">Correct the capitalization of type name '{0}'.</Resolution>
7152 </Rule>
7153 <Rule TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016">
7154 <Resolution Name="Default">Add an AssemblyVersion attribute to '{0}'.</Resolution>
7155 </Rule>
7156 <Rule TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014">
7157 <Resolution Name="NoAttr">'{0}' should be marked with CLSCompliantAttribute and its value should be true.</Resolution>
7158 </Rule>
7159 <Rule TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017">
7160 <Resolution Name="NoAttribute">Mark '{0}' as ComVisible(false) at the assembly level, then mark all types within the assembly that should be exposed to Com clients as ComVisible(true).</Resolution>
7161 </Rule>
7162 <Rule TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822">
7163 <Resolution Name="Default">The 'this' parameter (or 'Me' in VB) of {0} is never used. Mark the member as static (or Shared in VB) or use 'this'/'Me' in the method body or at least one property accessor, if appropriate.</Resolution>
7164 </Rule>
7165 <Rule TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211">
7166 <Resolution Name="Default">Consider making '{0}' non-public or a constant.</Resolution>
7167 </Rule>
7168 <Rule TypeName="OperationsShouldNotOverflow" Category="Microsoft.Usage" CheckId="CA2233">
7169 <Resolution Name="Default">Correct the potential overflow in the operation '{0}' in '{1}'.</Resolution>
7170 </Rule>
7171 <Rule TypeName="OperatorOverloadsHaveNamedAlternates" Category="Microsoft.Usage" CheckId="CA2225">
7172 <Resolution Name="Default">Provide a method named '{0}' as a friendly alternate for operator {1}.</Resolution>
7173 </Rule>
7174 <Rule TypeName="OverloadOperatorEqualsOnOverloadingAddAndSubtract" Category="Microsoft.Design" CheckId="CA1013">
7175 <Resolution Name="Default">Consider adding an overload of the equality operator for '{0}' that takes the same parameters as {1}.</Resolution>
7176 </Rule>
7177 <Rule TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815">
7178 <Resolution Name="Equals">'{0}' should override Equals.</Resolution>
7179 <Resolution Name="op_Equality">'{0}' should override the equality (==) and inequality (!=) operators.</Resolution>
7180 </Rule>
7181 <Rule TypeName="ParameterNamesShouldMatchBaseDeclaration" Category="Microsoft.Naming" CheckId="CA1725">
7182 <Resolution Name="Default">Change parameter name '{0}' of method {1} to '{2}' in order to match the identifier as it has been declared in {3}.</Resolution>
7183 </Rule>
7184 <Rule TypeName="PassSystemUriObjectsInsteadOfStrings" Category="Microsoft.Usage" CheckId="CA2234">
7185 <Resolution Name="Default">Modify {0} to call {1} instead of {2}.</Resolution>
7186 </Rule>
7187 <Rule TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111">
7188 <Resolution Name="Default">Make '{0}' private.</Resolution>
7189 </Rule>
7190 <Rule TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044">
7191 <Resolution Name="Default">Add a property getter to '{0}'.</Resolution>
7192 </Rule>
7193 <Rule TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804">
7194 <Resolution Name="Default">{0} declares a local, '{1}', of type {2}, which is never used or is only assigned to. Use this local or remove it.</Resolution>
7195 </Rule>
7196 <Rule TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801">
7197 <Resolution Name="Default">Parameter '{0}' of {1} is never used. Remove the parameter or use it in the method body.</Resolution>
7198 </Rule>
7199 <Rule TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706">
7200 <Resolution Name="Member">Correct the capitalization of '{0}' in member name '{1}'.</Resolution>
7201 <Resolution Name="MemberId">'Id' is an abbreviation and therefore is not subject to acronym casing guidelines. Correct the capitalization of 'ID' in member name '{0}' by changing it to 'Id'.</Resolution>
7202 <Resolution Name="ParameterId">'Id' is an abbreviation and therefore is not subject to acronym casing guidelines. Correct the capitalization of '{0}' in parameter name '{1}' by changing it to '{2}'.</Resolution>
7203 <Resolution Name="Type">Correct the capitalization of '{0}' in type name '{1}'.</Resolution>
7204 </Rule>
7205 <Rule TypeName="SpecifyCultureInfo" Category="Microsoft.Globalization" CheckId="CA1304">
7206 <Resolution Name="Default">{0} makes a call to {1} that does not explicitly provide a CultureInfo. This should be replaced with a call to {2}.</Resolution>
7207 </Rule>
7208 <Rule TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305">
7209 <Resolution Name="Default">{0} makes a call to {1} that does not explicitly provide an IFormatProvider. This should be replaced with a call to {2}.</Resolution>
7210 </Rule>
7211 <Rule TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053">
7212 <Resolution Name="Default">Remove the public constructors from '{0}'.</Resolution>
7213 </Rule>
7214 <Rule TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820">
7215 <Resolution Name="IsNullOrEmpty">Replace the call to String.{0}({1}) in '{2}' with a call to String.IsNullOrEmpty.</Resolution>
7216 </Rule>
7217 <Rule TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724">
7218 <Resolution Name="Default">The type name '{0}' conflicts in whole or in part with the namespace name '{1}'. Change either name to eliminate the conflict.</Resolution>
7219 </Rule>
7220 <Rule TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001">
7221 <Resolution Name="Default">Implement IDisposable on '{0}' as it instantiates members of the following IDisposable types: {1}</Resolution>
7222 </Rule>
7223 <Rule TypeName="TypesThatOwnNativeResourcesShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1049">
7224 <Resolution Name="Default">Implement IDisposable on '{0}'.</Resolution>
7225 </Rule>
7226 <Rule TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054">
7227 <Resolution Name="Default">Change the type of parameter '{0}' of method {1} from string to System.Uri, or provide an overload of {1}, that allows '{0}' to be passed as a System.Uri object.</Resolution>
7228 </Rule>
7229 <Rule TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726">
7230 <Resolution Name="Member">Replace the term '{0}' in member name '{1}' with the preferred alternate '{2}'.</Resolution>
7231 <Resolution Name="Type">Replace the term '{0}' in type name '{1}' with the preferred alternate '{2}'.</Resolution>
7232 </Rule>
7233 <Rule TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024">
7234 <Resolution Name="Default">Change '{0}' to a property if appropriate.</Resolution>
7235 </Rule>
7236 <Rule TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062">
7237 <Resolution Name="Default">Validate parameter {0} passed to externally visible method {1}.</Resolution>
7238 </Rule>
7239 </Rules>
7240 </FxCopReport>
7241</FxCopProject>
diff --git a/OpenSim.sln b/OpenSim.sln
new file mode 100644
index 0000000..adbae2b
--- /dev/null
+++ b/OpenSim.sln
@@ -0,0 +1,163 @@
1Microsoft Visual Studio Solution File, Format Version 9.00
2# Visual C# Express 2005
3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim", "OpenSim\Region\Application\OpenSim.csproj", "{438A9556-0000-0000-0000-000000000000}"
4EndProject
5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework", "OpenSim\Framework\General\OpenSim.Framework.csproj", "{8ACA2445-0000-0000-0000-000000000000}"
6EndProject
7Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Communications", "OpenSim\Framework\Communications\OpenSim.Framework.Communications.csproj", "{CB52B7E7-0000-0000-0000-000000000000}"
8EndProject
9Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Communications.OGS1", "OpenSim\Framework\Communications.OGS1\OpenSim.Framework.Communications.OGS1.csproj", "{6109024D-0000-0000-0000-000000000000}"
10EndProject
11Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Console", "OpenSim\Framework\Console\OpenSim.Framework.Console.csproj", "{A7CD0630-0000-0000-0000-000000000000}"
12EndProject
13Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Data", "OpenSim\Framework\Data\OpenSim.Framework.Data.csproj", "{36B72A9B-0000-0000-0000-000000000000}"
14EndProject
15Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Data.DB4o", "OpenSim\Framework\Data.DB4o\OpenSim.Framework.Data.DB4o.csproj", "{FD2D303D-0000-0000-0000-000000000000}"
16EndProject
17Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.GenericConfig.Xml", "OpenSim\Framework\GenericConfig\Xml\OpenSim.Framework.GenericConfig.Xml.csproj", "{C74E4A30-0000-0000-0000-000000000000}"
18EndProject
19Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Servers", "OpenSim\Framework\Servers\OpenSim.Framework.Servers.csproj", "{2CC71860-0000-0000-0000-000000000000}"
20EndProject
21Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.UserManagement", "OpenSim\Framework\UserManager\OpenSim.Framework.UserManagement.csproj", "{586E2916-0000-0000-0000-000000000000}"
22EndProject
23Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Caches", "OpenSim\Region\Caches\OpenSim.Region.Caches.csproj", "{61FCCDB3-0000-0000-0000-000000000000}"
24EndProject
25Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.ClientStack", "OpenSim\Region\ClientStack\OpenSim.Region.ClientStack.csproj", "{DC3698B2-0000-0000-0000-000000000000}"
26EndProject
27Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.GridInterfaces.Local", "OpenSim\Region\GridInterfaces\Local\OpenSim.Region.GridInterfaces.Local.csproj", "{241A8CDD-0000-0000-0000-000000000000}"
28EndProject
29Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.GridInterfaces.Remote", "OpenSim\Region\GridInterfaces\Remote\OpenSim.Region.GridInterfaces.Remote.csproj", "{98C7B681-0000-0000-0000-000000000000}"
30EndProject
31Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.LocalCommunications", "OpenSim\Region\LocalCommunications\OpenSim.Region.LocalCommunications.csproj", "{EB3A1BA8-0000-0000-0000-000000000000}"
32EndProject
33Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Physics.BasicPhysicsPlugin", "OpenSim\Region\Physics\BasicPhysicsPlugin\OpenSim.Region.Physics.BasicPhysicsPlugin.csproj", "{15B4FEF3-0000-0000-0000-000000000000}"
34EndProject
35Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Physics.Manager", "OpenSim\Region\Physics\Manager\OpenSim.Region.Physics.Manager.csproj", "{F4FF31EB-0000-0000-0000-000000000000}"
36EndProject
37Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Physics.OdePlugin", "OpenSim\Region\Physics\OdePlugin\OpenSim.Region.Physics.OdePlugin.csproj", "{90620634-0000-0000-0000-000000000000}"
38EndProject
39Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Physics.PhysXPlugin", "OpenSim\Region\Physics\PhysXPlugin\OpenSim.Region.Physics.PhysXPlugin.csproj", "{A6D191D8-0000-0000-0000-000000000000}"
40EndProject
41Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Simulation", "OpenSim\Region\Simulation\OpenSim.Region.Simulation.csproj", "{C0DAB338-0000-0000-0000-000000000000}"
42EndProject
43Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Storage.LocalStorageBerkeleyDB", "OpenSim\Region\Storage\LocalStorageBerkeleyDB\OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj", "{A4691E59-0000-0000-0000-000000000000}"
44EndProject
45Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Storage.LocalStorageDb4o", "OpenSim\Region\Storage\LocalStorageDb4o\OpenSim.Region.Storage.LocalStorageDb4o.csproj", "{43DB702D-0000-0000-0000-000000000000}"
46EndProject
47Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Storage.LocalStorageSQLite", "OpenSim\Region\Storage\LocalStorageSQLite\OpenSim.Region.Storage.LocalStorageSQLite.csproj", "{477B9270-0000-0000-0000-000000000000}"
48EndProject
49Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Region.Terrain.BasicTerrain", "OpenSim\Region\Terrain.BasicTerrain\OpenSim.Region.Terrain.BasicTerrain.csproj", "{C9E0F891-0000-0000-0000-000000000000}"
50EndProject
51Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApp", "OpenSim\Region\Examples\SimpleApp\SimpleApp.csproj", "{24B12448-0000-0000-0000-000000000000}"
52EndProject
53Global
54 GlobalSection(SolutionConfigurationPlatforms) = preSolution
55 Debug|Any CPU = Debug|Any CPU
56 Release|Any CPU = Release|Any CPU
57 EndGlobalSection
58 GlobalSection(ProjectConfigurationPlatforms) = postSolution
59 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
60 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
61 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
62 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
63 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
64 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
65 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
66 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
67 {CB52B7E7-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
68 {CB52B7E7-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
69 {CB52B7E7-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
70 {CB52B7E7-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
71 {6109024D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
72 {6109024D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
73 {6109024D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
74 {6109024D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
75 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
76 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
77 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
78 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
79 {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
80 {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
81 {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
82 {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
83 {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
84 {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
85 {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
86 {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
87 {C74E4A30-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
88 {C74E4A30-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
89 {C74E4A30-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
90 {C74E4A30-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
91 {2CC71860-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
92 {2CC71860-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
93 {2CC71860-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
94 {2CC71860-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
95 {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
96 {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
97 {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
98 {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
99 {61FCCDB3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
100 {61FCCDB3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
101 {61FCCDB3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
102 {61FCCDB3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
103 {DC3698B2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
104 {DC3698B2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
105 {DC3698B2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
106 {DC3698B2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
107 {241A8CDD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
108 {241A8CDD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
109 {241A8CDD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
110 {241A8CDD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
111 {98C7B681-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
112 {98C7B681-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
113 {98C7B681-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
114 {98C7B681-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
115 {EB3A1BA8-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
116 {EB3A1BA8-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
117 {EB3A1BA8-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
118 {EB3A1BA8-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
119 {15B4FEF3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
120 {15B4FEF3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
121 {15B4FEF3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
122 {15B4FEF3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
123 {F4FF31EB-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
124 {F4FF31EB-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
125 {F4FF31EB-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
126 {F4FF31EB-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
127 {90620634-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
128 {90620634-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
129 {90620634-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
130 {90620634-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
131 {A6D191D8-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
132 {A6D191D8-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
133 {A6D191D8-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
134 {A6D191D8-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
135 {C0DAB338-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
136 {C0DAB338-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
137 {C0DAB338-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
138 {C0DAB338-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
139 {A4691E59-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
140 {A4691E59-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
141 {A4691E59-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
142 {A4691E59-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
143 {43DB702D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
144 {43DB702D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
145 {43DB702D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
146 {43DB702D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
147 {477B9270-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
148 {477B9270-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
149 {477B9270-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
150 {477B9270-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
151 {C9E0F891-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
152 {C9E0F891-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
153 {C9E0F891-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
154 {C9E0F891-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
155 {24B12448-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
156 {24B12448-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
157 {24B12448-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
158 {24B12448-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
159 EndGlobalSection
160 GlobalSection(SolutionProperties) = preSolution
161 HideSolutionNode = FALSE
162 EndGlobalSection
163EndGlobal
diff --git a/OpenSim.suo b/OpenSim.suo
new file mode 100644
index 0000000..765dc63
--- /dev/null
+++ b/OpenSim.suo
Binary files differ
diff --git a/OpenSim/Framework/Communications.OGS1/GridCommsManager.cs b/OpenSim/Framework/Communications.OGS1/GridCommsManager.cs
new file mode 100644
index 0000000..6687380
--- /dev/null
+++ b/OpenSim/Framework/Communications.OGS1/GridCommsManager.cs
@@ -0,0 +1,18 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenSim.Framework.Types;
5using OpenSim.Framework.Communications;
6namespace OpenSim.Framework.Communications.OGS1
7{
8 public class GridCommsManager : CommunicationsManager
9 {
10 private OGS1GridServices gridInterComms = new OGS1GridServices();
11 public GridCommsManager(NetworkServersInfo serversInfo) :base(serversInfo)
12 {
13 GridServer = gridInterComms;
14 InterRegion = gridInterComms;
15 UserServer = new OGSUserServices();
16 }
17 }
18}
diff --git a/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs b/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs
new file mode 100644
index 0000000..408643f
--- /dev/null
+++ b/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs
@@ -0,0 +1,248 @@
1using System;
2using System.Collections.Generic;
3using System.Collections;
4using System.Text;
5using System.Runtime.Remoting;
6using System.Runtime.Remoting.Channels;
7using System.Runtime.Remoting.Channels.Tcp;
8
9using OpenSim.Servers;
10using OpenSim.Framework;
11using OpenSim.Framework.Types;
12using OpenSim.Framework.Communications;
13
14using Nwc.XmlRpc;
15using libsecondlife;
16
17namespace OpenSim.Framework.Communications.OGS1
18{
19 public class OGS1GridServices : IGridServices, IInterRegionCommunications
20 {
21 public Dictionary<ulong, RegionCommsListener> listeners = new Dictionary<ulong, RegionCommsListener>();
22 public GridInfo grid;
23 public BaseHttpServer httpListener;
24 private bool initialised = false;
25
26 public RegionCommsListener RegisterRegion(RegionInfo regionInfo, GridInfo gridInfo)
27 {
28 Hashtable GridParams = new Hashtable();
29
30 grid = gridInfo;
31
32 // Login / Authentication
33 GridParams["authkey"] = gridInfo.GridServerSendKey;
34 GridParams["UUID"] = regionInfo.SimUUID.ToStringHyphenated();
35 GridParams["sim_ip"] = regionInfo.CommsExternalAddress;
36 GridParams["sim_port"] = regionInfo.CommsIPListenPort.ToString();
37
38 // Package into an XMLRPC Request
39 ArrayList SendParams = new ArrayList();
40 SendParams.Add(GridParams);
41
42 // Send Request
43 XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams);
44 XmlRpcResponse GridResp = GridReq.Send(gridInfo.GridServerURI, 3000);
45 Hashtable GridRespData = (Hashtable)GridResp.Value;
46 Hashtable griddatahash = GridRespData;
47
48 // Process Response
49 if (GridRespData.ContainsKey("error"))
50 {
51 string errorstring = (string)GridRespData["error"];
52 OpenSim.Framework.Console.MainLog.Instance.Error("Unable to connect to grid: " + errorstring);
53 return null;
54 }
55
56 if (!this.listeners.ContainsKey(regionInfo.RegionHandle))
57 {
58 // initialised = true;
59 httpListener = new BaseHttpServer(regionInfo.CommsIPListenPort);
60 httpListener.AddXmlRPCHandler("expect_user", this.ExpectUser);
61 httpListener.Start();
62 }
63
64 // Initialise the background listeners
65 listeners[regionInfo.RegionHandle] = new RegionCommsListener();
66
67 return listeners[regionInfo.RegionHandle];
68 }
69
70 public List<RegionInfo> RequestNeighbours(RegionInfo regionInfo)
71 {
72 Hashtable respData = MapBlockQuery((int)regionInfo.RegionLocX - 1, (int)regionInfo.RegionLocY - 1, (int)regionInfo.RegionLocX + 1, (int)regionInfo.RegionLocY + 1);
73
74 List<RegionInfo> neighbours = new List<RegionInfo>();
75
76 foreach (Hashtable n in (Hashtable)respData.Values)
77 {
78 RegionInfo neighbour = new RegionInfo();
79
80 //OGS1
81 neighbour.RegionHandle = (ulong)n["regionhandle"];
82 neighbour.RegionLocX = (uint)n["x"];
83 neighbour.RegionLocY = (uint)n["y"];
84 neighbour.RegionName = (string)n["name"];
85
86 //OGS1+
87 neighbour.CommsIPListenAddr = (string)n["sim_ip"];
88 neighbour.CommsIPListenPort = (int)n["sim_port"];
89 neighbour.CommsExternalAddress = (string)n["sim_uri"];
90 neighbour.SimUUID = (string)n["uuid"];
91
92 neighbours.Add(neighbour);
93 }
94
95 return neighbours;
96 }
97
98 public RegionInfo RequestNeighbourInfo(ulong regionHandle)
99 {
100 OpenSim.Framework.Console.MainLog.Instance.Warn("Unimplemented - RequestNeighbourInfo()");
101 return null;
102 }
103
104 public List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY)
105 {
106 Hashtable respData = MapBlockQuery(minX, minY, maxX, maxY);
107
108 List<MapBlockData> neighbours = new List<MapBlockData>();
109
110 foreach (Hashtable n in (Hashtable)respData.Values)
111 {
112 MapBlockData neighbour = new MapBlockData();
113
114 neighbour.X = (ushort)n["x"];
115 neighbour.Y = (ushort)n["y"];
116
117 neighbour.Name = (string)n["name"];
118 neighbour.Access = (byte)n["access"];
119 neighbour.RegionFlags = (uint)n["region-flags"];
120 neighbour.WaterHeight = (byte)n["water-height"];
121 neighbour.MapImageId = (string)n["map-image-id"];
122
123 neighbours.Add(neighbour);
124 }
125
126 return neighbours;
127 }
128
129 /// <summary>
130 /// Performs a XML-RPC query against the grid server returning mapblock information in the specified coordinates
131 /// </summary>
132 /// <remarks>REDUNDANT - OGS1 is to be phased out in favour of OGS2</remarks>
133 /// <param name="minX">Minimum X value</param>
134 /// <param name="minY">Minimum Y value</param>
135 /// <param name="maxX">Maximum X value</param>
136 /// <param name="maxY">Maximum Y value</param>
137 /// <returns>Hashtable of hashtables containing map data elements</returns>
138 private Hashtable MapBlockQuery(int minX, int minY, int maxX, int maxY)
139 {
140 Hashtable param = new Hashtable();
141 param["xmin"] = minX;
142 param["ymin"] = minY;
143 param["xmax"] = maxX;
144 param["ymax"] = maxY;
145 IList parameters = new ArrayList();
146 parameters.Add(param);
147 XmlRpcRequest req = new XmlRpcRequest("map_block", parameters);
148 XmlRpcResponse resp = req.Send(grid.GridServerURI, 3000);
149 Hashtable respData = (Hashtable)resp.Value;
150 return respData;
151 }
152
153 // Grid Request Processing
154 public XmlRpcResponse ExpectUser(XmlRpcRequest request)
155 {
156 Hashtable requestData = (Hashtable)request.Params[0];
157 AgentCircuitData agentData = new AgentCircuitData();
158 agentData.SessionID = new LLUUID((string)requestData["session_id"]);
159 agentData.SecureSessionID = new LLUUID((string)requestData["secure_session_id"]);
160 agentData.firstname = (string)requestData["firstname"];
161 agentData.lastname = (string)requestData["lastname"];
162 agentData.AgentID = new LLUUID((string)requestData["agent_id"]);
163 agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]);
164 if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1"))
165 {
166 agentData.child = true;
167 }
168 else
169 {
170 agentData.startpos = new LLVector3(Convert.ToUInt32(requestData["startpos_x"]), Convert.ToUInt32(requestData["startpos_y"]), Convert.ToUInt32(requestData["startpos_z"]));
171 agentData.child = false;
172
173 }
174
175 if (listeners.ContainsKey((ulong)requestData["regionhandle"]))
176 {
177 this.listeners[(ulong)requestData["regionhandle"]].TriggerExpectUser((ulong)requestData["regionhandle"], agentData);
178 }
179 else
180 {
181 OpenSim.Framework.Console.MainLog.Instance.Error("ExpectUser() - Unknown region " + ((ulong)requestData["regionhandle"]).ToString());
182 }
183
184 return new XmlRpcResponse();
185 }
186
187 #region InterRegion Comms
188 private void StartRemoting()
189 {
190 TcpChannel ch = new TcpChannel(8895);
191 ChannelServices.RegisterChannel(ch);
192
193 WellKnownServiceTypeEntry wellType = new WellKnownServiceTypeEntry( Type.GetType("OGS1InterRegionRemoting"), "InterRegions", WellKnownObjectMode.Singleton);
194 RemotingConfiguration.RegisterWellKnownServiceType(wellType);
195 InterRegionSingleton.Instance.OnArrival += this.IncomingArrival;
196 InterRegionSingleton.Instance.OnChildAgent += this.IncomingChildAgent;
197 }
198
199 #region Methods called by regions in this instance
200 public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData)
201 {
202 if (this.listeners.ContainsKey(regionHandle))
203 {
204 this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData);
205 return true;
206 }
207 //TODO need to see if we know about where this region is and use .net remoting
208 // to inform it.
209 return false;
210 }
211
212 public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position)
213 {
214 if (this.listeners.ContainsKey(regionHandle))
215 {
216 this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position);
217 return true;
218 }
219 //TODO need to see if we know about where this region is and use .net remoting
220 // to inform it.
221 return false;
222 }
223 #endregion
224
225 #region Methods triggered by calls from external instances
226 public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData)
227 {
228 if (this.listeners.ContainsKey(regionHandle))
229 {
230 this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData);
231 return true;
232 }
233 return false;
234 }
235
236 public bool IncomingArrival(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position)
237 {
238 if (this.listeners.ContainsKey(regionHandle))
239 {
240 this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position);
241 return true;
242 }
243 return false;
244 }
245 #endregion
246 #endregion
247 }
248}
diff --git a/OpenSim/Framework/Communications.OGS1/OGSInterSimComms.cs b/OpenSim/Framework/Communications.OGS1/OGSInterSimComms.cs
new file mode 100644
index 0000000..8ba257e
--- /dev/null
+++ b/OpenSim/Framework/Communications.OGS1/OGSInterSimComms.cs
@@ -0,0 +1,70 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenSim.Framework.Types;
5using OpenSim.Framework.Communications;
6namespace OpenSim.Framework.Communications.OGS1
7{
8 public delegate bool InformRegionChild(ulong regionHandle, AgentCircuitData agentData);
9 public delegate bool ExpectArrival(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position);
10
11 public sealed class InterRegionSingleton
12 {
13 static readonly InterRegionSingleton instance = new InterRegionSingleton();
14
15 public event InformRegionChild OnChildAgent;
16 public event ExpectArrival OnArrival;
17
18 static InterRegionSingleton()
19 {
20 }
21
22 InterRegionSingleton()
23 {
24 }
25
26 public static InterRegionSingleton Instance
27 {
28 get
29 {
30 return instance;
31 }
32 }
33
34 public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData)
35 {
36 if (OnChildAgent != null)
37 {
38 return OnChildAgent(regionHandle, agentData);
39 }
40 return false;
41 }
42
43 public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position)
44 {
45 if (OnArrival != null)
46 {
47 return OnArrival(regionHandle, agentID, position);
48 }
49 return false;
50 }
51 }
52
53 public class OGS1InterRegionRemoting : MarshalByRefObject
54 {
55
56 public OGS1InterRegionRemoting()
57 {
58 }
59
60 public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData)
61 {
62 return InterRegionSingleton.Instance.InformRegionOfChildAgent(regionHandle, agentData);
63 }
64
65 public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position)
66 {
67 return InterRegionSingleton.Instance.ExpectAvatarCrossing(regionHandle, agentID, position);
68 }
69 }
70}
diff --git a/OpenSim/Framework/Communications.OGS1/OGSUserServices.cs b/OpenSim/Framework/Communications.OGS1/OGSUserServices.cs
new file mode 100644
index 0000000..ff5fbbb
--- /dev/null
+++ b/OpenSim/Framework/Communications.OGS1/OGSUserServices.cs
@@ -0,0 +1,25 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenSim.Framework.Communications;
5using OpenSim.Framework.Data;
6using libsecondlife;
7
8namespace OpenSim.Framework.Communications.OGS1
9{
10 public class OGSUserServices :IUserServices
11 {
12 public UserProfileData GetUserProfile(string firstName, string lastName)
13 {
14 return null;
15 }
16 public UserProfileData GetUserProfile(string name)
17 {
18 return null;
19 }
20 public UserProfileData GetUserProfile(LLUUID avatarID)
21 {
22 return null;
23 }
24 }
25}
diff --git a/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj
new file mode 100644
index 0000000..3985ee5
--- /dev/null
+++ b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj
@@ -0,0 +1,142 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{6109024D-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Communications.OGS1</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Communications.OGS1</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Data" >
70 <HintPath>System.Data.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Runtime.Remoting" >
74 <HintPath>System.Runtime.Remoting.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="XMLRPC.dll" >
82 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 </ItemGroup>
86 <ItemGroup>
87 <ProjectReference Include="..\General\OpenSim.Framework.csproj">
88 <Name>OpenSim.Framework</Name>
89 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
90 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
91 <Private>False</Private>
92 </ProjectReference>
93 <ProjectReference Include="..\Communications\OpenSim.Framework.Communications.csproj">
94 <Name>OpenSim.Framework.Communications</Name>
95 <Project>{CB52B7E7-0000-0000-0000-000000000000}</Project>
96 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
97 <Private>False</Private>
98 </ProjectReference>
99 <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj">
100 <Name>OpenSim.Framework.Console</Name>
101 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
102 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
103 <Private>False</Private>
104 </ProjectReference>
105 <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj">
106 <Name>OpenSim.Framework.Data</Name>
107 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
108 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
109 <Private>False</Private>
110 </ProjectReference>
111 <ProjectReference Include="..\Servers\OpenSim.Framework.Servers.csproj">
112 <Name>OpenSim.Framework.Servers</Name>
113 <Project>{2CC71860-0000-0000-0000-000000000000}</Project>
114 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
115 <Private>False</Private>
116 </ProjectReference>
117 </ItemGroup>
118 <ItemGroup>
119 <Compile Include="GridCommsManager.cs">
120 <SubType>Code</SubType>
121 </Compile>
122 <Compile Include="OGS1GridServices.cs">
123 <SubType>Code</SubType>
124 </Compile>
125 <Compile Include="OGSInterSimComms.cs">
126 <SubType>Code</SubType>
127 </Compile>
128 <Compile Include="OGSUserServices.cs">
129 <SubType>Code</SubType>
130 </Compile>
131 <Compile Include="Properties\AssemblyInfo.cs">
132 <SubType>Code</SubType>
133 </Compile>
134 </ItemGroup>
135 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
136 <PropertyGroup>
137 <PreBuildEvent>
138 </PreBuildEvent>
139 <PostBuildEvent>
140 </PostBuildEvent>
141 </PropertyGroup>
142</Project>
diff --git a/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj.user b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Communications.OGS1/Properties/AssemblyInfo.cs b/OpenSim/Framework/Communications.OGS1/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0c6f965
--- /dev/null
+++ b/OpenSim/Framework/Communications.OGS1/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenGrid.Framework.Communications.OGS1")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenGrid.Framework.Communications.OGS1")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("a8b2b39b-c83b-41e2-b0b5-7ccfc1fddae7")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs
new file mode 100644
index 0000000..74d12d2
--- /dev/null
+++ b/OpenSim/Framework/Communications/CommunicationsManager.cs
@@ -0,0 +1,51 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Text;
32using OpenSim.Framework;
33using OpenSim.Framework.Interfaces;
34using OpenSim.Framework.Types;
35using libsecondlife;
36
37namespace OpenSim.Framework.Communications
38{
39
40 public class CommunicationsManager
41 {
42 public IUserServices UserServer;
43 public IGridServices GridServer;
44 public IInterRegionCommunications InterRegion;
45
46 public CommunicationsManager(NetworkServersInfo serversInfo)
47 {
48
49 }
50 }
51}
diff --git a/OpenSim/Framework/Communications/IGridServices.cs b/OpenSim/Framework/Communications/IGridServices.cs
new file mode 100644
index 0000000..a4812fb
--- /dev/null
+++ b/OpenSim/Framework/Communications/IGridServices.cs
@@ -0,0 +1,51 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.Text;
32using OpenSim.Framework.Types;
33using OpenSim.Framework;
34
35namespace OpenSim.Framework.Communications
36{
37 public class GridInfo
38 {
39 public string GridServerURI = "http://grid.deepgrid.com:8001/"; // Temporarily hardcoded.
40 public string GridServerSendKey = "badger";
41 public string GridServerRecvKey = "badger";
42 }
43
44 public interface IGridServices
45 {
46 RegionCommsListener RegisterRegion(RegionInfo regionInfo, GridInfo gridInfo);
47 List<RegionInfo> RequestNeighbours(RegionInfo regionInfo);
48 RegionInfo RequestNeighbourInfo(ulong regionHandle);
49 List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
50 }
51}
diff --git a/OpenSim/Framework/Communications/IInterRegionCommunications.cs b/OpenSim/Framework/Communications/IInterRegionCommunications.cs
new file mode 100644
index 0000000..7b0d340
--- /dev/null
+++ b/OpenSim/Framework/Communications/IInterRegionCommunications.cs
@@ -0,0 +1,41 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Types;
32using OpenSim.Framework;
33
34namespace OpenSim.Framework.Communications
35{
36 public interface IInterRegionCommunications
37 {
38 bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData);
39 bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position);
40 }
41}
diff --git a/OpenSim/Framework/Communications/IUserServices.cs b/OpenSim/Framework/Communications/IUserServices.cs
new file mode 100644
index 0000000..6790651
--- /dev/null
+++ b/OpenSim/Framework/Communications/IUserServices.cs
@@ -0,0 +1,44 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33using OpenSim.Framework.Data;
34
35namespace OpenSim.Framework.Communications
36{
37 public interface IUserServices
38 {
39 UserProfileData GetUserProfile(string firstName, string lastName);
40 UserProfileData GetUserProfile(string name);
41 UserProfileData GetUserProfile(LLUUID avatarID);
42
43 }
44}
diff --git a/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj
new file mode 100644
index 0000000..31ab172
--- /dev/null
+++ b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj
@@ -0,0 +1,112 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{CB52B7E7-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Communications</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Communications</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Xml" >
70 <HintPath>System.Xml.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 </ItemGroup>
74 <ItemGroup>
75 <ProjectReference Include="..\General\OpenSim.Framework.csproj">
76 <Name>OpenSim.Framework</Name>
77 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
78 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
79 <Private>False</Private>
80 </ProjectReference>
81 <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj">
82 <Name>OpenSim.Framework.Data</Name>
83 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
84 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
85 <Private>False</Private>
86 </ProjectReference>
87 </ItemGroup>
88 <ItemGroup>
89 <Compile Include="CommunicationsManager.cs">
90 <SubType>Code</SubType>
91 </Compile>
92 <Compile Include="IGridServices.cs">
93 <SubType>Code</SubType>
94 </Compile>
95 <Compile Include="IInterRegionCommunications.cs">
96 <SubType>Code</SubType>
97 </Compile>
98 <Compile Include="IUserServices.cs">
99 <SubType>Code</SubType>
100 </Compile>
101 <Compile Include="Properties\AssemblyInfo.cs">
102 <SubType>Code</SubType>
103 </Compile>
104 </ItemGroup>
105 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
106 <PropertyGroup>
107 <PreBuildEvent>
108 </PreBuildEvent>
109 <PostBuildEvent>
110 </PostBuildEvent>
111 </PropertyGroup>
112</Project>
diff --git a/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj.user b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs b/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..83e7dd4
--- /dev/null
+++ b/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs
@@ -0,0 +1,62 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// General Information about an assembly is controlled through the following
33// set of attributes. Change these attribute values to modify the information
34// associated with an assembly.
35[assembly: AssemblyTitle("OpenGrid.Framework.Communications")]
36[assembly: AssemblyDescription("")]
37[assembly: AssemblyConfiguration("")]
38[assembly: AssemblyCompany("")]
39[assembly: AssemblyProduct("OpenGrid.Framework.Communications")]
40[assembly: AssemblyCopyright("Copyright © 2007")]
41[assembly: AssemblyTrademark("")]
42[assembly: AssemblyCulture("")]
43
44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type.
47[assembly: ComVisible(false)]
48
49// The following GUID is for the ID of the typelib if this project is exposed to COM
50[assembly: Guid("13e7c396-78a9-4a5c-baf2-6f980ea75d95")]
51
52// Version information for an assembly consists of the following four values:
53//
54// Major Version
55// Minor Version
56// Build Number
57// Revision
58//
59// You can specify all the values or you can default the Revision and Build Numbers
60// by using the '*' as shown below:
61[assembly: AssemblyVersion("1.0.0.0")]
62[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Console/AssemblyInfo.cs b/OpenSim/Framework/Console/AssemblyInfo.cs
new file mode 100644
index 0000000..8f715d2
--- /dev/null
+++ b/OpenSim/Framework/Console/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("ServerConsole")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("ServerConsole")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Framework/Console/ConsoleCallbacksBase.cs b/OpenSim/Framework/Console/ConsoleCallbacksBase.cs
new file mode 100644
index 0000000..e3847be
--- /dev/null
+++ b/OpenSim/Framework/Console/ConsoleCallbacksBase.cs
@@ -0,0 +1,39 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.Console
33{
34 public interface conscmd_callback
35 {
36 void RunCmd(string cmd, string[] cmdparams);
37 void Show(string ShowWhat);
38 }
39}
diff --git a/OpenSim/Framework/Console/LogBase.cs b/OpenSim/Framework/Console/LogBase.cs
new file mode 100644
index 0000000..1a92d8e
--- /dev/null
+++ b/OpenSim/Framework/Console/LogBase.cs
@@ -0,0 +1,238 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.IO;
30
31namespace OpenSim.Framework.Console
32{
33 public enum LogPriority : int
34 {
35 CRITICAL,
36 HIGH,
37 MEDIUM,
38 NORMAL,
39 LOW,
40 VERBOSE,
41 EXTRAVERBOSE
42 }
43
44 public class LogBase
45 {
46 StreamWriter Log;
47 public conscmd_callback cmdparser;
48 public string componentname;
49 private bool m_silent;
50
51 public LogBase(string LogFile, string componentname, conscmd_callback cmdparser, bool silent )
52 {
53 this.componentname = componentname;
54 this.cmdparser = cmdparser;
55 this.m_silent = silent;
56 System.Console.WriteLine("ServerConsole.cs - creating new local console");
57
58 if( String.IsNullOrEmpty( LogFile ) )
59 {
60 LogFile = componentname + ".log";
61 }
62
63 System.Console.WriteLine("Logs will be saved to current directory in " + LogFile);
64 Log = File.AppendText(LogFile);
65 Log.WriteLine("========================================================================");
66 Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString());
67 }
68
69 public void Close()
70 {
71 Log.WriteLine("Shutdown at " + DateTime.Now.ToString());
72 Log.Close();
73 }
74
75 public void Write(string format, params object[] args)
76 {
77 Notice(format,args);
78 return;
79 }
80
81 public void WriteLine(LogPriority importance, string format, params object[] args)
82 {
83 Log.WriteLine(format, args);
84 Log.Flush();
85 if (!m_silent)
86 {
87 System.Console.WriteLine(format, args);
88 }
89 return;
90 }
91
92 public void Warn(string format, params object[] args)
93 {
94 WriteNewLine(ConsoleColor.Yellow, format, args);
95 return;
96 }
97
98 public void Notice(string format, params object[] args)
99 {
100 WriteNewLine(ConsoleColor.White, format, args);
101 return;
102 }
103
104 public void Error(string format, params object[] args)
105 {
106 WriteNewLine(ConsoleColor.Red, format, args);
107 return;
108 }
109
110 public void Verbose(string format, params object[] args)
111 {
112 WriteNewLine(ConsoleColor.Gray, format, args);
113 return;
114 }
115
116 public void Status(string format, params object[] args)
117 {
118 WriteNewLine(ConsoleColor.Blue, format, args);
119 return;
120 }
121
122 private void WriteNewLine(System.ConsoleColor color, string format, params object[] args)
123 {
124 Log.WriteLine(format, args);
125 Log.Flush();
126 if (!m_silent)
127 {
128 try
129 {
130 System.Console.ForegroundColor = color;
131 System.Console.WriteLine(format, args);
132 System.Console.ResetColor();
133 }
134 catch (System.ArgumentNullException)
135 {
136 // Some older systems dont support coloured text.
137 System.Console.WriteLine(format, args);
138 }
139 }
140 return;
141 }
142
143 public string ReadLine()
144 {
145 string TempStr = System.Console.ReadLine();
146 Log.WriteLine(TempStr);
147 return TempStr;
148 }
149
150 public int Read()
151 {
152 int TempInt = System.Console.Read();
153 Log.Write((char)TempInt);
154 return TempInt;
155 }
156
157 // Displays a prompt and waits for the user to enter a string, then returns that string
158 // Done with no echo and suitable for passwords
159 public string PasswdPrompt(string prompt)
160 {
161 // FIXME: Needs to be better abstracted
162 Log.WriteLine(prompt);
163 this.Write(prompt);
164 ConsoleColor oldfg = System.Console.ForegroundColor;
165 System.Console.ForegroundColor = System.Console.BackgroundColor;
166 string temp = System.Console.ReadLine();
167 System.Console.ForegroundColor = oldfg;
168 return temp;
169 }
170
171 // Displays a command prompt and waits for the user to enter a string, then returns that string
172 public string CmdPrompt(string prompt)
173 {
174 this.Write(String.Format("{0}: ", prompt));
175 return this.ReadLine();
176 }
177
178 // Displays a command prompt and returns a default value if the user simply presses enter
179 public string CmdPrompt(string prompt, string defaultresponse)
180 {
181 string temp = CmdPrompt(String.Format( "{0} [{1}]", prompt, defaultresponse ));
182 if (temp == "")
183 {
184 return defaultresponse;
185 }
186 else
187 {
188 return temp;
189 }
190 }
191
192 // Displays a command prompt and returns a default value, user may only enter 1 of 2 options
193 public string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB)
194 {
195 bool itisdone = false;
196 string temp = CmdPrompt(prompt, defaultresponse);
197 while (itisdone == false)
198 {
199 if ((temp == OptionA) || (temp == OptionB))
200 {
201 itisdone = true;
202 }
203 else
204 {
205 Notice("Valid options are " + OptionA + " or " + OptionB);
206 temp = CmdPrompt(prompt, defaultresponse);
207 }
208 }
209 return temp;
210 }
211
212 // Runs a command with a number of parameters
213 public Object RunCmd(string Cmd, string[] cmdparams)
214 {
215 cmdparser.RunCmd(Cmd, cmdparams);
216 return null;
217 }
218
219 // Shows data about something
220 public void ShowCommands(string ShowWhat)
221 {
222 cmdparser.Show(ShowWhat);
223 }
224
225 public void MainLogPrompt()
226 {
227 string[] tempstrarray;
228 string tempstr = this.CmdPrompt(this.componentname + "# ");
229 tempstrarray = tempstr.Split(' ');
230 string cmd = tempstrarray[0];
231 Array.Reverse(tempstrarray);
232 Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1);
233 Array.Reverse(tempstrarray);
234 string[] cmdparams = (string[])tempstrarray;
235 RunCmd(cmd, cmdparams);
236 }
237 }
238}
diff --git a/OpenSim/Framework/Console/MainLog.cs b/OpenSim/Framework/Console/MainLog.cs
new file mode 100644
index 0000000..d7f945e
--- /dev/null
+++ b/OpenSim/Framework/Console/MainLog.cs
@@ -0,0 +1,49 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29
30namespace OpenSim.Framework.Console
31{
32 public class MainLog {
33
34 private static LogBase instance;
35
36 public static LogBase Instance
37 {
38 get
39 {
40 return instance;
41 }
42 set
43 {
44 instance = value;
45 }
46 }
47 }
48
49}
diff --git a/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj
new file mode 100644
index 0000000..f3dcec5
--- /dev/null
+++ b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj
@@ -0,0 +1,89 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{A7CD0630-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Console</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Console</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="System" >
62 <HintPath>System.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 </ItemGroup>
66 <ItemGroup>
67 </ItemGroup>
68 <ItemGroup>
69 <Compile Include="AssemblyInfo.cs">
70 <SubType>Code</SubType>
71 </Compile>
72 <Compile Include="ConsoleCallbacksBase.cs">
73 <SubType>Code</SubType>
74 </Compile>
75 <Compile Include="LogBase.cs">
76 <SubType>Code</SubType>
77 </Compile>
78 <Compile Include="MainLog.cs">
79 <SubType>Code</SubType>
80 </Compile>
81 </ItemGroup>
82 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
83 <PropertyGroup>
84 <PreBuildEvent>
85 </PreBuildEvent>
86 <PostBuildEvent>
87 </PostBuildEvent>
88 </PropertyGroup>
89</Project>
diff --git a/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj.user b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Data.DB4o/DB4oGridData.cs b/OpenSim/Framework/Data.DB4o/DB4oGridData.cs
new file mode 100644
index 0000000..dc8488e
--- /dev/null
+++ b/OpenSim/Framework/Data.DB4o/DB4oGridData.cs
@@ -0,0 +1,166 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.Text;
32using OpenSim.Framework.Data;
33using libsecondlife;
34
35
36namespace OpenSim.Framework.Data.DB4o
37{
38 /// <summary>
39 /// A grid server storage mechanism employing the DB4o database system
40 /// </summary>
41 class DB4oGridData : IGridData
42 {
43 /// <summary>
44 /// The database manager object
45 /// </summary>
46 DB4oGridManager manager;
47
48 /// <summary>
49 /// Called when the plugin is first loaded (as constructors are not called)
50 /// </summary>
51 public void Initialise() {
52 manager = new DB4oGridManager("gridserver.yap");
53 }
54
55 /// <summary>
56 /// Returns a list of regions within the specified ranges
57 /// </summary>
58 /// <param name="a">minimum X coordinate</param>
59 /// <param name="b">minimum Y coordinate</param>
60 /// <param name="c">maximum X coordinate</param>
61 /// <param name="d">maximum Y coordinate</param>
62 /// <returns>An array of region profiles</returns>
63 public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
64 {
65 return null;
66 }
67
68 /// <summary>
69 /// Returns a region located at the specified regionHandle (warning multiple regions may occupy the one spot, first found is returned)
70 /// </summary>
71 /// <param name="handle">The handle to search for</param>
72 /// <returns>A region profile</returns>
73 public SimProfileData GetProfileByHandle(ulong handle) {
74 lock (manager.simProfiles)
75 {
76 foreach (LLUUID UUID in manager.simProfiles.Keys)
77 {
78 if (manager.simProfiles[UUID].regionHandle == handle)
79 {
80 return manager.simProfiles[UUID];
81 }
82 }
83 }
84 throw new Exception("Unable to find profile with handle (" + handle.ToString() + ")");
85 }
86
87 /// <summary>
88 /// Returns a specific region
89 /// </summary>
90 /// <param name="uuid">The region ID code</param>
91 /// <returns>A region profile</returns>
92 public SimProfileData GetProfileByLLUUID(LLUUID uuid)
93 {
94 lock (manager.simProfiles)
95 {
96 if (manager.simProfiles.ContainsKey(uuid))
97 return manager.simProfiles[uuid];
98 }
99 throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + ")");
100 }
101
102 /// <summary>
103 /// Adds a new specified region to the database
104 /// </summary>
105 /// <param name="profile">The profile to add</param>
106 /// <returns>A dataresponse enum indicating success</returns>
107 public DataResponse AddProfile(SimProfileData profile)
108 {
109 lock (manager.simProfiles)
110 {
111 if (manager.AddRow(profile))
112 {
113 return DataResponse.RESPONSE_OK;
114 }
115 else
116 {
117 return DataResponse.RESPONSE_ERROR;
118 }
119 }
120 }
121
122 /// <summary>
123 /// Authenticates a new region using the shared secrets. NOT SECURE.
124 /// </summary>
125 /// <param name="uuid">The UUID the region is authenticating with</param>
126 /// <param name="handle">The location the region is logging into (unused in Db4o)</param>
127 /// <param name="key">The shared secret</param>
128 /// <returns>Authenticated?</returns>
129 public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) {
130 if (manager.simProfiles[uuid].regionRecvKey == key)
131 return true;
132 return false;
133 }
134
135 /// <summary>
136 /// Shuts down the database
137 /// </summary>
138 public void Close()
139 {
140 manager = null;
141 }
142
143 /// <summary>
144 /// Returns the providers name
145 /// </summary>
146 /// <returns>The name of the storage system</returns>
147 public string getName()
148 {
149 return "DB4o Grid Provider";
150 }
151
152 /// <summary>
153 /// Returns the providers version
154 /// </summary>
155 /// <returns>The version of the storage system</returns>
156 public string getVersion()
157 {
158 return "0.1";
159 }
160
161 public ReservationData GetReservationAtPoint(uint x, uint y)
162 {
163 return null;
164 }
165 }
166}
diff --git a/OpenSim/Framework/Data.DB4o/DB4oManager.cs b/OpenSim/Framework/Data.DB4o/DB4oManager.cs
new file mode 100644
index 0000000..3870a8c
--- /dev/null
+++ b/OpenSim/Framework/Data.DB4o/DB4oManager.cs
@@ -0,0 +1,165 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using Db4objects.Db4o;
32using OpenSim.Framework.Data;
33using libsecondlife;
34
35namespace OpenSim.Framework.Data.DB4o
36{
37 /// <summary>
38 /// A Database manager for Db4o
39 /// </summary>
40 class DB4oGridManager
41 {
42 /// <summary>
43 /// A list of the current regions connected (in-memory cache)
44 /// </summary>
45 public Dictionary<LLUUID, SimProfileData> simProfiles = new Dictionary<LLUUID, SimProfileData>();
46 /// <summary>
47 /// Database File Name
48 /// </summary>
49 string dbfl;
50
51 /// <summary>
52 /// Creates a new grid storage manager
53 /// </summary>
54 /// <param name="db4odb">Filename to the database file</param>
55 public DB4oGridManager(string db4odb)
56 {
57 dbfl = db4odb;
58 IObjectContainer database;
59 database = Db4oFactory.OpenFile(dbfl);
60 IObjectSet result = database.Get(typeof(SimProfileData));
61 // Loads the file into the in-memory cache
62 foreach(SimProfileData row in result) {
63 simProfiles.Add(row.UUID, row);
64 }
65 database.Close();
66 }
67
68 /// <summary>
69 /// Adds a new profile to the database (Warning: Probably slow.)
70 /// </summary>
71 /// <param name="row">The profile to add</param>
72 /// <returns>Successful?</returns>
73 public bool AddRow(SimProfileData row)
74 {
75 if (simProfiles.ContainsKey(row.UUID))
76 {
77 simProfiles[row.UUID] = row;
78 }
79 else
80 {
81 simProfiles.Add(row.UUID, row);
82 }
83
84 try
85 {
86 IObjectContainer database;
87 database = Db4oFactory.OpenFile(dbfl);
88 database.Set(row);
89 database.Close();
90 return true;
91 }
92 catch (Exception e)
93 {
94 return false;
95 }
96 }
97
98
99 }
100
101 /// <summary>
102 /// A manager for the DB4o database (user profiles)
103 /// </summary>
104 class DB4oUserManager
105 {
106 /// <summary>
107 /// A list of the user profiles (in memory cache)
108 /// </summary>
109 public Dictionary<LLUUID, UserProfileData> userProfiles = new Dictionary<LLUUID, UserProfileData>();
110 /// <summary>
111 /// Database filename
112 /// </summary>
113 string dbfl;
114
115 /// <summary>
116 /// Initialises a new DB manager
117 /// </summary>
118 /// <param name="db4odb">The filename to the database</param>
119 public DB4oUserManager(string db4odb)
120 {
121 dbfl = db4odb;
122 IObjectContainer database;
123 database = Db4oFactory.OpenFile(dbfl);
124 // Load to cache
125 IObjectSet result = database.Get(typeof(UserProfileData));
126 foreach (UserProfileData row in result)
127 {
128 userProfiles.Add(row.UUID, row);
129 }
130 database.Close();
131 }
132
133 /// <summary>
134 /// Adds a new profile to the database (Warning: Probably slow.)
135 /// </summary>
136 /// <param name="row">The profile to add</param>
137 /// <returns>Successful?</returns>
138 public bool AddRow(UserProfileData row)
139 {
140 if (userProfiles.ContainsKey(row.UUID))
141 {
142 userProfiles[row.UUID] = row;
143 }
144 else
145 {
146 userProfiles.Add(row.UUID, row);
147 }
148
149 try
150 {
151 IObjectContainer database;
152 database = Db4oFactory.OpenFile(dbfl);
153 database.Set(row);
154 database.Close();
155 return true;
156 }
157 catch (Exception e)
158 {
159 return false;
160 }
161 }
162
163
164 }
165}
diff --git a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
new file mode 100644
index 0000000..8caa75d
--- /dev/null
+++ b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
@@ -0,0 +1,205 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Data;
32using libsecondlife;
33
34namespace OpenSim.Framework.Data.DB4o
35{
36 /// <summary>
37 /// A User storage interface for the DB4o database system
38 /// </summary>
39 public class DB4oUserData : IUserData
40 {
41 /// <summary>
42 /// The database manager
43 /// </summary>
44 DB4oUserManager manager;
45
46 /// <summary>
47 /// Artificial constructor called upon plugin load
48 /// </summary>
49 public void Initialise()
50 {
51 manager = new DB4oUserManager("userprofiles.yap");
52 }
53
54 /// <summary>
55 /// Loads a specified user profile from a UUID
56 /// </summary>
57 /// <param name="uuid">The users UUID</param>
58 /// <returns>A user profile</returns>
59 public UserProfileData getUserByUUID(LLUUID uuid)
60 {
61 if(manager.userProfiles.ContainsKey(uuid))
62 return manager.userProfiles[uuid];
63 return null;
64 }
65
66 /// <summary>
67 /// Returns a user by searching for its name
68 /// </summary>
69 /// <param name="name">The users account name</param>
70 /// <returns>A matching users profile</returns>
71 public UserProfileData getUserByName(string name)
72 {
73 return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
74 }
75
76 /// <summary>
77 /// Returns a user by searching for its name
78 /// </summary>
79 /// <param name="fname">The first part of the users account name</param>
80 /// <param name="lname">The second part of the users account name</param>
81 /// <returns>A matching users profile</returns>
82 public UserProfileData getUserByName(string fname, string lname)
83 {
84 foreach (UserProfileData profile in manager.userProfiles.Values)
85 {
86 if (profile.username == fname && profile.surname == lname)
87 return profile;
88 }
89 return null;
90 }
91
92 /// <summary>
93 /// Returns a user by UUID direct
94 /// </summary>
95 /// <param name="uuid">The users account ID</param>
96 /// <returns>A matching users profile</returns>
97 public UserAgentData getAgentByUUID(LLUUID uuid)
98 {
99 try
100 {
101 return getUserByUUID(uuid).currentAgent;
102 }
103 catch (Exception e)
104 {
105 return null;
106 }
107 }
108
109 /// <summary>
110 /// Returns a session by account name
111 /// </summary>
112 /// <param name="name">The account name</param>
113 /// <returns>The users session agent</returns>
114 public UserAgentData getAgentByName(string name)
115 {
116 return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
117 }
118
119 /// <summary>
120 /// Returns a session by account name
121 /// </summary>
122 /// <param name="fname">The first part of the users account name</param>
123 /// <param name="lname">The second part of the users account name</param>
124 /// <returns>A user agent</returns>
125 public UserAgentData getAgentByName(string fname, string lname)
126 {
127 try
128 {
129 return getUserByName(fname,lname).currentAgent;
130 }
131 catch (Exception e)
132 {
133 return null;
134 }
135 }
136
137 /// <summary>
138 /// Creates a new user profile
139 /// </summary>
140 /// <param name="user">The profile to add to the database</param>
141 public void addNewUserProfile(UserProfileData user)
142 {
143 try
144 {
145 manager.AddRow(user);
146 }
147 catch (Exception e)
148 {
149 Console.WriteLine(e.ToString());
150 }
151 }
152
153 /// <summary>
154 /// Creates a new user agent
155 /// </summary>
156 /// <param name="agent">The agent to add to the database</param>
157 public void addNewUserAgent(UserAgentData agent)
158 {
159 // Do nothing. yet.
160 }
161
162 /// <summary>
163 /// Transfers money between two user accounts
164 /// </summary>
165 /// <param name="from">Starting account</param>
166 /// <param name="to">End account</param>
167 /// <param name="amount">The amount to move</param>
168 /// <returns>Success?</returns>
169 public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
170 {
171 return true;
172 }
173
174 /// <summary>
175 /// Transfers inventory between two accounts
176 /// </summary>
177 /// <remarks>Move to inventory server</remarks>
178 /// <param name="from">Senders account</param>
179 /// <param name="to">Recievers account</param>
180 /// <param name="item">Inventory item</param>
181 /// <returns>Success?</returns>
182 public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
183 {
184 return true;
185 }
186
187 /// <summary>
188 /// Returns the name of the storage provider
189 /// </summary>
190 /// <returns>Storage provider name</returns>
191 public string getName()
192 {
193 return "DB4o Userdata";
194 }
195
196 /// <summary>
197 /// Returns the version of the storage provider
198 /// </summary>
199 /// <returns>Storage provider version</returns>
200 public string getVersion()
201 {
202 return "0.1";
203 }
204 }
205}
diff --git a/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj
new file mode 100644
index 0000000..b09cecf
--- /dev/null
+++ b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj
@@ -0,0 +1,111 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{FD2D303D-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Data.DB4o</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Data.DB4o</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Data" >
74 <HintPath>System.Data.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 </ItemGroup>
82 <ItemGroup>
83 <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj">
84 <Name>OpenSim.Framework.Data</Name>
85 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
86 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
87 <Private>False</Private>
88 </ProjectReference>
89 </ItemGroup>
90 <ItemGroup>
91 <Compile Include="DB4oGridData.cs">
92 <SubType>Code</SubType>
93 </Compile>
94 <Compile Include="DB4oManager.cs">
95 <SubType>Code</SubType>
96 </Compile>
97 <Compile Include="DB4oUserData.cs">
98 <SubType>Code</SubType>
99 </Compile>
100 <Compile Include="Properties\AssemblyInfo.cs">
101 <SubType>Code</SubType>
102 </Compile>
103 </ItemGroup>
104 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
105 <PropertyGroup>
106 <PreBuildEvent>
107 </PreBuildEvent>
108 <PostBuildEvent>
109 </PostBuildEvent>
110 </PropertyGroup>
111</Project>
diff --git a/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj.user b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..dc4a9a1
--- /dev/null
+++ b/OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenGrid.Framework.Data.DB4o")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenGrid.Framework.Data.DB4o")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("57991e15-79da-41b7-aa06-2e6b49165a63")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs
new file mode 100644
index 0000000..1dac4bd
--- /dev/null
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs
@@ -0,0 +1,192 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenGrid.Framework.Data;
32
33namespace OpenGrid.Framework.Data.MSSQL
34{
35 /// <summary>
36 /// A grid data interface for Microsoft SQL Server
37 /// </summary>
38 public class SqlGridData : IGridData
39 {
40 /// <summary>
41 /// Database manager
42 /// </summary>
43 private MSSqlManager database;
44
45 /// <summary>
46 /// Initialises the Grid Interface
47 /// </summary>
48 public void Initialise()
49 {
50 database = new MSSqlManager("localhost", "db", "user", "password", "false");
51 }
52
53 /// <summary>
54 /// Shuts down the grid interface
55 /// </summary>
56 public void Close()
57 {
58 database.Close();
59 }
60
61 /// <summary>
62 /// Returns the storage system name
63 /// </summary>
64 /// <returns>A string containing the storage system name</returns>
65 public string getName()
66 {
67 return "Sql OpenGridData";
68 }
69
70 /// <summary>
71 /// Returns the storage system version
72 /// </summary>
73 /// <returns>A string containing the storage system version</returns>
74 public string getVersion()
75 {
76 return "0.1";
77 }
78
79 /// <summary>
80 /// Returns a list of regions within the specified ranges
81 /// </summary>
82 /// <param name="a">minimum X coordinate</param>
83 /// <param name="b">minimum Y coordinate</param>
84 /// <param name="c">maximum X coordinate</param>
85 /// <param name="d">maximum Y coordinate</param>
86 /// <returns>An array of region profiles</returns>
87 public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
88 {
89 return null;
90 }
91
92 /// <summary>
93 /// Returns a sim profile from it's location
94 /// </summary>
95 /// <param name="handle">Region location handle</param>
96 /// <returns>Sim profile</returns>
97 public SimProfileData GetProfileByHandle(ulong handle)
98 {
99 Dictionary<string, string> param = new Dictionary<string, string>();
100 param["handle"] = handle.ToString();
101
102 System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
103 System.Data.IDataReader reader = result.ExecuteReader();
104
105 SimProfileData row = database.getRow(reader);
106 reader.Close();
107 result.Dispose();
108
109 return row;
110 }
111
112 /// <summary>
113 /// Returns a sim profile from it's UUID
114 /// </summary>
115 /// <param name="uuid">The region UUID</param>
116 /// <returns>The sim profile</returns>
117 public SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID uuid)
118 {
119 Dictionary<string, string> param = new Dictionary<string, string>();
120 param["uuid"] = uuid.ToStringHyphenated();
121
122 System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
123 System.Data.IDataReader reader = result.ExecuteReader();
124
125 SimProfileData row = database.getRow(reader);
126 reader.Close();
127 result.Dispose();
128
129 return row;
130 }
131
132 /// <summary>
133 /// Adds a new specified region to the database
134 /// </summary>
135 /// <param name="profile">The profile to add</param>
136 /// <returns>A dataresponse enum indicating success</returns>
137 public DataResponse AddProfile(SimProfileData profile)
138 {
139 if (database.insertRow(profile))
140 {
141 return DataResponse.RESPONSE_OK;
142 }
143 else
144 {
145 return DataResponse.RESPONSE_ERROR;
146 }
147 }
148
149 /// <summary>
150 /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
151 /// </summary>
152 /// <param name="uuid">The UUID of the challenger</param>
153 /// <param name="handle">The attempted regionHandle of the challenger</param>
154 /// <param name="authkey">The secret</param>
155 /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
156 public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authkey)
157 {
158 bool throwHissyFit = false; // Should be true by 1.0
159
160 if (throwHissyFit)
161 throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
162
163 SimProfileData data = GetProfileByLLUUID(uuid);
164
165 return (handle == data.regionHandle && authkey == data.regionSecret);
166 }
167
168 /// <summary>
169 /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
170 /// </summary>
171 /// <remarks>This requires a security audit.</remarks>
172 /// <param name="uuid"></param>
173 /// <param name="handle"></param>
174 /// <param name="authhash"></param>
175 /// <param name="challenge"></param>
176 /// <returns></returns>
177 public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authhash, string challenge)
178 {
179 System.Security.Cryptography.SHA512Managed HashProvider = new System.Security.Cryptography.SHA512Managed();
180 System.Text.ASCIIEncoding TextProvider = new ASCIIEncoding();
181
182 byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
183 byte[] hash = HashProvider.ComputeHash(stream);
184 return false;
185 }
186 public ReservationData GetReservationAtPoint(uint x, uint y)
187 {
188 return null;
189 }
190 }
191
192}
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs
new file mode 100644
index 0000000..475a3e7
--- /dev/null
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs
@@ -0,0 +1,214 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Data;
32
33using System.Data.SqlClient;
34
35using OpenGrid.Framework.Data;
36
37namespace OpenGrid.Framework.Data.MSSQL
38{
39 /// <summary>
40 /// A management class for the MS SQL Storage Engine
41 /// </summary>
42 class MSSqlManager
43 {
44 /// <summary>
45 /// The database connection object
46 /// </summary>
47 IDbConnection dbcon;
48
49 /// <summary>
50 /// Initialises and creates a new Sql connection and maintains it.
51 /// </summary>
52 /// <param name="hostname">The Sql server being connected to</param>
53 /// <param name="database">The name of the Sql database being used</param>
54 /// <param name="username">The username logging into the database</param>
55 /// <param name="password">The password for the user logging in</param>
56 /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
57 public MSSqlManager(string hostname, string database, string username, string password, string cpooling)
58 {
59 try
60 {
61 string connectionString = "Server=" + hostname + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
62 dbcon = new SqlConnection(connectionString);
63
64 dbcon.Open();
65 }
66 catch (Exception e)
67 {
68 throw new Exception("Error initialising Sql Database: " + e.ToString());
69 }
70 }
71
72 /// <summary>
73 /// Shuts down the database connection
74 /// </summary>
75 public void Close()
76 {
77 dbcon.Close();
78 dbcon = null;
79 }
80
81 /// <summary>
82 /// Runs a query with protection against SQL Injection by using parameterised input.
83 /// </summary>
84 /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
85 /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
86 /// <returns>A Sql DB Command</returns>
87 public IDbCommand Query(string sql, Dictionary<string, string> parameters)
88 {
89 SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand();
90 dbcommand.CommandText = sql;
91 foreach (KeyValuePair<string, string> param in parameters)
92 {
93 dbcommand.Parameters.AddWithValue(param.Key, param.Value);
94 }
95
96 return (IDbCommand)dbcommand;
97 }
98
99 /// <summary>
100 /// Runs a database reader object and returns a region row
101 /// </summary>
102 /// <param name="reader">An active database reader</param>
103 /// <returns>A region row</returns>
104 public SimProfileData getRow(IDataReader reader)
105 {
106 SimProfileData regionprofile = new SimProfileData();
107
108 if (reader.Read())
109 {
110 // Region Main
111 regionprofile.regionHandle = (ulong)reader["regionHandle"];
112 regionprofile.regionName = (string)reader["regionName"];
113 regionprofile.UUID = new libsecondlife.LLUUID((string)reader["uuid"]);
114
115 // Secrets
116 regionprofile.regionRecvKey = (string)reader["regionRecvKey"];
117 regionprofile.regionSecret = (string)reader["regionSecret"];
118 regionprofile.regionSendKey = (string)reader["regionSendKey"];
119
120 // Region Server
121 regionprofile.regionDataURI = (string)reader["regionDataURI"];
122 regionprofile.regionOnline = false; // Needs to be pinged before this can be set.
123 regionprofile.serverIP = (string)reader["serverIP"];
124 regionprofile.serverPort = (uint)reader["serverPort"];
125 regionprofile.serverURI = (string)reader["serverURI"];
126
127 // Location
128 regionprofile.regionLocX = (uint)((int)reader["locX"]);
129 regionprofile.regionLocY = (uint)((int)reader["locY"]);
130 regionprofile.regionLocZ = (uint)((int)reader["locZ"]);
131
132 // Neighbours - 0 = No Override
133 regionprofile.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
134 regionprofile.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
135 regionprofile.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
136 regionprofile.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
137
138 // Assets
139 regionprofile.regionAssetURI = (string)reader["regionAssetURI"];
140 regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
141 regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"];
142
143 // Userserver
144 regionprofile.regionUserURI = (string)reader["regionUserURI"];
145 regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"];
146 regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"];
147 }
148 else
149 {
150 throw new Exception("No rows to return");
151 }
152 return regionprofile;
153 }
154
155 /// <summary>
156 /// Creates a new region in the database
157 /// </summary>
158 /// <param name="profile">The region profile to insert</param>
159 /// <returns>Successful?</returns>
160 public bool insertRow(SimProfileData profile)
161 {
162 string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
163 sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
164 sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
165
166 sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
167 sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
168 sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
169
170 Dictionary<string, string> parameters = new Dictionary<string, string>();
171
172 parameters["regionHandle"] = profile.regionHandle.ToString();
173 parameters["regionName"] = profile.regionName;
174 parameters["uuid"] = profile.UUID.ToString();
175 parameters["regionRecvKey"] = profile.regionRecvKey;
176 parameters["regionSendKey"] = profile.regionSendKey;
177 parameters["regionDataURI"] = profile.regionDataURI;
178 parameters["serverIP"] = profile.serverIP;
179 parameters["serverPort"] = profile.serverPort.ToString();
180 parameters["serverURI"] = profile.serverURI;
181 parameters["locX"] = profile.regionLocX.ToString();
182 parameters["locY"] = profile.regionLocY.ToString();
183 parameters["locZ"] = profile.regionLocZ.ToString();
184 parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
185 parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
186 parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
187 parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
188 parameters["regionAssetURI"] = profile.regionAssetURI;
189 parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
190 parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
191 parameters["regionUserURI"] = profile.regionUserURI;
192 parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
193 parameters["regionUserSendKey"] = profile.regionUserSendKey;
194
195 bool returnval = false;
196
197 try
198 {
199 IDbCommand result = Query(sql, parameters);
200
201 if (result.ExecuteNonQuery() == 1)
202 returnval = true;
203
204 result.Dispose();
205 }
206 catch (Exception e)
207 {
208 return false;
209 }
210
211 return returnval;
212 }
213 }
214}
diff --git a/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj
new file mode 100644
index 0000000..4c41a4f
--- /dev/null
+++ b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj
@@ -0,0 +1,104 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{17F7F694-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Data.MSSQL</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Data.MSSQL</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Data" >
70 <HintPath>System.Data.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Xml" >
74 <HintPath>System.Xml.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 </ItemGroup>
78 <ItemGroup>
79 <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj">
80 <Name>OpenSim.Framework.Data</Name>
81 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
82 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
83 <Private>False</Private>
84 </ProjectReference>
85 </ItemGroup>
86 <ItemGroup>
87 <Compile Include="MSSQLGridData.cs">
88 <SubType>Code</SubType>
89 </Compile>
90 <Compile Include="MSSQLManager.cs">
91 <SubType>Code</SubType>
92 </Compile>
93 <Compile Include="Properties\AssemblyInfo.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 </ItemGroup>
97 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
98 <PropertyGroup>
99 <PreBuildEvent>
100 </PreBuildEvent>
101 <PostBuildEvent>
102 </PostBuildEvent>
103 </PropertyGroup>
104</Project>
diff --git a/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj.user b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..bbe3cdf
--- /dev/null
+++ b/OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenGrid.Framework.Data.MSSQL")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenGrid.Framework.Data.MSSQL")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("0e1c1ca4-2cf2-4315-b0e7-432c02feea8a")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs
new file mode 100644
index 0000000..4d6cf63
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs
@@ -0,0 +1,285 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenGrid.Framework.Data;
32
33namespace OpenGrid.Framework.Data.MySQL
34{
35 /// <summary>
36 /// A MySQL Interface for the Grid Server
37 /// </summary>
38 public class MySQLGridData : IGridData
39 {
40 /// <summary>
41 /// MySQL Database Manager
42 /// </summary>
43 private MySQLManager database;
44
45 /// <summary>
46 /// Initialises the Grid Interface
47 /// </summary>
48 public void Initialise()
49 {
50 IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
51 string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
52 string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
53 string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
54 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
55 string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
56 string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
57
58 database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
59 }
60
61 /// <summary>
62 /// Shuts down the grid interface
63 /// </summary>
64 public void Close()
65 {
66 database.Close();
67 }
68
69 /// <summary>
70 /// Returns the plugin name
71 /// </summary>
72 /// <returns>Plugin name</returns>
73 public string getName()
74 {
75 return "MySql OpenGridData";
76 }
77
78 /// <summary>
79 /// Returns the plugin version
80 /// </summary>
81 /// <returns>Plugin version</returns>
82 public string getVersion()
83 {
84 return "0.1";
85 }
86
87 /// <summary>
88 /// Returns all the specified region profiles within coordates -- coordinates are inclusive
89 /// </summary>
90 /// <param name="xmin">Minimum X coordinate</param>
91 /// <param name="ymin">Minimum Y coordinate</param>
92 /// <param name="xmax">Maximum X coordinate</param>
93 /// <param name="ymax">Maximum Y coordinate</param>
94 /// <returns></returns>
95 public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax)
96 {
97 try
98 {
99 lock (database)
100 {
101 Dictionary<string, string> param = new Dictionary<string, string>();
102 param["?xmin"] = xmin.ToString();
103 param["?ymin"] = ymin.ToString();
104 param["?xmax"] = xmax.ToString();
105 param["?ymax"] = ymax.ToString();
106
107 System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", param);
108 System.Data.IDataReader reader = result.ExecuteReader();
109
110 SimProfileData row;
111
112 List<SimProfileData> rows = new List<SimProfileData>();
113
114 while ((row = database.readSimRow(reader)) != null)
115 {
116 rows.Add(row);
117 }
118 reader.Close();
119 result.Dispose();
120
121 return rows.ToArray();
122
123 }
124 }
125 catch (Exception e)
126 {
127 database.Reconnect();
128 Console.WriteLine(e.ToString());
129 return null;
130 }
131 }
132
133 /// <summary>
134 /// Returns a sim profile from it's location
135 /// </summary>
136 /// <param name="handle">Region location handle</param>
137 /// <returns>Sim profile</returns>
138 public SimProfileData GetProfileByHandle(ulong handle)
139 {
140 try
141 {
142 lock (database)
143 {
144 Dictionary<string, string> param = new Dictionary<string, string>();
145 param["?handle"] = handle.ToString();
146
147 System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param);
148 System.Data.IDataReader reader = result.ExecuteReader();
149
150 SimProfileData row = database.readSimRow(reader);
151 reader.Close();
152 result.Dispose();
153
154 return row;
155 }
156 }
157 catch (Exception e)
158 {
159 database.Reconnect();
160 Console.WriteLine(e.ToString());
161 return null;
162 }
163 }
164
165 /// <summary>
166 /// Returns a sim profile from it's UUID
167 /// </summary>
168 /// <param name="uuid">The region UUID</param>
169 /// <returns>The sim profile</returns>
170 public SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID uuid)
171 {
172 try
173 {
174 lock (database)
175 {
176 Dictionary<string, string> param = new Dictionary<string, string>();
177 param["?uuid"] = uuid.ToStringHyphenated();
178
179 System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param);
180 System.Data.IDataReader reader = result.ExecuteReader();
181
182 SimProfileData row = database.readSimRow(reader);
183 reader.Close();
184 result.Dispose();
185
186 return row;
187 }
188 }
189 catch (Exception e)
190 {
191 database.Reconnect();
192 Console.WriteLine(e.ToString());
193 return null;
194 }
195 }
196
197 /// <summary>
198 /// Adds a new profile to the database
199 /// </summary>
200 /// <param name="profile">The profile to add</param>
201 /// <returns>Successful?</returns>
202 public DataResponse AddProfile(SimProfileData profile)
203 {
204 lock (database)
205 {
206 if (database.insertRegion(profile))
207 {
208 return DataResponse.RESPONSE_OK;
209 }
210 else
211 {
212 return DataResponse.RESPONSE_ERROR;
213 }
214 }
215 }
216
217 /// <summary>
218 /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
219 /// </summary>
220 /// <param name="uuid">The UUID of the challenger</param>
221 /// <param name="handle">The attempted regionHandle of the challenger</param>
222 /// <param name="authkey">The secret</param>
223 /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
224 public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authkey)
225 {
226 bool throwHissyFit = false; // Should be true by 1.0
227
228 if (throwHissyFit)
229 throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
230
231 SimProfileData data = GetProfileByLLUUID(uuid);
232
233 return (handle == data.regionHandle && authkey == data.regionSecret);
234 }
235
236 /// <summary>
237 /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
238 /// </summary>
239 /// <remarks>This requires a security audit.</remarks>
240 /// <param name="uuid"></param>
241 /// <param name="handle"></param>
242 /// <param name="authhash"></param>
243 /// <param name="challenge"></param>
244 /// <returns></returns>
245 public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authhash, string challenge)
246 {
247 System.Security.Cryptography.SHA512Managed HashProvider = new System.Security.Cryptography.SHA512Managed();
248 System.Text.ASCIIEncoding TextProvider = new ASCIIEncoding();
249
250 byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
251 byte[] hash = HashProvider.ComputeHash(stream);
252
253 return false;
254 }
255
256 public ReservationData GetReservationAtPoint(uint x, uint y)
257 {
258 try
259 {
260 lock (database)
261 {
262 Dictionary<string, string> param = new Dictionary<string, string>();
263 param["?x"] = x.ToString();
264 param["?y"] = y.ToString();
265 System.Data.IDbCommand result = database.Query("SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", param);
266 System.Data.IDataReader reader = result.ExecuteReader();
267
268 ReservationData row = database.readReservationRow(reader);
269 reader.Close();
270 result.Dispose();
271
272 return row;
273 }
274 }
275 catch (Exception e)
276 {
277 database.Reconnect();
278 Console.WriteLine(e.ToString());
279 return null;
280 }
281 }
282 }
283
284
285}
diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
new file mode 100644
index 0000000..fb429e4
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
@@ -0,0 +1,309 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenGrid.Framework.Data.MySQL
34{
35 /// <summary>
36 /// A MySQL interface for the inventory server
37 /// </summary>
38 class MySQLInventoryData : IInventoryData
39 {
40 /// <summary>
41 /// The database manager
42 /// </summary>
43 public MySQLManager database;
44
45 /// <summary>
46 /// Loads and initialises this database plugin
47 /// </summary>
48 public void Initialise()
49 {
50 IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
51 string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
52 string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
53 string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
54 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
55 string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
56 string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
57
58 database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
59 }
60
61 /// <summary>
62 /// The name of this DB provider
63 /// </summary>
64 /// <returns>Name of DB provider</returns>
65 public string getName()
66 {
67 return "MySQL Inventory Data Interface";
68 }
69
70 /// <summary>
71 /// Closes this DB provider
72 /// </summary>
73 public void Close()
74 {
75 // Do nothing.
76 }
77
78 /// <summary>
79 /// Returns the version of this DB provider
80 /// </summary>
81 /// <returns>A string containing the DB provider</returns>
82 public string getVersion()
83 {
84 return "0.1";
85 }
86
87 /// <summary>
88 /// Returns a list of items in a specified folder
89 /// </summary>
90 /// <param name="folderID">The folder to search</param>
91 /// <returns>A list containing inventory items</returns>
92 public List<InventoryItemBase> getInventoryInFolder(LLUUID folderID)
93 {
94 try
95 {
96 lock (database)
97 {
98 Dictionary<string, string> param = new Dictionary<string, string>();
99 param["?uuid"] = folderID.ToStringHyphenated();
100
101 System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = ?uuid", param);
102 System.Data.IDataReader reader = result.ExecuteReader();
103
104 List<InventoryItemBase> items = database.readInventoryItems(reader);
105
106 reader.Close();
107 result.Dispose();
108
109 return items;
110 }
111 }
112 catch (Exception e)
113 {
114 database.Reconnect();
115 Console.WriteLine(e.ToString());
116 return null;
117 }
118 }
119
120 /// <summary>
121 /// Returns a list of the root folders within a users inventory
122 /// </summary>
123 /// <param name="user">The user whos inventory is to be searched</param>
124 /// <returns>A list of folder objects</returns>
125 public List<InventoryFolderBase> getUserRootFolders(LLUUID user)
126 {
127 try
128 {
129 lock (database)
130 {
131 Dictionary<string, string> param = new Dictionary<string, string>();
132 param["?uuid"] = user.ToStringHyphenated();
133 param["?zero"] = LLUUID.Zero.ToStringHyphenated();
134
135 System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param);
136 System.Data.IDataReader reader = result.ExecuteReader();
137
138 List<InventoryFolderBase> items = database.readInventoryFolders(reader);
139
140 reader.Close();
141 result.Dispose();
142
143 return items;
144 }
145 }
146 catch (Exception e)
147 {
148 database.Reconnect();
149 Console.WriteLine(e.ToString());
150 return null;
151 }
152 }
153
154 /// <summary>
155 /// Returns a list of folders in a users inventory contained within the specified folder
156 /// </summary>
157 /// <param name="parentID">The folder to search</param>
158 /// <returns>A list of inventory folders</returns>
159 public List<InventoryFolderBase> getInventoryFolders(LLUUID parentID)
160 {
161 try
162 {
163 lock (database)
164 {
165 Dictionary<string, string> param = new Dictionary<string, string>();
166 param["?uuid"] = parentID.ToStringHyphenated();
167
168 System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?uuid", param);
169 System.Data.IDataReader reader = result.ExecuteReader();
170
171 List<InventoryFolderBase> items = database.readInventoryFolders(reader);
172
173 reader.Close();
174 result.Dispose();
175
176 return items;
177 }
178 }
179 catch (Exception e)
180 {
181 database.Reconnect();
182 Console.WriteLine(e.ToString());
183 return null;
184 }
185 }
186
187 /// <summary>
188 /// Returns a specified inventory item
189 /// </summary>
190 /// <param name="item">The item to return</param>
191 /// <returns>An inventory item</returns>
192 public InventoryItemBase getInventoryItem(LLUUID item)
193 {
194 try
195 {
196 lock (database)
197 {
198 Dictionary<string, string> param = new Dictionary<string, string>();
199 param["?uuid"] = item.ToStringHyphenated();
200
201 System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = ?uuid", param);
202 System.Data.IDataReader reader = result.ExecuteReader();
203
204 List<InventoryItemBase> items = database.readInventoryItems(reader);
205
206 reader.Close();
207 result.Dispose();
208
209 if (items.Count > 0)
210 {
211 return items[0];
212 }
213 else
214 {
215 return null;
216 }
217 }
218 }
219 catch (Exception e)
220 {
221 database.Reconnect();
222 Console.WriteLine(e.ToString());
223 return null;
224 }
225 }
226
227 /// <summary>
228 /// Returns a specified inventory folder
229 /// </summary>
230 /// <param name="folder">The folder to return</param>
231 /// <returns>A folder class</returns>
232 public InventoryFolderBase getInventoryFolder(LLUUID folder)
233 {
234 try
235 {
236 lock (database)
237 {
238 Dictionary<string, string> param = new Dictionary<string, string>();
239 param["?uuid"] = folder.ToStringHyphenated();
240
241 System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = ?uuid", param);
242 System.Data.IDataReader reader = result.ExecuteReader();
243
244 List<InventoryFolderBase> items = database.readInventoryFolders(reader);
245
246 reader.Close();
247 result.Dispose();
248
249 if (items.Count > 0)
250 {
251 return items[0];
252 }
253 else
254 {
255 return null;
256 }
257 }
258 }
259 catch (Exception e)
260 {
261 database.Reconnect();
262 Console.WriteLine(e.ToString());
263 return null;
264 }
265 }
266
267 /// <summary>
268 /// Adds a specified item to the database
269 /// </summary>
270 /// <param name="item">The inventory item</param>
271 public void addInventoryItem(InventoryItemBase item)
272 {
273 lock (database)
274 {
275 database.insertItem(item);
276 }
277 }
278
279 /// <summary>
280 /// Updates the specified inventory item
281 /// </summary>
282 /// <param name="item">Inventory item to update</param>
283 public void updateInventoryItem(InventoryItemBase item)
284 {
285 addInventoryItem(item);
286 }
287
288 /// <summary>
289 /// Creates a new inventory folder
290 /// </summary>
291 /// <param name="folder">Folder to create</param>
292 public void addInventoryFolder(InventoryFolderBase folder)
293 {
294 lock (database)
295 {
296 database.insertFolder(folder);
297 }
298 }
299
300 /// <summary>
301 /// Updates an inventory folder
302 /// </summary>
303 /// <param name="folder">Folder to update</param>
304 public void updateInventoryFolder(InventoryFolderBase folder)
305 {
306 addInventoryFolder(folder);
307 }
308 }
309}
diff --git a/OpenSim/Framework/Data.MySQL/MySQLLogData.cs b/OpenSim/Framework/Data.MySQL/MySQLLogData.cs
new file mode 100644
index 0000000..c88b39f
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/MySQLLogData.cs
@@ -0,0 +1,107 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenGrid.Framework.Data.MySQL
33{
34 /// <summary>
35 /// An interface to the log database for MySQL
36 /// </summary>
37 class MySQLLogData : ILogData
38 {
39 /// <summary>
40 /// The database manager
41 /// </summary>
42 public MySQLManager database;
43
44 /// <summary>
45 /// Artificial constructor called when the plugin is loaded
46 /// </summary>
47 public void Initialise()
48 {
49 IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
50 string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
51 string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
52 string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
53 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
54 string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
55 string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
56
57 database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
58 }
59
60 /// <summary>
61 /// Saves a log item to the database
62 /// </summary>
63 /// <param name="serverDaemon">The daemon triggering the event</param>
64 /// <param name="target">The target of the action (region / agent UUID, etc)</param>
65 /// <param name="methodCall">The method call where the problem occured</param>
66 /// <param name="arguments">The arguments passed to the method</param>
67 /// <param name="priority">How critical is this?</param>
68 /// <param name="logMessage">The message to log</param>
69 public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
70 {
71 try
72 {
73 database.insertLogRow(serverDaemon, target, methodCall, arguments, priority, logMessage);
74 }
75 catch (Exception e)
76 {
77 database.Reconnect();
78 }
79 }
80
81 /// <summary>
82 /// Returns the name of this DB provider
83 /// </summary>
84 /// <returns>A string containing the DB provider name</returns>
85 public string getName()
86 {
87 return "MySQL Logdata Interface";
88 }
89
90 /// <summary>
91 /// Closes the database provider
92 /// </summary>
93 public void Close()
94 {
95 // Do nothing.
96 }
97
98 /// <summary>
99 /// Returns the version of this DB provider
100 /// </summary>
101 /// <returns>A string containing the provider version</returns>
102 public string getVersion()
103 {
104 return "0.1";
105 }
106 }
107}
diff --git a/OpenSim/Framework/Data.MySQL/MySQLManager.cs b/OpenSim/Framework/Data.MySQL/MySQLManager.cs
new file mode 100644
index 0000000..53b3bdd
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/MySQLManager.cs
@@ -0,0 +1,609 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Data;
32
33// MySQL Native
34using MySql;
35using MySql.Data;
36using MySql.Data.Types;
37using MySql.Data.MySqlClient;
38
39using OpenGrid.Framework.Data;
40
41namespace OpenGrid.Framework.Data.MySQL
42{
43 /// <summary>
44 /// A MySQL Database manager
45 /// </summary>
46 class MySQLManager
47 {
48 /// <summary>
49 /// The database connection object
50 /// </summary>
51 IDbConnection dbcon;
52 /// <summary>
53 /// Connection string for ADO.net
54 /// </summary>
55 string connectionString;
56
57 /// <summary>
58 /// Initialises and creates a new MySQL connection and maintains it.
59 /// </summary>
60 /// <param name="hostname">The MySQL server being connected to</param>
61 /// <param name="database">The name of the MySQL database being used</param>
62 /// <param name="username">The username logging into the database</param>
63 /// <param name="password">The password for the user logging in</param>
64 /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
65 public MySQLManager(string hostname, string database, string username, string password, string cpooling, string port)
66 {
67 try
68 {
69 connectionString = "Server=" + hostname + ";Port=" + port + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
70 dbcon = new MySqlConnection(connectionString);
71
72 dbcon.Open();
73
74 System.Console.WriteLine("MySQL connection established");
75 }
76 catch (Exception e)
77 {
78 throw new Exception("Error initialising MySql Database: " + e.ToString());
79 }
80 }
81
82 /// <summary>
83 /// Shuts down the database connection
84 /// </summary>
85 public void Close()
86 {
87 dbcon.Close();
88 dbcon = null;
89 }
90
91 /// <summary>
92 /// Reconnects to the database
93 /// </summary>
94 public void Reconnect()
95 {
96 lock (dbcon)
97 {
98 try
99 {
100 // Close the DB connection
101 dbcon.Close();
102 // Try reopen it
103 dbcon = new MySqlConnection(connectionString);
104 dbcon.Open();
105 }
106 catch (Exception e)
107 {
108 Console.WriteLine("Unable to reconnect to database " + e.ToString());
109 }
110 }
111 }
112
113 /// <summary>
114 /// Runs a query with protection against SQL Injection by using parameterised input.
115 /// </summary>
116 /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
117 /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
118 /// <returns>A MySQL DB Command</returns>
119 public IDbCommand Query(string sql, Dictionary<string, string> parameters)
120 {
121 try
122 {
123 MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
124 dbcommand.CommandText = sql;
125 foreach (KeyValuePair<string, string> param in parameters)
126 {
127 dbcommand.Parameters.Add(param.Key, param.Value);
128 }
129
130 return (IDbCommand)dbcommand;
131 }
132 catch
133 {
134 lock (dbcon)
135 {
136 // Close the DB connection
137 try
138 {
139 dbcon.Close();
140 }
141 catch { }
142
143 // Try reopen it
144 try
145 {
146 dbcon = new MySqlConnection(connectionString);
147 dbcon.Open();
148 }
149 catch (Exception e)
150 {
151 Console.WriteLine("Unable to reconnect to database " + e.ToString());
152 }
153
154 // Run the query again
155 try
156 {
157 MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
158 dbcommand.CommandText = sql;
159 foreach (KeyValuePair<string, string> param in parameters)
160 {
161 dbcommand.Parameters.Add(param.Key, param.Value);
162 }
163
164 return (IDbCommand)dbcommand;
165 }
166 catch (Exception e)
167 {
168 // Return null if it fails.
169 Console.WriteLine("Failed during Query generation: " + e.ToString());
170 return null;
171 }
172 }
173 }
174 }
175
176 /// <summary>
177 /// Reads a region row from a database reader
178 /// </summary>
179 /// <param name="reader">An active database reader</param>
180 /// <returns>A region profile</returns>
181 public SimProfileData readSimRow(IDataReader reader)
182 {
183 SimProfileData retval = new SimProfileData();
184
185 if (reader.Read())
186 {
187 // Region Main
188 retval.regionHandle = Convert.ToUInt64(reader["regionHandle"].ToString());
189 retval.regionName = (string)reader["regionName"];
190 retval.UUID = new libsecondlife.LLUUID((string)reader["uuid"]);
191
192 // Secrets
193 retval.regionRecvKey = (string)reader["regionRecvKey"];
194 retval.regionSecret = (string)reader["regionSecret"];
195 retval.regionSendKey = (string)reader["regionSendKey"];
196
197 // Region Server
198 retval.regionDataURI = (string)reader["regionDataURI"];
199 retval.regionOnline = false; // Needs to be pinged before this can be set.
200 retval.serverIP = (string)reader["serverIP"];
201 retval.serverPort = (uint)reader["serverPort"];
202 retval.serverURI = (string)reader["serverURI"];
203
204 // Location
205 retval.regionLocX = Convert.ToUInt32(reader["locX"].ToString());
206 retval.regionLocY = Convert.ToUInt32(reader["locY"].ToString());
207 retval.regionLocZ = Convert.ToUInt32(reader["locZ"].ToString());
208
209 // Neighbours - 0 = No Override
210 retval.regionEastOverrideHandle = Convert.ToUInt64(reader["eastOverrideHandle"].ToString());
211 retval.regionWestOverrideHandle = Convert.ToUInt64(reader["westOverrideHandle"].ToString());
212 retval.regionSouthOverrideHandle = Convert.ToUInt64(reader["southOverrideHandle"].ToString());
213 retval.regionNorthOverrideHandle = Convert.ToUInt64(reader["northOverrideHandle"].ToString());
214
215 // Assets
216 retval.regionAssetURI = (string)reader["regionAssetURI"];
217 retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
218 retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
219
220 // Userserver
221 retval.regionUserURI = (string)reader["regionUserURI"];
222 retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
223 retval.regionUserSendKey = (string)reader["regionUserSendKey"];
224
225 // World Map Addition
226 string tempRegionMap = reader["regionMapTexture"].ToString();
227 if (tempRegionMap != "")
228 {
229 retval.regionMapTextureID = new libsecondlife.LLUUID(tempRegionMap);
230 }
231 else
232 {
233 retval.regionMapTextureID = new libsecondlife.LLUUID();
234 }
235 }
236 else
237 {
238 return null;
239 }
240 return retval;
241 }
242
243 /// <summary>
244 /// Reads a reservation row from a database reader
245 /// </summary>
246 /// <param name="reader">An active database reader</param>
247 /// <returns>A reservation data object</returns>
248 public ReservationData readReservationRow(IDataReader reader)
249 {
250 ReservationData retval = new ReservationData();
251 if (reader.Read())
252 {
253 retval.gridRecvKey = (string)reader["gridRecvKey"];
254 retval.gridSendKey = (string)reader["gridSendKey"];
255 retval.reservationCompany = (string)reader["resCompany"];
256 retval.reservationMaxX = (int)reader["resXMax"];
257 retval.reservationMaxY = (int)reader["resYMax"];
258 retval.reservationMinX = (int)reader["resXMin"];
259 retval.reservationMinY = (int)reader["resYMin"];
260 retval.reservationName = (string)reader["resName"];
261 retval.status = (bool)reader["status"];
262 retval.userUUID = new libsecondlife.LLUUID((string)reader["userUUID"]);
263
264 }
265 else
266 {
267 return null;
268 }
269 return retval;
270 }
271 /// <summary>
272 /// Reads an agent row from a database reader
273 /// </summary>
274 /// <param name="reader">An active database reader</param>
275 /// <returns>A user session agent</returns>
276 public UserAgentData readAgentRow(IDataReader reader)
277 {
278 UserAgentData retval = new UserAgentData();
279
280 if (reader.Read())
281 {
282 // Agent IDs
283 retval.UUID = new libsecondlife.LLUUID((string)reader["UUID"]);
284 retval.sessionID = new libsecondlife.LLUUID((string)reader["sessionID"]);
285 retval.secureSessionID = new libsecondlife.LLUUID((string)reader["secureSessionID"]);
286
287 // Agent Who?
288 retval.agentIP = (string)reader["agentIP"];
289 retval.agentPort = Convert.ToUInt32(reader["agentPort"].ToString());
290 retval.agentOnline = Convert.ToBoolean(reader["agentOnline"].ToString());
291
292 // Login/Logout times (UNIX Epoch)
293 retval.loginTime = Convert.ToInt32(reader["loginTime"].ToString());
294 retval.logoutTime = Convert.ToInt32(reader["logoutTime"].ToString());
295
296 // Current position
297 retval.currentRegion = (string)reader["currentRegion"];
298 retval.currentHandle = Convert.ToUInt64(reader["currentHandle"].ToString());
299 libsecondlife.LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos);
300 }
301 else
302 {
303 return null;
304 }
305 return retval;
306 }
307
308 /// <summary>
309 /// Reads a user profile from an active data reader
310 /// </summary>
311 /// <param name="reader">An active database reader</param>
312 /// <returns>A user profile</returns>
313 public UserProfileData readUserRow(IDataReader reader)
314 {
315 UserProfileData retval = new UserProfileData();
316
317 if (reader.Read())
318 {
319 retval.UUID = new libsecondlife.LLUUID((string)reader["UUID"]);
320 retval.username = (string)reader["username"];
321 retval.surname = (string)reader["lastname"];
322
323 retval.passwordHash = (string)reader["passwordHash"];
324 retval.passwordSalt = (string)reader["passwordSalt"];
325
326 retval.homeRegion = Convert.ToUInt64(reader["homeRegion"].ToString());
327 retval.homeLocation = new libsecondlife.LLVector3(
328 Convert.ToSingle(reader["homeLocationX"].ToString()),
329 Convert.ToSingle(reader["homeLocationY"].ToString()),
330 Convert.ToSingle(reader["homeLocationZ"].ToString()));
331 retval.homeLookAt = new libsecondlife.LLVector3(
332 Convert.ToSingle(reader["homeLookAtX"].ToString()),
333 Convert.ToSingle(reader["homeLookAtY"].ToString()),
334 Convert.ToSingle(reader["homeLookAtZ"].ToString()));
335
336 retval.created = Convert.ToInt32(reader["created"].ToString());
337 retval.lastLogin = Convert.ToInt32(reader["lastLogin"].ToString());
338
339 retval.userInventoryURI = (string)reader["userInventoryURI"];
340 retval.userAssetURI = (string)reader["userAssetURI"];
341
342 retval.profileCanDoMask = Convert.ToUInt32(reader["profileCanDoMask"].ToString());
343 retval.profileWantDoMask = Convert.ToUInt32(reader["profileWantDoMask"].ToString());
344
345 retval.profileAboutText = (string)reader["profileAboutText"];
346 retval.profileFirstText = (string)reader["profileFirstText"];
347
348 retval.profileImage = new libsecondlife.LLUUID((string)reader["profileImage"]);
349 retval.profileFirstImage = new libsecondlife.LLUUID((string)reader["profileFirstImage"]);
350
351 }
352 else
353 {
354 return null;
355 }
356 return retval;
357 }
358
359 /// <summary>
360 /// Reads a list of inventory folders returned by a query.
361 /// </summary>
362 /// <param name="reader">A MySQL Data Reader</param>
363 /// <returns>A List containing inventory folders</returns>
364 public List<InventoryFolderBase> readInventoryFolders(IDataReader reader)
365 {
366 List<InventoryFolderBase> rows = new List<InventoryFolderBase>();
367
368 while(reader.Read())
369 {
370 try
371 {
372 InventoryFolderBase folder = new InventoryFolderBase();
373
374 folder.agentID = new libsecondlife.LLUUID((string)reader["agentID"]);
375 folder.parentID = new libsecondlife.LLUUID((string)reader["parentFolderID"]);
376 folder.folderID = new libsecondlife.LLUUID((string)reader["folderID"]);
377 folder.name = (string)reader["folderName"];
378
379 rows.Add(folder);
380 }
381 catch (Exception e)
382 {
383 Console.WriteLine(e.ToString());
384 }
385 }
386
387 return rows;
388 }
389
390 /// <summary>
391 /// Reads a collection of items from an SQL result
392 /// </summary>
393 /// <param name="reader">The SQL Result</param>
394 /// <returns>A List containing Inventory Items</returns>
395 public List<InventoryItemBase> readInventoryItems(IDataReader reader)
396 {
397 List<InventoryItemBase> rows = new List<InventoryItemBase>();
398
399 while (reader.Read())
400 {
401 try
402 {
403 InventoryItemBase item = new InventoryItemBase();
404
405 item.assetID = new libsecondlife.LLUUID((string)reader["assetID"]);
406 item.avatarID = new libsecondlife.LLUUID((string)reader["avatarID"]);
407 item.inventoryCurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"].ToString());
408 item.inventoryDescription = (string)reader["inventoryDescription"];
409 item.inventoryID = new libsecondlife.LLUUID((string)reader["inventoryID"]);
410 item.inventoryName = (string)reader["inventoryName"];
411 item.inventoryNextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"].ToString());
412 item.parentFolderID = new libsecondlife.LLUUID((string)reader["parentFolderID"]);
413 item.type = Convert.ToInt32(reader["type"].ToString());
414
415 rows.Add(item);
416 }
417 catch (Exception e)
418 {
419 Console.WriteLine(e.ToString());
420 }
421 }
422
423 return rows;
424 }
425
426 /// <summary>
427 /// Inserts a new row into the log database
428 /// </summary>
429 /// <param name="serverDaemon">The daemon which triggered this event</param>
430 /// <param name="target">Who were we operating on when this occured (region UUID, user UUID, etc)</param>
431 /// <param name="methodCall">The method call where the problem occured</param>
432 /// <param name="arguments">The arguments passed to the method</param>
433 /// <param name="priority">How critical is this?</param>
434 /// <param name="logMessage">Extra message info</param>
435 /// <returns>Saved successfully?</returns>
436 public bool insertLogRow(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
437 {
438 string sql = "INSERT INTO logs (`target`, `server`, `method`, `arguments`, `priority`, `message`) VALUES ";
439 sql += "(?target, ?server, ?method, ?arguments, ?priority, ?message)";
440
441 Dictionary<string, string> parameters = new Dictionary<string, string>();
442 parameters["?server"] = serverDaemon;
443 parameters["?target"] = target;
444 parameters["?method"] = methodCall;
445 parameters["?arguments"] = arguments;
446 parameters["?priority"] = priority.ToString();
447 parameters["?message"] = logMessage;
448
449 bool returnval = false;
450
451 try
452 {
453 IDbCommand result = Query(sql, parameters);
454
455 if (result.ExecuteNonQuery() == 1)
456 returnval = true;
457
458 result.Dispose();
459 }
460 catch (Exception e)
461 {
462 Console.WriteLine(e.ToString());
463 return false;
464 }
465
466 return returnval;
467 }
468
469 /// <summary>
470 /// Inserts a new item into the database
471 /// </summary>
472 /// <param name="item">The item</param>
473 /// <returns>Success?</returns>
474 public bool insertItem(InventoryItemBase item)
475 {
476 string sql = "REPLACE INTO inventoryitems (inventoryID, assetID, type, parentFolderID, avatarID, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions) VALUES ";
477 sql += "(?inventoryID, ?assetID, ?type, ?parentFolderID, ?avatarID, ?inventoryName, ?inventoryDescription, ?inventoryNextPermissions, ?inventoryCurrentPermissions)";
478
479 Dictionary<string, string> parameters = new Dictionary<string, string>();
480 parameters["?inventoryID"] = item.inventoryID.ToStringHyphenated();
481 parameters["?assetID"] = item.assetID.ToStringHyphenated();
482 parameters["?type"] = item.type.ToString();
483 parameters["?parentFolderID"] = item.parentFolderID.ToStringHyphenated();
484 parameters["?avatarID"] = item.avatarID.ToStringHyphenated();
485 parameters["?inventoryName"] = item.inventoryName;
486 parameters["?inventoryDescription"] = item.inventoryDescription;
487 parameters["?inventoryNextPermissions"] = item.inventoryNextPermissions.ToString();
488 parameters["?inventoryCurrentPermissions"] = item.inventoryCurrentPermissions.ToString();
489
490 bool returnval = false;
491
492 try
493 {
494 IDbCommand result = Query(sql, parameters);
495
496 if (result.ExecuteNonQuery() == 1)
497 returnval = true;
498
499 result.Dispose();
500 }
501 catch (Exception e)
502 {
503 Console.WriteLine(e.ToString());
504 return false;
505 }
506
507 return returnval;
508 }
509
510 /// <summary>
511 /// Inserts a new folder into the database
512 /// </summary>
513 /// <param name="folder">The folder</param>
514 /// <returns>Success?</returns>
515 public bool insertFolder(InventoryFolderBase folder)
516 {
517 string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName) VALUES ";
518 sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName)";
519
520 Dictionary<string, string> parameters = new Dictionary<string, string>();
521 parameters["?folderID"] = folder.folderID.ToStringHyphenated();
522 parameters["?agentID"] = folder.agentID.ToStringHyphenated();
523 parameters["?parentFolderID"] = folder.parentID.ToStringHyphenated();
524 parameters["?folderName"] = folder.name;
525
526 bool returnval = false;
527 try
528 {
529 IDbCommand result = Query(sql, parameters);
530
531 if (result.ExecuteNonQuery() == 1)
532 returnval = true;
533
534 result.Dispose();
535 }
536 catch (Exception e)
537 {
538 Console.WriteLine(e.ToString());
539 return false;
540 }
541 return returnval;
542 }
543
544 /// <summary>
545 /// Inserts a new region into the database
546 /// </summary>
547 /// <param name="profile">The region to insert</param>
548 /// <returns>Success?</returns>
549 public bool insertRegion(SimProfileData regiondata)
550 {
551 string sql = "REPLACE INTO regions (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
552 sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
553 sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture) VALUES ";
554
555 sql += "(?regionHandle, ?regionName, ?uuid, ?regionRecvKey, ?regionSecret, ?regionSendKey, ?regionDataURI, ";
556 sql += "?serverIP, ?serverPort, ?serverURI, ?locX, ?locY, ?locZ, ?eastOverrideHandle, ?westOverrideHandle, ?southOverrideHandle, ?northOverrideHandle, ?regionAssetURI, ?regionAssetRecvKey, ";
557 sql += "?regionAssetSendKey, ?regionUserURI, ?regionUserRecvKey, ?regionUserSendKey, ?regionMapTexture);";
558
559 Dictionary<string, string> parameters = new Dictionary<string, string>();
560
561 parameters["?regionHandle"] = regiondata.regionHandle.ToString();
562 parameters["?regionName"] = regiondata.regionName.ToString();
563 parameters["?uuid"] = regiondata.UUID.ToStringHyphenated();
564 parameters["?regionRecvKey"] = regiondata.regionRecvKey.ToString();
565 parameters["?regionSecret"] = regiondata.regionSecret.ToString();
566 parameters["?regionSendKey"] = regiondata.regionSendKey.ToString();
567 parameters["?regionDataURI"] = regiondata.regionDataURI.ToString();
568 parameters["?serverIP"] = regiondata.serverIP.ToString();
569 parameters["?serverPort"] = regiondata.serverPort.ToString();
570 parameters["?serverURI"] = regiondata.serverURI.ToString();
571 parameters["?locX"] = regiondata.regionLocX.ToString();
572 parameters["?locY"] = regiondata.regionLocY.ToString();
573 parameters["?locZ"] = regiondata.regionLocZ.ToString();
574 parameters["?eastOverrideHandle"] = regiondata.regionEastOverrideHandle.ToString();
575 parameters["?westOverrideHandle"] = regiondata.regionWestOverrideHandle.ToString();
576 parameters["?northOverrideHandle"] = regiondata.regionNorthOverrideHandle.ToString();
577 parameters["?southOverrideHandle"] = regiondata.regionSouthOverrideHandle.ToString();
578 parameters["?regionAssetURI"] = regiondata.regionAssetURI.ToString();
579 parameters["?regionAssetRecvKey"] = regiondata.regionAssetRecvKey.ToString();
580 parameters["?regionAssetSendKey"] = regiondata.regionAssetSendKey.ToString();
581 parameters["?regionUserURI"] = regiondata.regionUserURI.ToString();
582 parameters["?regionUserRecvKey"] = regiondata.regionUserRecvKey.ToString();
583 parameters["?regionUserSendKey"] = regiondata.regionUserSendKey.ToString();
584 parameters["?regionMapTexture"] = regiondata.regionMapTextureID.ToStringHyphenated();
585
586 bool returnval = false;
587
588 try
589 {
590
591 IDbCommand result = Query(sql, parameters);
592
593 //Console.WriteLine(result.CommandText);
594
595 if (result.ExecuteNonQuery() == 1)
596 returnval = true;
597
598 result.Dispose();
599 }
600 catch (Exception e)
601 {
602 Console.WriteLine(e.ToString());
603 return false;
604 }
605
606 return returnval;
607 }
608 }
609}
diff --git a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs
new file mode 100644
index 0000000..032a0e6
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs
@@ -0,0 +1,257 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenGrid.Framework.Data;
32using libsecondlife;
33
34namespace OpenGrid.Framework.Data.MySQL
35{
36 /// <summary>
37 /// A database interface class to a user profile storage system
38 /// </summary>
39 class MySQLUserData : IUserData
40 {
41 /// <summary>
42 /// Database manager for MySQL
43 /// </summary>
44 public MySQLManager database;
45
46 /// <summary>
47 /// Loads and initialises the MySQL storage plugin
48 /// </summary>
49 public void Initialise()
50 {
51 // Load from an INI file connection details
52 // TODO: move this to XML?
53 IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
54 string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
55 string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
56 string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
57 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
58 string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
59 string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
60
61 database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
62 }
63
64 /// <summary>
65 /// Searches the database for a specified user profile
66 /// </summary>
67 /// <param name="name">The account name of the user</param>
68 /// <returns>A user profile</returns>
69 public UserProfileData getUserByName(string name)
70 {
71 return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
72 }
73
74 /// <summary>
75 /// Searches the database for a specified user profile by name components
76 /// </summary>
77 /// <param name="user">The first part of the account name</param>
78 /// <param name="last">The second part of the account name</param>
79 /// <returns>A user profile</returns>
80 public UserProfileData getUserByName(string user, string last)
81 {
82 try
83 {
84 lock (database)
85 {
86 Dictionary<string, string> param = new Dictionary<string, string>();
87 param["?first"] = user;
88 param["?second"] = last;
89
90 System.Data.IDbCommand result = database.Query("SELECT * FROM users WHERE username = ?first AND lastname = ?second", param);
91 System.Data.IDataReader reader = result.ExecuteReader();
92
93 UserProfileData row = database.readUserRow(reader);
94
95 reader.Close();
96 result.Dispose();
97
98 return row;
99 }
100 }
101 catch (Exception e)
102 {
103 database.Reconnect();
104 Console.WriteLine(e.ToString());
105 return null;
106 }
107 }
108
109 /// <summary>
110 /// Searches the database for a specified user profile by UUID
111 /// </summary>
112 /// <param name="uuid">The account ID</param>
113 /// <returns>The users profile</returns>
114 public UserProfileData getUserByUUID(LLUUID uuid)
115 {
116 try
117 {
118 lock (database)
119 {
120 Dictionary<string, string> param = new Dictionary<string, string>();
121 param["?uuid"] = uuid.ToStringHyphenated();
122
123 System.Data.IDbCommand result = database.Query("SELECT * FROM users WHERE UUID = ?uuid", param);
124 System.Data.IDataReader reader = result.ExecuteReader();
125
126 UserProfileData row = database.readUserRow(reader);
127
128 reader.Close();
129 result.Dispose();
130
131 return row;
132 }
133 }
134 catch (Exception e)
135 {
136 database.Reconnect();
137 Console.WriteLine(e.ToString());
138 return null;
139 }
140 }
141
142 /// <summary>
143 /// Returns a user session searching by name
144 /// </summary>
145 /// <param name="name">The account name</param>
146 /// <returns>The users session</returns>
147 public UserAgentData getAgentByName(string name)
148 {
149 return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
150 }
151
152 /// <summary>
153 /// Returns a user session by account name
154 /// </summary>
155 /// <param name="user">First part of the users account name</param>
156 /// <param name="last">Second part of the users account name</param>
157 /// <returns>The users session</returns>
158 public UserAgentData getAgentByName(string user, string last)
159 {
160 UserProfileData profile = getUserByName(user, last);
161 return getAgentByUUID(profile.UUID);
162 }
163
164 /// <summary>
165 /// Returns an agent session by account UUID
166 /// </summary>
167 /// <param name="uuid">The accounts UUID</param>
168 /// <returns>The users session</returns>
169 public UserAgentData getAgentByUUID(LLUUID uuid)
170 {
171 try
172 {
173 lock (database)
174 {
175 Dictionary<string, string> param = new Dictionary<string, string>();
176 param["?uuid"] = uuid.ToStringHyphenated();
177
178 System.Data.IDbCommand result = database.Query("SELECT * FROM agents WHERE UUID = ?uuid", param);
179 System.Data.IDataReader reader = result.ExecuteReader();
180
181 UserAgentData row = database.readAgentRow(reader);
182
183 reader.Close();
184 result.Dispose();
185
186 return row;
187 }
188 }
189 catch (Exception e)
190 {
191 database.Reconnect();
192 Console.WriteLine(e.ToString());
193 return null;
194 }
195 }
196
197 /// <summary>
198 /// Creates a new users profile
199 /// </summary>
200 /// <param name="user">The user profile to create</param>
201 public void addNewUserProfile(UserProfileData user)
202 {
203 }
204
205 /// <summary>
206 /// Creates a new agent
207 /// </summary>
208 /// <param name="agent">The agent to create</param>
209 public void addNewUserAgent(UserAgentData agent)
210 {
211 // Do nothing.
212 }
213
214 /// <summary>
215 /// Performs a money transfer request between two accounts
216 /// </summary>
217 /// <param name="from">The senders account ID</param>
218 /// <param name="to">The recievers account ID</param>
219 /// <param name="amount">The amount to transfer</param>
220 /// <returns>Success?</returns>
221 public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
222 {
223 return false;
224 }
225
226 /// <summary>
227 /// Performs an inventory transfer request between two accounts
228 /// </summary>
229 /// <remarks>TODO: Move to inventory server</remarks>
230 /// <param name="from">The senders account ID</param>
231 /// <param name="to">The recievers account ID</param>
232 /// <param name="item">The item to transfer</param>
233 /// <returns>Success?</returns>
234 public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
235 {
236 return false;
237 }
238
239 /// <summary>
240 /// Database provider name
241 /// </summary>
242 /// <returns>Provider name</returns>
243 public string getName()
244 {
245 return "MySQL Userdata Interface";
246 }
247
248 /// <summary>
249 /// Database provider version
250 /// </summary>
251 /// <returns>provider version</returns>
252 public string getVersion()
253 {
254 return "0.1";
255 }
256 }
257}
diff --git a/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj
new file mode 100644
index 0000000..62e3887
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj
@@ -0,0 +1,117 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{17F7F6BE-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Data.MySQL</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Data.MySQL</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="MySql.Data.dll" >
66 <HintPath>..\..\..\bin\MySql.Data.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Data" >
74 <HintPath>System.Data.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 </ItemGroup>
82 <ItemGroup>
83 <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj">
84 <Name>OpenSim.Framework.Data</Name>
85 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
86 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
87 <Private>False</Private>
88 </ProjectReference>
89 </ItemGroup>
90 <ItemGroup>
91 <Compile Include="MySQLGridData.cs">
92 <SubType>Code</SubType>
93 </Compile>
94 <Compile Include="MySQLInventoryData.cs">
95 <SubType>Code</SubType>
96 </Compile>
97 <Compile Include="MySQLLogData.cs">
98 <SubType>Code</SubType>
99 </Compile>
100 <Compile Include="MySQLManager.cs">
101 <SubType>Code</SubType>
102 </Compile>
103 <Compile Include="MySQLUserData.cs">
104 <SubType>Code</SubType>
105 </Compile>
106 <Compile Include="Properties\AssemblyInfo.cs">
107 <SubType>Code</SubType>
108 </Compile>
109 </ItemGroup>
110 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
111 <PropertyGroup>
112 <PreBuildEvent>
113 </PreBuildEvent>
114 <PostBuildEvent>
115 </PostBuildEvent>
116 </PropertyGroup>
117</Project>
diff --git a/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj.user b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0bfd1d6
--- /dev/null
+++ b/OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenGrid.Framework.Data.MySQL")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenGrid.Framework.Data.MySQL")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("e49826b2-dcef-41be-a5bd-596733fa3304")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj
new file mode 100644
index 0000000..4ba24f1
--- /dev/null
+++ b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj
@@ -0,0 +1,108 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{6ECC56A9-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Data.SQLite</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Data.SQLite</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Data" >
70 <HintPath>System.Data.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Data.SQLite.dll" >
74 <HintPath>..\..\..\bin\System.Data.SQLite.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 </ItemGroup>
82 <ItemGroup>
83 <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj">
84 <Name>OpenSim.Framework.Data</Name>
85 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
86 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
87 <Private>False</Private>
88 </ProjectReference>
89 </ItemGroup>
90 <ItemGroup>
91 <Compile Include="SQLiteGridData.cs">
92 <SubType>Code</SubType>
93 </Compile>
94 <Compile Include="SQLiteManager.cs">
95 <SubType>Code</SubType>
96 </Compile>
97 <Compile Include="Properties\AssemblyInfo.cs">
98 <SubType>Code</SubType>
99 </Compile>
100 </ItemGroup>
101 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
102 <PropertyGroup>
103 <PreBuildEvent>
104 </PreBuildEvent>
105 <PostBuildEvent>
106 </PostBuildEvent>
107 </PropertyGroup>
108</Project>
diff --git a/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj.user b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..57c4bae
--- /dev/null
+++ b/OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenGrid.Framework.Data.SQLite")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenGrid.Framework.Data.SQLite")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs b/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs
new file mode 100644
index 0000000..d7a5a69
--- /dev/null
+++ b/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs
@@ -0,0 +1,195 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenGrid.Framework.Data;
32
33namespace OpenGrid.Framework.Data.SQLite
34{
35 /// <summary>
36 /// A Grid Interface to the SQLite database
37 /// </summary>
38 public class SQLiteGridData : IGridData
39 {
40 /// <summary>
41 /// A database manager
42 /// </summary>
43 private SQLiteManager database;
44
45 /// <summary>
46 /// Initialises the Grid Interface
47 /// </summary>
48 public void Initialise()
49 {
50 database = new SQLiteManager("localhost", "db", "user", "password", "false");
51 }
52
53 /// <summary>
54 /// Shuts down the grid interface
55 /// </summary>
56 public void Close()
57 {
58 database.Close();
59 }
60
61 /// <summary>
62 /// Returns the name of this grid interface
63 /// </summary>
64 /// <returns>A string containing the grid interface</returns>
65 public string getName()
66 {
67 return "SQLite OpenGridData";
68 }
69
70 /// <summary>
71 /// Returns the version of this grid interface
72 /// </summary>
73 /// <returns>A string containing the version</returns>
74 public string getVersion()
75 {
76 return "0.1";
77 }
78
79 /// <summary>
80 /// Returns a list of regions within the specified ranges
81 /// </summary>
82 /// <param name="a">minimum X coordinate</param>
83 /// <param name="b">minimum Y coordinate</param>
84 /// <param name="c">maximum X coordinate</param>
85 /// <param name="d">maximum Y coordinate</param>
86 /// <returns>An array of region profiles</returns>
87 public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
88 {
89 return null;
90 }
91
92 /// <summary>
93 /// Returns a sim profile from it's location
94 /// </summary>
95 /// <param name="handle">Region location handle</param>
96 /// <returns>Sim profile</returns>
97 public SimProfileData GetProfileByHandle(ulong handle)
98 {
99 Dictionary<string, string> param = new Dictionary<string, string>();
100 param["handle"] = handle.ToString();
101
102 System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
103 System.Data.IDataReader reader = result.ExecuteReader();
104
105 SimProfileData row = database.getRow(reader);
106 reader.Close();
107 result.Dispose();
108
109 return row;
110 }
111
112 /// <summary>
113 /// Returns a sim profile from it's UUID
114 /// </summary>
115 /// <param name="uuid">The region UUID</param>
116 /// <returns>The sim profile</returns>
117 public SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID uuid)
118 {
119 Dictionary<string, string> param = new Dictionary<string, string>();
120 param["uuid"] = uuid.ToStringHyphenated();
121
122 System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
123 System.Data.IDataReader reader = result.ExecuteReader();
124
125 SimProfileData row = database.getRow(reader);
126 reader.Close();
127 result.Dispose();
128
129 return row;
130 }
131
132 /// <summary>
133 /// Adds a new specified region to the database
134 /// </summary>
135 /// <param name="profile">The profile to add</param>
136 /// <returns>A dataresponse enum indicating success</returns>
137 public DataResponse AddProfile(SimProfileData profile)
138 {
139 if (database.insertRow(profile))
140 {
141 return DataResponse.RESPONSE_OK;
142 }
143 else
144 {
145 return DataResponse.RESPONSE_ERROR;
146 }
147 }
148
149 /// <summary>
150 /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
151 /// </summary>
152 /// <param name="uuid">The UUID of the challenger</param>
153 /// <param name="handle">The attempted regionHandle of the challenger</param>
154 /// <param name="authkey">The secret</param>
155 /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
156 public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authkey)
157 {
158 bool throwHissyFit = false; // Should be true by 1.0
159
160 if (throwHissyFit)
161 throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
162
163 SimProfileData data = GetProfileByLLUUID(uuid);
164
165 return (handle == data.regionHandle && authkey == data.regionSecret);
166 }
167
168 /// <summary>
169 /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
170 /// </summary>
171 /// <remarks>This requires a security audit.</remarks>
172 /// <param name="uuid"></param>
173 /// <param name="handle"></param>
174 /// <param name="authhash"></param>
175 /// <param name="challenge"></param>
176 /// <returns></returns>
177 public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authhash, string challenge)
178 {
179 System.Security.Cryptography.SHA512Managed HashProvider = new System.Security.Cryptography.SHA512Managed();
180 System.Text.ASCIIEncoding TextProvider = new ASCIIEncoding();
181
182 byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
183 byte[] hash = HashProvider.ComputeHash(stream);
184
185 return false;
186 }
187
188 public ReservationData GetReservationAtPoint(uint x, uint y)
189 {
190 return null;
191 }
192 }
193
194
195}
diff --git a/OpenSim/Framework/Data.SQLite/SQLiteManager.cs b/OpenSim/Framework/Data.SQLite/SQLiteManager.cs
new file mode 100644
index 0000000..9689356
--- /dev/null
+++ b/OpenSim/Framework/Data.SQLite/SQLiteManager.cs
@@ -0,0 +1,209 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Data;
32
33using System.Data.SQLite;
34
35using OpenGrid.Framework.Data;
36
37namespace OpenGrid.Framework.Data.SQLite
38{
39 class SQLiteManager
40 {
41 IDbConnection dbcon;
42
43 /// <summary>
44 /// Initialises and creates a new SQLite connection and maintains it.
45 /// </summary>
46 /// <param name="hostname">The SQLite server being connected to</param>
47 /// <param name="database">The name of the SQLite database being used</param>
48 /// <param name="username">The username logging into the database</param>
49 /// <param name="password">The password for the user logging in</param>
50 /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
51 public SQLiteManager(string hostname, string database, string username, string password, string cpooling)
52 {
53 try
54 {
55 string connectionString = "URI=file:GridServerSqlite.db;";
56 dbcon = new SQLiteConnection(connectionString);
57
58 dbcon.Open();
59 }
60 catch (Exception e)
61 {
62 throw new Exception("Error initialising SQLite Database: " + e.ToString());
63 }
64 }
65
66 /// <summary>
67 /// Shuts down the database connection
68 /// </summary>
69 public void Close()
70 {
71 dbcon.Close();
72 dbcon = null;
73 }
74
75 /// <summary>
76 /// Runs a query with protection against SQL Injection by using parameterised input.
77 /// </summary>
78 /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
79 /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
80 /// <returns>A SQLite DB Command</returns>
81 public IDbCommand Query(string sql, Dictionary<string, string> parameters)
82 {
83 SQLiteCommand dbcommand = (SQLiteCommand)dbcon.CreateCommand();
84 dbcommand.CommandText = sql;
85 foreach (KeyValuePair<string, string> param in parameters)
86 {
87 SQLiteParameter paramx = new SQLiteParameter(param.Key,param.Value);
88 dbcommand.Parameters.Add(paramx);
89 }
90
91 return (IDbCommand)dbcommand;
92 }
93
94 /// <summary>
95 /// Reads a region row from a database reader
96 /// </summary>
97 /// <param name="reader">An active database reader</param>
98 /// <returns>A region profile</returns>
99 public SimProfileData getRow(IDataReader reader)
100 {
101 SimProfileData retval = new SimProfileData();
102
103 if (reader.Read())
104 {
105 // Region Main
106 retval.regionHandle = (ulong)reader["regionHandle"];
107 retval.regionName = (string)reader["regionName"];
108 retval.UUID = new libsecondlife.LLUUID((string)reader["uuid"]);
109
110 // Secrets
111 retval.regionRecvKey = (string)reader["regionRecvKey"];
112 retval.regionSecret = (string)reader["regionSecret"];
113 retval.regionSendKey = (string)reader["regionSendKey"];
114
115 // Region Server
116 retval.regionDataURI = (string)reader["regionDataURI"];
117 retval.regionOnline = false; // Needs to be pinged before this can be set.
118 retval.serverIP = (string)reader["serverIP"];
119 retval.serverPort = (uint)reader["serverPort"];
120 retval.serverURI = (string)reader["serverURI"];
121
122 // Location
123 retval.regionLocX = (uint)((int)reader["locX"]);
124 retval.regionLocY = (uint)((int)reader["locY"]);
125 retval.regionLocZ = (uint)((int)reader["locZ"]);
126
127 // Neighbours - 0 = No Override
128 retval.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
129 retval.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
130 retval.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
131 retval.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
132
133 // Assets
134 retval.regionAssetURI = (string)reader["regionAssetURI"];
135 retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
136 retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
137
138 // Userserver
139 retval.regionUserURI = (string)reader["regionUserURI"];
140 retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
141 retval.regionUserSendKey = (string)reader["regionUserSendKey"];
142 }
143 else
144 {
145 throw new Exception("No rows to return");
146 }
147 return retval;
148 }
149
150 /// <summary>
151 /// Inserts a new region into the database
152 /// </summary>
153 /// <param name="profile">The region to insert</param>
154 /// <returns>Success?</returns>
155 public bool insertRow(SimProfileData profile)
156 {
157 string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
158 sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
159 sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
160
161 sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
162 sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
163 sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
164
165 Dictionary<string, string> parameters = new Dictionary<string, string>();
166
167 parameters["regionHandle"] = profile.regionHandle.ToString();
168 parameters["regionName"] = profile.regionName;
169 parameters["uuid"] = profile.UUID.ToString();
170 parameters["regionRecvKey"] = profile.regionRecvKey;
171 parameters["regionSendKey"] = profile.regionSendKey;
172 parameters["regionDataURI"] = profile.regionDataURI;
173 parameters["serverIP"] = profile.serverIP;
174 parameters["serverPort"] = profile.serverPort.ToString();
175 parameters["serverURI"] = profile.serverURI;
176 parameters["locX"] = profile.regionLocX.ToString();
177 parameters["locY"] = profile.regionLocY.ToString();
178 parameters["locZ"] = profile.regionLocZ.ToString();
179 parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
180 parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
181 parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
182 parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
183 parameters["regionAssetURI"] = profile.regionAssetURI;
184 parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
185 parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
186 parameters["regionUserURI"] = profile.regionUserURI;
187 parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
188 parameters["regionUserSendKey"] = profile.regionUserSendKey;
189
190 bool returnval = false;
191
192 try
193 {
194 IDbCommand result = Query(sql, parameters);
195
196 if (result.ExecuteNonQuery() == 1)
197 returnval = true;
198
199 result.Dispose();
200 }
201 catch (Exception e)
202 {
203 return false;
204 }
205
206 return returnval;
207 }
208 }
209}
diff --git a/OpenSim/Framework/Data/GridData.cs b/OpenSim/Framework/Data/GridData.cs
new file mode 100644
index 0000000..7f8fdaf
--- /dev/null
+++ b/OpenSim/Framework/Data/GridData.cs
@@ -0,0 +1,113 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.Data
33{
34 public enum DataResponse
35 {
36 RESPONSE_OK,
37 RESPONSE_AUTHREQUIRED,
38 RESPONSE_INVALIDCREDENTIALS,
39 RESPONSE_ERROR
40 }
41
42 /// <summary>
43 /// A standard grid interface
44 /// </summary>
45 public interface IGridData
46 {
47 /// <summary>
48 /// Returns a sim profile from a regionHandle
49 /// </summary>
50 /// <param name="regionHandle">A 64bit Region Handle</param>
51 /// <returns>A simprofile</returns>
52 SimProfileData GetProfileByHandle(ulong regionHandle);
53
54 /// <summary>
55 /// Returns a sim profile from a UUID
56 /// </summary>
57 /// <param name="UUID">A 128bit UUID</param>
58 /// <returns>A sim profile</returns>
59 SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID UUID);
60
61 /// <summary>
62 /// Returns all profiles within the specified range
63 /// </summary>
64 /// <param name="Xmin">Minimum sim coordinate (X)</param>
65 /// <param name="Ymin">Minimum sim coordinate (Y)</param>
66 /// <param name="Xmax">Maximum sim coordinate (X)</param>
67 /// <param name="Ymin">Maximum sim coordinate (Y)</param>
68 /// <returns>An array containing all the sim profiles in the specified range</returns>
69 SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax);
70
71 /// <summary>
72 /// Authenticates a sim by use of it's recv key.
73 /// WARNING: Insecure
74 /// </summary>
75 /// <param name="UUID">The UUID sent by the sim</param>
76 /// <param name="regionHandle">The regionhandle sent by the sim</param>
77 /// <param name="simrecvkey">The recieving key sent by the sim</param>
78 /// <returns>Whether the sim has been authenticated</returns>
79 bool AuthenticateSim(libsecondlife.LLUUID UUID, ulong regionHandle, string simrecvkey);
80
81 /// <summary>
82 /// Initialises the interface
83 /// </summary>
84 void Initialise();
85
86 /// <summary>
87 /// Closes the interface
88 /// </summary>
89 void Close();
90
91 /// <summary>
92 /// The plugin being loaded
93 /// </summary>
94 /// <returns>A string containing the plugin name</returns>
95 string getName();
96
97 /// <summary>
98 /// The plugins version
99 /// </summary>
100 /// <returns>A string containing the plugin version</returns>
101 string getVersion();
102
103 /// <summary>
104 /// Adds a new profile to the database
105 /// </summary>
106 /// <param name="profile">The profile to add</param>
107 /// <returns>RESPONSE_OK if successful, error if not.</returns>
108 DataResponse AddProfile(SimProfileData profile);
109
110 ReservationData GetReservationAtPoint(uint x, uint y);
111
112 }
113}
diff --git a/OpenSim/Framework/Data/ILogData.cs b/OpenSim/Framework/Data/ILogData.cs
new file mode 100644
index 0000000..ccb3b84
--- /dev/null
+++ b/OpenSim/Framework/Data/ILogData.cs
@@ -0,0 +1,94 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.Data
33{
34 /// <summary>
35 /// The severity of an individual log message
36 /// </summary>
37 public enum LogSeverity : int
38 {
39 /// <summary>
40 /// Critical: systems failure
41 /// </summary>
42 CRITICAL = 1,
43 /// <summary>
44 /// Major: warning prior to systems failure
45 /// </summary>
46 MAJOR = 2,
47 /// <summary>
48 /// Medium: an individual non-critical task failed
49 /// </summary>
50 MEDIUM = 3,
51 /// <summary>
52 /// Low: Informational warning
53 /// </summary>
54 LOW = 4,
55 /// <summary>
56 /// Info: Information
57 /// </summary>
58 INFO = 5,
59 /// <summary>
60 /// Verbose: Debug Information
61 /// </summary>
62 VERBOSE = 6
63 }
64
65 /// <summary>
66 /// An interface to a LogData storage system
67 /// </summary>
68 public interface ILogData
69 {
70 void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,string logMessage);
71 /// <summary>
72 /// Initialises the interface
73 /// </summary>
74 void Initialise();
75
76 /// <summary>
77 /// Closes the interface
78 /// </summary>
79 void Close();
80
81 /// <summary>
82 /// The plugin being loaded
83 /// </summary>
84 /// <returns>A string containing the plugin name</returns>
85 string getName();
86
87 /// <summary>
88 /// The plugins version
89 /// </summary>
90 /// <returns>A string containing the plugin version</returns>
91 string getVersion();
92 }
93
94}
diff --git a/OpenSim/Framework/Data/IniConfig.cs b/OpenSim/Framework/Data/IniConfig.cs
new file mode 100644
index 0000000..2f002c1
--- /dev/null
+++ b/OpenSim/Framework/Data/IniConfig.cs
@@ -0,0 +1,100 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.IO;
32using System.Text.RegularExpressions;
33
34/*
35 Taken from public code listing at by Alex Pinsker
36 http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html
37 */
38
39namespace OpenSim.Framework.Data
40{
41 /// <summary>
42 /// Parse settings from ini-like files
43 /// </summary>
44 public class IniFile
45 {
46 static IniFile()
47 {
48 _iniKeyValuePatternRegex = new Regex(
49 @"((\s)*(?<Key>([^\=^\s^\n]+))[\s^\n]*
50 # key part (surrounding whitespace stripped)
51 \=
52 (\s)*(?<Value>([^\n^\s]+(\n){0,1})))
53 # value part (surrounding whitespace stripped)
54 ",
55 RegexOptions.IgnorePatternWhitespace |
56 RegexOptions.Compiled |
57 RegexOptions.CultureInvariant);
58 }
59 static private Regex _iniKeyValuePatternRegex;
60
61 public IniFile(string iniFileName)
62 {
63 _iniFileName = iniFileName;
64 }
65
66 public string ParseFileReadValue(string key)
67 {
68 using (StreamReader reader =
69 new StreamReader(_iniFileName))
70 {
71 do
72 {
73 string line = reader.ReadLine();
74 Match match =
75 _iniKeyValuePatternRegex.Match(line);
76 if (match.Success)
77 {
78 string currentKey =
79 match.Groups["Key"].Value as string;
80 if (currentKey != null &&
81 currentKey.Trim().CompareTo(key) == 0)
82 {
83 string value =
84 match.Groups["Value"].Value as string;
85 return value;
86 }
87 }
88
89 }
90 while (reader.Peek() != -1);
91 }
92 return null;
93 }
94
95 public string IniFileName
96 {
97 get { return _iniFileName; }
98 } private string _iniFileName;
99 }
100}
diff --git a/OpenSim/Framework/Data/InventoryData.cs b/OpenSim/Framework/Data/InventoryData.cs
new file mode 100644
index 0000000..8a3a664
--- /dev/null
+++ b/OpenSim/Framework/Data/InventoryData.cs
@@ -0,0 +1,187 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Data
34{
35 /// <summary>
36 /// Inventory Item - contains all the properties associated with an individual inventory piece.
37 /// </summary>
38 public class InventoryItemBase
39 {
40 /// <summary>
41 /// A UUID containing the ID for the inventory item itself
42 /// </summary>
43 public LLUUID inventoryID;
44 /// <summary>
45 /// The UUID of the associated asset on the asset server
46 /// </summary>
47 public LLUUID assetID;
48 /// <summary>
49 /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
50 /// </summary>
51 public int type;
52 /// <summary>
53 /// The folder this item is contained in (NULL_KEY = Inventory Root)
54 /// </summary>
55 public LLUUID parentFolderID;
56 /// <summary>
57 /// The owner of this inventory item
58 /// </summary>
59 public LLUUID avatarID;
60 /// <summary>
61 /// The name of the inventory item (must be less than 64 characters)
62 /// </summary>
63 public string inventoryName;
64 /// <summary>
65 /// The description of the inventory item (must be less than 64 characters)
66 /// </summary>
67 public string inventoryDescription;
68 /// <summary>
69 /// A mask containing the permissions for the next owner (cannot be enforced)
70 /// </summary>
71 public uint inventoryNextPermissions;
72 /// <summary>
73 /// A mask containing permissions for the current owner (cannot be enforced)
74 /// </summary>
75 public uint inventoryCurrentPermissions;
76 }
77
78 /// <summary>
79 /// A Class for folders which contain users inventory
80 /// </summary>
81 public class InventoryFolderBase
82 {
83 /// <summary>
84 /// The name of the folder (64 characters or less)
85 /// </summary>
86 public string name;
87 /// <summary>
88 /// The agent who's inventory this is contained by
89 /// </summary>
90 public LLUUID agentID;
91 /// <summary>
92 /// The folder this folder is contained in (NULL_KEY for root)
93 /// </summary>
94 public LLUUID parentID;
95 /// <summary>
96 /// The UUID for this folder
97 /// </summary>
98 public LLUUID folderID;
99 }
100
101 /// <summary>
102 /// An interface for accessing inventory data from a storage server
103 /// </summary>
104 public interface IInventoryData
105 {
106 /// <summary>
107 /// Initialises the interface
108 /// </summary>
109 void Initialise();
110
111 /// <summary>
112 /// Closes the interface
113 /// </summary>
114 void Close();
115
116 /// <summary>
117 /// The plugin being loaded
118 /// </summary>
119 /// <returns>A string containing the plugin name</returns>
120 string getName();
121
122 /// <summary>
123 /// The plugins version
124 /// </summary>
125 /// <returns>A string containing the plugin version</returns>
126 string getVersion();
127
128 /// <summary>
129 /// Returns a list of inventory items contained within the specified folder
130 /// </summary>
131 /// <param name="folderID">The UUID of the target folder</param>
132 /// <returns>A List of InventoryItemBase items</returns>
133 List<InventoryItemBase> getInventoryInFolder(LLUUID folderID);
134
135 /// <summary>
136 /// Returns a list of folders in the users inventory root.
137 /// </summary>
138 /// <param name="user">The UUID of the user who is having inventory being returned</param>
139 /// <returns>A list of folders</returns>
140 List<InventoryFolderBase> getUserRootFolders(LLUUID user);
141
142 /// <summary>
143 /// Returns a list of inventory folders contained in the folder 'parentID'
144 /// </summary>
145 /// <param name="parentID">The folder to get subfolders for</param>
146 /// <returns>A list of inventory folders</returns>
147 List<InventoryFolderBase> getInventoryFolders(LLUUID parentID);
148
149 /// <summary>
150 /// Returns an inventory item by its UUID
151 /// </summary>
152 /// <param name="item">The UUID of the item to be returned</param>
153 /// <returns>A class containing item information</returns>
154 InventoryItemBase getInventoryItem(LLUUID item);
155
156 /// <summary>
157 /// Returns a specified inventory folder by its UUID
158 /// </summary>
159 /// <param name="folder">The UUID of the folder to be returned</param>
160 /// <returns>A class containing folder information</returns>
161 InventoryFolderBase getInventoryFolder(LLUUID folder);
162
163 /// <summary>
164 /// Creates a new inventory item based on item
165 /// </summary>
166 /// <param name="item">The item to be created</param>
167 void addInventoryItem(InventoryItemBase item);
168
169 /// <summary>
170 /// Updates an inventory item with item (updates based on ID)
171 /// </summary>
172 /// <param name="item">The updated item</param>
173 void updateInventoryItem(InventoryItemBase item);
174
175 /// <summary>
176 /// Adds a new folder specified by folder
177 /// </summary>
178 /// <param name="folder">The inventory folder</param>
179 void addInventoryFolder(InventoryFolderBase folder);
180
181 /// <summary>
182 /// Updates a folder based on its ID with folder
183 /// </summary>
184 /// <param name="folder">The inventory folder</param>
185 void updateInventoryFolder(InventoryFolderBase folder);
186 }
187}
diff --git a/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj
new file mode 100644
index 0000000..dcafbcd
--- /dev/null
+++ b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj
@@ -0,0 +1,116 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{36B72A9B-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Data</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Data</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Data" >
70 <HintPath>System.Data.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Xml" >
74 <HintPath>System.Xml.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 </ItemGroup>
78 <ItemGroup>
79 </ItemGroup>
80 <ItemGroup>
81 <Compile Include="GridData.cs">
82 <SubType>Code</SubType>
83 </Compile>
84 <Compile Include="ILogData.cs">
85 <SubType>Code</SubType>
86 </Compile>
87 <Compile Include="IniConfig.cs">
88 <SubType>Code</SubType>
89 </Compile>
90 <Compile Include="InventoryData.cs">
91 <SubType>Code</SubType>
92 </Compile>
93 <Compile Include="ReservationData.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="SimProfileData.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 <Compile Include="UserData.cs">
100 <SubType>Code</SubType>
101 </Compile>
102 <Compile Include="UserProfileData.cs">
103 <SubType>Code</SubType>
104 </Compile>
105 <Compile Include="Properties\AssemblyInfo.cs">
106 <SubType>Code</SubType>
107 </Compile>
108 </ItemGroup>
109 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
110 <PropertyGroup>
111 <PreBuildEvent>
112 </PreBuildEvent>
113 <PostBuildEvent>
114 </PostBuildEvent>
115 </PropertyGroup>
116</Project>
diff --git a/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj.user b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Data/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1446673
--- /dev/null
+++ b/OpenSim/Framework/Data/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenGrid.Framework.Data")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenGrid.Framework.Data")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Data/ReservationData.cs b/OpenSim/Framework/Data/ReservationData.cs
new file mode 100644
index 0000000..f404ebd
--- /dev/null
+++ b/OpenSim/Framework/Data/ReservationData.cs
@@ -0,0 +1,51 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32using libsecondlife;
33
34namespace OpenSim.Framework.Data
35{
36 public class ReservationData
37 {
38 public LLUUID userUUID = new LLUUID();
39 public int reservationMinX = 0;
40 public int reservationMinY = 0;
41 public int reservationMaxX = 65536;
42 public int reservationMaxY = 65536;
43
44 public string reservationName = "";
45 public string reservationCompany = "";
46 public bool status = true;
47
48 public string gridSendKey = "";
49 public string gridRecvKey = "";
50 }
51}
diff --git a/OpenSim/Framework/Data/SimProfileData.cs b/OpenSim/Framework/Data/SimProfileData.cs
new file mode 100644
index 0000000..201aa01
--- /dev/null
+++ b/OpenSim/Framework/Data/SimProfileData.cs
@@ -0,0 +1,114 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.Data
33{
34 /// <summary>
35 /// A class which contains information known to the grid server about a region
36 /// </summary>
37 public class SimProfileData
38 {
39 /// <summary>
40 /// The name of the region
41 /// </summary>
42 public string regionName = "";
43
44 /// <summary>
45 /// A 64-bit number combining map position into a (mostly) unique ID
46 /// </summary>
47 public ulong regionHandle;
48
49 /// <summary>
50 /// OGS/OpenSim Specific ID for a region
51 /// </summary>
52 public libsecondlife.LLUUID UUID;
53
54 /// <summary>
55 /// Coordinates of the region
56 /// </summary>
57 public uint regionLocX;
58 public uint regionLocY;
59 public uint regionLocZ; // Reserved (round-robin, layers, etc)
60
61 /// <summary>
62 /// Authentication secrets
63 /// </summary>
64 /// <remarks>Not very secure, needs improvement.</remarks>
65 public string regionSendKey = "";
66 public string regionRecvKey = "";
67 public string regionSecret = "";
68
69 /// <summary>
70 /// Whether the region is online
71 /// </summary>
72 public bool regionOnline;
73
74 /// <summary>
75 /// Information about the server that the region is currently hosted on
76 /// </summary>
77 public string serverIP = "";
78 public uint serverPort;
79 public string serverURI = "";
80
81 /// <summary>
82 /// Set of optional overrides. Can be used to create non-eulicidean spaces.
83 /// </summary>
84 public ulong regionNorthOverrideHandle;
85 public ulong regionSouthOverrideHandle;
86 public ulong regionEastOverrideHandle;
87 public ulong regionWestOverrideHandle;
88
89 /// <summary>
90 /// Optional: URI Location of the region database
91 /// </summary>
92 /// <remarks>Used for floating sim pools where the region data is not nessecarily coupled to a specific server</remarks>
93 public string regionDataURI = "";
94
95 /// <summary>
96 /// Region Asset Details
97 /// </summary>
98 public string regionAssetURI = "";
99 public string regionAssetSendKey = "";
100 public string regionAssetRecvKey = "";
101
102 /// <summary>
103 /// Region Userserver Details
104 /// </summary>
105 public string regionUserURI = "";
106 public string regionUserSendKey = "";
107 public string regionUserRecvKey = "";
108
109 /// <summary>
110 /// Region Map Texture Asset
111 /// </summary>
112 public libsecondlife.LLUUID regionMapTextureID = new libsecondlife.LLUUID("00000000-0000-0000-9999-000000000006");
113 }
114}
diff --git a/OpenSim/Framework/Data/UserData.cs b/OpenSim/Framework/Data/UserData.cs
new file mode 100644
index 0000000..2e15b47
--- /dev/null
+++ b/OpenSim/Framework/Data/UserData.cs
@@ -0,0 +1,131 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Data
34{
35 /// <summary>
36 /// An interface for connecting to user storage servers.
37 /// </summary>
38 public interface IUserData
39 {
40 /// <summary>
41 /// Returns a user profile from a database via their UUID
42 /// </summary>
43 /// <param name="user">The accounts UUID</param>
44 /// <returns>The user data profile</returns>
45 UserProfileData getUserByUUID(LLUUID user);
46
47 /// <summary>
48 /// Returns a users profile by searching their username
49 /// </summary>
50 /// <param name="name">The users username</param>
51 /// <returns>The user data profile</returns>
52 UserProfileData getUserByName(string name);
53
54 /// <summary>
55 /// Returns a users profile by searching their username parts
56 /// </summary>
57 /// <param name="fname">Account firstname</param>
58 /// <param name="lname">Account lastname</param>
59 /// <returns>The user data profile</returns>
60 UserProfileData getUserByName(string fname, string lname);
61
62 /// <summary>
63 /// Returns the current agent for a user searching by it's UUID
64 /// </summary>
65 /// <param name="user">The users UUID</param>
66 /// <returns>The current agent session</returns>
67 UserAgentData getAgentByUUID(LLUUID user);
68
69 /// <summary>
70 /// Returns the current session agent for a user searching by username
71 /// </summary>
72 /// <param name="name">The users account name</param>
73 /// <returns>The current agent session</returns>
74 UserAgentData getAgentByName(string name);
75
76 /// <summary>
77 /// Returns the current session agent for a user searching by username parts
78 /// </summary>
79 /// <param name="fname">The users first account name</param>
80 /// <param name="lname">The users account surname</param>
81 /// <returns>The current agent session</returns>
82 UserAgentData getAgentByName(string fname, string lname);
83
84 /// <summary>
85 /// Adds a new User profile to the database
86 /// </summary>
87 /// <param name="user">UserProfile to add</param>
88 void addNewUserProfile(UserProfileData user);
89
90 /// <summary>
91 /// Adds a new agent to the database
92 /// </summary>
93 /// <param name="agent">The agent to add</param>
94 void addNewUserAgent(UserAgentData agent);
95
96 /// <summary>
97 /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
98 /// </summary>
99 /// <param name="from">The account to transfer from</param>
100 /// <param name="to">The account to transfer to</param>
101 /// <param name="amount">The amount to transfer</param>
102 /// <returns>Successful?</returns>
103 bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount);
104
105 /// <summary>
106 /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
107 /// </summary>
108 /// <param name="from">User to transfer from</param>
109 /// <param name="to">User to transfer to</param>
110 /// <param name="inventory">Specified inventory item</param>
111 /// <returns>Successful?</returns>
112 bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
113
114 /// <summary>
115 /// Returns the plugin version
116 /// </summary>
117 /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns>
118 string getVersion();
119
120 /// <summary>
121 /// Returns the plugin name
122 /// </summary>
123 /// <returns>Plugin name, eg MySQL User Provider</returns>
124 string getName();
125
126 /// <summary>
127 /// Initialises the plugin (artificial constructor)
128 /// </summary>
129 void Initialise();
130 }
131}
diff --git a/OpenSim/Framework/Data/UserProfileData.cs b/OpenSim/Framework/Data/UserProfileData.cs
new file mode 100644
index 0000000..00d422d
--- /dev/null
+++ b/OpenSim/Framework/Data/UserProfileData.cs
@@ -0,0 +1,182 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Data
34{
35 /// <summary>
36 /// Information about a particular user known to the userserver
37 /// </summary>
38 public class UserProfileData
39 {
40 /// <summary>
41 /// The ID value for this user
42 /// </summary>
43 public LLUUID UUID;
44
45 /// <summary>
46 /// The first component of a users account name
47 /// </summary>
48 public string username;
49 /// <summary>
50 /// The second component of a users account name
51 /// </summary>
52 public string surname;
53
54 /// <summary>
55 /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
56 /// </summary>
57 /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
58 public string passwordHash;
59 /// <summary>
60 /// The salt used for the users hash, should be 32 bytes or longer
61 /// </summary>
62 public string passwordSalt;
63
64 /// <summary>
65 /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into
66 /// </summary>
67 public ulong homeRegion;
68 /// <summary>
69 /// The coordinates inside the region of the home location
70 /// </summary>
71 public LLVector3 homeLocation;
72 /// <summary>
73 /// Where the user will be looking when they rez.
74 /// </summary>
75 public LLVector3 homeLookAt;
76
77 /// <summary>
78 /// A UNIX Timestamp (seconds since epoch) for the users creation
79 /// </summary>
80 public int created;
81 /// <summary>
82 /// A UNIX Timestamp for the users last login date / time
83 /// </summary>
84 public int lastLogin;
85
86 /// <summary>
87 /// A URI to the users inventory server, used for foreigners and large grids
88 /// </summary>
89 public string userInventoryURI;
90 /// <summary>
91 /// A URI to the users asset server, used for foreigners and large grids.
92 /// </summary>
93 public string userAssetURI;
94
95 /// <summary>
96 /// A uint mask containing the "I can do" fields of the users profile
97 /// </summary>
98 public uint profileCanDoMask;
99 /// <summary>
100 /// A uint mask containing the "I want to do" part of the users profile
101 /// </summary>
102 public uint profileWantDoMask; // Profile window "I want to" mask
103
104 /// <summary>
105 /// The about text listed in a users profile.
106 /// </summary>
107 public string profileAboutText;
108 /// <summary>
109 /// The first life about text listed in a users profile
110 /// </summary>
111 public string profileFirstText;
112
113 /// <summary>
114 /// The profile image for an avatar stored on the asset server
115 /// </summary>
116 public LLUUID profileImage;
117 /// <summary>
118 /// The profile image for the users first life tab
119 /// </summary>
120 public LLUUID profileFirstImage;
121 /// <summary>
122 /// The users last registered agent (filled in on the user server)
123 /// </summary>
124 public UserAgentData currentAgent;
125 }
126
127 /// <summary>
128 /// Information about a users session
129 /// </summary>
130 public class UserAgentData
131 {
132 /// <summary>
133 /// The UUID of the users avatar (not the agent!)
134 /// </summary>
135 public LLUUID UUID;
136 /// <summary>
137 /// The IP address of the user
138 /// </summary>
139 public string agentIP;
140 /// <summary>
141 /// The port of the user
142 /// </summary>
143 public uint agentPort;
144 /// <summary>
145 /// Is the user online?
146 /// </summary>
147 public bool agentOnline;
148 /// <summary>
149 /// The session ID for the user (also the agent ID)
150 /// </summary>
151 public LLUUID sessionID;
152 /// <summary>
153 /// The "secure" session ID for the user
154 /// </summary>
155 /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks>
156 public LLUUID secureSessionID;
157 /// <summary>
158 /// The region the user logged into initially
159 /// </summary>
160 public LLUUID regionID;
161 /// <summary>
162 /// A unix timestamp from when the user logged in
163 /// </summary>
164 public int loginTime;
165 /// <summary>
166 /// When this agent expired and logged out, 0 if still online
167 /// </summary>
168 public int logoutTime;
169 /// <summary>
170 /// Current region the user is logged into
171 /// </summary>
172 public LLUUID currentRegion;
173 /// <summary>
174 /// Region handle of the current region the user is in
175 /// </summary>
176 public ulong currentHandle;
177 /// <summary>
178 /// The position of the user within the region
179 /// </summary>
180 public LLVector3 currentPos;
181 }
182}
diff --git a/OpenSim/Framework/General/AgentInventory.cs b/OpenSim/Framework/General/AgentInventory.cs
new file mode 100644
index 0000000..fbf4d23
--- /dev/null
+++ b/OpenSim/Framework/General/AgentInventory.cs
@@ -0,0 +1,267 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using libsecondlife.Packets;
33using OpenSim.Framework.Types;
34using OpenSim.Framework.Utilities;
35
36namespace OpenSim.Framework.Inventory
37{
38 public class AgentInventory
39 {
40 //Holds the local copy of Inventory info for a agent
41 public Dictionary<LLUUID, InventoryFolder> InventoryFolders;
42 public Dictionary<LLUUID, InventoryItem> InventoryItems;
43 public InventoryFolder InventoryRoot;
44 public int LastCached; //maybe used by opensim app, time this was last stored/compared to user server
45 public LLUUID AgentID;
46 public AvatarWearable[] Wearables;
47
48 public AgentInventory()
49 {
50 InventoryFolders = new Dictionary<LLUUID, InventoryFolder>();
51 InventoryItems = new Dictionary<LLUUID, InventoryItem>();
52 this.Initialise();
53 }
54
55 public virtual void Initialise()
56 {
57 Wearables = new AvatarWearable[13]; //should be 12 of these
58 for (int i = 0; i < 13; i++)
59 {
60 Wearables[i] = new AvatarWearable();
61 }
62
63 }
64
65 public bool CreateNewFolder(LLUUID folderID, ushort type)
66 {
67 InventoryFolder Folder = new InventoryFolder();
68 Folder.FolderID = folderID;
69 Folder.OwnerID = this.AgentID;
70 Folder.DefaultType = type;
71 this.InventoryFolders.Add(Folder.FolderID, Folder);
72 return (true);
73 }
74
75 public void CreateRootFolder(LLUUID newAgentID, bool createTextures)
76 {
77 this.AgentID = newAgentID;
78 InventoryRoot = new InventoryFolder();
79 InventoryRoot.FolderID = LLUUID.Random();
80 InventoryRoot.ParentID = new LLUUID();
81 InventoryRoot.Version = 1;
82 InventoryRoot.DefaultType = 8;
83 InventoryRoot.OwnerID = this.AgentID;
84 InventoryRoot.FolderName = "My Inventory";
85 InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot);
86 InventoryRoot.OwnerID = this.AgentID;
87 if (createTextures)
88 {
89 this.CreateNewFolder(LLUUID.Random(), 0, "Textures", InventoryRoot.FolderID);
90 }
91 }
92
93 public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName)
94 {
95 InventoryFolder Folder = new InventoryFolder();
96 Folder.FolderID = folderID;
97 Folder.OwnerID = this.AgentID;
98 Folder.DefaultType = type;
99 Folder.FolderName = folderName;
100 this.InventoryFolders.Add(Folder.FolderID, Folder);
101
102 return (true);
103 }
104
105 public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName, LLUUID parent)
106 {
107 if (!this.InventoryFolders.ContainsKey(folderID))
108 {
109 System.Console.WriteLine("creating new folder called " + folderName + " in agents inventory");
110 InventoryFolder Folder = new InventoryFolder();
111 Folder.FolderID = folderID;
112 Folder.OwnerID = this.AgentID;
113 Folder.DefaultType = type;
114 Folder.FolderName = folderName;
115 Folder.ParentID = parent;
116 this.InventoryFolders.Add(Folder.FolderID, Folder);
117 }
118
119 return (true);
120 }
121
122 public bool HasFolder(LLUUID folderID)
123 {
124 if (this.InventoryFolders.ContainsKey(folderID))
125 {
126 return true;
127 }
128 return false;
129 }
130
131 public LLUUID GetFolderID(string folderName)
132 {
133 foreach (InventoryFolder inv in this.InventoryFolders.Values)
134 {
135 if (inv.FolderName == folderName)
136 {
137 return inv.FolderID;
138 }
139 }
140
141 return LLUUID.Zero;
142 }
143
144 public bool UpdateItemAsset(LLUUID itemID, AssetBase asset)
145 {
146 if(this.InventoryItems.ContainsKey(itemID))
147 {
148 InventoryItem Item = this.InventoryItems[itemID];
149 Item.AssetID = asset.FullID;
150 System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated() + " so it now is set to asset " + asset.FullID.ToStringHyphenated());
151 //TODO need to update the rest of the info
152 }
153 return true;
154 }
155
156 public bool UpdateItemDetails(LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet)
157 {
158 System.Console.WriteLine("updating inventory item details");
159 if (this.InventoryItems.ContainsKey(itemID))
160 {
161 System.Console.WriteLine("changing name to "+ Util.FieldToString(packet.Name));
162 InventoryItem Item = this.InventoryItems[itemID];
163 Item.Name = Util.FieldToString(packet.Name);
164 System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated());
165 //TODO need to update the rest of the info
166 }
167 return true;
168 }
169
170 public LLUUID AddToInventory(LLUUID folderID, AssetBase asset)
171 {
172 if (this.InventoryFolders.ContainsKey(folderID))
173 {
174 LLUUID NewItemID = LLUUID.Random();
175
176 InventoryItem Item = new InventoryItem();
177 Item.FolderID = folderID;
178 Item.OwnerID = AgentID;
179 Item.AssetID = asset.FullID;
180 Item.ItemID = NewItemID;
181 Item.Type = asset.Type;
182 Item.Name = asset.Name;
183 Item.Description = asset.Description;
184 Item.InvType = asset.InvType;
185 this.InventoryItems.Add(Item.ItemID, Item);
186 InventoryFolder Folder = InventoryFolders[Item.FolderID];
187 Folder.Items.Add(Item);
188 return (Item.ItemID);
189 }
190 else
191 {
192 return (null);
193 }
194 }
195
196 public bool DeleteFromInventory(LLUUID itemID)
197 {
198 bool res = false;
199 if (this.InventoryItems.ContainsKey(itemID))
200 {
201 InventoryItem item = this.InventoryItems[itemID];
202 this.InventoryItems.Remove(itemID);
203 foreach (InventoryFolder fold in InventoryFolders.Values)
204 {
205 if (fold.Items.Contains(item))
206 {
207 fold.Items.Remove(item);
208 break;
209 }
210 }
211 res = true;
212
213 }
214 return res;
215 }
216 }
217
218 public class InventoryFolder
219 {
220 public List<InventoryItem> Items;
221 //public List<InventoryFolder> Subfolders;
222 public LLUUID FolderID;
223 public LLUUID OwnerID;
224 public LLUUID ParentID = LLUUID.Zero;
225 public string FolderName;
226 public ushort DefaultType;
227 public ushort Version;
228
229 public InventoryFolder()
230 {
231 Items = new List<InventoryItem>();
232 //Subfolders = new List<InventoryFolder>();
233 }
234
235 }
236
237 public class InventoryItem
238 {
239 public LLUUID FolderID;
240 public LLUUID OwnerID;
241 public LLUUID ItemID;
242 public LLUUID AssetID;
243 public LLUUID CreatorID;
244 public sbyte InvType;
245 public sbyte Type;
246 public string Name ="";
247 public string Description;
248
249 public InventoryItem()
250 {
251 this.CreatorID = LLUUID.Zero;
252 }
253
254 public string ExportString()
255 {
256 string typ = "notecard";
257 string result = "";
258 result += "\tinv_object\t0\n\t{\n";
259 result += "\t\tobj_id\t%s\n";
260 result += "\t\tparent_id\t"+ ItemID.ToString() +"\n";
261 result += "\t\ttype\t"+ typ +"\n";
262 result += "\t\tname\t" + Name+"|\n";
263 result += "\t}\n";
264 return result;
265 }
266 }
267}
diff --git a/OpenSim/Framework/General/AuthenticateSessionBase.cs b/OpenSim/Framework/General/AuthenticateSessionBase.cs
new file mode 100644
index 0000000..73dd3e2
--- /dev/null
+++ b/OpenSim/Framework/General/AuthenticateSessionBase.cs
@@ -0,0 +1,132 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using OpenSim.Framework.Interfaces;
33using OpenSim.Framework.Types;
34
35namespace OpenSim.Framework
36{
37 public class AuthenticateSessionsBase
38 {
39 public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>();
40
41 public AuthenticateSessionsBase()
42 {
43
44 }
45
46 public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
47 {
48 AgentCircuitData validcircuit = null;
49 if (this.AgentCircuits.ContainsKey(circuitcode))
50 {
51 validcircuit = this.AgentCircuits[circuitcode];
52 }
53 AuthenticateResponse user = new AuthenticateResponse();
54 if (validcircuit == null)
55 {
56 //don't have this circuit code in our list
57 user.Authorised = false;
58 return (user);
59 }
60
61 if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID))
62 {
63 user.Authorised = true;
64 user.LoginInfo = new Login();
65 user.LoginInfo.Agent = agentID;
66 user.LoginInfo.Session = sessionID;
67 user.LoginInfo.SecureSession = validcircuit.SecureSessionID;
68 user.LoginInfo.First = validcircuit.firstname;
69 user.LoginInfo.Last = validcircuit.lastname;
70 user.LoginInfo.InventoryFolder = validcircuit.InventoryFolder;
71 user.LoginInfo.BaseFolder = validcircuit.BaseFolder;
72 }
73 else
74 {
75 // Invalid
76 user.Authorised = false;
77 }
78
79 return (user);
80 }
81
82 public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData)
83 {
84 if (this.AgentCircuits.ContainsKey(circuitCode))
85 {
86 this.AgentCircuits[circuitCode] = agentData;
87 }
88 else
89 {
90 this.AgentCircuits.Add(circuitCode, agentData);
91 }
92 }
93
94 public LLVector3 GetPosition(uint circuitCode)
95 {
96 LLVector3 vec = new LLVector3();
97 if (this.AgentCircuits.ContainsKey(circuitCode))
98 {
99 vec = this.AgentCircuits[circuitCode].startpos;
100 }
101 return vec;
102 }
103
104 public void UpdateAgentData(AgentCircuitData agentData)
105 {
106 if (this.AgentCircuits.ContainsKey((uint)agentData.circuitcode))
107 {
108 this.AgentCircuits[(uint)agentData.circuitcode].firstname = agentData.firstname;
109 this.AgentCircuits[(uint)agentData.circuitcode].lastname = agentData.lastname;
110 this.AgentCircuits[(uint)agentData.circuitcode].startpos = agentData.startpos;
111 // Console.WriteLine("update user start pos is " + agentData.startpos.X + " , " + agentData.startpos.Y + " , " + agentData.startpos.Z);
112 }
113 }
114
115 public void UpdateAgentChildStatus(uint circuitcode, bool childstatus)
116 {
117 if (this.AgentCircuits.ContainsKey(circuitcode))
118 {
119 this.AgentCircuits[circuitcode].child = childstatus;
120 }
121 }
122
123 public bool GetAgentChildStatus(uint circuitcode)
124 {
125 if (this.AgentCircuits.ContainsKey(circuitcode))
126 {
127 return this.AgentCircuits[circuitcode].child;
128 }
129 return false;
130 }
131 }
132} \ No newline at end of file
diff --git a/OpenSim/Framework/General/BlockingQueue.cs b/OpenSim/Framework/General/BlockingQueue.cs
new file mode 100644
index 0000000..667b8d8
--- /dev/null
+++ b/OpenSim/Framework/General/BlockingQueue.cs
@@ -0,0 +1,60 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Threading;
30using System.Collections.Generic;
31using System.Text;
32
33namespace OpenSim.Framework.Utilities
34{
35 public class BlockingQueue<T>
36 {
37 private Queue<T> _queue = new Queue<T>();
38 private object _queueSync = new object();
39
40 public void Enqueue(T value)
41 {
42 lock (_queueSync)
43 {
44 _queue.Enqueue(value);
45 Monitor.Pulse(_queueSync);
46 }
47 }
48
49 public T Dequeue()
50 {
51 lock (_queueSync)
52 {
53 if (_queue.Count < 1)
54 Monitor.Wait(_queueSync);
55
56 return _queue.Dequeue();
57 }
58 }
59 }
60}
diff --git a/OpenSim/Framework/General/IRegionCommsListener.cs b/OpenSim/Framework/General/IRegionCommsListener.cs
new file mode 100644
index 0000000..0e80941
--- /dev/null
+++ b/OpenSim/Framework/General/IRegionCommsListener.cs
@@ -0,0 +1,47 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Interfaces;
32using OpenSim.Framework.Types;
33
34namespace OpenSim.Framework
35{
36 public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent);
37 public delegate void UpdateNeighbours(List<RegionInfo> neighbours);
38 public delegate void AgentCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position);
39
40 public interface IRegionCommsListener
41 {
42 event ExpectUserDelegate OnExpectUser;
43 event GenericCall2 OnExpectChildAgent;
44 event AgentCrossing OnAvatarCrossingIntoRegion;
45 event UpdateNeighbours OnNeighboursUpdate;
46 }
47}
diff --git a/OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs b/OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs
new file mode 100644
index 0000000..462e2c5
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs
@@ -0,0 +1,51 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Net;
32using System.Net.Sockets;
33using System.IO;
34using libsecondlife;
35using OpenSim;
36using OpenSim.Framework.Types;
37
38namespace OpenSim.Framework.Interfaces
39{
40 public class AuthenticateResponse
41 {
42 public bool Authorised;
43 public Login LoginInfo;
44
45 public AuthenticateResponse()
46 {
47
48 }
49
50 }
51}
diff --git a/OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs b/OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs
new file mode 100644
index 0000000..13980fe
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs
@@ -0,0 +1,42 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.Interfaces
33{
34 public interface IGenericConfig
35 {
36 void LoadData();
37 string GetAttribute(string attributeName);
38 bool SetAttribute(string attributeName, string attributeValue);
39 void Commit();
40 void Close();
41 }
42}
diff --git a/OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs b/OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs
new file mode 100644
index 0000000..0fafe1a
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs
@@ -0,0 +1,63 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.IO;
32using libsecondlife;
33//using OpenSim.world;
34
35namespace OpenSim.Framework.Interfaces
36{
37 /// <summary>
38 /// </summary>
39
40
41 public abstract class GridConfig
42 {
43 public string GridOwner;
44 public string DefaultStartupMsg;
45 public string DefaultAssetServer;
46 public string AssetSendKey;
47 public string AssetRecvKey;
48 public string DefaultUserServer;
49 public string UserSendKey;
50 public string UserRecvKey;
51 public string SimSendKey;
52 public string SimRecvKey;
53
54
55 public abstract void InitConfig();
56
57 }
58
59 public interface IGridConfig
60 {
61 GridConfig GetConfigObject();
62 }
63}
diff --git a/OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs b/OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs
new file mode 100644
index 0000000..2f4b340
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs
@@ -0,0 +1,57 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.IO;
32using libsecondlife;
33//using OpenSim.world;
34
35namespace OpenSim.Framework.Interfaces
36{
37 /// <summary>
38 /// </summary>
39
40
41 public abstract class UserConfig
42 {
43 public string DefaultStartupMsg;
44 public string GridServerURL;
45 public string GridSendKey;
46 public string GridRecvKey;
47
48
49 public abstract void InitConfig();
50
51 }
52
53 public interface IUserConfig
54 {
55 UserConfig GetConfigObject();
56 }
57}
diff --git a/OpenSim/Framework/General/Interfaces/IAssetServer.cs b/OpenSim/Framework/General/Interfaces/IAssetServer.cs
new file mode 100644
index 0000000..826392d
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/IAssetServer.cs
@@ -0,0 +1,69 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Net;
30using System.Net.Sockets;
31using System.IO;
32using System.Threading;
33using libsecondlife;
34using OpenSim.Framework.Types;
35
36namespace OpenSim.Framework.Interfaces
37{
38 /// <summary>
39 /// Description of IAssetServer.
40 /// </summary>
41
42 public interface IAssetServer
43 {
44 void SetReceiver(IAssetReceiver receiver);
45 void RequestAsset(LLUUID assetID, bool isTexture);
46 void UpdateAsset(AssetBase asset);
47 void UploadNewAsset(AssetBase asset);
48 void SetServerInfo(string ServerUrl, string ServerKey);
49 void Close();
50 }
51
52 // could change to delegate?
53 public interface IAssetReceiver
54 {
55 void AssetReceived(AssetBase asset, bool IsTexture);
56 void AssetNotFound(AssetBase asset);
57 }
58
59 public interface IAssetPlugin
60 {
61 IAssetServer GetAssetServer();
62 }
63
64 public struct ARequest
65 {
66 public LLUUID AssetID;
67 public bool IsTexture;
68 }
69}
diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
new file mode 100644
index 0000000..009648c
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
@@ -0,0 +1,160 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Inventory;
32using libsecondlife;
33using libsecondlife.Packets;
34using OpenSim.Framework.Types;
35
36namespace OpenSim.Framework.Interfaces
37{
38 public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
39 public delegate void RezObject(AssetBase primAsset, LLVector3 pos);
40 public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west);
41 public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
42 public delegate void StartAnim(LLUUID animID, int seq);
43 public delegate void LinkObjects(uint parent, List<uint> children);
44 public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY);
45 public delegate void TeleportLocationRequest(IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags);
46
47 public delegate void GenericCall(IClientAPI remoteClient);
48 public delegate void GenericCall2();
49 public delegate void GenericCall3(Packet packet); // really don't want to be passing packets in these events, so this is very temporary.
50 public delegate void GenericCall4(Packet packet, IClientAPI remoteClient);
51 public delegate void GenericCall5(IClientAPI remoteClient, bool status);
52 public delegate void GenericCall6(LLUUID uid);
53
54 public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock);
55 public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
56 public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient);
57 public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient);
58 public delegate void UpdateVector(uint localID, LLVector3 pos, IClientAPI remoteClient);
59 public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient);
60 public delegate void StatusChange(bool status);
61 public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status);
62 public delegate void UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
63 public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient);
64
65 public delegate void ParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client);
66 public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client);
67 public delegate void ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client);
68 public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client); // NOTETOSELFremove the packet part
69
70 public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client);
71
72 public interface IClientAPI
73 {
74 event ChatFromViewer OnChatFromViewer;
75 event RezObject OnRezObject;
76 event ModifyTerrain OnModifyTerrain;
77 event SetAppearance OnSetAppearance;
78 event StartAnim OnStartAnim;
79 event LinkObjects OnLinkObjects;
80 event RequestMapBlocks OnRequestMapBlocks;
81 event TeleportLocationRequest OnTeleportLocationRequest;
82
83 event GenericCall4 OnDeRezObject;
84 event GenericCall OnRegionHandShakeReply;
85 event GenericCall OnRequestWearables;
86 event GenericCall2 OnCompleteMovementToRegion;
87 event UpdateAgent OnAgentUpdate;
88 event GenericCall OnRequestAvatarsData;
89 event GenericCall4 OnAddPrim;
90 event UpdateVector OnGrapObject;
91 event ObjectSelect OnDeGrapObject;
92 event MoveObject OnGrapUpdate;
93
94 event UpdateShape OnUpdatePrimShape;
95 event ObjectSelect OnObjectSelect;
96 event UpdatePrimFlags OnUpdatePrimFlags;
97 event UpdatePrimTexture OnUpdatePrimTexture;
98 event UpdateVector OnUpdatePrimPosition;
99 event UpdatePrimRotation OnUpdatePrimRotation;
100 event UpdateVector OnUpdatePrimScale;
101 event StatusChange OnChildAgentStatus;
102 event GenericCall2 OnStopMovement;
103 event NewAvatar OnNewAvatar;
104 event GenericCall6 OnRemoveAvatar;
105
106 event ParcelPropertiesRequest OnParcelPropertiesRequest;
107 event ParcelDivideRequest OnParcelDivideRequest;
108 event ParcelJoinRequest OnParcelJoinRequest;
109 event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
110
111 event EstateOwnerMessageRequest OnEstateOwnerMessage;
112
113 LLVector3 StartPos
114 {
115 get;
116 set;
117 }
118
119 LLUUID AgentId
120 {
121 get;
122 }
123
124 string FirstName
125 {
126 get;
127 }
128
129 string LastName
130 {
131 get;
132 }
133
134 void OutPacket(Packet newPack);
135 void SendWearables(AvatarWearable[] wearables);
136 void SendRegionHandshake(RegionInfo regionInfo);
137 void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
138 void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
139 void SendLayerData(float[] map);
140 void SendLayerData(int px, int py, float[] map);
141 void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look);
142 void InformClientOfNeighbour(ulong neighbourHandle, System.Net.IPAddress neighbourIP, ushort neighbourPort);
143 AgentCircuitData RequestClientInfo();
144 void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, System.Net.IPAddress newRegionIP, ushort newRegionPort);
145 void SendMapBlock(List<MapBlockData> mapBlocks);
146 void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags);
147 void SendRegionTeleport(ulong regionHandle, byte simAccess, string ipAddress, ushort ipPort, uint locationID, uint flags);
148 void SendTeleportCancel();
149 void SendTeleportLocationStart();
150 void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance);
151
152 void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry);
153 void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity);
154
155 void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint);
156 void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags);
157 void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags);
158 void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation);
159 }
160}
diff --git a/OpenSim/Framework/General/Interfaces/ILocalStorage.cs b/OpenSim/Framework/General/Interfaces/ILocalStorage.cs
new file mode 100644
index 0000000..4987d10
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/ILocalStorage.cs
@@ -0,0 +1,69 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using libsecondlife;
31using OpenSim.Framework.Types;
32
33namespace OpenSim.Framework.Interfaces
34{
35 /// <summary>
36 /// ILocalStorage. Really hacked together right now needs cleaning up
37 /// </summary>
38 public interface ILocalStorage
39 {
40 void Initialise(string datastore);
41
42 void StorePrim(PrimData prim);
43 void RemovePrim(LLUUID primID);
44 void LoadPrimitives(ILocalStorageReceiver receiver);
45
46 float[] LoadWorld();
47 void SaveMap(float[] heightmap);
48
49 void SaveParcels(ParcelData[] parcels);
50 void SaveParcel(ParcelData parcel);
51 void RemoveParcel(ParcelData parcel);
52 void RemoveAllParcels();
53 void LoadParcels(ILocalStorageParcelReceiver recv);
54
55 void ShutDown();
56 }
57
58 public interface ILocalStorageReceiver
59 {
60 void PrimFromStorage(PrimData prim);
61 }
62
63 public interface ILocalStorageParcelReceiver
64 {
65 void ParcelFromStorage(ParcelData data);
66 void NoParcelDataFromStorage();
67 }
68}
69
diff --git a/OpenSim/Framework/General/Interfaces/IUserServer.cs b/OpenSim/Framework/General/Interfaces/IUserServer.cs
new file mode 100644
index 0000000..c6e2223
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/IUserServer.cs
@@ -0,0 +1,42 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Inventory;
32using libsecondlife;
33
34namespace OpenSim.Framework.Interfaces
35{
36 public interface IUserServer
37 {
38 AgentInventory RequestAgentsInventory(LLUUID agentID);
39 void SetServerInfo(string ServerUrl, string SendKey, string RecvKey);
40 bool UpdateAgentsInventory(LLUUID agentID, AgentInventory inventory);
41 }
42}
diff --git a/OpenSim/Framework/General/Interfaces/IWorld.cs b/OpenSim/Framework/General/Interfaces/IWorld.cs
new file mode 100644
index 0000000..4857417
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/IWorld.cs
@@ -0,0 +1,45 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using OpenSim.Framework.Types;
33
34namespace OpenSim.Framework.Interfaces
35{
36 public interface IWorld
37 {
38 void AddNewClient(IClientAPI remoteClient, LLUUID agentID, bool child);
39 void RemoveClient(LLUUID agentID);
40
41 RegionInfo RegionInfo { get; }
42 object SyncRoot { get; }
43 uint NextLocalId { get; }
44 }
45}
diff --git a/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs b/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs
new file mode 100644
index 0000000..0c1627b
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs
@@ -0,0 +1,42 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Types;
32
33using libsecondlife;
34namespace OpenSim.Framework.Interfaces
35{
36 public interface IScriptAPI
37 {
38 LLVector3 GetEntityPosition(uint localID);
39 void SetEntityPosition(uint localID, float x, float y, float z);
40 uint GetRandomAvatarID();
41 }
42}
diff --git a/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs b/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs
new file mode 100644
index 0000000..ca50be0
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs
@@ -0,0 +1,41 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Framework.Interfaces
33{
34 public interface IScriptEngine
35 {
36 bool Init(IScriptAPI api);
37 string GetName();
38 void LoadScript(string script, string scriptName, uint entityID);
39 void OnFrame();
40 }
41}
diff --git a/OpenSim/Framework/General/LLSDHelpers.cs b/OpenSim/Framework/General/LLSDHelpers.cs
new file mode 100644
index 0000000..051520c
--- /dev/null
+++ b/OpenSim/Framework/General/LLSDHelpers.cs
@@ -0,0 +1,246 @@
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Text;
5using System.IO;
6using System.Xml;
7using libsecondlife;
8
9namespace OpenSim.Framework
10{
11 public class LLSDHelpers
12 {
13 public static string SerialiseLLSDReply(object obj)
14 {
15 StringWriter sw = new StringWriter();
16 XmlTextWriter writer = new XmlTextWriter(sw);
17 writer.Formatting = Formatting.None;
18 writer.WriteStartElement(String.Empty, "llsd", String.Empty);
19 LLSDHelpers.SerializeLLSDType(writer, obj);
20 writer.WriteEndElement();
21 writer.Close();
22 return sw.ToString();
23 }
24
25 public static void SerializeLLSDType(XmlTextWriter writer, object obj)
26 {
27 Type myType = obj.GetType();
28 LLSDType[] llsdattributes = (LLSDType[])myType.GetCustomAttributes(typeof(LLSDType), false);
29 if (llsdattributes.Length > 0)
30 {
31 switch (llsdattributes[0].ObjectType)
32 {
33 case "MAP":
34 writer.WriteStartElement(String.Empty, "map", String.Empty);
35 System.Reflection.FieldInfo[] fields = myType.GetFields();
36 for (int i = 0; i < fields.Length; i++)
37 {
38 object fieldValue = fields[i].GetValue(obj);
39 LLSDType[] fieldAttributes = (LLSDType[])fieldValue.GetType().GetCustomAttributes(typeof(LLSDType), false);
40 if (fieldAttributes.Length > 0)
41 {
42 writer.WriteStartElement(String.Empty, "key", String.Empty);
43 writer.WriteString(fields[i].Name);
44 writer.WriteEndElement();
45 SerializeLLSDType(writer, fieldValue);
46 }
47 else
48 {
49 //Console.WriteLine("LLSD field name" + fields[i].Name + " , " + fields[i].GetValue(obj).GetType());
50 writer.WriteStartElement(String.Empty, "key", String.Empty);
51 writer.WriteString(fields[i].Name);
52 writer.WriteEndElement();
53 LLSD.LLSDWriteOne(writer, fieldValue);
54 }
55 }
56 writer.WriteEndElement();
57 break;
58 case "ARRAY":
59 // LLSDArray arrayObject = obj as LLSDArray;
60 // ArrayList a = arrayObject.Array;
61 ArrayList a = (ArrayList)obj.GetType().GetField("Array").GetValue(obj);
62 writer.WriteStartElement(String.Empty, "array", String.Empty);
63 foreach (object item in a)
64 {
65 SerializeLLSDType(writer, item);
66 }
67 writer.WriteEndElement();
68 break;
69 }
70 }
71 else
72 {
73 LLSD.LLSDWriteOne(writer, obj);
74 }
75 }
76
77 public static object DeserialiseLLSDMap(Hashtable llsd, object obj)
78 {
79 Type myType = obj.GetType();
80 LLSDType[] llsdattributes = (LLSDType[])myType.GetCustomAttributes(typeof(LLSDType), false);
81 if (llsdattributes.Length > 0)
82 {
83 switch (llsdattributes[0].ObjectType)
84 {
85 case "MAP":
86 IDictionaryEnumerator enumerator = llsd.GetEnumerator();
87 while (enumerator.MoveNext())
88 {
89 System.Reflection.FieldInfo field = myType.GetField((string)enumerator.Key);
90 if (field != null)
91 {
92 if (enumerator.Value is Hashtable)
93 {
94 object fieldValue = field.GetValue(obj);
95 DeserialiseLLSDMap((Hashtable) enumerator.Value, fieldValue);
96 }
97 else if (enumerator.Value is ArrayList)
98 {
99 object fieldValue = field.GetValue(obj);
100 fieldValue.GetType().GetField("Array").SetValue(fieldValue, enumerator.Value);
101 //TODO
102 // the LLSD map/array types in the array need to be deserialised
103 // but first we need to know the right class to deserialise them into.
104 }
105 else
106 {
107 field.SetValue(obj, enumerator.Value);
108 }
109 }
110 }
111 break;
112 }
113 }
114 return obj;
115 }
116 }
117
118 [LLSDType("MAP")]
119 public class LLSDMapLayerResponse
120 {
121 public LLSDMapRequest AgentData = new LLSDMapRequest();
122 public LLSDArray LayerData = new LLSDArray();
123
124 public LLSDMapLayerResponse()
125 {
126
127 }
128 }
129
130 [LLSDType("MAP")]
131 public class LLSDCapsDetails
132 {
133 public string MapLayer = "";
134 public string NewFileAgentInventory = "";
135 //public string EventQueueGet = "";
136
137 public LLSDCapsDetails()
138 {
139
140 }
141 }
142
143 [LLSDType("MAP")]
144 public class LLSDMapLayer
145 {
146 public int Left = 0;
147 public int Right = 0;
148 public int Top = 0;
149 public int Bottom = 0;
150 public LLUUID ImageID = LLUUID.Zero;
151
152 public LLSDMapLayer()
153 {
154
155 }
156 }
157
158 [LLSDType("ARRAY")]
159 public class LLSDArray
160 {
161 public ArrayList Array = new ArrayList();
162
163 public LLSDArray()
164 {
165
166 }
167 }
168
169 [LLSDType("MAP")]
170 public class LLSDMapRequest
171 {
172 public int Flags = 0;
173
174 public LLSDMapRequest()
175 {
176
177 }
178 }
179
180 [LLSDType("MAP")]
181 public class LLSDUploadReply
182 {
183 public string new_asset = "";
184 public LLUUID new_inventory_item = LLUUID.Zero;
185 public string state = "";
186
187 public LLSDUploadReply()
188 {
189
190 }
191 }
192
193 [LLSDType("MAP")]
194 public class LLSDCapEvent
195 {
196 public int id = 0;
197 public LLSDArray events = new LLSDArray();
198
199 public LLSDCapEvent()
200 {
201
202 }
203 }
204
205 [LLSDType("MAP")]
206 public class LLSDEmpty
207 {
208 public LLSDEmpty()
209 {
210
211 }
212 }
213
214 [LLSDType("MAP")]
215 public class LLSDTest
216 {
217 public int Test1 = 20;
218 public int Test2 = 10;
219
220 public LLSDTest()
221 {
222
223 }
224 }
225
226
227 [AttributeUsage(AttributeTargets.Class)]
228 public class LLSDType : Attribute
229 {
230 private string myType;
231
232 public LLSDType(string type)
233 {
234 myType = type;
235
236 }
237
238 public string ObjectType
239 {
240 get
241 {
242 return myType;
243 }
244 }
245 }
246}
diff --git a/OpenSim/Framework/General/Logger.cs b/OpenSim/Framework/General/Logger.cs
new file mode 100644
index 0000000..e7eaa03
--- /dev/null
+++ b/OpenSim/Framework/General/Logger.cs
@@ -0,0 +1,85 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace OpenSim.Framework
6{
7 public class Logger
8 {
9 public static Logger Instance = new Logger( false );
10
11 public delegate void LoggerMethodDelegate();
12 private delegate bool LoggerDelegate( LoggerMethodDelegate whatToDo );
13
14
15 private LoggerDelegate m_delegate;
16
17 public Logger( bool log )
18 {
19 if( log )
20 {
21 m_delegate = CatchAndLog;
22 }
23 else
24 {
25 m_delegate = DontCatch;
26 }
27 }
28
29 public bool Wrap( LoggerMethodDelegate whatToDo )
30 {
31 return m_delegate( whatToDo );
32 }
33
34
35 private bool CatchAndLog(LoggerMethodDelegate whatToDo)
36 {
37 try
38 {
39 whatToDo();
40 return true;
41 }
42 catch(Exception e)
43 {
44 System.Console.WriteLine( "Exception logged!!! Woah!!!!" );
45 return false;
46 }
47 }
48
49 private bool DontCatch(LoggerMethodDelegate whatToDo)
50 {
51 whatToDo();
52 return true;
53 }
54
55 public class LoggerExample
56 {
57 public void TryWrap()
58 {
59 // This will log and ignore
60 Logger log = new Logger(true);
61
62 log.Wrap(delegate()
63 {
64 Int16.Parse("waa!");
65 });
66
67 // This will throw;
68 try
69 {
70
71 log = new Logger(false);
72
73 log.Wrap(delegate()
74 {
75 Int16.Parse("waa!");
76 });
77 }
78 catch
79 {
80 System.Console.WriteLine("Example barfed!");
81 }
82 }
83 }
84 }
85}
diff --git a/OpenSim/Framework/General/LoginService.cs b/OpenSim/Framework/General/LoginService.cs
new file mode 100644
index 0000000..f14754f
--- /dev/null
+++ b/OpenSim/Framework/General/LoginService.cs
@@ -0,0 +1,41 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Text;
32using Nwc.XmlRpc;
33using libsecondlife;
34
35namespace OpenSim.Framework.Grid
36{
37 public abstract class LoginService
38 {
39
40 }
41} \ No newline at end of file
diff --git a/OpenSim/Framework/General/OpenSim.Framework.csproj b/OpenSim/Framework/General/OpenSim.Framework.csproj
new file mode 100644
index 0000000..e164d5a
--- /dev/null
+++ b/OpenSim/Framework/General/OpenSim.Framework.csproj
@@ -0,0 +1,213 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{8ACA2445-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Xml" >
74 <HintPath>System.Xml.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="XMLRPC.dll" >
78 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 </ItemGroup>
82 <ItemGroup>
83 <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj">
84 <Name>OpenSim.Framework.Console</Name>
85 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
86 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
87 <Private>False</Private>
88 </ProjectReference>
89 </ItemGroup>
90 <ItemGroup>
91 <Compile Include="AgentInventory.cs">
92 <SubType>Code</SubType>
93 </Compile>
94 <Compile Include="AuthenticateSessionBase.cs">
95 <SubType>Code</SubType>
96 </Compile>
97 <Compile Include="BlockingQueue.cs">
98 <SubType>Code</SubType>
99 </Compile>
100 <Compile Include="IRegionCommsListener.cs">
101 <SubType>Code</SubType>
102 </Compile>
103 <Compile Include="LLSDHelpers.cs">
104 <SubType>Code</SubType>
105 </Compile>
106 <Compile Include="Logger.cs">
107 <SubType>Code</SubType>
108 </Compile>
109 <Compile Include="LoginService.cs">
110 <SubType>Code</SubType>
111 </Compile>
112 <Compile Include="RegionCommsListener.cs">
113 <SubType>Code</SubType>
114 </Compile>
115 <Compile Include="Remoting.cs">
116 <SubType>Code</SubType>
117 </Compile>
118 <Compile Include="SimProfile.cs">
119 <SubType>Code</SubType>
120 </Compile>
121 <Compile Include="UserProfile.cs">
122 <SubType>Code</SubType>
123 </Compile>
124 <Compile Include="Util.cs">
125 <SubType>Code</SubType>
126 </Compile>
127 <Compile Include="Interfaces\AuthenticateResponse.cs">
128 <SubType>Code</SubType>
129 </Compile>
130 <Compile Include="Interfaces\IAssetServer.cs">
131 <SubType>Code</SubType>
132 </Compile>
133 <Compile Include="Interfaces\IClientAPI.cs">
134 <SubType>Code</SubType>
135 </Compile>
136 <Compile Include="Interfaces\ILocalStorage.cs">
137 <SubType>Code</SubType>
138 </Compile>
139 <Compile Include="Interfaces\IUserServer.cs">
140 <SubType>Code</SubType>
141 </Compile>
142 <Compile Include="Interfaces\IWorld.cs">
143 <SubType>Code</SubType>
144 </Compile>
145 <Compile Include="Interfaces\Config\IGenericConfig.cs">
146 <SubType>Code</SubType>
147 </Compile>
148 <Compile Include="Interfaces\Config\IGridConfig.cs">
149 <SubType>Code</SubType>
150 </Compile>
151 <Compile Include="Interfaces\Config\IUserConfig.cs">
152 <SubType>Code</SubType>
153 </Compile>
154 <Compile Include="Interfaces\Scripting\IScriptAPI.cs">
155 <SubType>Code</SubType>
156 </Compile>
157 <Compile Include="Interfaces\Scripting\IScriptEngine.cs">
158 <SubType>Code</SubType>
159 </Compile>
160 <Compile Include="Properties\AssemblyInfo.cs">
161 <SubType>Code</SubType>
162 </Compile>
163 <Compile Include="Types\AgentCiruitData.cs">
164 <SubType>Code</SubType>
165 </Compile>
166 <Compile Include="Types\AgentWearable.cs">
167 <SubType>Code</SubType>
168 </Compile>
169 <Compile Include="Types\AssetBase.cs">
170 <SubType>Code</SubType>
171 </Compile>
172 <Compile Include="Types\AssetLandmark.cs">
173 <SubType>Code</SubType>
174 </Compile>
175 <Compile Include="Types\AssetStorage.cs">
176 <SubType>Code</SubType>
177 </Compile>
178 <Compile Include="Types\EstateSettings.cs">
179 <SubType>Code</SubType>
180 </Compile>
181 <Compile Include="Types\Login.cs">
182 <SubType>Code</SubType>
183 </Compile>
184 <Compile Include="Types\MapBlockData.cs">
185 <SubType>Code</SubType>
186 </Compile>
187 <Compile Include="Types\NeighbourInfo.cs">
188 <SubType>Code</SubType>
189 </Compile>
190 <Compile Include="Types\NetworkServersInfo.cs">
191 <SubType>Code</SubType>
192 </Compile>
193 <Compile Include="Types\ParcelData.cs">
194 <SubType>Code</SubType>
195 </Compile>
196 <Compile Include="Types\PrimData.cs">
197 <SubType>Code</SubType>
198 </Compile>
199 <Compile Include="Types\RegionHandle.cs">
200 <SubType>Code</SubType>
201 </Compile>
202 <Compile Include="Types\RegionInfo.cs">
203 <SubType>Code</SubType>
204 </Compile>
205 </ItemGroup>
206 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
207 <PropertyGroup>
208 <PreBuildEvent>
209 </PreBuildEvent>
210 <PostBuildEvent>
211 </PostBuildEvent>
212 </PropertyGroup>
213</Project>
diff --git a/OpenSim/Framework/General/OpenSim.Framework.csproj.user b/OpenSim/Framework/General/OpenSim.Framework.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/General/OpenSim.Framework.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/General/Properties/AssemblyInfo.cs b/OpenSim/Framework/General/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..86f5cdb
--- /dev/null
+++ b/OpenSim/Framework/General/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenSim.FrameWork")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenSim.FrameWork")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("a08e20c7-f191-4137-b1f0-9291408fa521")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32[assembly: AssemblyVersion("1.0.0.0")]
33[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/General/RegionCommsListener.cs b/OpenSim/Framework/General/RegionCommsListener.cs
new file mode 100644
index 0000000..bba928f
--- /dev/null
+++ b/OpenSim/Framework/General/RegionCommsListener.cs
@@ -0,0 +1,69 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Interfaces;
32using OpenSim.Framework.Types;
33
34namespace OpenSim.Framework
35{
36 public class RegionCommsListener :IRegionCommsListener
37 {
38 public event ExpectUserDelegate OnExpectUser;
39 public event GenericCall2 OnExpectChildAgent;
40 public event AgentCrossing OnAvatarCrossingIntoRegion;
41 public event UpdateNeighbours OnNeighboursUpdate;
42
43 /// <summary>
44 ///
45 /// </summary>
46 /// <param name="agent"></param>
47 /// <returns></returns>
48 public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData agent)
49 {
50 if(OnExpectUser != null)
51 {
52 OnExpectUser(regionHandle, agent);
53 return true;
54 }
55
56 return false;
57 }
58
59 public virtual bool TriggerExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position)
60 {
61 if (OnAvatarCrossingIntoRegion != null)
62 {
63 OnAvatarCrossingIntoRegion(regionHandle, agentID, position);
64 return true;
65 }
66 return false;
67 }
68 }
69}
diff --git a/OpenSim/Framework/General/Remoting.cs b/OpenSim/Framework/General/Remoting.cs
new file mode 100644
index 0000000..e6fdf70
--- /dev/null
+++ b/OpenSim/Framework/General/Remoting.cs
@@ -0,0 +1,136 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Security.Cryptography;
32
33namespace OpenSim.Framework
34{
35 /// <summary>
36 /// NEEDS AUDIT.
37 /// </summary>
38 /// <remarks>
39 /// Suggested implementation
40 /// <para>Store two digests for each foreign host. A local copy of the local hash using the local challenge (when issued), and a local copy of the remote hash using the remote challenge.</para>
41 /// <para>When sending data to the foreign host - run 'Sign' on the data and affix the returned byte[] to the message.</para>
42 /// <para>When recieving data from the foreign host - run 'Authenticate' against the data and the attached byte[].</para>
43 /// <para>Both hosts should be performing these operations for this to be effective.</para>
44 /// </remarks>
45 class RemoteDigest
46 {
47 private byte[] currentHash;
48 private byte[] secret;
49
50 private SHA512Managed SHA512;
51
52 /// <summary>
53 /// Initialises a new RemoteDigest authentication mechanism
54 /// </summary>
55 /// <remarks>Needs an audit by a cryptographic professional - was not "roll your own"'d by choice but rather a serious lack of decent authentication mechanisms in .NET remoting</remarks>
56 /// <param name="sharedSecret">The shared secret between systems (for inter-sim, this is provided in encrypted form during connection, for grid this is input manually in setup)</param>
57 /// <param name="salt">Binary salt - some common value - to be decided what</param>
58 /// <param name="challenge">The challenge key provided by the third party</param>
59 public RemoteDigest(string sharedSecret, byte[] salt, string challenge)
60 {
61 SHA512 = new SHA512Managed();
62 Rfc2898DeriveBytes RFC2898 = new Rfc2898DeriveBytes(sharedSecret,salt);
63 secret = RFC2898.GetBytes(512);
64 ASCIIEncoding ASCII = new ASCIIEncoding();
65
66 currentHash = SHA512.ComputeHash(AppendArrays(secret, ASCII.GetBytes(challenge)));
67 }
68
69 /// <summary>
70 /// Authenticates a piece of incoming data against the local digest. Upon successful authentication, digest string is incremented.
71 /// </summary>
72 /// <param name="data">The incoming data</param>
73 /// <param name="digest">The remote digest</param>
74 /// <returns></returns>
75 public bool Authenticate(byte[] data, byte[] digest)
76 {
77 byte[] newHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
78 if (digest == newHash)
79 {
80 currentHash = newHash;
81 return true;
82 }
83 else
84 {
85 throw new Exception("Hash comparison failed. Key resync required.");
86 }
87 }
88
89 /// <summary>
90 /// Signs a new bit of data with the current hash. Returns a byte array which should be affixed to the message.
91 /// Signing a piece of data will automatically increment the hash - if you sign data and do not send it, the
92 /// hashes will get out of sync and throw an exception when validation is attempted.
93 /// </summary>
94 /// <param name="data">The outgoing data</param>
95 /// <returns>The local digest</returns>
96 public byte[] Sign(byte[] data)
97 {
98 currentHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
99 return currentHash;
100 }
101
102 /// <summary>
103 /// Generates a new challenge string to be issued to a foreign host. Challenges are 1024-bit (effective strength of less than 512-bits) messages generated using the Crytographic Random Number Generator.
104 /// </summary>
105 /// <returns>A 128-character hexadecimal string containing the challenge.</returns>
106 public static string GenerateChallenge()
107 {
108 RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider();
109 byte[] bytes = new byte[64];
110 RNG.GetBytes(bytes);
111
112 StringBuilder sb = new StringBuilder(bytes.Length * 2);
113 foreach (byte b in bytes)
114 {
115 sb.AppendFormat("{0:x2}", b);
116 }
117 return sb.ToString();
118 }
119
120 /// <summary>
121 /// Helper function, merges two byte arrays
122 /// </summary>
123 /// <remarks>Sourced from MSDN Forum</remarks>
124 /// <param name="a">A</param>
125 /// <param name="b">B</param>
126 /// <returns>C</returns>
127 private byte[] AppendArrays(byte[] a, byte[] b)
128 {
129 byte[] c = new byte[a.Length + b.Length];
130 Buffer.BlockCopy(a, 0, c, 0, a.Length);
131 Buffer.BlockCopy(b, 0, c, a.Length, b.Length);
132 return c;
133 }
134
135 }
136}
diff --git a/OpenSim/Framework/General/SimProfile.cs b/OpenSim/Framework/General/SimProfile.cs
new file mode 100644
index 0000000..cfa5e50
--- /dev/null
+++ b/OpenSim/Framework/General/SimProfile.cs
@@ -0,0 +1,122 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Collections;
31using System.Xml;
32using System.Text;
33using libsecondlife;
34using Nwc.XmlRpc;
35
36namespace OpenSim.Framework.Sims
37{
38 public class SimProfile
39 {
40 public LLUUID UUID;
41 public ulong regionhandle;
42 public string regionname;
43 public string sim_ip;
44 public uint sim_port;
45 public string caps_url;
46 public uint RegionLocX;
47 public uint RegionLocY;
48 public string sendkey;
49 public string recvkey;
50 public bool online;
51
52 public SimProfile LoadFromGrid(ulong region_handle, string GridURL, string SendKey, string RecvKey)
53 {
54 try
55 {
56 Hashtable GridReqParams = new Hashtable();
57 GridReqParams["region_handle"] = region_handle.ToString();
58 GridReqParams["authkey"] = SendKey;
59 ArrayList SendParams = new ArrayList();
60 SendParams.Add(GridReqParams);
61 XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams);
62
63 XmlRpcResponse GridResp = GridReq.Send(GridURL, 3000);
64
65 Hashtable RespData = (Hashtable)GridResp.Value;
66 this.UUID = new LLUUID((string)RespData["UUID"]);
67 this.regionhandle = Helpers.UIntsToLong(((uint)Convert.ToUInt32(RespData["region_locx"]) * 256), ((uint)Convert.ToUInt32(RespData["region_locy"]) * 256));
68 this.regionname = (string)RespData["regionname"];
69 this.sim_ip = (string)RespData["sim_ip"];
70 this.sim_port = (uint)Convert.ToUInt16(RespData["sim_port"]);
71 this.caps_url = "http://" + ((string)RespData["sim_ip"]) + ":" + (string)RespData["sim_port"] + "/";
72 this.RegionLocX = (uint)Convert.ToUInt32(RespData["region_locx"]);
73 this.RegionLocY = (uint)Convert.ToUInt32(RespData["region_locy"]);
74 this.sendkey = SendKey;
75 this.recvkey = RecvKey;
76 }
77 catch (Exception e)
78 {
79 System.Console.WriteLine(e.ToString());
80 }
81 return this;
82 }
83
84 public SimProfile LoadFromGrid(LLUUID UUID, string GridURL, string SendKey, string RecvKey)
85 {
86 try
87 {
88 Hashtable GridReqParams = new Hashtable();
89 GridReqParams["UUID"] = UUID.ToString();
90 GridReqParams["authkey"] = SendKey;
91 ArrayList SendParams = new ArrayList();
92 SendParams.Add(GridReqParams);
93 XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams);
94
95 XmlRpcResponse GridResp = GridReq.Send(GridURL, 3000);
96
97 Hashtable RespData = (Hashtable)GridResp.Value;
98 this.UUID = new LLUUID((string)RespData["UUID"]);
99 this.regionhandle = Helpers.UIntsToLong(((uint)Convert.ToUInt32(RespData["region_locx"]) * 256), ((uint)Convert.ToUInt32(RespData["region_locy"]) * 256));
100 this.regionname = (string)RespData["regionname"];
101 this.sim_ip = (string)RespData["sim_ip"];
102 this.sim_port = (uint)Convert.ToUInt16(RespData["sim_port"]);
103 this.caps_url = "http://" + ((string)RespData["sim_ip"]) + ":" + (string)RespData["sim_port"] + "/";
104 this.RegionLocX = (uint)Convert.ToUInt32(RespData["region_locx"]);
105 this.RegionLocY = (uint)Convert.ToUInt32(RespData["region_locy"]);
106 this.sendkey = SendKey;
107 this.recvkey = RecvKey;
108 }
109 catch (Exception e)
110 {
111 System.Console.WriteLine(e.ToString());
112 }
113 return this;
114 }
115
116
117 public SimProfile()
118 {
119 }
120 }
121
122}
diff --git a/OpenSim/Framework/General/Types/AgentCiruitData.cs b/OpenSim/Framework/General/Types/AgentCiruitData.cs
new file mode 100644
index 0000000..a650343
--- /dev/null
+++ b/OpenSim/Framework/General/Types/AgentCiruitData.cs
@@ -0,0 +1,50 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35 public class AgentCircuitData
36 {
37 public AgentCircuitData() { }
38 public LLUUID AgentID;
39 public LLUUID SessionID;
40 public LLUUID SecureSessionID;
41 public LLVector3 startpos;
42 public string firstname;
43 public string lastname;
44 public uint circuitcode;
45 public bool child;
46 public LLUUID InventoryFolder;
47 public LLUUID BaseFolder;
48 public string CapsPath = "";
49 }
50}
diff --git a/OpenSim/Framework/General/Types/AgentWearable.cs b/OpenSim/Framework/General/Types/AgentWearable.cs
new file mode 100644
index 0000000..4c93da7
--- /dev/null
+++ b/OpenSim/Framework/General/Types/AgentWearable.cs
@@ -0,0 +1,60 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35 public class AvatarWearable
36 {
37 public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000");
38 public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000");
39
40 public AvatarWearable()
41 {
42
43 }
44
45 public static AvatarWearable[] DefaultWearables
46 {
47 get
48 {
49 AvatarWearable[] defaultWearables = new AvatarWearable[13]; //should be 13 of these
50 for (int i = 0; i < 13; i++)
51 {
52 defaultWearables[i] = new AvatarWearable();
53 }
54 defaultWearables[0].AssetID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
55 defaultWearables[0].ItemID = LLUUID.Random();
56 return defaultWearables;
57 }
58 }
59 }
60}
diff --git a/OpenSim/Framework/General/Types/AssetBase.cs b/OpenSim/Framework/General/Types/AssetBase.cs
new file mode 100644
index 0000000..86586a6
--- /dev/null
+++ b/OpenSim/Framework/General/Types/AssetBase.cs
@@ -0,0 +1,49 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35 public class AssetBase
36 {
37 public byte[] Data;
38 public LLUUID FullID;
39 public sbyte Type;
40 public sbyte InvType;
41 public string Name;
42 public string Description;
43
44 public AssetBase()
45 {
46
47 }
48 }
49}
diff --git a/OpenSim/Framework/General/Types/AssetLandmark.cs b/OpenSim/Framework/General/Types/AssetLandmark.cs
new file mode 100644
index 0000000..8a10b70
--- /dev/null
+++ b/OpenSim/Framework/General/Types/AssetLandmark.cs
@@ -0,0 +1,61 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35 public class AssetLandmark : AssetBase
36 {
37 public int Version;
38 public LLVector3 Position;
39 public LLUUID RegionID;
40
41 public AssetLandmark(AssetBase a)
42 {
43 this.Data = a.Data;
44 this.FullID = a.FullID;
45 this.Type = a.Type;
46 this.InvType = a.InvType;
47 this.Name = a.Name;
48 this.Description = a.Description;
49 InternData();
50 }
51
52 private void InternData()
53 {
54 string temp = System.Text.Encoding.UTF8.GetString(Data).Trim();
55 string[] parts = temp.Split('\n');
56 int.TryParse(parts[0].Substring(17, 1), out Version);
57 LLUUID.TryParse(parts[1].Substring(10, 36), out RegionID);
58 LLVector3.TryParse(parts[2].Substring(11, parts[2].Length - 11), out Position);
59 }
60 }
61}
diff --git a/OpenSim/Framework/General/Types/AssetStorage.cs b/OpenSim/Framework/General/Types/AssetStorage.cs
new file mode 100644
index 0000000..8cac23a
--- /dev/null
+++ b/OpenSim/Framework/General/Types/AssetStorage.cs
@@ -0,0 +1,50 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35 public class AssetStorage
36 {
37
38 public AssetStorage() {
39 }
40
41 public AssetStorage(LLUUID assetUUID) {
42 UUID=assetUUID;
43 }
44
45 public byte[] Data;
46 public sbyte Type;
47 public string Name;
48 public LLUUID UUID;
49 }
50}
diff --git a/OpenSim/Framework/General/Types/EstateSettings.cs b/OpenSim/Framework/General/Types/EstateSettings.cs
new file mode 100644
index 0000000..778c893
--- /dev/null
+++ b/OpenSim/Framework/General/Types/EstateSettings.cs
@@ -0,0 +1,97 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.Text;
32
33using libsecondlife;
34
35namespace OpenSim.Framework.Types
36{
37 public class EstateSettings
38 {
39 //Settings to this island
40 public float billableFactor = (float)0.0;
41 public uint estateID = 0;
42 public uint parentEstateID = 0;
43
44 public byte maxAgents = 40;
45 public float objectBonusFactor = (float)1.0;
46
47 public int redirectGridX = 0; //??
48 public int redirectGridY = 0; //??
49 public libsecondlife.Simulator.RegionFlags regionFlags = libsecondlife.Simulator.RegionFlags.None; //Booleam values of various region settings
50 public libsecondlife.Simulator.SimAccess simAccess = libsecondlife.Simulator.SimAccess.Mature; //Is sim PG, Mature, etc? Mature by default.
51 public float sunHour = 0;
52
53 public float terrainRaiseLimit = 0;
54 public float terrainLowerLimit = 0;
55
56 public bool useFixedSun = false;
57 public int pricePerMeter = 1;
58
59 public ushort regionWaterHeight = 20;
60 public bool regionAllowTerraform = true;
61
62 // Region Information
63 // Low resolution 'base' textures. No longer used.
64 public LLUUID terrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); // Default
65 public LLUUID terrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); // Default
66 public LLUUID terrainBase2 = new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f"); // Default
67 public LLUUID terrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); // Default
68
69 // Higher resolution terrain textures
70 public LLUUID terrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000");
71 public LLUUID terrainDetail1 = new LLUUID("00000000-0000-0000-0000-000000000000");
72 public LLUUID terrainDetail2 = new LLUUID("00000000-0000-0000-0000-000000000000");
73 public LLUUID terrainDetail3 = new LLUUID("00000000-0000-0000-0000-000000000000");
74
75 // First quad - each point is bilinearly interpolated at each meter of terrain
76 public float terrainStartHeight0 = 10.0f;
77 public float terrainStartHeight1 = 10.0f;
78 public float terrainStartHeight2 = 10.0f;
79 public float terrainStartHeight3 = 10.0f;
80
81 // Second quad - also bilinearly interpolated.
82 // Terrain texturing is done that:
83 // 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y]
84 public float terrainHeightRange0 = 60.0f; //00
85 public float terrainHeightRange1 = 60.0f; //01
86 public float terrainHeightRange2 = 60.0f; //10
87 public float terrainHeightRange3 = 60.0f; //11
88
89 // Terrain Default (Must be in F32 Format!)
90 public string terrainFile = "default.r32";
91 public double terrainMultiplier = 60.0;
92 public float waterHeight = (float)20.0;
93
94 public LLUUID terrainImageID = LLUUID.Zero; // the assetID that is the current Map image for this region
95
96 }
97}
diff --git a/OpenSim/Framework/General/Types/Login.cs b/OpenSim/Framework/General/Types/Login.cs
new file mode 100644
index 0000000..3180a16
--- /dev/null
+++ b/OpenSim/Framework/General/Types/Login.cs
@@ -0,0 +1,52 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35 public class Login
36 {
37 public string First = "Test";
38 public string Last = "User";
39 public LLUUID Agent;
40 public LLUUID Session;
41 public LLUUID SecureSession = LLUUID.Zero;
42 public LLUUID InventoryFolder;
43 public LLUUID BaseFolder;
44 public uint CircuitCode;
45 public string CapsPath ="";
46
47 public Login()
48 {
49
50 }
51 }
52}
diff --git a/OpenSim/Framework/General/Types/MapBlockData.cs b/OpenSim/Framework/General/Types/MapBlockData.cs
new file mode 100644
index 0000000..2e6f56e
--- /dev/null
+++ b/OpenSim/Framework/General/Types/MapBlockData.cs
@@ -0,0 +1,25 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using libsecondlife;
5
6namespace OpenSim.Framework.Types
7{
8 public class MapBlockData
9 {
10 public uint Flags;
11 public ushort X;
12 public ushort Y;
13 public byte Agents;
14 public byte Access;
15 public byte WaterHeight;
16 public LLUUID MapImageId;
17 public String Name;
18 public uint RegionFlags;
19
20 public MapBlockData()
21 {
22
23 }
24 }
25}
diff --git a/OpenSim/Framework/General/Types/NeighbourInfo.cs b/OpenSim/Framework/General/Types/NeighbourInfo.cs
new file mode 100644
index 0000000..310fd1c
--- /dev/null
+++ b/OpenSim/Framework/General/Types/NeighbourInfo.cs
@@ -0,0 +1,50 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Interfaces;
32using OpenSim.Framework.Utilities;
33using OpenSim.Framework.Console;
34using libsecondlife;
35
36namespace OpenSim.Framework.Types
37{
38 public class NeighbourInfo
39 {
40 public NeighbourInfo()
41 {
42 }
43
44 public ulong regionhandle;
45 public uint RegionLocX;
46 public uint RegionLocY;
47 public string sim_ip;
48 public uint sim_port;
49 }
50}
diff --git a/OpenSim/Framework/General/Types/NetworkServersInfo.cs b/OpenSim/Framework/General/Types/NetworkServersInfo.cs
new file mode 100644
index 0000000..73d7811
--- /dev/null
+++ b/OpenSim/Framework/General/Types/NetworkServersInfo.cs
@@ -0,0 +1,181 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Interfaces;
32
33namespace OpenSim.Framework.Types
34{
35 public class NetworkServersInfo
36 {
37 public string AssetURL = "http://127.0.0.1:8003/";
38 public string AssetSendKey = "";
39
40 public string GridURL = "";
41 public string GridSendKey = "";
42 public string GridRecvKey = "";
43 public string UserURL = "";
44 public string UserSendKey = "";
45 public string UserRecvKey = "";
46 public bool isSandbox;
47
48 public uint DefaultHomeLocX = 0;
49 public uint DefaultHomeLocY = 0;
50
51 public int HttpListenerPort = 9000;
52 public int RemotingListenerPort = 8895;
53
54 public void InitConfig(bool sandboxMode, IGenericConfig configData)
55 {
56 this.isSandbox = sandboxMode;
57
58 try
59 {
60 string attri = "";
61
62 attri = "";
63 attri = configData.GetAttribute("HttpListenerPort");
64 if (attri == "")
65 {
66 string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Http Listener Port", "9000");
67 configData.SetAttribute("HttpListenerPort", location);
68 this.HttpListenerPort = Convert.ToInt32(location);
69 }
70 else
71 {
72 this.HttpListenerPort = Convert.ToInt32(attri);
73 }
74
75 attri = "";
76 attri = configData.GetAttribute("RemotingListenerPort");
77 if (attri == "")
78 {
79 string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Remoting Listener Port", "8895");
80 configData.SetAttribute("RemotingListenerPort", location);
81 this.RemotingListenerPort = Convert.ToInt32(location);
82 }
83 else
84 {
85 this.RemotingListenerPort = Convert.ToInt32(attri);
86 }
87
88 if (sandboxMode)
89 {
90 // default home location X
91 attri = "";
92 attri = configData.GetAttribute("DefaultLocationX");
93 if (attri == "")
94 {
95 string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default Home Location X", "1000");
96 configData.SetAttribute("DefaultLocationX", location);
97 this.DefaultHomeLocX = (uint)Convert.ToUInt32(location);
98 }
99 else
100 {
101 this.DefaultHomeLocX = (uint)Convert.ToUInt32(attri);
102 }
103
104 // default home location Y
105 attri = "";
106 attri = configData.GetAttribute("DefaultLocationY");
107 if (attri == "")
108 {
109 string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default Home Location Y", "1000");
110 configData.SetAttribute("DefaultLocationY", location);
111 this.DefaultHomeLocY = (uint)Convert.ToUInt32(location);
112 }
113 else
114 {
115 this.DefaultHomeLocY = (uint)Convert.ToUInt32(attri);
116 }
117 }
118 if (!isSandbox)
119 {
120 //Grid Server
121 attri = "";
122 attri = configData.GetAttribute("GridServerURL");
123 if (attri == "")
124 {
125 this.GridURL = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/");
126 configData.SetAttribute("GridServerURL", this.GridURL);
127 }
128 else
129 {
130 this.GridURL = attri;
131 }
132
133 //Grid Send Key
134 attri = "";
135 attri = configData.GetAttribute("GridSendKey");
136 if (attri == "")
137 {
138 this.GridSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to grid server", "null");
139 configData.SetAttribute("GridSendKey", this.GridSendKey);
140 }
141 else
142 {
143 this.GridSendKey = attri;
144 }
145
146 //Grid Receive Key
147 attri = "";
148 attri = configData.GetAttribute("GridRecvKey");
149 if (attri == "")
150 {
151 this.GridRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from grid server", "null");
152 configData.SetAttribute("GridRecvKey", this.GridRecvKey);
153 }
154 else
155 {
156 this.GridRecvKey = attri;
157 }
158
159 attri = "";
160 attri = configData.GetAttribute("AssetServerURL");
161 if (attri == "")
162 {
163 this.AssetURL = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
164 configData.SetAttribute("AssetServerURL", this.GridURL);
165 }
166 else
167 {
168 this.AssetURL = attri;
169 }
170
171 }
172 configData.Commit();
173 }
174 catch (Exception e)
175 {
176 OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
177 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
178 }
179 }
180 }
181}
diff --git a/OpenSim/Framework/General/Types/ParcelData.cs b/OpenSim/Framework/General/Types/ParcelData.cs
new file mode 100644
index 0000000..40f128a
--- /dev/null
+++ b/OpenSim/Framework/General/Types/ParcelData.cs
@@ -0,0 +1,115 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35
36 public class ParcelData
37 {
38 public byte[] parcelBitmapByteArray = new byte[512];
39 public string parcelName = "";
40 public string parcelDesc = "";
41 public LLUUID ownerID = new LLUUID();
42 public bool isGroupOwned = false;
43 public LLVector3 AABBMin = new LLVector3();
44 public LLVector3 AABBMax = new LLVector3();
45 public int area = 0;
46 public uint auctionID = 0; //Unemplemented. If set to 0, not being auctioned
47 public LLUUID authBuyerID = new LLUUID(); //Unemplemented. Authorized Buyer's UUID
48 public libsecondlife.Parcel.ParcelCategory category = new libsecondlife.Parcel.ParcelCategory(); //Unemplemented. Parcel's chosen category
49 public int claimDate = 0; //Unemplemented
50 public int claimPrice = 0; //Unemplemented
51 public LLUUID groupID = new LLUUID(); //Unemplemented
52 public int groupPrims = 0; //Unemplemented
53 public int salePrice = 0; //Unemeplemented. Parcels price.
54 public libsecondlife.Parcel.ParcelStatus parcelStatus = libsecondlife.Parcel.ParcelStatus.None;
55 public libsecondlife.Parcel.ParcelFlags parcelFlags = libsecondlife.Parcel.ParcelFlags.None;
56 public byte landingType = 0;
57 public byte mediaAutoScale = 0;
58 public LLUUID mediaID = LLUUID.Zero;
59 public int localID = 0;
60 public LLUUID globalID = new LLUUID();
61
62 public string mediaURL = "";
63 public string musicURL = "";
64 public float passHours = 0;
65 public int passPrice = 0;
66 public LLUUID snapshotID = LLUUID.Zero;
67 public LLVector3 userLocation = new LLVector3();
68 public LLVector3 userLookAt = new LLVector3();
69
70 public ParcelData()
71 {
72 globalID = LLUUID.Random();
73 }
74
75 public ParcelData Copy()
76 {
77 ParcelData parcelData = new ParcelData();
78
79 parcelData.AABBMax = this.AABBMax;
80 parcelData.AABBMin = this.AABBMin;
81 parcelData.area = this.area;
82 parcelData.auctionID = this.auctionID;
83 parcelData.authBuyerID = this.authBuyerID;
84 parcelData.category = this.category;
85 parcelData.claimDate = this.claimDate;
86 parcelData.claimPrice = this.claimPrice;
87 parcelData.globalID = this.globalID;
88 parcelData.groupID = this.groupID;
89 parcelData.groupPrims = this.groupPrims;
90 parcelData.isGroupOwned = this.isGroupOwned;
91 parcelData.localID = this.localID;
92 parcelData.landingType = this.landingType;
93 parcelData.mediaAutoScale = this.mediaAutoScale;
94 parcelData.mediaID = this.mediaID;
95 parcelData.mediaURL = this.mediaURL;
96 parcelData.musicURL = this.musicURL;
97 parcelData.ownerID = this.ownerID;
98 parcelData.parcelBitmapByteArray = (byte[])this.parcelBitmapByteArray.Clone();
99 parcelData.parcelDesc = this.parcelDesc;
100 parcelData.parcelFlags = this.parcelFlags;
101 parcelData.parcelName = this.parcelName;
102 parcelData.parcelStatus = this.parcelStatus;
103 parcelData.passHours = this.passHours;
104 parcelData.passPrice = this.passPrice;
105 parcelData.salePrice = this.salePrice;
106 parcelData.snapshotID = this.snapshotID;
107 parcelData.userLocation = this.userLocation;
108 parcelData.userLookAt = this.userLookAt;
109
110 return parcelData;
111
112 }
113 }
114
115}
diff --git a/OpenSim/Framework/General/Types/PrimData.cs b/OpenSim/Framework/General/Types/PrimData.cs
new file mode 100644
index 0000000..f84ae3e
--- /dev/null
+++ b/OpenSim/Framework/General/Types/PrimData.cs
@@ -0,0 +1,230 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Framework.Types
34{
35 public class PrimData
36 {
37 private const uint FULL_MASK_PERMISSIONS = 2147483647;
38
39 public LLUUID OwnerID;
40 public byte PCode;
41 public ushort PathBegin;
42 public ushort PathEnd;
43 public byte PathScaleX;
44 public byte PathScaleY;
45 public byte PathShearX;
46 public byte PathShearY;
47 public sbyte PathSkew;
48 public ushort ProfileBegin;
49 public ushort ProfileEnd;
50 public LLVector3 Scale;
51 public byte PathCurve;
52 public byte ProfileCurve;
53 public uint ParentID = 0;
54 public ushort ProfileHollow;
55 public sbyte PathRadiusOffset;
56 public byte PathRevolutions;
57 public sbyte PathTaperX;
58 public sbyte PathTaperY;
59 public sbyte PathTwist;
60 public sbyte PathTwistBegin;
61 public byte[] TextureEntry; // a LL textureEntry in byte[] format
62
63 public Int32 CreationDate;
64 public uint OwnerMask = FULL_MASK_PERMISSIONS;
65 public uint NextOwnerMask = FULL_MASK_PERMISSIONS;
66 public uint GroupMask = FULL_MASK_PERMISSIONS;
67 public uint EveryoneMask = FULL_MASK_PERMISSIONS;
68 public uint BaseMask = FULL_MASK_PERMISSIONS;
69
70 //following only used during prim storage
71 public LLVector3 Position;
72 public LLQuaternion Rotation = new LLQuaternion(0, 1, 0, 0);
73 public uint LocalID;
74 public LLUUID FullID;
75
76 public PrimData()
77 {
78
79 }
80
81 public PrimData(byte[] data)
82 {
83 int i = 0;
84
85 this.OwnerID = new LLUUID(data, i); i += 16;
86 this.PCode = data[i++];
87 this.PathBegin = (ushort)(data[i++] + (data[i++] << 8));
88 this.PathEnd = (ushort)(data[i++] + (data[i++] << 8));
89 this.PathScaleX = data[i++];
90 this.PathScaleY = data[i++];
91 this.PathShearX = data[i++];
92 this.PathShearY = data[i++];
93 this.PathSkew = (sbyte)data[i++];
94 this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8));
95 this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8));
96 this.Scale = new LLVector3(data, i); i += 12;
97 this.PathCurve = data[i++];
98 this.ProfileCurve = data[i++];
99 this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
100 this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8));
101 this.PathRadiusOffset = (sbyte)data[i++];
102 this.PathRevolutions = data[i++];
103 this.PathTaperX = (sbyte)data[i++];
104 this.PathTaperY = (sbyte)data[i++];
105 this.PathTwist = (sbyte)data[i++];
106 this.PathTwistBegin = (sbyte)data[i++];
107 ushort length = (ushort)(data[i++] + (data[i++] << 8));
108 this.TextureEntry = new byte[length];
109 Array.Copy(data, i, TextureEntry, 0, length); i += length;
110 this.CreationDate = (Int32)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
111 this.OwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
112 this.NextOwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
113 this.GroupMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
114 this.EveryoneMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
115 this.BaseMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
116 this.Position = new LLVector3(data, i); i += 12;
117 this.Rotation = new LLQuaternion(data, i, true); i += 12;
118 this.LocalID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
119 this.FullID = new LLUUID(data, i); i += 16;
120
121 }
122
123 public byte[] ToBytes()
124 {
125 int i = 0;
126 byte[] bytes = new byte[126 + TextureEntry.Length];
127 Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16;
128 bytes[i++] = this.PCode;
129 bytes[i++] = (byte)(this.PathBegin % 256);
130 bytes[i++] = (byte)((this.PathBegin >> 8) % 256);
131 bytes[i++] = (byte)(this.PathEnd % 256);
132 bytes[i++] = (byte)((this.PathEnd >> 8) % 256);
133 bytes[i++] = this.PathScaleX;
134 bytes[i++] = this.PathScaleY;
135 bytes[i++] = this.PathShearX;
136 bytes[i++] = this.PathShearY;
137 bytes[i++] = (byte)this.PathSkew;
138 bytes[i++] = (byte)(this.ProfileBegin % 256);
139 bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256);
140 bytes[i++] = (byte)(this.ProfileEnd % 256);
141 bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256);
142 Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12;
143 bytes[i++] = this.PathCurve;
144 bytes[i++] = this.ProfileCurve;
145 bytes[i++] = (byte)(ParentID % 256);
146 bytes[i++] = (byte)((ParentID >> 8) % 256);
147 bytes[i++] = (byte)((ParentID >> 16) % 256);
148 bytes[i++] = (byte)((ParentID >> 24) % 256);
149 bytes[i++] = (byte)(this.ProfileHollow % 256);
150 bytes[i++] = (byte)((this.ProfileHollow >> 8) % 256);
151 bytes[i++] = ((byte)this.PathRadiusOffset);
152 bytes[i++] = this.PathRevolutions;
153 bytes[i++] = ((byte)this.PathTaperX);
154 bytes[i++] = ((byte)this.PathTaperY);
155 bytes[i++] = ((byte)this.PathTwist);
156 bytes[i++] = ((byte)this.PathTwistBegin);
157 bytes[i++] = (byte)(TextureEntry.Length % 256);
158 bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256);
159 Array.Copy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length;
160 bytes[i++] = (byte)(this.CreationDate % 256);
161 bytes[i++] = (byte)((this.CreationDate >> 8) % 256);
162 bytes[i++] = (byte)((this.CreationDate >> 16) % 256);
163 bytes[i++] = (byte)((this.CreationDate >> 24) % 256);
164 bytes[i++] = (byte)(this.OwnerMask % 256);
165 bytes[i++] = (byte)((this.OwnerMask >> 8) % 256);
166 bytes[i++] = (byte)((this.OwnerMask >> 16) % 256);
167 bytes[i++] = (byte)((this.OwnerMask >> 24) % 256);
168 bytes[i++] = (byte)(this.NextOwnerMask % 256);
169 bytes[i++] = (byte)((this.NextOwnerMask >> 8) % 256);
170 bytes[i++] = (byte)((this.NextOwnerMask >> 16) % 256);
171 bytes[i++] = (byte)((this.NextOwnerMask >> 24) % 256);
172 bytes[i++] = (byte)(this.GroupMask % 256);
173 bytes[i++] = (byte)((this.GroupMask >> 8) % 256);
174 bytes[i++] = (byte)((this.GroupMask >> 16) % 256);
175 bytes[i++] = (byte)((this.GroupMask >> 24) % 256);
176 bytes[i++] = (byte)(this.EveryoneMask % 256);
177 bytes[i++] = (byte)((this.EveryoneMask >> 8) % 256);
178 bytes[i++] = (byte)((this.EveryoneMask >> 16) % 256);
179 bytes[i++] = (byte)((this.EveryoneMask >> 24) % 256);
180 bytes[i++] = (byte)(this.BaseMask % 256);
181 bytes[i++] = (byte)((this.BaseMask >> 8) % 256);
182 bytes[i++] = (byte)((this.BaseMask >> 16) % 256);
183 bytes[i++] = (byte)((this.BaseMask >> 24) % 256);
184 Array.Copy(this.Position.GetBytes(), 0, bytes, i, 12); i += 12;
185 if (this.Rotation == new LLQuaternion(0, 0, 0, 0))
186 {
187 this.Rotation = new LLQuaternion(0, 1, 0, 0);
188 }
189 Array.Copy(this.Rotation.GetBytes(), 0, bytes, i, 12); i += 12;
190 bytes[i++] = (byte)(this.LocalID % 256);
191 bytes[i++] = (byte)((this.LocalID >> 8) % 256);
192 bytes[i++] = (byte)((this.LocalID >> 16) % 256);
193 bytes[i++] = (byte)((this.LocalID >> 24) % 256);
194 Array.Copy(FullID.GetBytes(), 0, bytes, i, 16); i += 16;
195
196 return bytes;
197 }
198
199 public static PrimData DefaultCube()
200 {
201 PrimData primData = new PrimData();
202 primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
203 primData.FullID = LLUUID.Random();
204 primData.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
205 primData.Rotation = new LLQuaternion(0, 0, 0, 1);
206 primData.PCode = 9;
207 primData.ParentID = 0;
208 primData.PathBegin = 0;
209 primData.PathEnd = 0;
210 primData.PathScaleX = 0;
211 primData.PathScaleY = 0;
212 primData.PathShearX = 0;
213 primData.PathShearY = 0;
214 primData.PathSkew = 0;
215 primData.ProfileBegin = 0;
216 primData.ProfileEnd = 0;
217 primData.PathCurve = 16;
218 primData.ProfileCurve = 1;
219 primData.ProfileHollow = 0;
220 primData.PathRadiusOffset = 0;
221 primData.PathRevolutions = 0;
222 primData.PathTaperX = 0;
223 primData.PathTaperY = 0;
224 primData.PathTwist = 0;
225 primData.PathTwistBegin = 0;
226
227 return primData;
228 }
229 }
230}
diff --git a/OpenSim/Framework/General/Types/RegionHandle.cs b/OpenSim/Framework/General/Types/RegionHandle.cs
new file mode 100644
index 0000000..1271d04
--- /dev/null
+++ b/OpenSim/Framework/General/Types/RegionHandle.cs
@@ -0,0 +1,120 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Net;
5
6namespace OpenSim.Framework.Types
7{
8 /// <summary>
9 /// A class for manipulating RegionHandle coordinates
10 /// </summary>
11 class RegionHandle
12 {
13 private UInt64 handle;
14
15 /// <summary>
16 /// Initialises a new grid-aware RegionHandle
17 /// </summary>
18 /// <param name="ip">IP Address of the Grid Server for this region</param>
19 /// <param name="x">Grid X Coordinate</param>
20 /// <param name="y">Grid Y Coordinate</param>
21 public RegionHandle(string ip, short x, short y)
22 {
23 IPAddress addr = IPAddress.Parse(ip);
24
25 long baseHandle = addr.Address;
26
27 // Split the IP address in half
28 short a = (short)((baseHandle << 16) & 0xFFFF);
29 short b = (short)((baseHandle << 0) & 0xFFFF);
30
31 // Raise the bounds a little
32 uint nx = (uint)x;
33 uint ny = (uint)y;
34
35 // Multiply grid coords to get region coords
36 nx *= 256;
37 ny *= 256;
38
39 // Stuff the IP address in too
40 nx = (uint)a << 16;
41 ny = (uint)b << 16;
42
43 handle = ((UInt64)nx << 32) | (uint)ny;
44 }
45
46 /// <summary>
47 /// Initialises a new RegionHandle that is not inter-grid aware
48 /// </summary>
49 /// <param name="x">Grid X Coordinate</param>
50 /// <param name="y">Grid Y Coordinate</param>
51 public RegionHandle(uint x, uint y)
52 {
53 handle = ((x * 256) << 32) | (y * 256);
54 }
55
56 /// <summary>
57 /// Initialises a new RegionHandle from an existing value
58 /// </summary>
59 /// <param name="Region">A U64 RegionHandle</param>
60 public RegionHandle(UInt64 Region)
61 {
62 handle = Region;
63 }
64
65 /// <summary>
66 /// Returns the Grid Masked RegionHandle - For use in Teleport packets and other packets where sending the grid IP address may be handy.
67 /// </summary>
68 /// <remarks>Do not use for SimulatorEnable packets. The client will choke.</remarks>
69 /// <returns>Region Handle including IP Address encoding</returns>
70 public UInt64 getTeleportHandle()
71 {
72 return handle;
73 }
74
75 /// <summary>
76 /// Returns a RegionHandle which may be used for SimulatorEnable packets. Removes the IP address encoding and returns the lower bounds.
77 /// </summary>
78 /// <returns>A U64 RegionHandle for use in SimulatorEnable packets.</returns>
79 public UInt64 getNeighbourHandle()
80 {
81 UInt64 mask = 0x0000FFFF0000FFFF;
82
83 return handle | mask;
84 }
85
86 /// <summary>
87 /// Returns the IP Address of the GridServer from a Grid-Encoded RegionHandle
88 /// </summary>
89 /// <returns>Grid Server IP Address</returns>
90 public IPAddress getGridIP()
91 {
92 uint a = (uint)((handle >> 16) & 0xFFFF);
93 uint b = (uint)((handle >> 48) & 0xFFFF);
94
95 return new IPAddress((long)(a << 16) | (long)b);
96 }
97
98 /// <summary>
99 /// Returns the X Coordinate from a Grid-Encoded RegionHandle
100 /// </summary>
101 /// <returns>X Coordinate</returns>
102 public uint getGridX()
103 {
104 uint x = (uint)((handle >> 32) & 0xFFFF);
105
106 return x;
107 }
108
109 /// <summary>
110 /// Returns the Y Coordinate from a Grid-Encoded RegionHandle
111 /// </summary>
112 /// <returns>Y Coordinate</returns>
113 public uint getGridY()
114 {
115 uint y = (uint)((handle >> 0) & 0xFFFF);
116
117 return y;
118 }
119 }
120}
diff --git a/OpenSim/Framework/General/Types/RegionInfo.cs b/OpenSim/Framework/General/Types/RegionInfo.cs
new file mode 100644
index 0000000..48e6922
--- /dev/null
+++ b/OpenSim/Framework/General/Types/RegionInfo.cs
@@ -0,0 +1,304 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Globalization;
32using OpenSim.Framework.Interfaces;
33using OpenSim.Framework.Utilities;
34using OpenSim.Framework.Console;
35using libsecondlife;
36
37namespace OpenSim.Framework.Types
38{
39 public class RegionInfo
40 {
41 public LLUUID SimUUID = new LLUUID();
42 public string RegionName = "";
43 public uint RegionLocX = 0;
44 public uint RegionLocY = 0;
45 public ulong RegionHandle = 0;
46
47 public string DataStore = "";
48 public bool isSandbox = false;
49
50 public LLUUID MasterAvatarAssignedUUID = new LLUUID();
51 public string MasterAvatarFirstName = "";
52 public string MasterAvatarLastName = "";
53 public string MasterAvatarSandboxPassword = "";
54
55 /// <summary>
56 /// Port used for listening (TCP and UDP)
57 /// </summary>
58 /// <remarks>Seperate TCP and UDP</remarks>
59 public int CommsIPListenPort = 0;
60 /// <summary>
61 /// Address used for internal listening (default: 0.0.0.0?)
62 /// </summary>
63 public string CommsIPListenAddr = "";
64 /// <summary>
65 /// Address used for external addressing (DNS or IP)
66 /// </summary>
67 public string CommsExternalAddress = "";
68
69
70 public EstateSettings estateSettings;
71
72 public RegionInfo()
73 {
74 estateSettings = new EstateSettings();
75 }
76
77
78 public void InitConfig(bool sandboxMode, IGenericConfig configData)
79 {
80 this.isSandbox = sandboxMode;
81 try
82 {
83 // Sim UUID
84 string attri = "";
85 attri = configData.GetAttribute("SimUUID");
86 if (attri == "")
87 {
88 this.SimUUID = LLUUID.Random();
89 configData.SetAttribute("SimUUID", this.SimUUID.ToString());
90 }
91 else
92 {
93 this.SimUUID = new LLUUID(attri);
94 }
95
96 // Sim name
97 attri = "";
98 attri = configData.GetAttribute("SimName");
99 if (attri == "")
100 {
101 this.RegionName = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Name", "OpenSim test");
102 configData.SetAttribute("SimName", this.RegionName);
103 }
104 else
105 {
106 this.RegionName = attri;
107 }
108 // Sim/Grid location X
109 attri = "";
110 attri = configData.GetAttribute("SimLocationX");
111 if (attri == "")
112 {
113 string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid Location X", "997");
114 configData.SetAttribute("SimLocationX", location);
115 this.RegionLocX = (uint)Convert.ToUInt32(location);
116 }
117 else
118 {
119 this.RegionLocX = (uint)Convert.ToUInt32(attri);
120 }
121 // Sim/Grid location Y
122 attri = "";
123 attri = configData.GetAttribute("SimLocationY");
124 if (attri == "")
125 {
126 string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid Location Y", "996");
127 configData.SetAttribute("SimLocationY", location);
128 this.RegionLocY = (uint)Convert.ToUInt32(location);
129 }
130 else
131 {
132 this.RegionLocY = (uint)Convert.ToUInt32(attri);
133 }
134
135 // Local storage datastore
136 attri = "";
137 attri = configData.GetAttribute("Datastore");
138 if (attri == "")
139 {
140 string datastore = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Filename for local storage", "localworld.yap");
141 configData.SetAttribute("Datastore", datastore);
142 this.DataStore = datastore;
143 }
144 else
145 {
146 this.DataStore = attri;
147 }
148
149 //Sim Listen Port
150 attri = "";
151 attri = configData.GetAttribute("SimListenPort");
152 if (attri == "")
153 {
154 string port = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("UDP port for client connections", "9000");
155 configData.SetAttribute("SimListenPort", port);
156 this.CommsIPListenPort = Convert.ToInt32(port);
157 }
158 else
159 {
160 this.CommsIPListenPort = Convert.ToInt32(attri);
161 }
162
163 //Sim Listen Address
164 attri = "";
165 attri = configData.GetAttribute("SimListenAddress");
166 if (attri == "")
167 {
168 this.CommsIPListenAddr = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("IP Address to listen on for client connections", "0.0.0.0");
169 configData.SetAttribute("SimListenAddress", this.CommsIPListenAddr);
170 }
171 else
172 {
173 // Probably belongs elsewhere, but oh well.
174 if (attri.Trim().StartsWith("SYSTEMIP"))
175 {
176 string localhostname = System.Net.Dns.GetHostName();
177 System.Net.IPAddress[] ips = System.Net.Dns.GetHostAddresses(localhostname);
178 try
179 {
180 this.CommsIPListenAddr = "0.0.0.0"; // Incase a IPv4 address isnt found
181
182 foreach (System.Net.IPAddress ip in ips)
183 {
184 if (ip.AddressFamily.ToString() == System.Net.Sockets.ProtocolFamily.InterNetwork.ToString())
185 {
186 this.CommsIPListenAddr = ip.ToString();
187 break;
188 }
189 }
190 }
191 catch (Exception e)
192 {
193 e.ToString();
194 this.CommsIPListenAddr = "0.0.0.0"; // Use the default if we fail
195 }
196 }
197 else
198 {
199 this.CommsIPListenAddr = attri;
200 }
201 }
202
203 // Sim External Address
204 attri = "";
205 attri = configData.GetAttribute("SimExternalAddress");
206 if (attri == "")
207 {
208 this.CommsExternalAddress = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("IP or DNS address to send external clients to", "localhost");
209 configData.SetAttribute("SimExternalAddress", this.CommsExternalAddress);
210 }
211 else
212 {
213 this.CommsExternalAddress = attri;
214 }
215
216 attri = "";
217 attri = configData.GetAttribute("TerrainFile");
218 if (attri == "")
219 {
220 this.estateSettings.terrainFile = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("GENERAL SETTING: Default Terrain File", "default.r32");
221 configData.SetAttribute("TerrainFile", this.estateSettings.terrainFile);
222 }
223 else
224 {
225 this.estateSettings.terrainFile = attri;
226 }
227
228 attri = "";
229 attri = configData.GetAttribute("TerrainMultiplier");
230 if (attri == "")
231 {
232 string re = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0");
233 this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture);
234 configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString());
235 }
236 else
237 {
238 this.estateSettings.terrainMultiplier = Convert.ToDouble(attri);
239 }
240
241 attri = "";
242 attri = configData.GetAttribute("MasterAvatarFirstName");
243 if (attri == "")
244 {
245 this.MasterAvatarFirstName = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test");
246
247 configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName);
248 }
249 else
250 {
251 this.MasterAvatarFirstName = attri;
252 }
253
254 attri = "";
255 attri = configData.GetAttribute("MasterAvatarLastName");
256 if (attri == "")
257 {
258 this.MasterAvatarLastName = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User");
259
260 configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName);
261 }
262 else
263 {
264 this.MasterAvatarLastName = attri;
265 }
266
267 if (isSandbox) //Sandbox Mode Specific Settings
268 {
269 attri = "";
270 attri = configData.GetAttribute("MasterAvatarSandboxPassword");
271 if (attri == "")
272 {
273 this.MasterAvatarSandboxPassword = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test");
274
275 //Should I store this?
276 configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword);
277 }
278 else
279 {
280 this.MasterAvatarSandboxPassword = attri;
281 }
282 }
283
284 this.RegionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
285
286 configData.Commit();
287 }
288 catch (Exception e)
289 {
290 OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
291 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
292 }
293
294 OpenSim.Framework.Console.MainLog.Instance.Verbose("Sim settings loaded:");
295 OpenSim.Framework.Console.MainLog.Instance.Verbose( "UUID: " + this.SimUUID.ToStringHyphenated());
296 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Name: " + this.RegionName);
297 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]");
298 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Region Handle: " + this.RegionHandle.ToString());
299 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Listening on IP: " + this.CommsIPListenAddr + ":" + this.CommsIPListenPort);
300 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Sandbox Mode? " + isSandbox.ToString());
301
302 }
303 }
304}
diff --git a/OpenSim/Framework/General/UserProfile.cs b/OpenSim/Framework/General/UserProfile.cs
new file mode 100644
index 0000000..04ff20b
--- /dev/null
+++ b/OpenSim/Framework/General/UserProfile.cs
@@ -0,0 +1,89 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using OpenSim.Framework.Inventory;
33using System.Security.Cryptography;
34
35namespace OpenSim.Framework.User
36{
37 public class UserProfile
38 {
39
40 public string firstname;
41 public string lastname;
42 public ulong homeregionhandle;
43 public LLVector3 homepos;
44 public LLVector3 homelookat;
45
46 public bool IsGridGod = false;
47 public bool IsLocal = true; // will be used in future for visitors from foreign grids
48 public string AssetURL;
49 public string MD5passwd;
50
51 public LLUUID CurrentSessionID;
52 public LLUUID CurrentSecureSessionID;
53 public LLUUID UUID;
54 public Dictionary<LLUUID, uint> Circuits = new Dictionary<LLUUID, uint>(); // tracks circuit codes
55
56 public AgentInventory Inventory;
57
58 public UserProfile()
59 {
60 Circuits = new Dictionary<LLUUID, uint>();
61 Inventory = new AgentInventory();
62 homeregionhandle = Helpers.UIntsToLong((997 * 256), (996 * 256));
63 homepos = new LLVector3();
64 homelookat = new LLVector3();
65 }
66
67 public void InitSessionData()
68 {
69 RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
70
71 byte[] randDataS = new byte[16];
72 byte[] randDataSS = new byte[16];
73
74 rand.GetBytes(randDataS);
75 rand.GetBytes(randDataSS);
76
77 CurrentSecureSessionID = new LLUUID(randDataSS,0);
78 CurrentSessionID = new LLUUID(randDataS,0);
79
80 }
81
82 public void AddSimCircuit(uint circuitCode, LLUUID regionUUID)
83 {
84 if (this.Circuits.ContainsKey(regionUUID) == false)
85 this.Circuits.Add(regionUUID, circuitCode);
86 }
87
88 }
89}
diff --git a/OpenSim/Framework/General/Util.cs b/OpenSim/Framework/General/Util.cs
new file mode 100644
index 0000000..8c34c9b
--- /dev/null
+++ b/OpenSim/Framework/General/Util.cs
@@ -0,0 +1,186 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Security.Cryptography;
30using System.Collections.Generic;
31using System.Text;
32using libsecondlife;
33using libsecondlife.Packets;
34
35namespace OpenSim.Framework.Utilities
36{
37 public class Util
38 {
39 private static Random randomClass = new Random();
40 private static uint nextXferID = 5000;
41 private static object XferLock = new object();
42
43 public static ulong UIntsToLong(uint X, uint Y)
44 {
45 return Helpers.UIntsToLong(X, Y);
46 }
47
48 public static Random RandomClass
49 {
50 get
51 {
52 return randomClass;
53 }
54 }
55
56 public static uint GetNextXferID()
57 {
58 uint id = 0;
59 lock(XferLock)
60 {
61 id = nextXferID;
62 nextXferID++;
63 }
64 return id;
65 }
66
67 public static int UnixTimeSinceEpoch()
68 {
69 TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
70 int timestamp = (int)t.TotalSeconds;
71 return timestamp;
72 }
73
74 public static string Md5Hash(string pass)
75 {
76 MD5 md5 = MD5CryptoServiceProvider.Create();
77 byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass));
78 StringBuilder sb = new StringBuilder();
79 for (int i = 0; i < dataMd5.Length; i++)
80 sb.AppendFormat("{0:x2}", dataMd5[i]);
81 return sb.ToString();
82 }
83
84 public static string GetRandomCapsPath()
85 {
86 LLUUID caps = LLUUID.Random();
87 string capsPath = caps.ToStringHyphenated();
88 capsPath = capsPath.Remove(capsPath.Length - 4, 4);
89 return capsPath;
90 }
91
92 //public static int fast_distance2d(int x, int y)
93 //{
94 // x = System.Math.Abs(x);
95 // y = System.Math.Abs(y);
96
97 // int min = System.Math.Min(x, y);
98
99 // return (x + y - (min >> 1) - (min >> 2) + (min >> 4));
100 //}
101
102 public static string FieldToString(byte[] bytes)
103 {
104 return FieldToString(bytes, String.Empty);
105 }
106
107 /// <summary>
108 /// Convert a variable length field (byte array) to a string, with a
109 /// field name prepended to each line of the output
110 /// </summary>
111 /// <remarks>If the byte array has unprintable characters in it, a
112 /// hex dump will be put in the string instead</remarks>
113 /// <param name="bytes">The byte array to convert to a string</param>
114 /// <param name="fieldName">A field name to prepend to each line of output</param>
115 /// <returns>An ASCII string or a string containing a hex dump, minus
116 /// the null terminator</returns>
117 public static string FieldToString(byte[] bytes, string fieldName)
118 {
119 // Check for a common case
120 if (bytes.Length == 0) return String.Empty;
121
122 StringBuilder output = new StringBuilder();
123 bool printable = true;
124
125 for (int i = 0; i < bytes.Length; ++i)
126 {
127 // Check if there are any unprintable characters in the array
128 if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09
129 && bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00)
130 {
131 printable = false;
132 break;
133 }
134 }
135
136 if (printable)
137 {
138 if (fieldName.Length > 0)
139 {
140 output.Append(fieldName);
141 output.Append(": ");
142 }
143
144 if (bytes[bytes.Length - 1] == 0x00)
145 output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1));
146 else
147 output.Append(UTF8Encoding.UTF8.GetString(bytes));
148 }
149 else
150 {
151 for (int i = 0; i < bytes.Length; i += 16)
152 {
153 if (i != 0)
154 output.Append(Environment.NewLine);
155 if (fieldName.Length > 0)
156 {
157 output.Append(fieldName);
158 output.Append(": ");
159 }
160
161 for (int j = 0; j < 16; j++)
162 {
163 if ((i + j) < bytes.Length)
164 output.Append(String.Format("{0:X2} ", bytes[i + j]));
165 else
166 output.Append(" ");
167 }
168
169 for (int j = 0; j < 16 && (i + j) < bytes.Length; j++)
170 {
171 if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E)
172 output.Append((char)bytes[i + j]);
173 else
174 output.Append(".");
175 }
176 }
177 }
178
179 return output.ToString();
180 }
181 public Util()
182 {
183
184 }
185 }
186}
diff --git a/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj
new file mode 100644
index 0000000..aae8cd2
--- /dev/null
+++ b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj
@@ -0,0 +1,93 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{C74E4A30-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.GenericConfig.Xml</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.GenericConfig.Xml</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="System" >
62 <HintPath>System.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System.Xml" >
66 <HintPath>System.Xml.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 </ItemGroup>
70 <ItemGroup>
71 <ProjectReference Include="..\..\General\OpenSim.Framework.csproj">
72 <Name>OpenSim.Framework</Name>
73 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
74 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
75 <Private>False</Private>
76 </ProjectReference>
77 </ItemGroup>
78 <ItemGroup>
79 <Compile Include="XmlConfig.cs">
80 <SubType>Code</SubType>
81 </Compile>
82 <Compile Include="Properties\AssemblyInfo.cs">
83 <SubType>Code</SubType>
84 </Compile>
85 </ItemGroup>
86 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
87 <PropertyGroup>
88 <PreBuildEvent>
89 </PreBuildEvent>
90 <PostBuildEvent>
91 </PostBuildEvent>
92 </PropertyGroup>
93</Project>
diff --git a/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj.user b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs b/OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..de5f48d
--- /dev/null
+++ b/OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenSim.GenericConfig")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenSim.GenericConfig")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("285a3047-f165-46c8-8767-b51428738a09")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs b/OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs
new file mode 100644
index 0000000..c526aec
--- /dev/null
+++ b/OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs
@@ -0,0 +1,123 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Xml;
32using OpenSim.Framework.Interfaces;
33
34namespace OpenSim.GenericConfig
35{
36 public class XmlConfig : IGenericConfig
37 {
38 private XmlDocument doc;
39 private XmlNode rootNode;
40 private XmlNode configNode;
41 private string fileName;
42 private bool createdFile = false;
43
44 public XmlConfig(string filename)
45 {
46 fileName = filename;
47 }
48
49 public void LoadData()
50 {
51 doc = new XmlDocument();
52
53 if (System.IO.File.Exists(fileName))
54 {
55 XmlTextReader reader = new XmlTextReader(fileName);
56 reader.WhitespaceHandling = WhitespaceHandling.None;
57 doc.Load(reader);
58 reader.Close();
59 }
60 else
61 {
62 createdFile = true;
63 rootNode = doc.CreateNode(XmlNodeType.Element, "Root", "");
64 doc.AppendChild(rootNode);
65 configNode = doc.CreateNode(XmlNodeType.Element, "Config", "");
66 rootNode.AppendChild(configNode);
67 }
68
69
70 rootNode = doc.FirstChild;
71 if (rootNode.Name != "Root")
72 throw new Exception("Error: Invalid .xml File. Missing <Root>");
73
74 configNode = rootNode.FirstChild;
75 if (configNode.Name != "Config")
76 throw new Exception("Error: Invalid .xml File. <Root> first child should be <Config>");
77
78 if (createdFile)
79 {
80 this.Commit();
81 }
82 }
83
84 public string GetAttribute(string attributeName)
85 {
86 string result = "";
87 if (configNode.Attributes[attributeName] != null)
88 {
89 result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value;
90 }
91 return result;
92 }
93
94 public bool SetAttribute(string attributeName, string attributeValue)
95 {
96 if (configNode.Attributes[attributeName] != null)
97 {
98 ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue;
99 }
100 else
101 {
102 XmlAttribute attri;
103 attri = doc.CreateAttribute(attributeName);
104 attri.Value = attributeValue;
105 configNode.Attributes.Append(attri);
106 }
107 return true;
108 }
109
110 public void Commit()
111 {
112 doc.Save(fileName);
113 }
114
115 public void Close()
116 {
117 configNode = null;
118 rootNode = null;
119 doc = null;
120 }
121
122 }
123}
diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs
new file mode 100644
index 0000000..e55e33c
--- /dev/null
+++ b/OpenSim/Framework/Servers/BaseHttpServer.cs
@@ -0,0 +1,312 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Net;
31using System.Text;
32using System.Text.RegularExpressions;
33using System.Threading;
34//using OpenSim.CAPS;
35using Nwc.XmlRpc;
36using System.Collections;
37using OpenSim.Framework.Console;
38
39namespace OpenSim.Servers
40{
41 public class BaseHttpServer
42 {
43 protected class RestMethodEntry
44 {
45 private string m_path;
46 public string Path
47 {
48 get { return m_path; }
49 }
50
51 private RestMethod m_restMethod;
52 public RestMethod RestMethod
53 {
54 get { return m_restMethod; }
55 }
56
57 public RestMethodEntry(string path, RestMethod restMethod)
58 {
59 m_path = path;
60 m_restMethod = restMethod;
61 }
62 }
63
64 protected Thread m_workerThread;
65 protected HttpListener m_httpListener;
66 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>();
67 protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>();
68 protected int m_port;
69 protected bool firstcaps = true;
70
71 public BaseHttpServer(int port)
72 {
73 m_port = port;
74 }
75
76 public bool AddRestHandler(string method, string path, RestMethod handler)
77 {
78 //Console.WriteLine("adding new REST handler for path " + path);
79 string methodKey = String.Format("{0}: {1}", method, path);
80
81 if (!this.m_restHandlers.ContainsKey(methodKey))
82 {
83 this.m_restHandlers.Add(methodKey, new RestMethodEntry(path, handler));
84 return true;
85 }
86
87 //must already have a handler for that path so return false
88 return false;
89 }
90
91 public bool RemoveRestHandler(string method, string path)
92 {
93 string methodKey = String.Format("{0}: {1}", method, path);
94 if (this.m_restHandlers.ContainsKey(methodKey))
95 {
96 this.m_restHandlers.Remove(methodKey);
97 return true;
98 }
99 return false;
100 }
101
102 public bool AddXmlRPCHandler(string method, XmlRpcMethod handler)
103 {
104 if (!this.m_rpcHandlers.ContainsKey(method))
105 {
106 this.m_rpcHandlers.Add(method, handler);
107 return true;
108 }
109
110 //must already have a handler for that path so return false
111 return false;
112 }
113
114 protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request)
115 {
116 XmlRpcResponse response;
117
118 XmlRpcMethod method;
119 if (this.m_rpcHandlers.TryGetValue(methodName, out method))
120 {
121 response = method(request);
122 }
123 else
124 {
125 response = new XmlRpcResponse();
126 Hashtable unknownMethodError = new Hashtable();
127 unknownMethodError["reason"] = "XmlRequest"; ;
128 unknownMethodError["message"] = "Unknown Rpc request";
129 unknownMethodError["login"] = "false";
130 response.Value = unknownMethodError;
131 }
132
133 return XmlRpcResponseSerializer.Singleton.Serialize(response);
134 }
135
136 protected virtual string ParseREST(string request, string path, string method)
137 {
138 string response;
139
140 string requestKey = String.Format("{0}: {1}", method, path);
141
142 string bestMatch = String.Empty;
143 foreach (string currentKey in m_restHandlers.Keys)
144 {
145 if (requestKey.StartsWith(currentKey))
146 {
147 if (currentKey.Length > bestMatch.Length)
148 {
149 bestMatch = currentKey;
150 }
151 }
152 }
153
154 RestMethodEntry restMethodEntry;
155 if (m_restHandlers.TryGetValue(bestMatch, out restMethodEntry))
156 {
157 RestMethod restMethod = restMethodEntry.RestMethod;
158
159 string param = path.Substring(restMethodEntry.Path.Length);
160 response = restMethod(request, path, param);
161
162 }
163 else
164 {
165 response = String.Empty;
166 }
167
168 return response;
169 }
170
171 protected virtual string ParseLLSDXML(string requestBody)
172 {
173 // dummy function for now - IMPLEMENT ME!
174 Console.WriteLine("LLSD request "+requestBody);
175 string resp = "";
176 if (firstcaps)
177 {
178 resp = "<llsd><map><key>MapLayer</key><string>http://127.0.0.1:9000/CAPS/</string></map></llsd>";
179 firstcaps = false;
180 }
181 return resp;
182 }
183
184 protected virtual string ParseXMLRPC(string requestBody)
185 {
186 string responseString = String.Empty;
187
188 try
189 {
190 XmlRpcRequest request = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
191
192 string methodName = request.MethodName;
193
194 responseString = ProcessXMLRPCMethod(methodName, request);
195 }
196 catch (Exception e)
197 {
198 Console.WriteLine(e.ToString());
199 }
200 return responseString;
201 }
202
203 public virtual void HandleRequest(Object stateinfo)
204 {
205 try
206 {
207 HttpListenerContext context = (HttpListenerContext)stateinfo;
208
209 HttpListenerRequest request = context.Request;
210 HttpListenerResponse response = context.Response;
211
212 response.KeepAlive = false;
213 response.SendChunked = false;
214
215 System.IO.Stream body = request.InputStream;
216 System.Text.Encoding encoding = System.Text.Encoding.UTF8;
217 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
218
219 string requestBody = reader.ReadToEnd();
220 body.Close();
221 reader.Close();
222
223 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType);
224 //Console.WriteLine(requestBody);
225
226 string responseString = "";
227 // Console.WriteLine("new request " + request.ContentType +" at "+ request.RawUrl);
228 switch (request.ContentType)
229 {
230 case "text/xml":
231 // must be XML-RPC, so pass to the XML-RPC parser
232
233 responseString = ParseXMLRPC(requestBody);
234 responseString = Regex.Replace(responseString, "utf-16", "utf-8");
235
236 response.AddHeader("Content-type", "text/xml");
237 break;
238
239 case "application/xml":
240 // probably LLSD we hope, otherwise it should be ignored by the parser
241 // responseString = ParseLLSDXML(requestBody);
242 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
243 response.AddHeader("Content-type", "application/xml");
244 break;
245
246 case "application/octet-stream":
247 // probably LLSD we hope, otherwise it should be ignored by the parser
248 // responseString = ParseLLSDXML(requestBody);
249 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
250 response.AddHeader("Content-type", "application/xml");
251 break;
252
253 case "application/x-www-form-urlencoded":
254 // a form data POST so send to the REST parser
255 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
256 response.AddHeader("Content-type", "text/html");
257 break;
258
259 case null:
260 // must be REST or invalid crap, so pass to the REST parser
261 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
262 response.AddHeader("Content-type", "text/html");
263 break;
264
265 }
266
267 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
268 System.IO.Stream output = response.OutputStream;
269 response.SendChunked = false;
270 response.ContentLength64 = buffer.Length;
271 output.Write(buffer, 0, buffer.Length);
272 output.Close();
273 }
274 catch (Exception e)
275 {
276 Console.WriteLine(e.ToString());
277 }
278 }
279
280 public void Start()
281 {
282 OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server");
283
284 m_workerThread = new Thread(new ThreadStart(StartHTTP));
285 m_workerThread.IsBackground = true;
286 m_workerThread.Start();
287 }
288
289 private void StartHTTP()
290 {
291 try
292 {
293 OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK");
294 m_httpListener = new HttpListener();
295
296 m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
297 m_httpListener.Start();
298
299 HttpListenerContext context;
300 while (true)
301 {
302 context = m_httpListener.GetContext();
303 ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
304 }
305 }
306 catch (Exception e)
307 {
308 OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.MEDIUM, e.Message);
309 }
310 }
311 }
312}
diff --git a/OpenSim/Framework/Servers/CheckSumServer.cs b/OpenSim/Framework/Servers/CheckSumServer.cs
new file mode 100644
index 0000000..a359205
--- /dev/null
+++ b/OpenSim/Framework/Servers/CheckSumServer.cs
@@ -0,0 +1,141 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Text;
30using System.IO;
31using System.Threading;
32using System.Net;
33using System.Net.Sockets;
34using System.Timers;
35using System.Reflection;
36using System.Collections;
37using System.Collections.Generic;
38using libsecondlife;
39using libsecondlife.Packets;
40using OpenSim.Framework.Console;
41
42
43namespace OpenSim.Servers
44{
45/* public class CheckSumServer : UDPServerBase
46 {
47 //protected ConsoleBase m_log;
48
49 public CheckSumServer(int port)
50 : base(port)
51 {
52 }
53
54 protected override void OnReceivedData(IAsyncResult result)
55 {
56 ipeSender = new IPEndPoint(IPAddress.Any, 0);
57 epSender = (EndPoint)ipeSender;
58 Packet packet = null;
59 int numBytes = Server.EndReceiveFrom(result, ref epSender);
60 int packetEnd = numBytes - 1;
61
62 packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
63
64 if (packet.Type == PacketType.SecuredTemplateChecksumRequest)
65 {
66 SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet;
67 TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket();
68 checkreply.DataBlock.Checksum = 3220703154;//180572585;
69 checkreply.DataBlock.Flags = 0;
70 checkreply.DataBlock.MajorVersion = 1;
71 checkreply.DataBlock.MinorVersion = 15;
72 checkreply.DataBlock.PatchVersion = 0;
73 checkreply.DataBlock.ServerVersion = 0;
74 checkreply.TokenBlock.Token = checksum.TokenBlock.Token;
75 this.SendPacket(checkreply, epSender);
76
77 /*
78 //if we wanted to echo the the checksum/ version from the client (so that any client worked)
79 SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket();
80 checkrequest.TokenBlock.Token = checksum.TokenBlock.Token;
81 this.SendPacket(checkrequest, epSender);
82
83 }
84 else if (packet.Type == PacketType.TemplateChecksumReply)
85 {
86 //echo back the client checksum reply (Hegemon's method)
87 TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet;
88 TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket();
89 checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum;
90 checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags;
91 checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion;
92 checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion;
93 checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion;
94 checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion;
95 checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token;
96 this.SendPacket(checkreply2, epSender);
97 }
98 else
99 {
100 }
101
102 Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
103 }
104
105 private void SendPacket(Packet Pack, EndPoint endp)
106 {
107 if (!Pack.Header.Resent)
108 {
109 Pack.Header.Sequence = 1;
110 }
111
112 byte[] ZeroOutBuffer = new byte[4096];
113 byte[] sendbuffer;
114 sendbuffer = Pack.ToBytes();
115
116 try
117 {
118 if (Pack.Header.Zerocoded)
119 {
120 int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
121 this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp);
122 }
123 else
124 {
125 this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp);
126 }
127 }
128 catch (Exception)
129 {
130 OpenSim.Framework.Console.MainLog.Instance.Warn("OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection ");
131
132 }
133 }
134
135 private void SendPackTo(byte[] buffer, int size, SocketFlags flags, EndPoint endp)
136 {
137 this.Server.SendTo(buffer, size, flags, endp);
138 }
139 *
140 }*/
141} \ No newline at end of file
diff --git a/OpenSim/Framework/Servers/IRestHandler.cs b/OpenSim/Framework/Servers/IRestHandler.cs
new file mode 100644
index 0000000..3aa508c
--- /dev/null
+++ b/OpenSim/Framework/Servers/IRestHandler.cs
@@ -0,0 +1,35 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Servers
33{
34 public delegate string RestMethod( string request, string path, string param );
35}
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj
new file mode 100644
index 0000000..399f456
--- /dev/null
+++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj
@@ -0,0 +1,116 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{2CC71860-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.Servers</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.Servers</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Xml" >
70 <HintPath>System.Xml.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="XMLRPC.dll" >
74 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 </ItemGroup>
78 <ItemGroup>
79 <ProjectReference Include="..\General\OpenSim.Framework.csproj">
80 <Name>OpenSim.Framework</Name>
81 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
82 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
83 <Private>False</Private>
84 </ProjectReference>
85 <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj">
86 <Name>OpenSim.Framework.Console</Name>
87 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
88 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
89 <Private>False</Private>
90 </ProjectReference>
91 </ItemGroup>
92 <ItemGroup>
93 <Compile Include="BaseHttpServer.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="CheckSumServer.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 <Compile Include="IRestHandler.cs">
100 <SubType>Code</SubType>
101 </Compile>
102 <Compile Include="UDPServerBase.cs">
103 <SubType>Code</SubType>
104 </Compile>
105 <Compile Include="XmlRpcMethod.cs">
106 <SubType>Code</SubType>
107 </Compile>
108 </ItemGroup>
109 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
110 <PropertyGroup>
111 <PreBuildEvent>
112 </PreBuildEvent>
113 <PostBuildEvent>
114 </PostBuildEvent>
115 </PropertyGroup>
116</Project>
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj.user b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/Servers/UDPServerBase.cs b/OpenSim/Framework/Servers/UDPServerBase.cs
new file mode 100644
index 0000000..b472c97
--- /dev/null
+++ b/OpenSim/Framework/Servers/UDPServerBase.cs
@@ -0,0 +1,95 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Text;
30using System.IO;
31using System.Threading;
32using System.Net;
33using System.Net.Sockets;
34using System.Timers;
35using System.Reflection;
36using System.Collections;
37using System.Collections.Generic;
38using libsecondlife;
39using libsecondlife.Packets;
40
41namespace OpenSim.Servers
42{
43 public class UDPServerBase
44 {
45 public Socket Server;
46 protected IPEndPoint ServerIncoming;
47 protected byte[] RecvBuffer = new byte[4096];
48 protected byte[] ZeroBuffer = new byte[8192];
49 protected IPEndPoint ipeSender;
50 protected EndPoint epSender;
51 protected AsyncCallback ReceivedData;
52 protected int listenPort;
53
54 public UDPServerBase(int port)
55 {
56 listenPort = port;
57 }
58
59 protected virtual void OnReceivedData(IAsyncResult result)
60 {
61 ipeSender = new IPEndPoint(IPAddress.Any, 0);
62 epSender = (EndPoint)ipeSender;
63 Packet packet = null;
64 int numBytes = Server.EndReceiveFrom(result, ref epSender);
65 int packetEnd = numBytes - 1;
66
67 packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
68
69 Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
70 }
71
72 protected virtual void AddNewClient(Packet packet)
73 {
74 }
75
76 public virtual void ServerListener()
77 {
78
79 ServerIncoming = new IPEndPoint(IPAddress.Any, listenPort);
80 Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
81 Server.Bind(ServerIncoming);
82
83 ipeSender = new IPEndPoint(IPAddress.Any, 0);
84 epSender = (EndPoint)ipeSender;
85 ReceivedData = new AsyncCallback(this.OnReceivedData);
86 Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
87 }
88
89 public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
90 {
91
92 }
93 }
94}
95
diff --git a/OpenSim/Framework/Servers/XmlRpcMethod.cs b/OpenSim/Framework/Servers/XmlRpcMethod.cs
new file mode 100644
index 0000000..05cbf2e
--- /dev/null
+++ b/OpenSim/Framework/Servers/XmlRpcMethod.cs
@@ -0,0 +1,34 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using Nwc.XmlRpc;
30
31namespace OpenSim.Servers
32{
33 public delegate XmlRpcResponse XmlRpcMethod( XmlRpcRequest request );
34}
diff --git a/OpenSim/Framework/UserManager/LoginResponse.cs b/OpenSim/Framework/UserManager/LoginResponse.cs
new file mode 100644
index 0000000..5ca223f
--- /dev/null
+++ b/OpenSim/Framework/UserManager/LoginResponse.cs
@@ -0,0 +1,645 @@
1using System;
2using System.Text;
3using System.Text.RegularExpressions;
4using System.Threading;
5using System.Collections;
6using System.Xml;
7using libsecondlife;
8using OpenSim.Framework.Utilities;
9using OpenSim.Framework.Interfaces;
10using Nwc.XmlRpc;
11
12namespace OpenSim.Framework.UserManagement
13{
14
15 /// <summary>
16 /// A temp class to handle login response.
17 /// Should make use of UserProfileManager where possible.
18 /// </summary>
19
20 public class LoginResponse
21 {
22 private Hashtable loginFlagsHash;
23 private Hashtable globalTexturesHash;
24 private Hashtable loginError;
25 private Hashtable eventCategoriesHash;
26 private Hashtable uiConfigHash;
27 private Hashtable classifiedCategoriesHash;
28
29 private ArrayList loginFlags;
30 private ArrayList globalTextures;
31 private ArrayList eventCategories;
32 private ArrayList uiConfig;
33 private ArrayList classifiedCategories;
34 private ArrayList inventoryRoot;
35 private ArrayList initialOutfit;
36 private ArrayList agentInventory;
37
38 private UserInfo userProfile;
39
40 private LLUUID agentID;
41 private LLUUID sessionID;
42 private LLUUID secureSessionID;
43
44 // Login Flags
45 private string dst;
46 private string stipendSinceLogin;
47 private string gendered;
48 private string everLoggedIn;
49 private string login;
50 private int simPort;
51 private string simAddress;
52 private string agentAccess;
53 private Int32 circuitCode;
54 private uint regionX;
55 private uint regionY;
56
57 // Login
58 private string firstname;
59 private string lastname;
60
61 // Global Textures
62 private string sunTexture;
63 private string cloudTexture;
64 private string moonTexture;
65
66 // Error Flags
67 private string errorReason;
68 private string errorMessage;
69
70 // Response
71 private XmlRpcResponse xmlRpcResponse;
72 private XmlRpcResponse defaultXmlRpcResponse;
73
74 private string welcomeMessage;
75 private string startLocation;
76 private string allowFirstLife;
77 private string home;
78 private string seedCapability;
79 private string lookAt;
80
81 public LoginResponse()
82 {
83 this.loginFlags = new ArrayList();
84 this.globalTextures = new ArrayList();
85 this.eventCategories = new ArrayList();
86 this.uiConfig = new ArrayList();
87 this.classifiedCategories = new ArrayList();
88
89 this.loginError = new Hashtable();
90 this.eventCategoriesHash = new Hashtable();
91 this.classifiedCategoriesHash = new Hashtable();
92 this.uiConfigHash = new Hashtable();
93
94 this.defaultXmlRpcResponse = new XmlRpcResponse();
95 this.userProfile = new UserInfo();
96 this.inventoryRoot = new ArrayList();
97 this.initialOutfit = new ArrayList();
98 this.agentInventory = new ArrayList();
99
100 this.xmlRpcResponse = new XmlRpcResponse();
101 this.defaultXmlRpcResponse = new XmlRpcResponse();
102
103 this.SetDefaultValues();
104 } // LoginServer
105
106 public void SetDefaultValues()
107 {
108 this.DST = "N";
109 this.StipendSinceLogin = "N";
110 this.Gendered = "Y";
111 this.EverLoggedIn = "Y";
112 this.login = "false";
113 this.firstname = "Test";
114 this.lastname = "User";
115 this.agentAccess = "M";
116 this.startLocation = "last";
117 this.allowFirstLife = "Y";
118
119 this.SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271";
120 this.CloudTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621";
121 this.MoonTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621";
122
123 this.ErrorMessage = "You have entered an invalid name/password combination. Check Caps/lock.";
124 this.ErrorReason = "key";
125 this.welcomeMessage = "Welcome to OpenSim!";
126 this.seedCapability = "";
127 this.home = "{'region_handle':[r" + (997 * 256).ToString() + ",r" + (996 * 256).ToString() + "], 'position':[r" + this.userProfile.homepos.X.ToString() + ",r" + this.userProfile.homepos.Y.ToString() + ",r" + this.userProfile.homepos.Z.ToString() + "], 'look_at':[r" + this.userProfile.homelookat.X.ToString() + ",r" + this.userProfile.homelookat.Y.ToString() + ",r" + this.userProfile.homelookat.Z.ToString() + "]}";
128 this.lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]";
129 this.RegionX = (uint)255232;
130 this.RegionY = (uint)254976;
131
132 // Classifieds;
133 this.AddClassifiedCategory((Int32)1, "Shopping");
134 this.AddClassifiedCategory((Int32)2, "Land Rental");
135 this.AddClassifiedCategory((Int32)3, "Property Rental");
136 this.AddClassifiedCategory((Int32)4, "Special Attraction");
137 this.AddClassifiedCategory((Int32)5, "New Products");
138 this.AddClassifiedCategory((Int32)6, "Employment");
139 this.AddClassifiedCategory((Int32)7, "Wanted");
140 this.AddClassifiedCategory((Int32)8, "Service");
141 this.AddClassifiedCategory((Int32)9, "Personal");
142
143
144 this.SessionID = LLUUID.Random();
145 this.SecureSessionID = LLUUID.Random();
146 this.AgentID = LLUUID.Random();
147
148 Hashtable InitialOutfitHash = new Hashtable();
149 InitialOutfitHash["folder_name"] = "Nightclub Female";
150 InitialOutfitHash["gender"] = "female";
151 this.initialOutfit.Add(InitialOutfitHash);
152
153
154 } // SetDefaultValues
155
156 #region Login Failure Methods
157 public XmlRpcResponse GenerateFailureResponse(string reason, string message, string login)
158 {
159 // Overwrite any default values;
160 this.xmlRpcResponse = new XmlRpcResponse();
161
162 // Ensure Login Failed message/reason;
163 this.ErrorMessage = message;
164 this.ErrorReason = reason;
165
166 this.loginError["reason"] = this.ErrorReason;
167 this.loginError["message"] = this.ErrorMessage;
168 this.loginError["login"] = login;
169 this.xmlRpcResponse.Value = this.loginError;
170 return (this.xmlRpcResponse);
171 } // GenerateResponse
172
173 public XmlRpcResponse CreateFailedResponse()
174 {
175 return (this.CreateLoginFailedResponse());
176 } // CreateErrorConnectingToGridResponse()
177
178 public XmlRpcResponse CreateLoginFailedResponse()
179 {
180 return (this.GenerateFailureResponse("key", "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", "false"));
181 } // LoginFailedResponse
182
183 public XmlRpcResponse CreateAlreadyLoggedInResponse()
184 {
185 return (this.GenerateFailureResponse("presence", "You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner", "false"));
186 } // CreateAlreadyLoggedInResponse()
187
188 public XmlRpcResponse CreateDeadRegionResponse()
189 {
190 return (this.GenerateFailureResponse("key", "The region you are attempting to log into is not responding. Please select another region and try again.", "false"));
191 }
192
193 public XmlRpcResponse CreateGridErrorResponse()
194 {
195 return (this.GenerateFailureResponse("key", "Error connecting to grid. Could not percieve credentials from login XML.", "false"));
196 }
197
198 #endregion
199
200 public XmlRpcResponse ToXmlRpcResponse()
201 {
202 try
203 {
204
205 Hashtable responseData = new Hashtable();
206
207 this.loginFlagsHash = new Hashtable();
208 this.loginFlagsHash["daylight_savings"] = this.DST;
209 this.loginFlagsHash["stipend_since_login"] = this.StipendSinceLogin;
210 this.loginFlagsHash["gendered"] = this.Gendered;
211 this.loginFlagsHash["ever_logged_in"] = this.EverLoggedIn;
212 this.loginFlags.Add(this.loginFlagsHash);
213
214 responseData["first_name"] = this.Firstname;
215 responseData["last_name"] = this.Lastname;
216 responseData["agent_access"] = this.agentAccess;
217
218 this.globalTexturesHash = new Hashtable();
219 this.globalTexturesHash["sun_texture_id"] = this.SunTexture;
220 this.globalTexturesHash["cloud_texture_id"] = this.CloudTexture;
221 this.globalTexturesHash["moon_texture_id"] = this.MoonTexture;
222 this.globalTextures.Add(this.globalTexturesHash);
223 this.eventCategories.Add(this.eventCategoriesHash);
224
225 this.AddToUIConfig("allow_first_life", this.allowFirstLife);
226 this.uiConfig.Add(this.uiConfigHash);
227
228 responseData["sim_port"] =(Int32) this.SimPort;
229 responseData["sim_ip"] = this.SimAddress;
230 responseData["agent_id"] = this.AgentID.ToStringHyphenated();
231 responseData["session_id"] = this.SessionID.ToStringHyphenated();
232 responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated();
233 responseData["circuit_code"] = this.CircuitCode;
234 responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
235 responseData["login-flags"] = this.loginFlags;
236 responseData["global-textures"] = this.globalTextures;
237 responseData["seed_capability"] = this.seedCapability;
238
239 responseData["event_categories"] = this.eventCategories;
240 responseData["event_notifications"] = new ArrayList(); // todo
241 responseData["classified_categories"] = this.classifiedCategories;
242 responseData["ui-config"] = this.uiConfig;
243
244 responseData["inventory-skeleton"] = this.agentInventory;
245 responseData["inventory-skel-lib"] = new ArrayList(); // todo
246 responseData["inventory-root"] = this.inventoryRoot;
247 responseData["gestures"] = new ArrayList(); // todo
248 responseData["inventory-lib-owner"] = new ArrayList(); // todo
249 responseData["initial-outfit"] = this.initialOutfit;
250 responseData["start_location"] = this.startLocation;
251 responseData["seed_capability"] = this.seedCapability;
252 responseData["home"] = this.home;
253 responseData["look_at"] = this.lookAt;
254 responseData["message"] = this.welcomeMessage;
255 responseData["region_x"] = (Int32)this.RegionX * 256;
256 responseData["region_y"] = (Int32)this.RegionY * 256;
257
258 //responseData["inventory-lib-root"] = new ArrayList(); // todo
259 //responseData["buddy-list"] = new ArrayList(); // todo
260
261 responseData["login"] = "true";
262 this.xmlRpcResponse.Value = responseData;
263
264 return (this.xmlRpcResponse);
265 }
266 catch (Exception e)
267 {
268 OpenSim.Framework.Console.MainLog.Instance.WriteLine(
269 OpenSim.Framework.Console.LogPriority.LOW,
270 "LoginResponse: Error creating XML-RPC Response: " + e.Message
271 );
272 return (this.GenerateFailureResponse("Internal Error", "Error generating Login Response", "false"));
273
274 }
275
276 } // ToXmlRpcResponse
277
278 public void SetEventCategories(string category, string value)
279 {
280 this.eventCategoriesHash[category] = value;
281 } // SetEventCategories
282
283 public void AddToUIConfig(string itemName, string item)
284 {
285 this.uiConfigHash[itemName] = item;
286 } // SetUIConfig
287
288 public void AddClassifiedCategory(Int32 ID, string categoryName)
289 {
290 this.classifiedCategoriesHash["category_name"] = categoryName;
291 this.classifiedCategoriesHash["category_id"] = ID;
292 this.classifiedCategories.Add(this.classifiedCategoriesHash);
293 // this.classifiedCategoriesHash.Clear();
294 } // SetClassifiedCategory
295
296 #region Properties
297 public string Login
298 {
299 get
300 {
301 return this.login;
302 }
303 set
304 {
305 this.login = value;
306 }
307 } // Login
308
309 public string DST
310 {
311 get
312 {
313 return this.dst;
314 }
315 set
316 {
317 this.dst = value;
318 }
319 } // DST
320
321 public string StipendSinceLogin
322 {
323 get
324 {
325 return this.stipendSinceLogin;
326 }
327 set
328 {
329 this.stipendSinceLogin = value;
330 }
331 } // StipendSinceLogin
332
333 public string Gendered
334 {
335 get
336 {
337 return this.gendered;
338 }
339 set
340 {
341 this.gendered = value;
342 }
343 } // Gendered
344
345 public string EverLoggedIn
346 {
347 get
348 {
349 return this.everLoggedIn;
350 }
351 set
352 {
353 this.everLoggedIn = value;
354 }
355 } // EverLoggedIn
356
357 public int SimPort
358 {
359 get
360 {
361 return this.simPort;
362 }
363 set
364 {
365 this.simPort = value;
366 }
367 } // SimPort
368
369 public string SimAddress
370 {
371 get
372 {
373 return this.simAddress;
374 }
375 set
376 {
377 this.simAddress = value;
378 }
379 } // SimAddress
380
381 public LLUUID AgentID
382 {
383 get
384 {
385 return this.agentID;
386 }
387 set
388 {
389 this.agentID = value;
390 }
391 } // AgentID
392
393 public LLUUID SessionID
394 {
395 get
396 {
397 return this.sessionID;
398 }
399 set
400 {
401 this.sessionID = value;
402 }
403 } // SessionID
404
405 public LLUUID SecureSessionID
406 {
407 get
408 {
409 return this.secureSessionID;
410 }
411 set
412 {
413 this.secureSessionID = value;
414 }
415 } // SecureSessionID
416
417 public Int32 CircuitCode
418 {
419 get
420 {
421 return this.circuitCode;
422 }
423 set
424 {
425 this.circuitCode = value;
426 }
427 } // CircuitCode
428
429 public uint RegionX
430 {
431 get
432 {
433 return this.regionX;
434 }
435 set
436 {
437 this.regionX = value;
438 }
439 } // RegionX
440
441 public uint RegionY
442 {
443 get
444 {
445 return this.regionY;
446 }
447 set
448 {
449 this.regionY = value;
450 }
451 } // RegionY
452
453 public string SunTexture
454 {
455 get
456 {
457 return this.sunTexture;
458 }
459 set
460 {
461 this.sunTexture = value;
462 }
463 } // SunTexture
464
465 public string CloudTexture
466 {
467 get
468 {
469 return this.cloudTexture;
470 }
471 set
472 {
473 this.cloudTexture = value;
474 }
475 } // CloudTexture
476
477 public string MoonTexture
478 {
479 get
480 {
481 return this.moonTexture;
482 }
483 set
484 {
485 this.moonTexture = value;
486 }
487 } // MoonTexture
488
489 public string Firstname
490 {
491 get
492 {
493 return this.firstname;
494 }
495 set
496 {
497 this.firstname = value;
498 }
499 } // Firstname
500
501 public string Lastname
502 {
503 get
504 {
505 return this.lastname;
506 }
507 set
508 {
509 this.lastname = value;
510 }
511 } // Lastname
512
513 public string AgentAccess
514 {
515 get
516 {
517 return this.agentAccess;
518 }
519 set
520 {
521 this.agentAccess = value;
522 }
523 }
524
525 public string StartLocation
526 {
527 get
528 {
529 return this.startLocation;
530 }
531 set
532 {
533 this.startLocation = value;
534 }
535 } // StartLocation
536
537 public string LookAt
538 {
539 get
540 {
541 return this.lookAt;
542 }
543 set
544 {
545 this.lookAt = value;
546 }
547 }
548
549 public string SeedCapability
550 {
551 get
552 {
553 return this.seedCapability;
554 }
555 set
556 {
557 this.seedCapability = value;
558 }
559 } // SeedCapability
560
561 public string ErrorReason
562 {
563 get
564 {
565 return this.errorReason;
566 }
567 set
568 {
569 this.errorReason = value;
570 }
571 } // ErrorReason
572
573 public string ErrorMessage
574 {
575 get
576 {
577 return this.errorMessage;
578 }
579 set
580 {
581 this.errorMessage = value;
582 }
583 } // ErrorMessage
584
585 public ArrayList InventoryRoot
586 {
587 get
588 {
589 return this.inventoryRoot;
590 }
591 set
592 {
593 this.inventoryRoot = value;
594 }
595 }
596
597 public ArrayList InventorySkeleton
598 {
599 get
600 {
601 return this.agentInventory;
602 }
603 set
604 {
605 this.agentInventory = value;
606 }
607 }
608
609 public string Home
610 {
611 get
612 {
613 return this.home;
614 }
615 set
616 {
617 this.home = value;
618 }
619 }
620
621 public string Message
622 {
623 get
624 {
625 return this.welcomeMessage;
626 }
627 set
628 {
629 this.welcomeMessage = value;
630 }
631 }
632 #endregion
633
634
635 public class UserInfo
636 {
637 public string firstname;
638 public string lastname;
639 public ulong homeregionhandle;
640 public LLVector3 homepos;
641 public LLVector3 homelookat;
642 }
643 }
644}
645
diff --git a/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj
new file mode 100644
index 0000000..02aa3f3
--- /dev/null
+++ b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj
@@ -0,0 +1,125 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{586E2916-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Framework.UserManagement</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Framework.UserManagement</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework" >
70 <HintPath>OpenSim.Framework.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.Framework.Console" >
74 <HintPath>OpenSim.Framework.Console.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="OpenSim.Framework.GenericConfig.Xml" >
78 <HintPath>OpenSim.Framework.GenericConfig.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="OpenSim.Framework.Servers" >
82 <HintPath>OpenSim.Framework.Servers.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="System" >
86 <HintPath>System.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 <Reference Include="System.Data" >
90 <HintPath>System.Data.dll</HintPath>
91 <Private>False</Private>
92 </Reference>
93 <Reference Include="System.Xml" >
94 <HintPath>System.Xml.dll</HintPath>
95 <Private>False</Private>
96 </Reference>
97 <Reference Include="XMLRPC.dll" >
98 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
99 <Private>False</Private>
100 </Reference>
101 </ItemGroup>
102 <ItemGroup>
103 <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj">
104 <Name>OpenSim.Framework.Data</Name>
105 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
106 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
107 <Private>False</Private>
108 </ProjectReference>
109 </ItemGroup>
110 <ItemGroup>
111 <Compile Include="LoginResponse.cs">
112 <SubType>Code</SubType>
113 </Compile>
114 <Compile Include="UserManagerBase.cs">
115 <SubType>Code</SubType>
116 </Compile>
117 </ItemGroup>
118 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
119 <PropertyGroup>
120 <PreBuildEvent>
121 </PreBuildEvent>
122 <PostBuildEvent>
123 </PostBuildEvent>
124 </PropertyGroup>
125</Project>
diff --git a/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj.user b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Framework/UserManager/UserManagerBase.cs b/OpenSim/Framework/UserManager/UserManagerBase.cs
new file mode 100644
index 0000000..eb46c14
--- /dev/null
+++ b/OpenSim/Framework/UserManager/UserManagerBase.cs
@@ -0,0 +1,641 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Text;
32using OpenSim.Framework.Data;
33using libsecondlife;
34using System.Reflection;
35
36using System.Xml;
37using Nwc.XmlRpc;
38using OpenSim.Framework.Sims;
39using OpenSim.Framework.Inventory;
40using OpenSim.Framework.Utilities;
41
42using System.Security.Cryptography;
43
44namespace OpenSim.Framework.UserManagement
45{
46 public class UserManagerBase
47 {
48 public OpenSim.Framework.Interfaces.UserConfig _config;
49 Dictionary<string, IUserData> _plugins = new Dictionary<string, IUserData>();
50
51 /// <summary>
52 /// Adds a new user server plugin - user servers will be requested in the order they were loaded.
53 /// </summary>
54 /// <param name="FileName">The filename to the user server plugin DLL</param>
55 public void AddPlugin(string FileName)
56 {
57 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Userstorage: Attempting to load " + FileName);
58 Assembly pluginAssembly = Assembly.LoadFrom(FileName);
59
60 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
61 foreach (Type pluginType in pluginAssembly.GetTypes())
62 {
63 if (!pluginType.IsAbstract)
64 {
65 Type typeInterface = pluginType.GetInterface("IUserData", true);
66
67 if (typeInterface != null)
68 {
69 IUserData plug = (IUserData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
70 plug.Initialise();
71 this._plugins.Add(plug.getName(), plug);
72 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface");
73 }
74
75 typeInterface = null;
76 }
77 }
78
79 pluginAssembly = null;
80 }
81
82 #region Get UserProfile
83 /// <summary>
84 /// Loads a user profile from a database by UUID
85 /// </summary>
86 /// <param name="uuid">The target UUID</param>
87 /// <returns>A user profile</returns>
88 public UserProfileData getUserProfile(LLUUID uuid)
89 {
90 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
91 {
92 try
93 {
94 UserProfileData profile = plugin.Value.getUserByUUID(uuid);
95 profile.currentAgent = getUserAgent(profile.UUID);
96 return profile;
97 }
98 catch (Exception e)
99 {
100 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
101 }
102 }
103
104 return null;
105 }
106
107
108 /// <summary>
109 /// Loads a user profile by name
110 /// </summary>
111 /// <param name="name">The target name</param>
112 /// <returns>A user profile</returns>
113 public UserProfileData getUserProfile(string name)
114 {
115 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
116 {
117 try
118 {
119 UserProfileData profile = plugin.Value.getUserByName(name);
120 profile.currentAgent = getUserAgent(profile.UUID);
121 return profile;
122 }
123 catch (Exception e)
124 {
125 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
126 }
127 }
128
129 return null;
130 }
131
132 /// <summary>
133 /// Loads a user profile by name
134 /// </summary>
135 /// <param name="fname">First name</param>
136 /// <param name="lname">Last name</param>
137 /// <returns>A user profile</returns>
138 public UserProfileData getUserProfile(string fname, string lname)
139 {
140 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
141 {
142 try
143 {
144 UserProfileData profile = plugin.Value.getUserByName(fname,lname);
145 try
146 {
147 profile.currentAgent = getUserAgent(profile.UUID);
148 }
149 catch (Exception e)
150 {
151 // Ignore
152 }
153 return profile;
154 }
155 catch (Exception e)
156 {
157 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
158 }
159 }
160
161 return null;
162 }
163 #endregion
164
165 #region Get UserAgent
166 /// <summary>
167 /// Loads a user agent by uuid (not called directly)
168 /// </summary>
169 /// <param name="uuid">The agents UUID</param>
170 /// <returns>Agent profiles</returns>
171 public UserAgentData getUserAgent(LLUUID uuid)
172 {
173 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
174 {
175 try
176 {
177 return plugin.Value.getAgentByUUID(uuid);
178 }
179 catch (Exception e)
180 {
181 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
182 }
183 }
184
185 return null;
186 }
187
188 /// <summary>
189 /// Loads a user agent by name (not called directly)
190 /// </summary>
191 /// <param name="name">The agents name</param>
192 /// <returns>A user agent</returns>
193 public UserAgentData getUserAgent(string name)
194 {
195 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
196 {
197 try
198 {
199 return plugin.Value.getAgentByName(name);
200 }
201 catch (Exception e)
202 {
203 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
204 }
205 }
206
207 return null;
208 }
209
210 /// <summary>
211 /// Loads a user agent by name (not called directly)
212 /// </summary>
213 /// <param name="fname">The agents firstname</param>
214 /// <param name="lname">The agents lastname</param>
215 /// <returns>A user agent</returns>
216 public UserAgentData getUserAgent(string fname, string lname)
217 {
218 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
219 {
220 try
221 {
222 return plugin.Value.getAgentByName(fname,lname);
223 }
224 catch (Exception e)
225 {
226 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
227 }
228 }
229
230 return null;
231 }
232
233 #endregion
234
235 #region CreateAgent
236 /// <summary>
237 /// Creates and initialises a new user agent - make sure to use CommitAgent when done to submit to the DB
238 /// </summary>
239 /// <param name="profile">The users profile</param>
240 /// <param name="request">The users loginrequest</param>
241 public void CreateAgent(ref UserProfileData profile, XmlRpcRequest request)
242 {
243 Hashtable requestData = (Hashtable)request.Params[0];
244
245 UserAgentData agent = new UserAgentData();
246
247 // User connection
248 agent.agentIP = "";
249 agent.agentOnline = true;
250 agent.agentPort = 0;
251
252 // Generate sessions
253 RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
254 byte[] randDataS = new byte[16];
255 byte[] randDataSS = new byte[16];
256 rand.GetBytes(randDataS);
257 rand.GetBytes(randDataSS);
258
259 agent.secureSessionID = new LLUUID(randDataSS, 0);
260 agent.sessionID = new LLUUID(randDataS, 0);
261
262 // Profile UUID
263 agent.UUID = profile.UUID;
264
265 // Current position (from Home)
266 agent.currentHandle = profile.homeRegion;
267 agent.currentPos = profile.homeLocation;
268
269 // If user specified additional start, use that
270 if (requestData.ContainsKey("start"))
271 {
272 string startLoc = ((string)requestData["start"]).Trim();
273 if (!(startLoc == "last" || startLoc == "home"))
274 {
275 // Format: uri:Ahern&162&213&34
276 try
277 {
278 string[] parts = startLoc.Remove(0, 4).Split('&');
279 string region = parts[0];
280
281 ////////////////////////////////////////////////////
282 //SimProfile SimInfo = new SimProfile();
283 //SimInfo = SimInfo.LoadFromGrid(theUser.currentAgent.currentHandle, _config.GridServerURL, _config.GridSendKey, _config.GridRecvKey);
284 }
285 catch (Exception e)
286 {
287
288 }
289 }
290 }
291
292 // What time did the user login?
293 agent.loginTime = Util.UnixTimeSinceEpoch();
294 agent.logoutTime = 0;
295
296 // Current location
297 agent.regionID = new LLUUID(); // Fill in later
298 agent.currentRegion = new LLUUID(); // Fill in later
299
300 profile.currentAgent = agent;
301 }
302
303 /// <summary>
304 /// Saves a target agent to the database
305 /// </summary>
306 /// <param name="profile">The users profile</param>
307 /// <returns>Successful?</returns>
308 public bool CommitAgent(ref UserProfileData profile)
309 {
310 // Saves the agent to database
311 return true;
312 }
313
314 #endregion
315
316 /// <summary>
317 /// Checks a user against it's password hash
318 /// </summary>
319 /// <param name="profile">The users profile</param>
320 /// <param name="password">The supplied password</param>
321 /// <returns>Authenticated?</returns>
322 public virtual bool AuthenticateUser(ref UserProfileData profile, string password)
323 {
324 OpenSim.Framework.Console.MainLog.Instance.Verbose(
325 "Authenticating " + profile.username + " " + profile.surname);
326
327 password = password.Remove(0, 3); //remove $1$
328
329 string s = Util.Md5Hash(password + ":" + profile.passwordSalt);
330
331 return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase);
332 }
333
334 #region Xml Response
335
336 /// <summary>
337 ///
338 /// </summary>
339 /// <param name="firstname"></param>
340 /// <param name="lastname"></param>
341 /// <returns></returns>
342 public virtual UserProfileData GetTheUser(string firstname, string lastname)
343 {
344 return getUserProfile(firstname, lastname);
345 }
346
347 /// <summary>
348 ///
349 /// </summary>
350 /// <returns></returns>
351 public virtual string GetMessage()
352 {
353 return _config.DefaultStartupMsg;
354 }
355
356 /// <summary>
357 /// Customises the login response and fills in missing values.
358 /// </summary>
359 /// <param name="response">The existing response</param>
360 /// <param name="theUser">The user profile</param>
361 public virtual void CustomiseResponse(ref LoginResponse response, ref UserProfileData theUser)
362 {
363
364 }
365
366 /// <summary>
367 /// Main user login function
368 /// </summary>
369 /// <param name="request">The XMLRPC request</param>
370 /// <returns>The response to send</returns>
371 public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
372 {
373 XmlRpcResponse response = new XmlRpcResponse();
374 Hashtable requestData = (Hashtable)request.Params[0];
375
376 bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd"));
377 bool GoodLogin = false;
378 string firstname = "";
379 string lastname = "";
380 string passwd = "";
381
382 UserProfileData TheUser;
383 LoginResponse logResponse = new LoginResponse();
384
385 if (GoodXML)
386 {
387 firstname = (string)requestData["first"];
388 lastname = (string)requestData["last"];
389 passwd = (string)requestData["passwd"];
390
391 TheUser = GetTheUser(firstname, lastname);
392 if (TheUser == null)
393 return logResponse.CreateLoginFailedResponse();
394
395 GoodLogin = AuthenticateUser(ref TheUser, passwd);
396 }
397 else
398 {
399 return logResponse.CreateGridErrorResponse();
400 }
401
402 if (!GoodLogin)
403 {
404 return logResponse.CreateLoginFailedResponse();
405 }
406 else
407 {
408 // If we already have a session...
409 if (TheUser.currentAgent != null && TheUser.currentAgent.agentOnline)
410 {
411 // Reject the login
412 return logResponse.CreateAlreadyLoggedInResponse();
413 }
414 // Otherwise...
415 // Create a new agent session
416 CreateAgent(ref TheUser, request);
417
418 try
419 {
420
421 LLUUID AgentID = TheUser.UUID;
422
423 // Inventory Library Section
424 ArrayList AgentInventoryArray = new ArrayList();
425 Hashtable TempHash;
426
427 AgentInventory Library = new AgentInventory();
428 Library.CreateRootFolder(AgentID, true);
429
430 foreach (InventoryFolder InvFolder in Library.InventoryFolders.Values)
431 {
432 TempHash = new Hashtable();
433 TempHash["name"] = InvFolder.FolderName;
434 TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated();
435 TempHash["version"] = (Int32)InvFolder.Version;
436 TempHash["type_default"] = (Int32)InvFolder.DefaultType;
437 TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated();
438 AgentInventoryArray.Add(TempHash);
439 }
440
441 Hashtable InventoryRootHash = new Hashtable();
442 InventoryRootHash["folder_id"] = Library.InventoryRoot.FolderID.ToStringHyphenated();
443 ArrayList InventoryRoot = new ArrayList();
444 InventoryRoot.Add(InventoryRootHash);
445
446 // Circuit Code
447 uint circode = (uint)(Util.RandomClass.Next());
448
449 logResponse.Lastname = TheUser.surname;
450 logResponse.Firstname = TheUser.username;
451 logResponse.AgentID = AgentID.ToStringHyphenated();
452 logResponse.SessionID = TheUser.currentAgent.sessionID.ToStringHyphenated();
453 logResponse.SecureSessionID = TheUser.currentAgent.secureSessionID.ToStringHyphenated();
454 logResponse.InventoryRoot = InventoryRoot;
455 logResponse.InventorySkeleton = AgentInventoryArray;
456 logResponse.CircuitCode = (Int32)circode;
457 logResponse.RegionX = 0; //overwritten
458 logResponse.RegionY = 0; //overwritten
459 logResponse.Home = "!!null temporary value {home}!!"; // Overwritten
460 //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n";
461 logResponse.SimAddress = "127.0.0.1"; //overwritten
462 logResponse.SimPort = 0; //overwritten
463 logResponse.Message = this.GetMessage();
464
465 try
466 {
467 this.CustomiseResponse(ref logResponse, ref TheUser);
468 }
469 catch (Exception e)
470 {
471 System.Console.WriteLine(e.ToString());
472 return logResponse.CreateDeadRegionResponse();
473 }
474 CommitAgent(ref TheUser);
475
476 return logResponse.ToXmlRpcResponse();
477
478 }
479 catch (Exception E)
480 {
481 System.Console.WriteLine(E.ToString());
482 }
483 //}
484 }
485 return response;
486
487 }
488
489 #endregion
490
491 /// <summary>
492 /// Deletes an active agent session
493 /// </summary>
494 /// <param name="request">The request</param>
495 /// <param name="path">The path (eg /bork/narf/test)</param>
496 /// <param name="param">Parameters sent</param>
497 /// <returns>Success "OK" else error</returns>
498 public string RestDeleteUserSessionMethod(string request, string path, string param)
499 {
500 // TODO! Important!
501
502 return "OK";
503 }
504
505 /// <summary>
506 ///
507 /// </summary>
508 /// <param name="user"></param>
509 public void AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY)
510 {
511 UserProfileData user = new UserProfileData();
512 user.homeLocation = new LLVector3(128, 128, 100);
513 user.UUID = LLUUID.Random();
514 user.username = firstName;
515 user.surname = lastName;
516 user.passwordHash = pass;
517 user.passwordSalt = "";
518 user.created = Util.UnixTimeSinceEpoch();
519 user.homeLookAt = new LLVector3(100, 100, 100);
520 user.homeRegion = Util.UIntsToLong((regX * 256), (regY * 256));
521
522 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
523 {
524 try
525 {
526 plugin.Value.addNewUserProfile(user);
527
528 }
529 catch (Exception e)
530 {
531 OpenSim.Framework.Console.MainLog.Instance.Verbose("Unable to add user via " + plugin.Key + "(" + e.ToString() + ")");
532 }
533 }
534 }
535
536 /// <summary>
537 /// Returns an error message that the user could not be found in the database
538 /// </summary>
539 /// <returns>XML string consisting of a error element containing individual error(s)</returns>
540 public string CreateUnknownUserErrorResponse()
541 {
542 System.IO.StringWriter sw = new System.IO.StringWriter();
543 XmlTextWriter xw = new XmlTextWriter(sw);
544
545 // Header
546 xw.Formatting = Formatting.Indented;
547 xw.WriteStartDocument();
548 xw.WriteDocType("error", null, null, null);
549 xw.WriteComment("An error occured");
550 xw.WriteStartElement("error");
551
552 // User
553 xw.WriteElementString("unknownuser", "Unable to find a user with that name");
554
555 // Footer
556 xw.WriteEndElement();
557 xw.Flush();
558 xw.Close();
559
560 return sw.ToString();
561 }
562
563 /// <summary>
564 /// Converts a user profile to an XML element which can be returned
565 /// </summary>
566 /// <param name="profile">The user profile</param>
567 /// <returns>A string containing an XML Document of the user profile</returns>
568 public string ProfileToXml(UserProfileData profile)
569 {
570 System.IO.StringWriter sw = new System.IO.StringWriter();
571 XmlTextWriter xw = new XmlTextWriter(sw);
572
573 // Header
574 xw.Formatting = Formatting.Indented;
575 xw.WriteStartDocument();
576 xw.WriteDocType("userprofile", null, null, null);
577 xw.WriteComment("Found user profiles matching the request");
578 xw.WriteStartElement("users");
579
580 // User
581 xw.WriteStartElement("user");
582 // Account information
583 xw.WriteAttributeString("firstname", profile.username);
584 xw.WriteAttributeString("lastname", profile.surname);
585 xw.WriteAttributeString("uuid", profile.UUID.ToStringHyphenated());
586 // Server Information
587 xw.WriteAttributeString("server_inventory", profile.userInventoryURI);
588 xw.WriteAttributeString("server_asset", profile.userAssetURI);
589 // Profile Information
590 xw.WriteAttributeString("profile_about", profile.profileAboutText);
591 xw.WriteAttributeString("profile_firstlife_about", profile.profileFirstText);
592 xw.WriteAttributeString("profile_firstlife_image", profile.profileFirstImage.ToStringHyphenated());
593 xw.WriteAttributeString("profile_can_do", profile.profileCanDoMask.ToString());
594 xw.WriteAttributeString("profile_want_do", profile.profileWantDoMask.ToString());
595 xw.WriteAttributeString("profile_image", profile.profileImage.ToStringHyphenated());
596 xw.WriteAttributeString("profile_created",profile.created.ToString());
597 xw.WriteAttributeString("profile_lastlogin",profile.lastLogin.ToString());
598 // Home region information
599 xw.WriteAttributeString("home_coordinates", profile.homeLocation.ToString());
600 xw.WriteAttributeString("home_region", profile.homeRegion.ToString());
601 xw.WriteAttributeString("home_look", profile.homeLookAt.ToString());
602
603 xw.WriteEndElement();
604
605 // Footer
606 xw.WriteEndElement();
607 xw.Flush();
608 xw.Close();
609
610 return sw.ToString();
611 }
612
613 #region REST Methods
614 //should most likely move out of here and into the grid's userserver sub class
615 public string RestGetUserMethodName(string request, string path, string param)
616 {
617 UserProfileData userProfile = getUserProfile(param.Trim());
618
619 if (userProfile == null)
620 {
621 return CreateUnknownUserErrorResponse();
622 }
623
624 return ProfileToXml(userProfile);
625 }
626
627 public string RestGetUserMethodUUID(string request, string path, string param)
628 {
629 UserProfileData userProfile = getUserProfile(new LLUUID(param));
630
631 if (userProfile == null)
632 {
633 return CreateUnknownUserErrorResponse();
634 }
635
636 return ProfileToXml(userProfile);
637 }
638 #endregion
639
640 }
641}
diff --git a/OpenSim/Grid/AssetServer/AssetHttpServer.cs b/OpenSim/Grid/AssetServer/AssetHttpServer.cs
new file mode 100644
index 0000000..6fc6bf8
--- /dev/null
+++ b/OpenSim/Grid/AssetServer/AssetHttpServer.cs
@@ -0,0 +1,130 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Net;
31using System.Text;
32using System.Text.RegularExpressions;
33using System.Threading;
34//using OpenSim.CAPS;
35using Nwc.XmlRpc;
36using System.Collections;
37using OpenSim.Framework.Console;
38using OpenSim.Servers;
39
40namespace OpenGridServices.AssetServer
41{
42 /// <summary>
43 /// An HTTP server for sending assets
44 /// </summary>
45 public class AssetHttpServer :BaseHttpServer
46 {
47 /// <summary>
48 /// Creates the new asset server
49 /// </summary>
50 /// <param name="port">Port to initalise on</param>
51 public AssetHttpServer(int port)
52 : base(port)
53 {
54 }
55
56 /// <summary>
57 /// Handles an HTTP request
58 /// </summary>
59 /// <param name="stateinfo">HTTP State Info</param>
60 public override void HandleRequest(Object stateinfo)
61 {
62 try
63 {
64 HttpListenerContext context = (HttpListenerContext)stateinfo;
65
66 HttpListenerRequest request = context.Request;
67 HttpListenerResponse response = context.Response;
68
69 response.KeepAlive = false;
70 response.SendChunked = false;
71
72 System.IO.Stream body = request.InputStream;
73 System.Text.Encoding encoding = System.Text.Encoding.UTF8;
74 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
75
76 string requestBody = reader.ReadToEnd();
77 body.Close();
78 reader.Close();
79
80 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType);
81 //Console.WriteLine(requestBody);
82
83 string responseString = "";
84 switch (request.ContentType)
85 {
86 case "text/xml":
87 // must be XML-RPC, so pass to the XML-RPC parser
88
89 responseString = ParseXMLRPC(requestBody);
90 responseString = Regex.Replace(responseString, "utf-16", "utf-8");
91
92 response.AddHeader("Content-type", "text/xml");
93 break;
94
95 case "application/xml":
96 // probably LLSD we hope, otherwise it should be ignored by the parser
97 responseString = ParseLLSDXML(requestBody);
98 response.AddHeader("Content-type", "application/xml");
99 break;
100
101 case "application/x-www-form-urlencoded":
102 // a form data POST so send to the REST parser
103 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
104 response.AddHeader("Content-type", "text/plain");
105 break;
106
107 case null:
108 // must be REST or invalid crap, so pass to the REST parser
109 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
110 response.AddHeader("Content-type", "text/plain");
111 break;
112
113 }
114
115 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
116 byte[] buffer = Windows1252Encoding.GetBytes(responseString);
117 System.IO.Stream output = response.OutputStream;
118 response.SendChunked = false;
119 response.ContentLength64 = buffer.Length;
120 output.Write(buffer, 0, buffer.Length);
121 output.Close();
122 }
123 catch (Exception e)
124 {
125 Console.WriteLine(e.ToString());
126 }
127 }
128
129 }
130}
diff --git a/OpenSim/Grid/AssetServer/Main.cs b/OpenSim/Grid/AssetServer/Main.cs
new file mode 100644
index 0000000..96c9dba
--- /dev/null
+++ b/OpenSim/Grid/AssetServer/Main.cs
@@ -0,0 +1,337 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.IO;
31using System.Text;
32using System.Timers;
33using System.Net;
34using System.Reflection;
35using System.Threading;
36using libsecondlife;
37using OpenSim.Framework;
38using OpenSim.Framework.Sims;
39using OpenSim.Framework.Console;
40using OpenSim.Framework.Types;
41using OpenSim.Framework.Interfaces;
42using OpenSim.Framework.Utilities;
43using OpenSim.Servers;
44using Db4objects.Db4o;
45using Db4objects.Db4o.Query;
46
47namespace OpenGridServices.AssetServer
48{
49 /// <summary>
50 /// An asset server
51 /// </summary>
52 public class OpenAsset_Main : conscmd_callback
53 {
54 private IObjectContainer db;
55
56 public static OpenAsset_Main assetserver;
57
58 private LogBase m_console;
59
60 [STAThread]
61 public static void Main(string[] args)
62 {
63 Console.WriteLine("Starting...\n");
64
65 assetserver = new OpenAsset_Main();
66 assetserver.Startup();
67
68 assetserver.Work();
69 }
70
71 private void Work()
72 {
73 m_console.Notice("Enter help for a list of commands");
74
75 while (true)
76 {
77 m_console.MainLogPrompt();
78 }
79 }
80
81 private OpenAsset_Main()
82 {
83 m_console = new LogBase("opengrid-AssetServer-console.log", "OpenAsset", this, false);
84 OpenSim.Framework.Console.MainLog.Instance = m_console;
85 }
86
87 public void Startup()
88 {
89 m_console.Verbose( "Main.cs:Startup() - Setting up asset DB");
90 setupDB();
91
92 m_console.Verbose( "Main.cs:Startup() - Starting HTTP process");
93 AssetHttpServer httpServer = new AssetHttpServer(8003);
94
95
96 httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
97 httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
98
99 httpServer.Start();
100
101 }
102
103 public string assetPostMethod(string requestBody, string path, string param)
104 {
105 AssetBase asset = new AssetBase();
106 asset.Name = "";
107 asset.FullID = new LLUUID(param);
108 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
109 byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
110 asset.Data = buffer;
111 AssetStorage store = new AssetStorage();
112 store.Data = asset.Data;
113 store.Name = asset.Name;
114 store.UUID = asset.FullID;
115 db.Set(store);
116 db.Commit();
117 return "";
118 }
119
120 public string assetGetMethod(string request, string path, string param)
121 {
122 Console.WriteLine("got a request " + param);
123 byte[] assetdata = getAssetData(new LLUUID(param), false);
124 if (assetdata != null)
125 {
126 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
127 string ret = Windows1252Encoding.GetString(assetdata);
128 //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
129
130 return ret;
131
132 }
133 else
134 {
135 return "";
136 }
137
138 }
139
140 public byte[] getAssetData(LLUUID assetID, bool isTexture)
141 {
142 bool found = false;
143 AssetStorage foundAsset = null;
144
145 IObjectSet result = db.Get(new AssetStorage(assetID));
146 if (result.Count > 0)
147 {
148 foundAsset = (AssetStorage)result.Next();
149 found = true;
150 }
151
152 if (found)
153 {
154 return foundAsset.Data;
155 }
156 else
157 {
158 return null;
159 }
160 }
161
162 public void setupDB()
163 {
164 bool yapfile = System.IO.File.Exists("assets.yap");
165 try
166 {
167 db = Db4oFactory.OpenFile("assets.yap");
168 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Main.cs:setupDB() - creation");
169 }
170 catch (Exception e)
171 {
172 db.Close();
173 OpenSim.Framework.Console.MainLog.Instance.Warn("Main.cs:setupDB() - Exception occured");
174 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
175 }
176 if (!yapfile)
177 {
178 this.LoadDB();
179 }
180 }
181
182 public void LoadDB()
183 {
184 try
185 {
186
187 Console.WriteLine("setting up Asset database");
188
189 AssetBase Image = new AssetBase();
190 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
191 Image.Name = "Bricks";
192 this.LoadAsset(Image, true, "bricks.jp2");
193 AssetStorage store = new AssetStorage();
194 store.Data = Image.Data;
195 store.Name = Image.Name;
196 store.UUID = Image.FullID;
197 db.Set(store);
198 db.Commit();
199
200 Image = new AssetBase();
201 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
202 Image.Name = "Plywood";
203 this.LoadAsset(Image, true, "plywood.jp2");
204 store = new AssetStorage();
205 store.Data = Image.Data;
206 store.Name = Image.Name;
207 store.UUID = Image.FullID;
208 db.Set(store);
209 db.Commit();
210
211 Image = new AssetBase();
212 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
213 Image.Name = "Rocks";
214 this.LoadAsset(Image, true, "rocks.jp2");
215 store = new AssetStorage();
216 store.Data = Image.Data;
217 store.Name = Image.Name;
218 store.UUID = Image.FullID;
219 db.Set(store);
220 db.Commit();
221
222 Image = new AssetBase();
223 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
224 Image.Name = "Granite";
225 this.LoadAsset(Image, true, "granite.jp2");
226 store = new AssetStorage();
227 store.Data = Image.Data;
228 store.Name = Image.Name;
229 store.UUID = Image.FullID;
230 db.Set(store);
231 db.Commit();
232
233 Image = new AssetBase();
234 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
235 Image.Name = "Hardwood";
236 this.LoadAsset(Image, true, "hardwood.jp2");
237 store = new AssetStorage();
238 store.Data = Image.Data;
239 store.Name = Image.Name;
240 store.UUID = Image.FullID;
241 db.Set(store);
242 db.Commit();
243
244 Image = new AssetBase();
245 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
246 Image.Name = "Prim Base Texture";
247 this.LoadAsset(Image, true, "plywood.jp2");
248 store = new AssetStorage();
249 store.Data = Image.Data;
250 store.Name = Image.Name;
251 store.UUID = Image.FullID;
252 db.Set(store);
253 db.Commit();
254
255 Image = new AssetBase();
256 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
257 Image.Name = "Shape";
258 this.LoadAsset(Image, false, "base_shape.dat");
259 store = new AssetStorage();
260 store.Data = Image.Data;
261 store.Name = Image.Name;
262 store.UUID = Image.FullID;
263 db.Set(store);
264 db.Commit();
265 }
266 catch (Exception e)
267 {
268 Console.WriteLine(e.Message);
269 }
270 }
271
272 private void LoadAsset(AssetBase info, bool image, string filename)
273 {
274
275
276 string dataPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder;
277 string fileName = Path.Combine(dataPath, filename);
278 FileInfo fInfo = new FileInfo(fileName);
279 long numBytes = fInfo.Length;
280 FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
281 byte[] idata = new byte[numBytes];
282 BinaryReader br = new BinaryReader(fStream);
283 idata = br.ReadBytes((int)numBytes);
284 br.Close();
285 fStream.Close();
286 info.Data = idata;
287 //info.loaded=true;
288 }
289
290 /*private GridConfig LoadConfigDll(string dllName)
291 {
292 Assembly pluginAssembly = Assembly.LoadFrom(dllName);
293 GridConfig config = null;
294
295 foreach (Type pluginType in pluginAssembly.GetTypes())
296 {
297 if (pluginType.IsPublic)
298 {
299 if (!pluginType.IsAbstract)
300 {
301 Type typeInterface = pluginType.GetInterface("IGridConfig", true);
302
303 if (typeInterface != null)
304 {
305 IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
306 config = plug.GetConfigObject();
307 break;
308 }
309
310 typeInterface = null;
311 }
312 }
313 }
314 pluginAssembly = null;
315 return config;
316 }*/
317
318 public void RunCmd(string cmd, string[] cmdparams)
319 {
320 switch (cmd)
321 {
322 case "help":
323 m_console.Notice("shutdown - shutdown this asset server (USE CAUTION!)");
324 break;
325
326 case "shutdown":
327 m_console.Close();
328 Environment.Exit(0);
329 break;
330 }
331 }
332
333 public void Show(string ShowWhat)
334 {
335 }
336 }
337}
diff --git a/OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj b/OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj
new file mode 100644
index 0000000..caebca3
--- /dev/null
+++ b/OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj
@@ -0,0 +1,118 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{E5F1A03B-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Grid.AssetServer</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Exe</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Grid.AssetServer</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework" >
70 <HintPath>OpenSim.Framework.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.Framework.Console" >
74 <HintPath>OpenSim.Framework.Console.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="OpenSim.Framework.Servers" >
78 <HintPath>OpenSim.Framework.Servers.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="System" >
82 <HintPath>System.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="System.Data" >
86 <HintPath>System.Data.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 <Reference Include="System.Xml" >
90 <HintPath>System.Xml.dll</HintPath>
91 <Private>False</Private>
92 </Reference>
93 <Reference Include="XMLRPC.dll" >
94 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
95 <Private>False</Private>
96 </Reference>
97 </ItemGroup>
98 <ItemGroup>
99 </ItemGroup>
100 <ItemGroup>
101 <Compile Include="AssetHttpServer.cs">
102 <SubType>Code</SubType>
103 </Compile>
104 <Compile Include="Main.cs">
105 <SubType>Code</SubType>
106 </Compile>
107 <Compile Include="Properties\AssemblyInfo.cs">
108 <SubType>Code</SubType>
109 </Compile>
110 </ItemGroup>
111 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
112 <PropertyGroup>
113 <PreBuildEvent>
114 </PreBuildEvent>
115 <PostBuildEvent>
116 </PostBuildEvent>
117 </PropertyGroup>
118</Project>
diff --git a/OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj.user b/OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Grid/AssetServer/OpenSim.Grid.AssetServer.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs b/OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..f9a18a8
--- /dev/null
+++ b/OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs
@@ -0,0 +1,60 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// General Information about an assembly is controlled through the following
33// set of attributes. Change these attribute values to modify the information
34// associated with an assembly.
35[assembly: AssemblyTitle("OGS-AssetServer")]
36[assembly: AssemblyDescription("")]
37[assembly: AssemblyConfiguration("")]
38[assembly: AssemblyCompany("")]
39[assembly: AssemblyProduct("OGS-AssetServer")]
40[assembly: AssemblyCopyright("Copyright © 2007")]
41[assembly: AssemblyTrademark("")]
42[assembly: AssemblyCulture("")]
43
44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type.
47[assembly: ComVisible(false)]
48
49// The following GUID is for the ID of the typelib if this project is exposed to COM
50[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
51
52// Version information for an assembly consists of the following four values:
53//
54// Major Version
55// Minor Version
56// Build Number
57// Revision
58//
59[assembly: AssemblyVersion("1.0.0.0")]
60[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Grid/Framework.Manager/GridManagementAgent.cs b/OpenSim/Grid/Framework.Manager/GridManagementAgent.cs
new file mode 100644
index 0000000..dfc572a
--- /dev/null
+++ b/OpenSim/Grid/Framework.Manager/GridManagementAgent.cs
@@ -0,0 +1,140 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using Nwc.XmlRpc;
29using OpenSim.Framework;
30using OpenSim.Servers;
31using System.Collections;
32using System.Collections.Generic;
33using libsecondlife;
34
35namespace OpenGrid.Framework.Manager
36{
37 /// <summary>
38 /// Used to pass messages to the gridserver
39 /// </summary>
40 /// <param name="param">Pass this argument</param>
41 public delegate void GridManagerCallback(string param);
42
43 /// <summary>
44 /// Serverside listener for grid commands
45 /// </summary>
46 public class GridManagementAgent
47 {
48 /// <summary>
49 /// Passes grid server messages
50 /// </summary>
51 private GridManagerCallback thecallback;
52
53 /// <summary>
54 /// Security keys
55 /// </summary>
56 private string sendkey;
57 private string recvkey;
58
59 /// <summary>
60 /// Our component type
61 /// </summary>
62 private string component_type;
63
64 /// <summary>
65 /// List of active sessions
66 /// </summary>
67 private static ArrayList Sessions;
68
69 /// <summary>
70 /// Initialises a new GridManagementAgent
71 /// </summary>
72 /// <param name="app_httpd">HTTP Daemon for this server</param>
73 /// <param name="component_type">What component type are we?</param>
74 /// <param name="sendkey">Security send key</param>
75 /// <param name="recvkey">Security recieve key</param>
76 /// <param name="thecallback">Message callback</param>
77 public GridManagementAgent(BaseHttpServer app_httpd, string component_type, string sendkey, string recvkey, GridManagerCallback thecallback)
78 {
79 this.sendkey = sendkey;
80 this.recvkey = recvkey;
81 this.component_type = component_type;
82 this.thecallback = thecallback;
83 Sessions = new ArrayList();
84
85 app_httpd.AddXmlRPCHandler("manager_login", XmlRpcLoginMethod);
86
87 switch (component_type)
88 {
89 case "gridserver":
90 GridServerManager.sendkey = this.sendkey;
91 GridServerManager.recvkey = this.recvkey;
92 GridServerManager.thecallback = thecallback;
93 app_httpd.AddXmlRPCHandler("shutdown", GridServerManager.XmlRpcShutdownMethod);
94 break;
95 }
96 }
97
98 /// <summary>
99 /// Checks if a session exists
100 /// </summary>
101 /// <param name="sessionID">The session ID</param>
102 /// <returns>Exists?</returns>
103 public static bool SessionExists(LLUUID sessionID)
104 {
105 return Sessions.Contains(sessionID);
106 }
107
108 /// <summary>
109 /// Logs a new session to the grid manager
110 /// </summary>
111 /// <param name="request">the XMLRPC request</param>
112 /// <returns>An XMLRPC reply</returns>
113 public static XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
114 {
115 XmlRpcResponse response = new XmlRpcResponse();
116 Hashtable requestData = (Hashtable)request.Params[0];
117 Hashtable responseData = new Hashtable();
118
119 // TODO: Switch this over to using OpenGrid.Framework.Data
120 if (requestData["username"].Equals("admin") && requestData["password"].Equals("supersecret"))
121 {
122 response.IsFault = false;
123 LLUUID new_session = LLUUID.Random();
124 Sessions.Add(new_session);
125 responseData["session_id"] = new_session.ToString();
126 responseData["msg"] = "Login OK";
127 }
128 else
129 {
130 response.IsFault = true;
131 responseData["error"] = "Invalid username or password";
132 }
133
134 response.Value = responseData;
135 return response;
136
137 }
138
139 }
140}
diff --git a/OpenSim/Grid/Framework.Manager/GridServerManager.cs b/OpenSim/Grid/Framework.Manager/GridServerManager.cs
new file mode 100644
index 0000000..e276556
--- /dev/null
+++ b/OpenSim/Grid/Framework.Manager/GridServerManager.cs
@@ -0,0 +1,94 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections;
31using System.Collections.Generic;
32using Nwc.XmlRpc;
33using System.Threading;
34using libsecondlife;
35
36namespace OpenGrid.Framework.Manager {
37
38 /// <summary>
39 /// A remote management system for the grid server
40 /// </summary>
41 public class GridServerManager
42 {
43 /// <summary>
44 /// Triggers events from the grid manager
45 /// </summary>
46 public static GridManagerCallback thecallback;
47
48 /// <summary>
49 /// Security keys
50 /// </summary>
51 public static string sendkey;
52 public static string recvkey;
53
54 /// <summary>
55 /// Disconnects the grid server and shuts it down
56 /// </summary>
57 /// <param name="request">XmlRpc Request</param>
58 /// <returns>An XmlRpc response containing either a "msg" or an "error"</returns>
59 public static XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request)
60 {
61 XmlRpcResponse response = new XmlRpcResponse();
62 Hashtable requestData = (Hashtable)request.Params[0];
63 Hashtable responseData = new Hashtable();
64
65 if(requestData.ContainsKey("session_id")) {
66 if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) {
67 responseData["msg"]="Shutdown command accepted";
68 (new Thread(new ThreadStart(ShutdownServer))).Start();
69 } else {
70 response.IsFault=true;
71 responseData["error"]="bad session ID";
72 }
73 } else {
74 response.IsFault=true;
75 responseData["error"]="no session ID";
76 }
77
78 response.Value = responseData;
79 return response;
80 }
81
82 /// <summary>
83 /// Shuts down the grid server
84 /// </summary>
85 public static void ShutdownServer()
86 {
87 Console.WriteLine("Shutting down the grid server - recieved a grid manager request");
88 Console.WriteLine("Terminating in three seconds...");
89 Thread.Sleep(3000);
90 thecallback("shutdown");
91 }
92 }
93}
94
diff --git a/OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj b/OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj
new file mode 100644
index 0000000..9a98ff4
--- /dev/null
+++ b/OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj
@@ -0,0 +1,99 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{4B7BFD1C-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Grid.Framework.Manager</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Grid.Framework.Manager</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="OpenSim.Framework" >
66 <HintPath>OpenSim.Framework.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework.Servers" >
70 <HintPath>OpenSim.Framework.Servers.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System" >
74 <HintPath>System.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="XMLRPC.dll" >
78 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 </ItemGroup>
82 <ItemGroup>
83 </ItemGroup>
84 <ItemGroup>
85 <Compile Include="GridManagementAgent.cs">
86 <SubType>Code</SubType>
87 </Compile>
88 <Compile Include="GridServerManager.cs">
89 <SubType>Code</SubType>
90 </Compile>
91 </ItemGroup>
92 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
93 <PropertyGroup>
94 <PreBuildEvent>
95 </PreBuildEvent>
96 <PostBuildEvent>
97 </PostBuildEvent>
98 </PropertyGroup>
99</Project>
diff --git a/OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj.user b/OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Grid/Framework.Manager/OpenSim.Grid.Framework.Manager.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Grid/GridServer.Config/AssemblyInfo.cs b/OpenSim/Grid/GridServer.Config/AssemblyInfo.cs
new file mode 100644
index 0000000..c9701d6
--- /dev/null
+++ b/OpenSim/Grid/GridServer.Config/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("GridConfig")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("GridConfig")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Grid/GridServer.Config/DbGridConfig.cs b/OpenSim/Grid/GridServer.Config/DbGridConfig.cs
new file mode 100644
index 0000000..2218004
--- /dev/null
+++ b/OpenSim/Grid/GridServer.Config/DbGridConfig.cs
@@ -0,0 +1,161 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using OpenSim.Framework.Console;
31using OpenSim.Framework.Interfaces;
32using Db4objects.Db4o;
33
34namespace OpenGrid.Config.GridConfigDb4o
35{
36 /// <summary>
37 /// A grid configuration interface for returning the DB4o Config Provider
38 /// </summary>
39 public class Db40ConfigPlugin: IGridConfig
40 {
41 /// <summary>
42 /// Loads and returns a configuration objeect
43 /// </summary>
44 /// <returns>A grid configuration object</returns>
45 public GridConfig GetConfigObject()
46 {
47 OpenSim.Framework.Console.MainLog.Instance.Verbose("Loading Db40Config dll");
48 return ( new DbGridConfig());
49 }
50 }
51
52 /// <summary>
53 /// A DB4o based Gridserver configuration object
54 /// </summary>
55 public class DbGridConfig : GridConfig
56 {
57 /// <summary>
58 /// The DB4o Database
59 /// </summary>
60 private IObjectContainer db;
61
62 /// <summary>
63 /// User configuration for the Grid Config interfaces
64 /// </summary>
65 public void LoadDefaults() {
66 OpenSim.Framework.Console.MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings");
67
68 // About the grid options
69 this.GridOwner = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid owner", "OGS development team");
70
71 // Asset Options
72 this.DefaultAssetServer = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default asset server","http://127.0.0.1:8003/");
73 this.AssetSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to asset server","null");
74 this.AssetRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from asset server","null");
75
76 // User Server Options
77 this.DefaultUserServer = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default user server","http://127.0.0.1:8002/");
78 this.UserSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to user server","null");
79 this.UserRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from user server","null");
80
81 // Region Server Options
82 this.SimSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to sims","null");
83 this.SimRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from sims","null");
84 }
85
86 /// <summary>
87 /// Initialises a new configuration object
88 /// </summary>
89 public override void InitConfig() {
90 try {
91 // Perform Db4o initialisation
92 db = Db4oFactory.OpenFile("opengrid.yap");
93
94 // Locate the grid configuration object
95 IObjectSet result = db.Get(typeof(DbGridConfig));
96 // Found?
97 if(result.Count==1) {
98 OpenSim.Framework.Console.MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading");
99 foreach (DbGridConfig cfg in result) {
100 // Import each setting into this class
101 // Grid Settings
102 this.GridOwner=cfg.GridOwner;
103 // Asset Settings
104 this.DefaultAssetServer=cfg.DefaultAssetServer;
105 this.AssetSendKey=cfg.AssetSendKey;
106 this.AssetRecvKey=cfg.AssetRecvKey;
107 // User Settings
108 this.DefaultUserServer=cfg.DefaultUserServer;
109 this.UserSendKey=cfg.UserSendKey;
110 this.UserRecvKey=cfg.UserRecvKey;
111 // Region Settings
112 this.SimSendKey=cfg.SimSendKey;
113 this.SimRecvKey=cfg.SimRecvKey;
114 }
115 // Create a new configuration object from this class
116 } else {
117 OpenSim.Framework.Console.MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults");
118
119 // Load default settings into this class
120 LoadDefaults();
121
122 // Saves to the database file...
123 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Writing out default settings to local database");
124 db.Set(this);
125
126 // Closes file locks
127 db.Close();
128 }
129 } catch(Exception e) {
130 OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
131 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
132 }
133
134 // Grid Settings
135 OpenSim.Framework.Console.MainLog.Instance.Verbose("Grid settings loaded:");
136 OpenSim.Framework.Console.MainLog.Instance.Verbose("Grid owner: " + this.GridOwner);
137
138 // Asset Settings
139 OpenSim.Framework.Console.MainLog.Instance.Verbose("Default asset server: " + this.DefaultAssetServer);
140 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to send to asset server: " + this.AssetSendKey);
141 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to expect from asset server: " + this.AssetRecvKey);
142
143 // User Settings
144 OpenSim.Framework.Console.MainLog.Instance.Verbose("Default user server: " + this.DefaultUserServer);
145 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to send to user server: " + this.UserSendKey);
146 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to expect from user server: " + this.UserRecvKey);
147
148 // Region Settings
149 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to send to sims: " + this.SimSendKey);
150 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to expect from sims: " + this.SimRecvKey);
151 }
152
153 /// <summary>
154 /// Closes down the database and releases filesystem locks
155 /// </summary>
156 public void Shutdown() {
157 db.Close();
158 }
159 }
160
161}
diff --git a/OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj b/OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj
new file mode 100644
index 0000000..24e845c
--- /dev/null
+++ b/OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj
@@ -0,0 +1,107 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{1442B635-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Grid.GridServer.Config</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Grid.GridServer.Config</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework" >
70 <HintPath>OpenSim.Framework.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.Framework.Console" >
74 <HintPath>OpenSim.Framework.Console.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System" >
78 <HintPath>System.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="System.Data.dll" >
82 <HintPath>..\..\..\bin\System.Data.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="System.Xml" >
86 <HintPath>System.Xml.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 </ItemGroup>
90 <ItemGroup>
91 </ItemGroup>
92 <ItemGroup>
93 <Compile Include="AssemblyInfo.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="DbGridConfig.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 </ItemGroup>
100 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
101 <PropertyGroup>
102 <PreBuildEvent>
103 </PreBuildEvent>
104 <PostBuildEvent>
105 </PostBuildEvent>
106 </PropertyGroup>
107</Project>
diff --git a/OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj.user b/OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Grid/GridServer.Config/OpenSim.Grid.GridServer.Config.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs
new file mode 100644
index 0000000..bf80652
--- /dev/null
+++ b/OpenSim/Grid/GridServer/GridManager.cs
@@ -0,0 +1,599 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Text;
32using System.Reflection;
33using OpenGrid.Framework.Data;
34using OpenSim.Framework.Utilities;
35using OpenSim.Framework.Console;
36using OpenSim.Framework.Sims;
37using libsecondlife;
38using Nwc.XmlRpc;
39using System.Xml;
40
41namespace OpenGridServices.GridServer
42{
43 class GridManager
44 {
45 Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>();
46 Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>();
47
48 public OpenSim.Framework.Interfaces.GridConfig config;
49
50 /// <summary>
51 /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded.
52 /// </summary>
53 /// <param name="FileName">The filename to the grid server plugin DLL</param>
54 public void AddPlugin(string FileName)
55 {
56 OpenSim.Framework.Console.MainLog.Instance.Verbose("Storage: Attempting to load " + FileName);
57 Assembly pluginAssembly = Assembly.LoadFrom(FileName);
58
59 OpenSim.Framework.Console.MainLog.Instance.Verbose("Storage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
60 foreach (Type pluginType in pluginAssembly.GetTypes())
61 {
62 if (!pluginType.IsAbstract)
63 {
64 // Regions go here
65 Type typeInterface = pluginType.GetInterface("IGridData", true);
66
67 if (typeInterface != null)
68 {
69 IGridData plug = (IGridData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
70 plug.Initialise();
71 this._plugins.Add(plug.getName(), plug);
72 OpenSim.Framework.Console.MainLog.Instance.Verbose("Storage: Added IGridData Interface");
73 }
74
75 typeInterface = null;
76
77 // Logs go here
78 typeInterface = pluginType.GetInterface("ILogData", true);
79
80 if (typeInterface != null)
81 {
82 ILogData plug = (ILogData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
83 plug.Initialise();
84 this._logplugins.Add(plug.getName(), plug);
85 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Storage: Added ILogData Interface");
86 }
87
88 typeInterface = null;
89 }
90 }
91
92 pluginAssembly = null;
93 }
94
95 /// <summary>
96 /// Logs a piece of information to the database
97 /// </summary>
98 /// <param name="target">What you were operating on (in grid server, this will likely be the region UUIDs)</param>
99 /// <param name="method">Which method is being called?</param>
100 /// <param name="args">What arguments are being passed?</param>
101 /// <param name="priority">How high priority is this? 1 = Max, 6 = Verbose</param>
102 /// <param name="message">The message to log</param>
103 private void logToDB(string target, string method, string args, int priority, string message)
104 {
105 foreach (KeyValuePair<string, ILogData> kvp in _logplugins)
106 {
107 try
108 {
109 kvp.Value.saveLog("Gridserver", target, method, args, priority, message);
110 }
111 catch (Exception e)
112 {
113 OpenSim.Framework.Console.MainLog.Instance.Warn("Storage: unable to write log via " + kvp.Key);
114 }
115 }
116 }
117
118 /// <summary>
119 /// Returns a region by argument
120 /// </summary>
121 /// <param name="uuid">A UUID key of the region to return</param>
122 /// <returns>A SimProfileData for the region</returns>
123 public SimProfileData getRegion(libsecondlife.LLUUID uuid)
124 {
125 foreach(KeyValuePair<string,IGridData> kvp in _plugins) {
126 try
127 {
128 return kvp.Value.GetProfileByLLUUID(uuid);
129 }
130 catch (Exception e)
131 {
132 OpenSim.Framework.Console.MainLog.Instance.Warn("Storage: Unable to find region " + uuid.ToStringHyphenated() + " via " + kvp.Key);
133 }
134 }
135 return null;
136 }
137
138 /// <summary>
139 /// Returns a region by argument
140 /// </summary>
141 /// <param name="uuid">A regionHandle of the region to return</param>
142 /// <returns>A SimProfileData for the region</returns>
143 public SimProfileData getRegion(ulong handle)
144 {
145 foreach (KeyValuePair<string, IGridData> kvp in _plugins)
146 {
147 try
148 {
149 return kvp.Value.GetProfileByHandle(handle);
150 }
151 catch (Exception e)
152 {
153 OpenSim.Framework.Console.MainLog.Instance.Warn("Storage: Unable to find region " + handle.ToString() + " via " + kvp.Key);
154 }
155 }
156 return null;
157 }
158
159 public Dictionary<ulong, SimProfileData> getRegions(uint xmin, uint ymin, uint xmax, uint ymax)
160 {
161 Dictionary<ulong, SimProfileData> regions = new Dictionary<ulong, SimProfileData>();
162
163 SimProfileData[] neighbours;
164
165 foreach (KeyValuePair<string, IGridData> kvp in _plugins)
166 {
167 try
168 {
169 neighbours = kvp.Value.GetProfilesInRange(xmin, ymin, xmax, ymax);
170 foreach (SimProfileData neighbour in neighbours)
171 {
172 regions[neighbour.regionHandle] = neighbour;
173 }
174 }
175 catch (Exception e)
176 {
177 OpenSim.Framework.Console.MainLog.Instance.Warn("Storage: Unable to query regionblock via " + kvp.Key);
178 }
179 }
180
181 return regions;
182 }
183
184 /// <summary>
185 /// Returns a XML String containing a list of the neighbouring regions
186 /// </summary>
187 /// <param name="reqhandle">The regionhandle for the center sim</param>
188 /// <returns>An XML string containing neighbour entities</returns>
189 public string GetXMLNeighbours(ulong reqhandle)
190 {
191 string response = "";
192 SimProfileData central_region = getRegion(reqhandle);
193 SimProfileData neighbour;
194 for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++)
195 {
196 if (getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256)) != null)
197 {
198 neighbour = getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256));
199 response += "<neighbour>";
200 response += "<sim_ip>" + neighbour.serverIP + "</sim_ip>";
201 response += "<sim_port>" + neighbour.serverPort.ToString() + "</sim_port>";
202 response += "<locx>" + neighbour.regionLocX.ToString() + "</locx>";
203 response += "<locy>" + neighbour.regionLocY.ToString() + "</locy>";
204 response += "<regionhandle>" + neighbour.regionHandle.ToString() + "</regionhandle>";
205 response += "</neighbour>";
206
207 }
208 }
209 return response;
210 }
211
212 /// <summary>
213 /// Performed when a region connects to the grid server initially.
214 /// </summary>
215 /// <param name="request">The XMLRPC Request</param>
216 /// <returns>Startup parameters</returns>
217 public XmlRpcResponse XmlRpcLoginToSimulatorMethod(XmlRpcRequest request)
218 {
219 XmlRpcResponse response = new XmlRpcResponse();
220 Hashtable responseData = new Hashtable();
221 response.Value = responseData;
222
223 SimProfileData TheSim = null;
224 Hashtable requestData = (Hashtable)request.Params[0];
225
226 if (requestData.ContainsKey("UUID"))
227 {
228 TheSim = getRegion(new LLUUID((string)requestData["UUID"]));
229 logToDB((new LLUUID((string)requestData["UUID"])).ToStringHyphenated(),"XmlRpcLoginToSimulatorMethod","", 5,"Region attempting login with UUID.");
230 }
231 else if (requestData.ContainsKey("region_handle"))
232 {
233 TheSim = getRegion((ulong)Convert.ToUInt64(requestData["region_handle"]));
234 logToDB((string)requestData["region_handle"], "XmlRpcLoginToSimulatorMethod", "", 5, "Region attempting login with regionHandle.");
235 }
236 else
237 {
238 responseData["error"] = "No UUID or region_handle passed to grid server - unable to connect you";
239 return response;
240 }
241
242 if (TheSim == null)
243 {
244 responseData["error"] = "sim not found";
245 return response;
246 }
247 else
248 {
249
250 ArrayList SimNeighboursData = new ArrayList();
251
252 SimProfileData neighbour;
253 Hashtable NeighbourBlock;
254
255 bool fastMode = false; // Only compatible with MySQL right now
256
257 if (fastMode)
258 {
259 Dictionary<ulong, SimProfileData> neighbours = getRegions(TheSim.regionLocX - 1, TheSim.regionLocY - 1, TheSim.regionLocX + 1, TheSim.regionLocY + 1);
260
261 foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours)
262 {
263 NeighbourBlock = new Hashtable();
264 NeighbourBlock["sim_ip"] = aSim.Value.serverIP.ToString();
265 NeighbourBlock["sim_port"] = aSim.Value.serverPort.ToString();
266 NeighbourBlock["region_locx"] = aSim.Value.regionLocX.ToString();
267 NeighbourBlock["region_locy"] = aSim.Value.regionLocY.ToString();
268 NeighbourBlock["UUID"] = aSim.Value.UUID.ToString();
269
270 if (aSim.Value.UUID != TheSim.UUID)
271 SimNeighboursData.Add(NeighbourBlock);
272 }
273 }
274 else
275 {
276 for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++)
277 {
278 if (getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256)) != null)
279 {
280 neighbour = getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256));
281
282 NeighbourBlock = new Hashtable();
283 NeighbourBlock["sim_ip"] = neighbour.serverIP;
284 NeighbourBlock["sim_port"] = neighbour.serverPort.ToString();
285 NeighbourBlock["region_locx"] = neighbour.regionLocX.ToString();
286 NeighbourBlock["region_locy"] = neighbour.regionLocY.ToString();
287 NeighbourBlock["UUID"] = neighbour.UUID.ToString();
288
289 if (neighbour.UUID != TheSim.UUID) SimNeighboursData.Add(NeighbourBlock);
290 }
291 }
292 }
293
294 responseData["UUID"] = TheSim.UUID.ToString();
295 responseData["region_locx"] = TheSim.regionLocX.ToString();
296 responseData["region_locy"] = TheSim.regionLocY.ToString();
297 responseData["regionname"] = TheSim.regionName;
298 responseData["estate_id"] = "1";
299 responseData["neighbours"] = SimNeighboursData;
300
301 responseData["sim_ip"] = TheSim.serverIP;
302 responseData["sim_port"] = TheSim.serverPort.ToString();
303 responseData["asset_url"] = TheSim.regionAssetURI;
304 responseData["asset_sendkey"] = TheSim.regionAssetSendKey;
305 responseData["asset_recvkey"] = TheSim.regionAssetRecvKey;
306 responseData["user_url"] = TheSim.regionUserURI;
307 responseData["user_sendkey"] = TheSim.regionUserSendKey;
308 responseData["user_recvkey"] = TheSim.regionUserRecvKey;
309 responseData["authkey"] = TheSim.regionSecret;
310
311 // New! If set, use as URL to local sim storage (ie http://remotehost/region.yap)
312 responseData["data_uri"] = TheSim.regionDataURI;
313 }
314
315 return response;
316 }
317
318 public XmlRpcResponse XmlRpcMapBlockMethod(XmlRpcRequest request)
319 {
320 int xmin=980, ymin=980, xmax=1020, ymax=1020;
321
322 Hashtable requestData = (Hashtable)request.Params[0];
323 if (requestData.ContainsKey("xmin"))
324 {
325 xmin = (Int32)requestData["xmin"];
326 }
327 if (requestData.ContainsKey("ymin"))
328 {
329 ymin = (Int32)requestData["ymin"];
330 }
331 if (requestData.ContainsKey("xmax"))
332 {
333 xmax = (Int32)requestData["xmax"];
334 }
335 if (requestData.ContainsKey("ymax"))
336 {
337 ymax = (Int32)requestData["ymax"];
338 }
339
340 XmlRpcResponse response = new XmlRpcResponse();
341 Hashtable responseData = new Hashtable();
342 response.Value = responseData;
343 IList simProfileList = new ArrayList();
344
345 bool fastMode = true; // MySQL Only
346
347 if (fastMode)
348 {
349 Dictionary<ulong, SimProfileData> neighbours = getRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax);
350
351 foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours)
352 {
353 Hashtable simProfileBlock = new Hashtable();
354 simProfileBlock["x"] = aSim.Value.regionLocX.ToString();
355 simProfileBlock["y"] = aSim.Value.regionLocY.ToString();
356 simProfileBlock["name"] = aSim.Value.regionName;
357 simProfileBlock["access"] = 21;
358 simProfileBlock["region-flags"] = 512;
359 simProfileBlock["water-height"] = 0;
360 simProfileBlock["agents"] = 1;
361 simProfileBlock["map-image-id"] = aSim.Value.regionMapTextureID.ToString();
362
363 // For Sugilite compatibility
364 simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString();
365 simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString();
366 simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString();
367 simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString();
368 simProfileBlock["uuid"] = aSim.Value.UUID.ToStringHyphenated();
369
370 simProfileList.Add(simProfileBlock);
371 }
372 OpenSim.Framework.Console.MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via FastMode");
373 }
374 else
375 {
376 SimProfileData simProfile;
377 for (int x = xmin; x < xmax; x++)
378 {
379 for (int y = ymin; y < ymax; y++)
380 {
381 simProfile = getRegion(Helpers.UIntsToLong((uint)(x * 256), (uint)(y * 256)));
382 if (simProfile != null)
383 {
384 Hashtable simProfileBlock = new Hashtable();
385 simProfileBlock["x"] = x;
386 simProfileBlock["y"] = y;
387 simProfileBlock["name"] = simProfile.regionName;
388 simProfileBlock["access"] = 0;
389 simProfileBlock["region-flags"] = 0;
390 simProfileBlock["water-height"] = 20;
391 simProfileBlock["agents"] = 1;
392 simProfileBlock["map-image-id"] = simProfile.regionMapTextureID.ToString();
393
394 // For Sugilite compatibility
395 simProfileBlock["regionhandle"] = simProfile.regionHandle.ToString();
396 simProfileBlock["sim_ip"] = simProfile.serverIP.ToString();
397 simProfileBlock["sim_port"] = simProfile.serverPort.ToString();
398 simProfileBlock["sim_uri"] = simProfile.serverURI.ToString();
399 simProfileBlock["uuid"] = simProfile.UUID.ToStringHyphenated();
400
401 simProfileList.Add(simProfileBlock);
402 }
403 }
404 }
405 OpenSim.Framework.Console.MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via Standard Mode");
406 }
407
408 responseData["sim-profiles"] = simProfileList;
409
410 return response;
411 }
412
413
414
415 /// <summary>
416 /// Performs a REST Get Operation
417 /// </summary>
418 /// <param name="request"></param>
419 /// <param name="path"></param>
420 /// <param name="param"></param>
421 /// <returns></returns>
422 public string RestGetRegionMethod(string request, string path, string param)
423 {
424 return RestGetSimMethod("", "/sims/", param);
425 }
426
427 /// <summary>
428 /// Performs a REST Set Operation
429 /// </summary>
430 /// <param name="request"></param>
431 /// <param name="path"></param>
432 /// <param name="param"></param>
433 /// <returns></returns>
434 public string RestSetRegionMethod(string request, string path, string param)
435 {
436 return RestSetSimMethod("", "/sims/", param);
437 }
438
439 /// <summary>
440 /// Returns information about a sim via a REST Request
441 /// </summary>
442 /// <param name="request"></param>
443 /// <param name="path"></param>
444 /// <param name="param"></param>
445 /// <returns>Information about the sim in XML</returns>
446 public string RestGetSimMethod(string request, string path, string param)
447 {
448 string respstring = String.Empty;
449
450 SimProfileData TheSim;
451 LLUUID UUID = new LLUUID(param);
452 TheSim = getRegion(UUID);
453
454 if (!(TheSim == null))
455 {
456 respstring = "<Root>";
457 respstring += "<authkey>" + TheSim.regionSendKey + "</authkey>";
458 respstring += "<sim>";
459 respstring += "<uuid>" + TheSim.UUID.ToString() + "</uuid>";
460 respstring += "<regionname>" + TheSim.regionName + "</regionname>";
461 respstring += "<sim_ip>" + TheSim.serverIP + "</sim_ip>";
462 respstring += "<sim_port>" + TheSim.serverPort.ToString() + "</sim_port>";
463 respstring += "<region_locx>" + TheSim.regionLocX.ToString() + "</region_locx>";
464 respstring += "<region_locy>" + TheSim.regionLocY.ToString() + "</region_locy>";
465 respstring += "<estate_id>1</estate_id>";
466 respstring += "</sim>";
467 respstring += "</Root>";
468 }
469
470 return respstring;
471 }
472
473 /// <summary>
474 /// Creates or updates a sim via a REST Method Request
475 /// BROKEN with SQL Update
476 /// </summary>
477 /// <param name="request"></param>
478 /// <param name="path"></param>
479 /// <param name="param"></param>
480 /// <returns>"OK" or an error</returns>
481 public string RestSetSimMethod(string request, string path, string param)
482 {
483 Console.WriteLine("Processing region update");
484 SimProfileData TheSim;
485 TheSim = getRegion(new LLUUID(param));
486 if ((TheSim) == null)
487 {
488 TheSim = new SimProfileData();
489 LLUUID UUID = new LLUUID(param);
490 TheSim.UUID = UUID;
491 TheSim.regionRecvKey = config.SimRecvKey;
492 }
493
494 XmlDocument doc = new XmlDocument();
495 doc.LoadXml(request);
496 XmlNode rootnode = doc.FirstChild;
497 XmlNode authkeynode = rootnode.ChildNodes[0];
498 if (authkeynode.Name != "authkey")
499 {
500 return "ERROR! bad XML - expected authkey tag";
501 }
502
503 XmlNode simnode = rootnode.ChildNodes[1];
504 if (simnode.Name != "sim")
505 {
506 return "ERROR! bad XML - expected sim tag";
507 }
508
509 if (authkeynode.InnerText != TheSim.regionRecvKey)
510 {
511 return "ERROR! invalid key";
512 }
513
514 //TheSim.regionSendKey = Cfg;
515 TheSim.regionRecvKey = config.SimRecvKey;
516 TheSim.regionSendKey = config.SimSendKey;
517 TheSim.regionSecret = config.SimRecvKey;
518 TheSim.regionDataURI = "";
519 TheSim.regionAssetURI = config.DefaultAssetServer;
520 TheSim.regionAssetRecvKey = config.AssetRecvKey;
521 TheSim.regionAssetSendKey = config.AssetSendKey;
522 TheSim.regionUserURI = config.DefaultUserServer;
523 TheSim.regionUserSendKey = config.UserSendKey;
524 TheSim.regionUserRecvKey = config.UserRecvKey;
525
526
527 for (int i = 0; i < simnode.ChildNodes.Count; i++)
528 {
529 switch (simnode.ChildNodes[i].Name)
530 {
531 case "regionname":
532 TheSim.regionName = simnode.ChildNodes[i].InnerText;
533 break;
534
535 case "sim_ip":
536 TheSim.serverIP = simnode.ChildNodes[i].InnerText;
537 break;
538
539 case "sim_port":
540 TheSim.serverPort = Convert.ToUInt32(simnode.ChildNodes[i].InnerText);
541 break;
542
543 case "region_locx":
544 TheSim.regionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
545 TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
546 break;
547
548 case "region_locy":
549 TheSim.regionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
550 TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
551 break;
552 }
553 }
554
555 TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/";
556
557 bool requirePublic = false;
558
559 if (requirePublic && (TheSim.serverIP.StartsWith("172.16") || TheSim.serverIP.StartsWith("192.168") || TheSim.serverIP.StartsWith("10.") || TheSim.serverIP.StartsWith("0.") || TheSim.serverIP.StartsWith("255.")))
560 {
561 return "ERROR! Servers must register with public addresses.";
562 }
563
564
565 try
566 {
567 OpenSim.Framework.Console.MainLog.Instance.Verbose("Updating / adding via " + _plugins.Count + " storage provider(s) registered.");
568 foreach (KeyValuePair<string, IGridData> kvp in _plugins)
569 {
570 try
571 {
572 //Check reservations
573 ReservationData reserveData = kvp.Value.GetReservationAtPoint(TheSim.regionLocX, TheSim.regionLocY);
574 if ((reserveData != null && reserveData.gridRecvKey == TheSim.regionRecvKey) || (reserveData == null))
575 {
576 kvp.Value.AddProfile(TheSim);
577 OpenSim.Framework.Console.MainLog.Instance.Verbose("New sim added to grid (" + TheSim.regionName + ")");
578 logToDB(TheSim.UUID.ToStringHyphenated(), "RestSetSimMethod", "", 5, "Region successfully updated and connected to grid.");
579 }
580 else
581 {
582 return "Unable to update region (RestSetSimMethod): Incorrect auth key.";
583 }
584 }
585 catch (Exception e)
586 {
587 OpenSim.Framework.Console.MainLog.Instance.Verbose("getRegionPlugin Handle " + kvp.Key + " unable to add new sim: " + e.ToString());
588 }
589 }
590 return "OK";
591 }
592 catch (Exception e)
593 {
594 return "ERROR! Could not save to database! (" + e.ToString() + ")";
595 }
596 }
597
598 }
599}
diff --git a/OpenSim/Grid/GridServer/Main.cs b/OpenSim/Grid/GridServer/Main.cs
new file mode 100644
index 0000000..b948fd6
--- /dev/null
+++ b/OpenSim/Grid/GridServer/Main.cs
@@ -0,0 +1,271 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.IO;
31using System.Text;
32using System.Timers;
33using System.Net;
34using System.Threading;
35using System.Reflection;
36using libsecondlife;
37using OpenGrid.Framework.Manager;
38using OpenSim.Framework;
39using OpenSim.Framework.Sims;
40using OpenSim.Framework.Console;
41using OpenSim.Framework.Interfaces;
42using OpenSim.Servers;
43using OpenSim.GenericConfig;
44
45namespace OpenGridServices.GridServer
46{
47 /// <summary>
48 /// </summary>
49 public class OpenGrid_Main : conscmd_callback
50 {
51 private string ConfigDll = "OpenGrid.Config.GridConfigDb4o.dll";
52 private string GridDll = "OpenGrid.Framework.Data.MySQL.dll";
53 public GridConfig Cfg;
54
55 public static OpenGrid_Main thegrid;
56 protected IGenericConfig localXMLConfig;
57
58 public static bool setuponly;
59
60 //public LLUUID highestUUID;
61
62 // private SimProfileManager m_simProfileManager;
63
64 private GridManager m_gridManager;
65
66 private LogBase m_console;
67
68 [STAThread]
69 public static void Main(string[] args)
70 {
71 if (args.Length > 0)
72 {
73 if (args[0] == "-setuponly") setuponly = true;
74 }
75 Console.WriteLine("Starting...\n");
76
77 thegrid = new OpenGrid_Main();
78 thegrid.Startup();
79
80 thegrid.Work();
81 }
82
83 private void Work()
84 {
85 while (true)
86 {
87 Thread.Sleep(5000);
88 // should flush the DB etc here
89 }
90 }
91
92 private OpenGrid_Main()
93 {
94 m_console = new LogBase("opengrid-gridserver-console.log", "OpenGrid", this, false);
95 MainLog.Instance = m_console;
96
97
98 }
99
100 public void managercallback(string cmd)
101 {
102 switch (cmd)
103 {
104 case "shutdown":
105 RunCmd("shutdown", new string[0]);
106 break;
107 }
108 }
109
110
111 public void Startup()
112 {
113 this.localXMLConfig = new XmlConfig("GridServerConfig.xml");
114 this.localXMLConfig.LoadData();
115 this.ConfigDB(this.localXMLConfig);
116 this.localXMLConfig.Close();
117
118 m_console.Verbose( "Main.cs:Startup() - Loading configuration");
119 Cfg = this.LoadConfigDll(this.ConfigDll);
120 Cfg.InitConfig();
121 if (setuponly) Environment.Exit(0);
122
123 m_console.Verbose( "Main.cs:Startup() - Connecting to Storage Server");
124 m_gridManager = new GridManager();
125 m_gridManager.AddPlugin(GridDll); // Made of win
126 m_gridManager.config = Cfg;
127
128 m_console.Verbose( "Main.cs:Startup() - Starting HTTP process");
129 BaseHttpServer httpServer = new BaseHttpServer(8001);
130 //GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback);
131
132 httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcLoginToSimulatorMethod);
133 httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod);
134
135 httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod);
136 httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod);
137 httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod);
138 httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod);
139
140
141 // lbsa71 : This code snippet taken from old http server.
142 // I have no idea what this was supposed to do - looks like an infinite recursion to me.
143 // case "regions":
144 //// DIRTY HACK ALERT
145 //Console.Notice("/regions/ accessed");
146 //TheSim = OpenGrid_Main.thegrid._regionmanager.GetProfileByHandle((ulong)Convert.ToUInt64(rest_params[1]));
147 //respstring = ParseREST("/regions/" + rest_params[1], requestBody, HTTPmethod);
148 //break;
149
150 // lbsa71 : I guess these were never used?
151 //Listener.Prefixes.Add("http://+:8001/gods/");
152 //Listener.Prefixes.Add("http://+:8001/highestuuid/");
153 //Listener.Prefixes.Add("http://+:8001/uuidblocks/");
154
155 httpServer.Start();
156
157 m_console.Verbose( "Main.cs:Startup() - Starting sim status checker");
158
159 System.Timers.Timer simCheckTimer = new System.Timers.Timer(3600000 * 3); // 3 Hours between updates.
160 simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims);
161 simCheckTimer.Enabled = true;
162 }
163
164 private GridConfig LoadConfigDll(string dllName)
165 {
166 Assembly pluginAssembly = Assembly.LoadFrom(dllName);
167 GridConfig config = null;
168
169 foreach (Type pluginType in pluginAssembly.GetTypes())
170 {
171 if (pluginType.IsPublic)
172 {
173 if (!pluginType.IsAbstract)
174 {
175 Type typeInterface = pluginType.GetInterface("IGridConfig", true);
176
177 if (typeInterface != null)
178 {
179 IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
180 config = plug.GetConfigObject();
181 break;
182 }
183
184 typeInterface = null;
185 }
186 }
187 }
188 pluginAssembly = null;
189 return config;
190 }
191
192 public void CheckSims(object sender, ElapsedEventArgs e)
193 {
194 /*
195 foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values)
196 {
197 string SimResponse = "";
198 try
199 {
200 WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/");
201 CheckSim.Method = "GET";
202 CheckSim.ContentType = "text/plaintext";
203 CheckSim.ContentLength = 0;
204
205 StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII);
206 stOut.Write("");
207 stOut.Close();
208
209 StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream());
210 SimResponse = stIn.ReadToEnd();
211 stIn.Close();
212 }
213 catch
214 {
215 }
216
217 if (SimResponse == "OK")
218 {
219 m_simProfileManager.SimProfiles[sim.UUID].online = true;
220 }
221 else
222 {
223 m_simProfileManager.SimProfiles[sim.UUID].online = false;
224 }
225 }
226 */
227 }
228
229 public void RunCmd(string cmd, string[] cmdparams)
230 {
231 switch (cmd)
232 {
233 case "help":
234 m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
235 break;
236
237 case "shutdown":
238 m_console.Close();
239 Environment.Exit(0);
240 break;
241 }
242 }
243
244 public void Show(string ShowWhat)
245 {
246 }
247
248 private void ConfigDB(IGenericConfig configData)
249 {
250 try
251 {
252 string attri = "";
253 attri = configData.GetAttribute("DataBaseProvider");
254 if (attri == "")
255 {
256 GridDll = "OpenGrid.Framework.Data.DB4o.dll";
257 configData.SetAttribute("DataBaseProvider", "OpenGrid.Framework.Data.DB4o.dll");
258 }
259 else
260 {
261 GridDll = attri;
262 }
263 configData.Commit();
264 }
265 catch (Exception e)
266 {
267
268 }
269 }
270 }
271}
diff --git a/OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj b/OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj
new file mode 100644
index 0000000..424072e
--- /dev/null
+++ b/OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj
@@ -0,0 +1,134 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{60FCC3A6-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Grid.GridServer</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Exe</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Grid.GridServer</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework" >
70 <HintPath>OpenSim.Framework.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.Framework.Console" >
74 <HintPath>OpenSim.Framework.Console.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="OpenSim.Framework.GenericConfig.Xml" >
78 <HintPath>OpenSim.Framework.GenericConfig.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="OpenSim.Framework.Servers" >
82 <HintPath>OpenSim.Framework.Servers.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="System" >
86 <HintPath>System.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 <Reference Include="System.Data" >
90 <HintPath>System.Data.dll</HintPath>
91 <Private>False</Private>
92 </Reference>
93 <Reference Include="System.Xml" >
94 <HintPath>System.Xml.dll</HintPath>
95 <Private>False</Private>
96 </Reference>
97 <Reference Include="XMLRPC.dll" >
98 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
99 <Private>False</Private>
100 </Reference>
101 </ItemGroup>
102 <ItemGroup>
103 <ProjectReference Include="..\..\Framework\Data\OpenSim.Framework.Data.csproj">
104 <Name>OpenSim.Framework.Data</Name>
105 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
106 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
107 <Private>False</Private>
108 </ProjectReference>
109 <ProjectReference Include="..\Framework.Manager\OpenSim.Grid.Framework.Manager.csproj">
110 <Name>OpenSim.Grid.Framework.Manager</Name>
111 <Project>{4B7BFD1C-0000-0000-0000-000000000000}</Project>
112 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
113 <Private>False</Private>
114 </ProjectReference>
115 </ItemGroup>
116 <ItemGroup>
117 <Compile Include="GridManager.cs">
118 <SubType>Code</SubType>
119 </Compile>
120 <Compile Include="Main.cs">
121 <SubType>Code</SubType>
122 </Compile>
123 <Compile Include="Properties\AssemblyInfo.cs">
124 <SubType>Code</SubType>
125 </Compile>
126 </ItemGroup>
127 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
128 <PropertyGroup>
129 <PreBuildEvent>
130 </PreBuildEvent>
131 <PostBuildEvent>
132 </PostBuildEvent>
133 </PropertyGroup>
134</Project>
diff --git a/OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj.user b/OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Grid/GridServer/OpenSim.Grid.GridServer.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs b/OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..303dddf
--- /dev/null
+++ b/OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs
@@ -0,0 +1,60 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// General Information about an assembly is controlled through the following
33// set of attributes. Change these attribute values to modify the information
34// associated with an assembly.
35[assembly: AssemblyTitle("OGS-GridServer")]
36[assembly: AssemblyDescription("")]
37[assembly: AssemblyConfiguration("")]
38[assembly: AssemblyCompany("")]
39[assembly: AssemblyProduct("OGS-GridServer")]
40[assembly: AssemblyCopyright("Copyright © 2007")]
41[assembly: AssemblyTrademark("")]
42[assembly: AssemblyCulture("")]
43
44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type.
47[assembly: ComVisible(false)]
48
49// The following GUID is for the ID of the typelib if this project is exposed to COM
50[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
51
52// Version information for an assembly consists of the following four values:
53//
54// Major Version
55// Minor Version
56// Build Number
57// Revision
58//
59[assembly: AssemblyVersion("1.0.0.0")]
60[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Grid/InventoryServer/InventoryManager.cs b/OpenSim/Grid/InventoryServer/InventoryManager.cs
new file mode 100644
index 0000000..9ca9b5e
--- /dev/null
+++ b/OpenSim/Grid/InventoryServer/InventoryManager.cs
@@ -0,0 +1,125 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Text;
32using OpenGrid.Framework.Data;
33using libsecondlife;
34using System.Reflection;
35
36using System.Xml;
37using Nwc.XmlRpc;
38using OpenSim.Framework.Sims;
39using OpenSim.Framework.Inventory;
40using OpenSim.Framework.Utilities;
41
42using System.Security.Cryptography;
43
44namespace OpenGridServices.InventoryServer
45{
46 class InventoryManager
47 {
48 Dictionary<string, IInventoryData> _plugins = new Dictionary<string, IInventoryData>();
49
50 /// <summary>
51 /// Adds a new inventory server plugin - user servers will be requested in the order they were loaded.
52 /// </summary>
53 /// <param name="FileName">The filename to the inventory server plugin DLL</param>
54 public void AddPlugin(string FileName)
55 {
56 OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Attempting to load " + FileName);
57 Assembly pluginAssembly = Assembly.LoadFrom(FileName);
58
59 OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
60 foreach (Type pluginType in pluginAssembly.GetTypes())
61 {
62 if (!pluginType.IsAbstract)
63 {
64 Type typeInterface = pluginType.GetInterface("IInventoryData", true);
65
66 if (typeInterface != null)
67 {
68 IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
69 plug.Initialise();
70 this._plugins.Add(plug.getName(), plug);
71 OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Added IUserData Interface");
72 }
73
74 typeInterface = null;
75 }
76 }
77
78 pluginAssembly = null;
79 }
80
81 public List<InventoryFolderBase> getRootFolders(LLUUID user)
82 {
83 foreach (KeyValuePair<string, IInventoryData> kvp in _plugins)
84 {
85 try
86 {
87 return kvp.Value.getUserRootFolders(user);
88 }
89 catch (Exception e)
90 {
91 OpenSim.Framework.Console.MainConsole.Instance.Notice("Unable to get root folders via " + kvp.Key + " (" + e.ToString() + ")");
92 }
93 }
94 return null;
95 }
96
97 public XmlRpcResponse XmlRpcInventoryRequest(XmlRpcRequest request)
98 {
99 XmlRpcResponse response = new XmlRpcResponse();
100 Hashtable requestData = (Hashtable)request.Params[0];
101
102 Hashtable responseData = new Hashtable();
103
104 // Stuff happens here
105
106 if (requestData.ContainsKey("Access-type"))
107 {
108 if (requestData["access-type"] == "rootfolders")
109 {
110// responseData["rootfolders"] =
111 }
112 }
113 else
114 {
115 responseData["error"] = "No access-type specified.";
116 }
117
118
119 // Stuff stops happening here
120
121 response.Value = responseData;
122 return response;
123 }
124 }
125}
diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs
new file mode 100644
index 0000000..f479a79
--- /dev/null
+++ b/OpenSim/Grid/InventoryServer/Main.cs
@@ -0,0 +1,87 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Reflection;
32using System.IO;
33using System.Text;
34using libsecondlife;
35using OpenSim.Framework.User;
36using OpenSim.Framework.Sims;
37using OpenSim.Framework.Inventory;
38using OpenSim.Framework.Interfaces;
39using OpenSim.Framework.Console;
40using OpenSim.Servers;
41using OpenSim.Framework.Utilities;
42
43namespace OpenGridServices.InventoryServer
44{
45 public class OpenInventory_Main : BaseServer, conscmd_callback
46 {
47 ConsoleBase m_console;
48 InventoryManager m_inventoryManager;
49
50 public static void Main(string[] args)
51 {
52 }
53
54 public OpenInventory_Main()
55 {
56 m_console = new ConsoleBase("opengrid-inventory-console.log", "OpenInventory", this, false);
57 MainConsole.Instance = m_console;
58 }
59
60 public void Startup()
61 {
62 MainConsole.Instance.Notice("Initialising inventory manager...");
63 m_inventoryManager = new InventoryManager();
64
65 MainConsole.Instance.Notice("Starting HTTP server");
66 BaseHttpServer httpServer = new BaseHttpServer(8004);
67
68 httpServer.AddXmlRPCHandler("rootfolders", m_inventoryManager.XmlRpcInventoryRequest);
69 //httpServer.AddRestHandler("GET","/rootfolders/",Rest
70 }
71
72 public void RunCmd(string cmd, string[] cmdparams)
73 {
74 switch (cmd)
75 {
76 case "shutdown":
77 m_console.Close();
78 Environment.Exit(0);
79 break;
80 }
81 }
82
83 public void Show(string ShowWhat)
84 {
85 }
86 }
87}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager.mds b/OpenSim/Grid/Manager/OpenGridServices.Manager.mds
new file mode 100644
index 0000000..ed7bc24
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager.mds
@@ -0,0 +1,16 @@
1<Combine name="OpenGridServices.Manager" fileversion="2.0" outputpath="../../mono-1.2.3.1/lib/monodevelop/bin" MakePkgConfig="False" MakeLibPC="True">
2 <Configurations active="Debug">
3 <Configuration name="Debug" ctype="CombineConfiguration">
4 <Entry build="True" name="OpenGridServices.Manager" configuration="Debug" />
5 </Configuration>
6 <Configuration name="Release" ctype="CombineConfiguration">
7 <Entry build="True" name="OpenGridServices.Manager" configuration="Release" />
8 </Configuration>
9 </Configurations>
10 <StartMode startupentry="OpenGridServices.Manager" single="True">
11 <Execute type="None" entry="OpenGridServices.Manager" />
12 </StartMode>
13 <Entries>
14 <Entry filename="./OpenGridServices.Manager/OpenGridServices.Manager.mdp" />
15 </Entries>
16</Combine> \ No newline at end of file
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager.userprefs b/OpenSim/Grid/Manager/OpenGridServices.Manager.userprefs
new file mode 100644
index 0000000..f221509
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager.userprefs
@@ -0,0 +1,39 @@
1<?xml version="1.0"?>
2<UserCombinePreferences filename="/home/gareth/OpenGridServices.Manager/OpenGridServices.Manager.mds">
3 <Files>
4 <File filename="Welcome" />
5 <File filename="./OpenGridServices.Manager/MainWindow.cs" />
6 <File filename="./OpenGridServices.Manager/ConnectToGridServerDialog.cs" />
7 <File filename="./OpenGridServices.Manager/Main.cs" />
8 </Files>
9 <Views>
10 <ViewMemento Id="MonoDevelop.Ide.Gui.Pads.ProjectPad">
11 <TreeView>
12 <Node expanded="True">
13 <Node name="OpenGridServices.Manager" expanded="True">
14 <Node name="References" expanded="True" />
15 <Node name="Resources" expanded="True" />
16 <Node name="UserInterface" expanded="True" />
17 <Node name="ConnectToGridServerDialog.cs" expanded="False" selected="True" />
18 </Node>
19 </Node>
20 </TreeView>
21 </ViewMemento>
22 <ViewMemento Id="MonoDevelop.Ide.Gui.Pads.ClassPad">
23 <TreeView>
24 <Node expanded="True" />
25 </TreeView>
26 </ViewMemento>
27 <ViewMemento Id="MonoDevelop.NUnit.TestPad">
28 <TreeView>
29 <Node expanded="False" />
30 </TreeView>
31 </ViewMemento>
32 </Views>
33 <Properties>
34 <Properties>
35 <Property key="ActiveConfiguration" value="Debug" />
36 <Property key="ActiveWindow" value="/home/gareth/OpenGridServices.Manager/OpenGridServices.Manager/ConnectToGridServerDialog.cs" />
37 </Properties>
38 </Properties>
39</UserCombinePreferences> \ No newline at end of file
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager.usertasks b/OpenSim/Grid/Manager/OpenGridServices.Manager.usertasks
new file mode 100644
index 0000000..d887d0e
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager.usertasks
@@ -0,0 +1,2 @@
1<?xml version="1.0" encoding="utf-8"?>
2<ArrayOfUserTask xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> \ No newline at end of file
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/AssemblyInfo.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/AssemblyInfo.cs
new file mode 100644
index 0000000..af4e275
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/AssemblyInfo.cs
@@ -0,0 +1,32 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3
4// Information about this assembly is defined by the following
5// attributes.
6//
7// change them to the information which is associated with the assembly
8// you compile.
9
10[assembly: AssemblyTitle("")]
11[assembly: AssemblyDescription("")]
12[assembly: AssemblyConfiguration("")]
13[assembly: AssemblyCompany("")]
14[assembly: AssemblyProduct("")]
15[assembly: AssemblyCopyright("")]
16[assembly: AssemblyTrademark("")]
17[assembly: AssemblyCulture("")]
18
19// The assembly version has following format :
20//
21// Major.Minor.Build.Revision
22//
23// You can specify all values by your own or you can build default build and revision
24// numbers with the '*' character (the default):
25
26[assembly: AssemblyVersion("1.0.*")]
27
28// The following attributes specify the key for the sign of your assembly. See the
29// .NET Framework documentation for more information about signing.
30// This is not required, if you don't want signing let these attributes like they're.
31[assembly: AssemblyDelaySign(false)]
32[assembly: AssemblyKeyFile("")]
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/BlockingQueue.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/BlockingQueue.cs
new file mode 100644
index 0000000..83685fc
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/BlockingQueue.cs
@@ -0,0 +1,33 @@
1using System;
2using System.Threading;
3using System.Collections.Generic;
4using System.Text;
5
6namespace OpenGridServices.Manager
7{
8 public class BlockingQueue<T>
9 {
10 private Queue<T> _queue = new Queue<T>();
11 private object _queueSync = new object();
12
13 public void Enqueue(T value)
14 {
15 lock (_queueSync)
16 {
17 _queue.Enqueue(value);
18 Monitor.Pulse(_queueSync);
19 }
20 }
21
22 public T Dequeue()
23 {
24 lock (_queueSync)
25 {
26 if (_queue.Count < 1)
27 Monitor.Wait(_queueSync);
28
29 return _queue.Dequeue();
30 }
31 }
32 }
33}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/Connect to grid server.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/Connect to grid server.cs
new file mode 100644
index 0000000..0d509ef
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/Connect to grid server.cs
@@ -0,0 +1,16 @@
1
2using System;
3
4namespace OpenGridServices.Manager
5{
6
7
8 public partial class Connect to grid server : Gtk.Dialog
9 {
10
11 public Connect to grid server()
12 {
13 this.Build();
14 }
15 }
16}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/ConnectToGridServerDialog.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/ConnectToGridServerDialog.cs
new file mode 100644
index 0000000..8a80b1d
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/ConnectToGridServerDialog.cs
@@ -0,0 +1,29 @@
1using Gtk;
2using System;
3
4namespace OpenGridServices.Manager {
5 public partial class ConnectToGridServerDialog : Gtk.Dialog
6 {
7
8 public ConnectToGridServerDialog()
9 {
10 this.Build();
11 }
12
13 protected virtual void OnResponse(object o, Gtk.ResponseArgs args)
14 {
15 switch(args.ResponseId) {
16 case Gtk.ResponseType.Ok:
17 MainClass.PendingOperations.Enqueue("connect_to_gridserver " + this.entry1.Text + " " + this.entry2.Text + " " + this.entry3.Text);
18 break;
19
20 case Gtk.ResponseType.Cancel:
21 break;
22 }
23 this.Hide();
24
25 }
26
27 }
28
29} \ No newline at end of file
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/GridServerConnectionManager.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/GridServerConnectionManager.cs
new file mode 100644
index 0000000..6b632d6
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/GridServerConnectionManager.cs
@@ -0,0 +1,106 @@
1using Nwc.XmlRpc;
2using System;
3using System.Net;
4using System.IO;
5using System.Xml;
6using System.Collections;
7using System.Collections.Generic;
8using libsecondlife;
9
10namespace OpenGridServices.Manager
11{
12 public class GridServerConnectionManager
13 {
14 private string ServerURL;
15 public LLUUID SessionID;
16 public bool connected=false;
17
18 public RegionBlock[][] WorldMap;
19
20 public bool Connect(string GridServerURL, string username, string password)
21 {
22 try {
23 this.ServerURL=GridServerURL;
24 Hashtable LoginParamsHT = new Hashtable();
25 LoginParamsHT["username"]=username;
26 LoginParamsHT["password"]=password;
27 ArrayList LoginParams = new ArrayList();
28 LoginParams.Add(LoginParamsHT);
29 XmlRpcRequest GridLoginReq = new XmlRpcRequest("manager_login",LoginParams);
30 XmlRpcResponse GridResp = GridLoginReq.Send(ServerURL,3000);
31 if(GridResp.IsFault) {
32 connected=false;
33 return false;
34 } else {
35 Hashtable gridrespData = (Hashtable)GridResp.Value;
36 this.SessionID = new LLUUID((string)gridrespData["session_id"]);
37 connected=true;
38 return true;
39 }
40 } catch(Exception e) {
41 Console.WriteLine(e.ToString());
42 connected=false;
43 return false;
44 }
45 }
46
47 public void DownloadMap()
48 {
49 System.Net.WebClient mapdownloader = new WebClient();
50 Stream regionliststream = mapdownloader.OpenRead(ServerURL + "/regionlist");
51
52 RegionBlock TempRegionData;
53
54 XmlDocument doc = new XmlDocument();
55 doc.Load(regionliststream);
56 regionliststream.Close();
57 XmlNode rootnode = doc.FirstChild;
58 if (rootnode.Name != "regions")
59 {
60 // TODO - ERROR!
61 }
62
63 for(int i=0; i<=rootnode.ChildNodes.Count; i++)
64 {
65 if(rootnode.ChildNodes.Item(i).Name != "region") {
66 // TODO - ERROR!
67 } else {
68 TempRegionData = new RegionBlock();
69
70
71 }
72 }
73 }
74
75 public bool RestartServer()
76 {
77 return true;
78 }
79
80 public bool ShutdownServer()
81 {
82 try {
83 Hashtable ShutdownParamsHT = new Hashtable();
84 ArrayList ShutdownParams = new ArrayList();
85 ShutdownParamsHT["session_id"]=this.SessionID.ToString();
86 ShutdownParams.Add(ShutdownParamsHT);
87 XmlRpcRequest GridShutdownReq = new XmlRpcRequest("shutdown",ShutdownParams);
88 XmlRpcResponse GridResp = GridShutdownReq.Send(this.ServerURL,3000);
89 if(GridResp.IsFault) {
90 return false;
91 } else {
92 connected=false;
93 return true;
94 }
95 } catch(Exception e) {
96 Console.WriteLine(e.ToString());
97 return false;
98 }
99 }
100
101 public void DisconnectServer()
102 {
103 this.connected=false;
104 }
105 }
106}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/Main.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/Main.cs
new file mode 100644
index 0000000..42e09e0
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/Main.cs
@@ -0,0 +1,96 @@
1// project created on 5/14/2007 at 2:04 PM
2using System;
3using System.Threading;
4using Gtk;
5
6namespace OpenGridServices.Manager
7{
8 class MainClass
9 {
10
11 public static bool QuitReq=false;
12 public static BlockingQueue<string> PendingOperations = new BlockingQueue<string>();
13
14 private static Thread OperationsRunner;
15
16 private static GridServerConnectionManager gridserverConn;
17
18 private static MainWindow win;
19
20 public static void DoMainLoop()
21 {
22 while(!QuitReq)
23 {
24 Application.RunIteration();
25 }
26 }
27
28 public static void RunOperations()
29 {
30 string operation;
31 string cmd;
32 char[] sep = new char[1];
33 sep[0]=' ';
34 while(!QuitReq)
35 {
36 operation=PendingOperations.Dequeue();
37 Console.WriteLine(operation);
38 cmd = operation.Split(sep)[0];
39 switch(cmd) {
40 case "connect_to_gridserver":
41 win.SetStatus("Connecting to grid server...");
42 if(gridserverConn.Connect(operation.Split(sep)[1],operation.Split(sep)[2],operation.Split(sep)[3])) {
43 win.SetStatus("Connected OK with session ID:" + gridserverConn.SessionID);
44 win.SetGridServerConnected(true);
45 Thread.Sleep(3000);
46 win.SetStatus("Downloading region maps...");
47 gridserverConn.DownloadMap();
48 } else {
49 win.SetStatus("Could not connect");
50 }
51 break;
52
53 case "restart_gridserver":
54 win.SetStatus("Restarting grid server...");
55 if(gridserverConn.RestartServer()) {
56 win.SetStatus("Restarted server OK");
57 Thread.Sleep(3000);
58 win.SetStatus("");
59 } else {
60 win.SetStatus("Error restarting grid server!!!");
61 }
62 break;
63
64 case "shutdown_gridserver":
65 win.SetStatus("Shutting down grid server...");
66 if(gridserverConn.ShutdownServer()) {
67 win.SetStatus("Grid server shutdown");
68 win.SetGridServerConnected(false);
69 Thread.Sleep(3000);
70 win.SetStatus("");
71 } else {
72 win.SetStatus("Could not shutdown grid server!!!");
73 }
74 break;
75
76 case "disconnect_gridserver":
77 gridserverConn.DisconnectServer();
78 win.SetGridServerConnected(false);
79 break;
80 }
81 }
82 }
83
84 public static void Main (string[] args)
85 {
86 gridserverConn = new GridServerConnectionManager();
87 Application.Init ();
88 win = new MainWindow ();
89 win.Show ();
90 OperationsRunner = new Thread(new ThreadStart(RunOperations));
91 OperationsRunner.IsBackground=true;
92 OperationsRunner.Start();
93 DoMainLoop();
94 }
95 }
96} \ No newline at end of file
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/MainWindow.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/MainWindow.cs
new file mode 100644
index 0000000..1db38f0
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/MainWindow.cs
@@ -0,0 +1,76 @@
1using System;
2using Gtk;
3
4namespace OpenGridServices.Manager {
5 public partial class MainWindow: Gtk.Window
6 {
7 public MainWindow (): base (Gtk.WindowType.Toplevel)
8 {
9 Build ();
10 }
11
12 public void SetStatus(string statustext)
13 {
14 this.statusbar1.Pop(0);
15 this.statusbar1.Push(0,statustext);
16 }
17
18 public void DrawGrid(RegionBlock[][] regions)
19 {
20 for(int x=0; x<=regions.GetUpperBound(0); x++) {
21 for(int y=0; y<=regions.GetUpperBound(1); y++) {
22 Gdk.Image themap = new Gdk.Image(Gdk.ImageType.Fastest,Gdk.Visual.System,256,256);
23 this.drawingarea1.GdkWindow.DrawImage(new Gdk.GC(this.drawingarea1.GdkWindow),themap,0,0,x*256,y*256,256,256);
24 }
25 }
26 }
27
28 public void SetGridServerConnected(bool connected)
29 {
30 if(connected) {
31 this.ConnectToGridserver.Visible=false;
32 this.DisconnectFromGridServer.Visible=true;
33 } else {
34 this.ConnectToGridserver.Visible=true;
35 this.DisconnectFromGridServer.Visible=false;
36 }
37 }
38
39 protected void OnDeleteEvent (object sender, DeleteEventArgs a)
40 {
41 Application.Quit ();
42 MainClass.QuitReq=true;
43 a.RetVal = true;
44 }
45
46 protected virtual void QuitMenu(object sender, System.EventArgs e)
47 {
48 MainClass.QuitReq=true;
49 Application.Quit();
50 }
51
52 protected virtual void ConnectToGridServerMenu(object sender, System.EventArgs e)
53 {
54 ConnectToGridServerDialog griddialog = new ConnectToGridServerDialog ();
55 griddialog.Show();
56 }
57
58 protected virtual void RestartGridserverMenu(object sender, System.EventArgs e)
59 {
60 MainClass.PendingOperations.Enqueue("restart_gridserver");
61 }
62
63 protected virtual void ShutdownGridserverMenu(object sender, System.EventArgs e)
64 {
65 MainClass.PendingOperations.Enqueue("shutdown_gridserver");
66 }
67
68 protected virtual void DisconnectGridServerMenu(object sender, System.EventArgs e)
69 {
70 MainClass.PendingOperations.Enqueue("disconnect_gridserver");
71 }
72
73 }
74}
75
76 \ No newline at end of file
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.mdp b/OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.mdp
new file mode 100644
index 0000000..cfdc085
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.mdp
@@ -0,0 +1,43 @@
1<Project name="OpenGridServices.Manager" fileversion="2.0" language="C#" clr-version="Net_2_0" ctype="DotNetProject">
2 <Configurations active="Debug">
3 <Configuration name="Debug" ctype="DotNetProjectConfiguration">
4 <Output directory="./bin/Debug" assembly="OpenGridServices.Manager" />
5 <Build debugmode="True" target="Exe" />
6 <Execution runwithwarnings="True" consolepause="True" runtime="MsNet" clr-version="Net_2_0" />
7 <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
8 </Configuration>
9 <Configuration name="Release" ctype="DotNetProjectConfiguration">
10 <Output directory="./bin/Release" assembly="OpenGridServices.Manager" />
11 <Build debugmode="False" target="Exe" />
12 <Execution runwithwarnings="True" consolepause="True" runtime="MsNet" clr-version="Net_2_0" />
13 <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
14 </Configuration>
15 </Configurations>
16 <Contents>
17 <File name="./gtk-gui/gui.stetic" subtype="Code" buildaction="EmbedAsResource" />
18 <File name="./gtk-gui/generated.cs" subtype="Code" buildaction="Compile" />
19 <File name="./MainWindow.cs" subtype="Code" buildaction="Compile" />
20 <File name="./Main.cs" subtype="Code" buildaction="Compile" />
21 <File name="./AssemblyInfo.cs" subtype="Code" buildaction="Compile" />
22 <File name="./ConnectToGridServerDialog.cs" subtype="Code" buildaction="Compile" />
23 <File name="./Util.cs" subtype="Code" buildaction="Compile" />
24 <File name="./gtk-gui/OpenGridServices.Manager.MainWindow.cs" subtype="Code" buildaction="Compile" />
25 <File name="./BlockingQueue.cs" subtype="Code" buildaction="Compile" />
26 <File name="./gtk-gui/OpenGridServices.Manager.ConnectToGridServerDialog.cs" subtype="Code" buildaction="Compile" />
27 <File name="./GridServerConnectionManager.cs" subtype="Code" buildaction="Compile" />
28 <File name="./RegionBlock.cs" subtype="Code" buildaction="Compile" />
29 </Contents>
30 <References>
31 <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
32 <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
33 <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
34 <ProjectReference type="Gac" localcopy="True" refto="glade-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
35 <ProjectReference type="Gac" localcopy="True" refto="pango-sharp, Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
36 <ProjectReference type="Assembly" localcopy="True" refto="../../bin/libsecondlife.dll" />
37 <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
38 <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
39 <ProjectReference type="Assembly" localcopy="True" refto="../../bin/XMLRPC.dll" />
40 <ProjectReference type="Gac" localcopy="True" refto="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
41 </References>
42 <GtkDesignInfo partialTypes="True" />
43</Project> \ No newline at end of file
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.pidb b/OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.pidb
new file mode 100644
index 0000000..44e7a61
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/OpenGridServices.Manager.pidb
Binary files differ
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/RegionBlock.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/RegionBlock.cs
new file mode 100644
index 0000000..00f7c65
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/RegionBlock.cs
@@ -0,0 +1,37 @@
1using System;
2using System.Xml;
3using libsecondlife;
4using OpenSim.Framework.Utilities;
5
6namespace OpenGridServices.Manager
7{
8
9
10 public class RegionBlock
11 {
12 public uint regloc_x;
13 public uint regloc_y;
14
15 public string httpd_url;
16
17 public string region_name;
18
19 public ulong regionhandle {
20 get { return Util.UIntsToLong(regloc_x*256,regloc_y*256); }
21 }
22
23 public Gdk.Pixbuf MiniMap;
24
25 public RegionBlock()
26 {
27 }
28
29 public void LoadFromXmlNode(XmlNode sourcenode)
30 {
31 this.regloc_x=Convert.ToUInt32(sourcenode.Attributes.GetNamedItem("loc_x").Value);
32 this.regloc_y=Convert.ToUInt32(sourcenode.Attributes.GetNamedItem("loc_y").Value);
33 this.region_name=sourcenode.Attributes.GetNamedItem("region_name").Value;
34 this.httpd_url=sourcenode.Attributes.GetNamedItem("httpd_url").Value;
35 }
36 }
37}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/Util.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/Util.cs
new file mode 100644
index 0000000..5bf7ff9
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/Util.cs
@@ -0,0 +1,133 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using libsecondlife;
5using libsecondlife.Packets;
6
7namespace OpenSim.Framework.Utilities
8{
9 public class Util
10 {
11 private static Random randomClass = new Random();
12 private static uint nextXferID = 5000;
13 private static object XferLock = new object();
14
15 public static ulong UIntsToLong(uint X, uint Y)
16 {
17 return Helpers.UIntsToLong(X, Y);
18 }
19
20 public static Random RandomClass
21 {
22 get
23 {
24 return randomClass;
25 }
26 }
27
28 public static uint GetNextXferID()
29 {
30 uint id = 0;
31 lock(XferLock)
32 {
33 id = nextXferID;
34 nextXferID++;
35 }
36 return id;
37 }
38
39 //public static int fast_distance2d(int x, int y)
40 //{
41 // x = System.Math.Abs(x);
42 // y = System.Math.Abs(y);
43
44 // int min = System.Math.Min(x, y);
45
46 // return (x + y - (min >> 1) - (min >> 2) + (min >> 4));
47 //}
48
49 public static string FieldToString(byte[] bytes)
50 {
51 return FieldToString(bytes, String.Empty);
52 }
53
54 /// <summary>
55 /// Convert a variable length field (byte array) to a string, with a
56 /// field name prepended to each line of the output
57 /// </summary>
58 /// <remarks>If the byte array has unprintable characters in it, a
59 /// hex dump will be put in the string instead</remarks>
60 /// <param name="bytes">The byte array to convert to a string</param>
61 /// <param name="fieldName">A field name to prepend to each line of output</param>
62 /// <returns>An ASCII string or a string containing a hex dump, minus
63 /// the null terminator</returns>
64 public static string FieldToString(byte[] bytes, string fieldName)
65 {
66 // Check for a common case
67 if (bytes.Length == 0) return String.Empty;
68
69 StringBuilder output = new StringBuilder();
70 bool printable = true;
71
72 for (int i = 0; i < bytes.Length; ++i)
73 {
74 // Check if there are any unprintable characters in the array
75 if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09
76 && bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00)
77 {
78 printable = false;
79 break;
80 }
81 }
82
83 if (printable)
84 {
85 if (fieldName.Length > 0)
86 {
87 output.Append(fieldName);
88 output.Append(": ");
89 }
90
91 if (bytes[bytes.Length - 1] == 0x00)
92 output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1));
93 else
94 output.Append(UTF8Encoding.UTF8.GetString(bytes));
95 }
96 else
97 {
98 for (int i = 0; i < bytes.Length; i += 16)
99 {
100 if (i != 0)
101 output.Append(Environment.NewLine);
102 if (fieldName.Length > 0)
103 {
104 output.Append(fieldName);
105 output.Append(": ");
106 }
107
108 for (int j = 0; j < 16; j++)
109 {
110 if ((i + j) < bytes.Length)
111 output.Append(String.Format("{0:X2} ", bytes[i + j]));
112 else
113 output.Append(" ");
114 }
115
116 for (int j = 0; j < 16 && (i + j) < bytes.Length; j++)
117 {
118 if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E)
119 output.Append((char)bytes[i + j]);
120 else
121 output.Append(".");
122 }
123 }
124 }
125
126 return output.ToString();
127 }
128 public Util()
129 {
130
131 }
132 }
133}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.ConnectToGridServerDialog.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.ConnectToGridServerDialog.cs
new file mode 100644
index 0000000..da6739e
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.ConnectToGridServerDialog.cs
@@ -0,0 +1,226 @@
1// ------------------------------------------------------------------------------
2// <autogenerated>
3// This code was generated by a tool.
4// Mono Runtime Version: 2.0.50727.42
5//
6// Changes to this file may cause incorrect behavior and will be lost if
7// the code is regenerated.
8// </autogenerated>
9// ------------------------------------------------------------------------------
10
11namespace OpenGridServices.Manager {
12
13
14 public partial class ConnectToGridServerDialog {
15
16 private Gtk.VBox vbox2;
17
18 private Gtk.VBox vbox3;
19
20 private Gtk.HBox hbox1;
21
22 private Gtk.Label label1;
23
24 private Gtk.Entry entry1;
25
26 private Gtk.HBox hbox2;
27
28 private Gtk.Label label2;
29
30 private Gtk.Entry entry2;
31
32 private Gtk.HBox hbox3;
33
34 private Gtk.Label label3;
35
36 private Gtk.Entry entry3;
37
38 private Gtk.Button button2;
39
40 private Gtk.Button button8;
41
42 protected virtual void Build() {
43 Stetic.Gui.Initialize();
44 // Widget OpenGridServices.Manager.ConnectToGridServerDialog
45 this.Events = ((Gdk.EventMask)(256));
46 this.Name = "OpenGridServices.Manager.ConnectToGridServerDialog";
47 this.Title = Mono.Unix.Catalog.GetString("Connect to Grid server");
48 this.WindowPosition = ((Gtk.WindowPosition)(4));
49 this.HasSeparator = false;
50 // Internal child OpenGridServices.Manager.ConnectToGridServerDialog.VBox
51 Gtk.VBox w1 = this.VBox;
52 w1.Events = ((Gdk.EventMask)(256));
53 w1.Name = "dialog_VBox";
54 w1.BorderWidth = ((uint)(2));
55 // Container child dialog_VBox.Gtk.Box+BoxChild
56 this.vbox2 = new Gtk.VBox();
57 this.vbox2.Name = "vbox2";
58 // Container child vbox2.Gtk.Box+BoxChild
59 this.vbox3 = new Gtk.VBox();
60 this.vbox3.Name = "vbox3";
61 // Container child vbox3.Gtk.Box+BoxChild
62 this.hbox1 = new Gtk.HBox();
63 this.hbox1.Name = "hbox1";
64 // Container child hbox1.Gtk.Box+BoxChild
65 this.label1 = new Gtk.Label();
66 this.label1.Name = "label1";
67 this.label1.Xalign = 1F;
68 this.label1.LabelProp = Mono.Unix.Catalog.GetString("Grid server URL: ");
69 this.label1.Justify = ((Gtk.Justification)(1));
70 this.hbox1.Add(this.label1);
71 Gtk.Box.BoxChild w2 = ((Gtk.Box.BoxChild)(this.hbox1[this.label1]));
72 w2.Position = 0;
73 // Container child hbox1.Gtk.Box+BoxChild
74 this.entry1 = new Gtk.Entry();
75 this.entry1.CanFocus = true;
76 this.entry1.Name = "entry1";
77 this.entry1.Text = Mono.Unix.Catalog.GetString("http://gridserver:8001");
78 this.entry1.IsEditable = true;
79 this.entry1.MaxLength = 255;
80 this.entry1.InvisibleChar = '•';
81 this.hbox1.Add(this.entry1);
82 Gtk.Box.BoxChild w3 = ((Gtk.Box.BoxChild)(this.hbox1[this.entry1]));
83 w3.Position = 1;
84 this.vbox3.Add(this.hbox1);
85 Gtk.Box.BoxChild w4 = ((Gtk.Box.BoxChild)(this.vbox3[this.hbox1]));
86 w4.Position = 0;
87 w4.Expand = false;
88 w4.Fill = false;
89 // Container child vbox3.Gtk.Box+BoxChild
90 this.hbox2 = new Gtk.HBox();
91 this.hbox2.Name = "hbox2";
92 // Container child hbox2.Gtk.Box+BoxChild
93 this.label2 = new Gtk.Label();
94 this.label2.Name = "label2";
95 this.label2.Xalign = 1F;
96 this.label2.LabelProp = Mono.Unix.Catalog.GetString("Username:");
97 this.label2.Justify = ((Gtk.Justification)(1));
98 this.hbox2.Add(this.label2);
99 Gtk.Box.BoxChild w5 = ((Gtk.Box.BoxChild)(this.hbox2[this.label2]));
100 w5.Position = 0;
101 // Container child hbox2.Gtk.Box+BoxChild
102 this.entry2 = new Gtk.Entry();
103 this.entry2.CanFocus = true;
104 this.entry2.Name = "entry2";
105 this.entry2.IsEditable = true;
106 this.entry2.InvisibleChar = '•';
107 this.hbox2.Add(this.entry2);
108 Gtk.Box.BoxChild w6 = ((Gtk.Box.BoxChild)(this.hbox2[this.entry2]));
109 w6.Position = 1;
110 this.vbox3.Add(this.hbox2);
111 Gtk.Box.BoxChild w7 = ((Gtk.Box.BoxChild)(this.vbox3[this.hbox2]));
112 w7.Position = 1;
113 w7.Expand = false;
114 w7.Fill = false;
115 // Container child vbox3.Gtk.Box+BoxChild
116 this.hbox3 = new Gtk.HBox();
117 this.hbox3.Name = "hbox3";
118 // Container child hbox3.Gtk.Box+BoxChild
119 this.label3 = new Gtk.Label();
120 this.label3.Name = "label3";
121 this.label3.Xalign = 1F;
122 this.label3.LabelProp = Mono.Unix.Catalog.GetString("Password:");
123 this.label3.Justify = ((Gtk.Justification)(1));
124 this.hbox3.Add(this.label3);
125 Gtk.Box.BoxChild w8 = ((Gtk.Box.BoxChild)(this.hbox3[this.label3]));
126 w8.Position = 0;
127 // Container child hbox3.Gtk.Box+BoxChild
128 this.entry3 = new Gtk.Entry();
129 this.entry3.CanFocus = true;
130 this.entry3.Name = "entry3";
131 this.entry3.IsEditable = true;
132 this.entry3.InvisibleChar = '•';
133 this.hbox3.Add(this.entry3);
134 Gtk.Box.BoxChild w9 = ((Gtk.Box.BoxChild)(this.hbox3[this.entry3]));
135 w9.Position = 1;
136 this.vbox3.Add(this.hbox3);
137 Gtk.Box.BoxChild w10 = ((Gtk.Box.BoxChild)(this.vbox3[this.hbox3]));
138 w10.Position = 2;
139 w10.Expand = false;
140 w10.Fill = false;
141 this.vbox2.Add(this.vbox3);
142 Gtk.Box.BoxChild w11 = ((Gtk.Box.BoxChild)(this.vbox2[this.vbox3]));
143 w11.Position = 2;
144 w11.Expand = false;
145 w11.Fill = false;
146 w1.Add(this.vbox2);
147 Gtk.Box.BoxChild w12 = ((Gtk.Box.BoxChild)(w1[this.vbox2]));
148 w12.Position = 0;
149 // Internal child OpenGridServices.Manager.ConnectToGridServerDialog.ActionArea
150 Gtk.HButtonBox w13 = this.ActionArea;
151 w13.Events = ((Gdk.EventMask)(256));
152 w13.Name = "OpenGridServices.Manager.ConnectToGridServerDialog_ActionArea";
153 w13.Spacing = 6;
154 w13.BorderWidth = ((uint)(5));
155 w13.LayoutStyle = ((Gtk.ButtonBoxStyle)(4));
156 // Container child OpenGridServices.Manager.ConnectToGridServerDialog_ActionArea.Gtk.ButtonBox+ButtonBoxChild
157 this.button2 = new Gtk.Button();
158 this.button2.CanDefault = true;
159 this.button2.CanFocus = true;
160 this.button2.Name = "button2";
161 this.button2.UseUnderline = true;
162 // Container child button2.Gtk.Container+ContainerChild
163 Gtk.Alignment w14 = new Gtk.Alignment(0.5F, 0.5F, 0F, 0F);
164 w14.Name = "GtkAlignment";
165 // Container child GtkAlignment.Gtk.Container+ContainerChild
166 Gtk.HBox w15 = new Gtk.HBox();
167 w15.Name = "GtkHBox";
168 w15.Spacing = 2;
169 // Container child GtkHBox.Gtk.Container+ContainerChild
170 Gtk.Image w16 = new Gtk.Image();
171 w16.Name = "image1";
172 w16.Pixbuf = Gtk.IconTheme.Default.LoadIcon("gtk-apply", 16, 0);
173 w15.Add(w16);
174 // Container child GtkHBox.Gtk.Container+ContainerChild
175 Gtk.Label w18 = new Gtk.Label();
176 w18.Name = "GtkLabel";
177 w18.LabelProp = Mono.Unix.Catalog.GetString("Connect");
178 w18.UseUnderline = true;
179 w15.Add(w18);
180 w14.Add(w15);
181 this.button2.Add(w14);
182 this.AddActionWidget(this.button2, -5);
183 Gtk.ButtonBox.ButtonBoxChild w22 = ((Gtk.ButtonBox.ButtonBoxChild)(w13[this.button2]));
184 w22.Expand = false;
185 w22.Fill = false;
186 // Container child OpenGridServices.Manager.ConnectToGridServerDialog_ActionArea.Gtk.ButtonBox+ButtonBoxChild
187 this.button8 = new Gtk.Button();
188 this.button8.CanDefault = true;
189 this.button8.CanFocus = true;
190 this.button8.Name = "button8";
191 this.button8.UseUnderline = true;
192 // Container child button8.Gtk.Container+ContainerChild
193 Gtk.Alignment w23 = new Gtk.Alignment(0.5F, 0.5F, 0F, 0F);
194 w23.Name = "GtkAlignment1";
195 // Container child GtkAlignment1.Gtk.Container+ContainerChild
196 Gtk.HBox w24 = new Gtk.HBox();
197 w24.Name = "GtkHBox1";
198 w24.Spacing = 2;
199 // Container child GtkHBox1.Gtk.Container+ContainerChild
200 Gtk.Image w25 = new Gtk.Image();
201 w25.Name = "image2";
202 w25.Pixbuf = Gtk.IconTheme.Default.LoadIcon("gtk-cancel", 16, 0);
203 w24.Add(w25);
204 // Container child GtkHBox1.Gtk.Container+ContainerChild
205 Gtk.Label w27 = new Gtk.Label();
206 w27.Name = "GtkLabel1";
207 w27.LabelProp = Mono.Unix.Catalog.GetString("Cancel");
208 w27.UseUnderline = true;
209 w24.Add(w27);
210 w23.Add(w24);
211 this.button8.Add(w23);
212 this.AddActionWidget(this.button8, -6);
213 Gtk.ButtonBox.ButtonBoxChild w31 = ((Gtk.ButtonBox.ButtonBoxChild)(w13[this.button8]));
214 w31.Position = 1;
215 w31.Expand = false;
216 w31.Fill = false;
217 if ((this.Child != null)) {
218 this.Child.ShowAll();
219 }
220 this.DefaultWidth = 476;
221 this.DefaultHeight = 137;
222 this.Show();
223 this.Response += new Gtk.ResponseHandler(this.OnResponse);
224 }
225 }
226}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.MainWindow.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.MainWindow.cs
new file mode 100644
index 0000000..8798dac
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/OpenGridServices.Manager.MainWindow.cs
@@ -0,0 +1,256 @@
1// ------------------------------------------------------------------------------
2// <autogenerated>
3// This code was generated by a tool.
4// Mono Runtime Version: 2.0.50727.42
5//
6// Changes to this file may cause incorrect behavior and will be lost if
7// the code is regenerated.
8// </autogenerated>
9// ------------------------------------------------------------------------------
10
11namespace OpenGridServices.Manager {
12
13
14 public partial class MainWindow {
15
16 private Gtk.Action Grid;
17
18 private Gtk.Action User;
19
20 private Gtk.Action Asset;
21
22 private Gtk.Action Region;
23
24 private Gtk.Action Services;
25
26 private Gtk.Action ConnectToGridserver;
27
28 private Gtk.Action RestartWholeGrid;
29
30 private Gtk.Action ShutdownWholeGrid;
31
32 private Gtk.Action ExitGridManager;
33
34 private Gtk.Action ConnectToUserserver;
35
36 private Gtk.Action AccountManagment;
37
38 private Gtk.Action GlobalNotice;
39
40 private Gtk.Action DisableAllLogins;
41
42 private Gtk.Action DisableNonGodUsersOnly;
43
44 private Gtk.Action ShutdownUserServer;
45
46 private Gtk.Action ShutdownGridserverOnly;
47
48 private Gtk.Action RestartGridserverOnly;
49
50 private Gtk.Action DefaultLocalGridUserserver;
51
52 private Gtk.Action CustomUserserver;
53
54 private Gtk.Action RemoteGridDefaultUserserver;
55
56 private Gtk.Action DisconnectFromGridServer;
57
58 private Gtk.Action UploadAsset;
59
60 private Gtk.Action AssetManagement;
61
62 private Gtk.Action ConnectToAssetServer;
63
64 private Gtk.Action ConnectToDefaultAssetServerForGrid;
65
66 private Gtk.Action DefaultForLocalGrid;
67
68 private Gtk.Action DefaultForRemoteGrid;
69
70 private Gtk.Action CustomAssetServer;
71
72 private Gtk.VBox vbox1;
73
74 private Gtk.MenuBar menubar2;
75
76 private Gtk.HBox hbox1;
77
78 private Gtk.ScrolledWindow scrolledwindow1;
79
80 private Gtk.DrawingArea drawingarea1;
81
82 private Gtk.TreeView treeview1;
83
84 private Gtk.Statusbar statusbar1;
85
86 protected virtual void Build() {
87 Stetic.Gui.Initialize();
88 // Widget OpenGridServices.Manager.MainWindow
89 Gtk.UIManager w1 = new Gtk.UIManager();
90 Gtk.ActionGroup w2 = new Gtk.ActionGroup("Default");
91 this.Grid = new Gtk.Action("Grid", Mono.Unix.Catalog.GetString("Grid"), null, null);
92 this.Grid.HideIfEmpty = false;
93 this.Grid.ShortLabel = Mono.Unix.Catalog.GetString("Grid");
94 w2.Add(this.Grid, "<Alt><Mod2>g");
95 this.User = new Gtk.Action("User", Mono.Unix.Catalog.GetString("User"), null, null);
96 this.User.HideIfEmpty = false;
97 this.User.ShortLabel = Mono.Unix.Catalog.GetString("User");
98 w2.Add(this.User, null);
99 this.Asset = new Gtk.Action("Asset", Mono.Unix.Catalog.GetString("Asset"), null, null);
100 this.Asset.HideIfEmpty = false;
101 this.Asset.ShortLabel = Mono.Unix.Catalog.GetString("Asset");
102 w2.Add(this.Asset, null);
103 this.Region = new Gtk.Action("Region", Mono.Unix.Catalog.GetString("Region"), null, null);
104 this.Region.ShortLabel = Mono.Unix.Catalog.GetString("Region");
105 w2.Add(this.Region, null);
106 this.Services = new Gtk.Action("Services", Mono.Unix.Catalog.GetString("Services"), null, null);
107 this.Services.ShortLabel = Mono.Unix.Catalog.GetString("Services");
108 w2.Add(this.Services, null);
109 this.ConnectToGridserver = new Gtk.Action("ConnectToGridserver", Mono.Unix.Catalog.GetString("Connect to gridserver..."), null, "gtk-connect");
110 this.ConnectToGridserver.HideIfEmpty = false;
111 this.ConnectToGridserver.ShortLabel = Mono.Unix.Catalog.GetString("Connect to gridserver");
112 w2.Add(this.ConnectToGridserver, null);
113 this.RestartWholeGrid = new Gtk.Action("RestartWholeGrid", Mono.Unix.Catalog.GetString("Restart whole grid"), null, "gtk-refresh");
114 this.RestartWholeGrid.ShortLabel = Mono.Unix.Catalog.GetString("Restart whole grid");
115 w2.Add(this.RestartWholeGrid, null);
116 this.ShutdownWholeGrid = new Gtk.Action("ShutdownWholeGrid", Mono.Unix.Catalog.GetString("Shutdown whole grid"), null, "gtk-stop");
117 this.ShutdownWholeGrid.ShortLabel = Mono.Unix.Catalog.GetString("Shutdown whole grid");
118 w2.Add(this.ShutdownWholeGrid, null);
119 this.ExitGridManager = new Gtk.Action("ExitGridManager", Mono.Unix.Catalog.GetString("Exit grid manager"), null, "gtk-close");
120 this.ExitGridManager.ShortLabel = Mono.Unix.Catalog.GetString("Exit grid manager");
121 w2.Add(this.ExitGridManager, null);
122 this.ConnectToUserserver = new Gtk.Action("ConnectToUserserver", Mono.Unix.Catalog.GetString("Connect to userserver"), null, "gtk-connect");
123 this.ConnectToUserserver.ShortLabel = Mono.Unix.Catalog.GetString("Connect to userserver");
124 w2.Add(this.ConnectToUserserver, null);
125 this.AccountManagment = new Gtk.Action("AccountManagment", Mono.Unix.Catalog.GetString("Account managment"), null, "gtk-properties");
126 this.AccountManagment.ShortLabel = Mono.Unix.Catalog.GetString("Account managment");
127 w2.Add(this.AccountManagment, null);
128 this.GlobalNotice = new Gtk.Action("GlobalNotice", Mono.Unix.Catalog.GetString("Global notice"), null, "gtk-network");
129 this.GlobalNotice.ShortLabel = Mono.Unix.Catalog.GetString("Global notice");
130 w2.Add(this.GlobalNotice, null);
131 this.DisableAllLogins = new Gtk.Action("DisableAllLogins", Mono.Unix.Catalog.GetString("Disable all logins"), null, "gtk-no");
132 this.DisableAllLogins.ShortLabel = Mono.Unix.Catalog.GetString("Disable all logins");
133 w2.Add(this.DisableAllLogins, null);
134 this.DisableNonGodUsersOnly = new Gtk.Action("DisableNonGodUsersOnly", Mono.Unix.Catalog.GetString("Disable non-god users only"), null, "gtk-no");
135 this.DisableNonGodUsersOnly.ShortLabel = Mono.Unix.Catalog.GetString("Disable non-god users only");
136 w2.Add(this.DisableNonGodUsersOnly, null);
137 this.ShutdownUserServer = new Gtk.Action("ShutdownUserServer", Mono.Unix.Catalog.GetString("Shutdown user server"), null, "gtk-stop");
138 this.ShutdownUserServer.ShortLabel = Mono.Unix.Catalog.GetString("Shutdown user server");
139 w2.Add(this.ShutdownUserServer, null);
140 this.ShutdownGridserverOnly = new Gtk.Action("ShutdownGridserverOnly", Mono.Unix.Catalog.GetString("Shutdown gridserver only"), null, "gtk-stop");
141 this.ShutdownGridserverOnly.ShortLabel = Mono.Unix.Catalog.GetString("Shutdown gridserver only");
142 w2.Add(this.ShutdownGridserverOnly, null);
143 this.RestartGridserverOnly = new Gtk.Action("RestartGridserverOnly", Mono.Unix.Catalog.GetString("Restart gridserver only"), null, "gtk-refresh");
144 this.RestartGridserverOnly.ShortLabel = Mono.Unix.Catalog.GetString("Restart gridserver only");
145 w2.Add(this.RestartGridserverOnly, null);
146 this.DefaultLocalGridUserserver = new Gtk.Action("DefaultLocalGridUserserver", Mono.Unix.Catalog.GetString("Default local grid userserver"), null, null);
147 this.DefaultLocalGridUserserver.ShortLabel = Mono.Unix.Catalog.GetString("Default local grid userserver");
148 w2.Add(this.DefaultLocalGridUserserver, null);
149 this.CustomUserserver = new Gtk.Action("CustomUserserver", Mono.Unix.Catalog.GetString("Custom userserver..."), null, null);
150 this.CustomUserserver.ShortLabel = Mono.Unix.Catalog.GetString("Custom userserver");
151 w2.Add(this.CustomUserserver, null);
152 this.RemoteGridDefaultUserserver = new Gtk.Action("RemoteGridDefaultUserserver", Mono.Unix.Catalog.GetString("Remote grid default userserver..."), null, null);
153 this.RemoteGridDefaultUserserver.ShortLabel = Mono.Unix.Catalog.GetString("Remote grid default userserver");
154 w2.Add(this.RemoteGridDefaultUserserver, null);
155 this.DisconnectFromGridServer = new Gtk.Action("DisconnectFromGridServer", Mono.Unix.Catalog.GetString("Disconnect from grid server"), null, "gtk-disconnect");
156 this.DisconnectFromGridServer.ShortLabel = Mono.Unix.Catalog.GetString("Disconnect from grid server");
157 this.DisconnectFromGridServer.Visible = false;
158 w2.Add(this.DisconnectFromGridServer, null);
159 this.UploadAsset = new Gtk.Action("UploadAsset", Mono.Unix.Catalog.GetString("Upload asset"), null, null);
160 this.UploadAsset.ShortLabel = Mono.Unix.Catalog.GetString("Upload asset");
161 w2.Add(this.UploadAsset, null);
162 this.AssetManagement = new Gtk.Action("AssetManagement", Mono.Unix.Catalog.GetString("Asset management"), null, null);
163 this.AssetManagement.ShortLabel = Mono.Unix.Catalog.GetString("Asset management");
164 w2.Add(this.AssetManagement, null);
165 this.ConnectToAssetServer = new Gtk.Action("ConnectToAssetServer", Mono.Unix.Catalog.GetString("Connect to asset server"), null, null);
166 this.ConnectToAssetServer.ShortLabel = Mono.Unix.Catalog.GetString("Connect to asset server");
167 w2.Add(this.ConnectToAssetServer, null);
168 this.ConnectToDefaultAssetServerForGrid = new Gtk.Action("ConnectToDefaultAssetServerForGrid", Mono.Unix.Catalog.GetString("Connect to default asset server for grid"), null, null);
169 this.ConnectToDefaultAssetServerForGrid.ShortLabel = Mono.Unix.Catalog.GetString("Connect to default asset server for grid");
170 w2.Add(this.ConnectToDefaultAssetServerForGrid, null);
171 this.DefaultForLocalGrid = new Gtk.Action("DefaultForLocalGrid", Mono.Unix.Catalog.GetString("Default for local grid"), null, null);
172 this.DefaultForLocalGrid.ShortLabel = Mono.Unix.Catalog.GetString("Default for local grid");
173 w2.Add(this.DefaultForLocalGrid, null);
174 this.DefaultForRemoteGrid = new Gtk.Action("DefaultForRemoteGrid", Mono.Unix.Catalog.GetString("Default for remote grid..."), null, null);
175 this.DefaultForRemoteGrid.ShortLabel = Mono.Unix.Catalog.GetString("Default for remote grid...");
176 w2.Add(this.DefaultForRemoteGrid, null);
177 this.CustomAssetServer = new Gtk.Action("CustomAssetServer", Mono.Unix.Catalog.GetString("Custom asset server..."), null, null);
178 this.CustomAssetServer.ShortLabel = Mono.Unix.Catalog.GetString("Custom asset server...");
179 w2.Add(this.CustomAssetServer, null);
180 w1.InsertActionGroup(w2, 0);
181 this.AddAccelGroup(w1.AccelGroup);
182 this.WidthRequest = 800;
183 this.HeightRequest = 600;
184 this.Name = "OpenGridServices.Manager.MainWindow";
185 this.Title = Mono.Unix.Catalog.GetString("Open Grid Services Manager");
186 this.Icon = Gtk.IconTheme.Default.LoadIcon("gtk-network", 48, 0);
187 // Container child OpenGridServices.Manager.MainWindow.Gtk.Container+ContainerChild
188 this.vbox1 = new Gtk.VBox();
189 this.vbox1.Name = "vbox1";
190 // Container child vbox1.Gtk.Box+BoxChild
191 w1.AddUiFromString("<ui><menubar name='menubar2'><menu action='Grid'><menuitem action='ConnectToGridserver'/><menuitem action='DisconnectFromGridServer'/><separator/><menuitem action='RestartWholeGrid'/><menuitem action='RestartGridserverOnly'/><separator/><menuitem action='ShutdownWholeGrid'/><menuitem action='ShutdownGridserverOnly'/><separator/><menuitem action='ExitGridManager'/></menu><menu action='User'><menu action='ConnectToUserserver'><menuitem action='DefaultLocalGridUserserver'/><menuitem action='CustomUserserver'/><menuitem action='RemoteGridDefaultUserserver'/></menu><separator/><menuitem action='AccountManagment'/><menuitem action='GlobalNotice'/><separator/><menuitem action='DisableAllLogins'/><menuitem action='DisableNonGodUsersOnly'/><separator/><menuitem action='ShutdownUserServer'/></menu><menu action='Asset'><menuitem action='UploadAsset'/><menuitem action='AssetManagement'/><menu action='ConnectToAssetServer'><menuitem action='DefaultForLocalGrid'/><menuitem action='DefaultForRemoteGrid'/><menuitem action='CustomAssetServer'/></menu></menu><menu action='Region'/><menu action='Services'/></menubar></ui>");
192 this.menubar2 = ((Gtk.MenuBar)(w1.GetWidget("/menubar2")));
193 this.menubar2.HeightRequest = 25;
194 this.menubar2.Name = "menubar2";
195 this.vbox1.Add(this.menubar2);
196 Gtk.Box.BoxChild w3 = ((Gtk.Box.BoxChild)(this.vbox1[this.menubar2]));
197 w3.Position = 0;
198 w3.Expand = false;
199 w3.Fill = false;
200 // Container child vbox1.Gtk.Box+BoxChild
201 this.hbox1 = new Gtk.HBox();
202 this.hbox1.Name = "hbox1";
203 // Container child hbox1.Gtk.Box+BoxChild
204 this.scrolledwindow1 = new Gtk.ScrolledWindow();
205 this.scrolledwindow1.CanFocus = true;
206 this.scrolledwindow1.Name = "scrolledwindow1";
207 this.scrolledwindow1.VscrollbarPolicy = ((Gtk.PolicyType)(1));
208 this.scrolledwindow1.HscrollbarPolicy = ((Gtk.PolicyType)(1));
209 // Container child scrolledwindow1.Gtk.Container+ContainerChild
210 Gtk.Viewport w4 = new Gtk.Viewport();
211 w4.Name = "GtkViewport";
212 w4.ShadowType = ((Gtk.ShadowType)(0));
213 // Container child GtkViewport.Gtk.Container+ContainerChild
214 this.drawingarea1 = new Gtk.DrawingArea();
215 this.drawingarea1.Name = "drawingarea1";
216 w4.Add(this.drawingarea1);
217 this.scrolledwindow1.Add(w4);
218 this.hbox1.Add(this.scrolledwindow1);
219 Gtk.Box.BoxChild w7 = ((Gtk.Box.BoxChild)(this.hbox1[this.scrolledwindow1]));
220 w7.Position = 1;
221 // Container child hbox1.Gtk.Box+BoxChild
222 this.treeview1 = new Gtk.TreeView();
223 this.treeview1.CanFocus = true;
224 this.treeview1.Name = "treeview1";
225 this.hbox1.Add(this.treeview1);
226 Gtk.Box.BoxChild w8 = ((Gtk.Box.BoxChild)(this.hbox1[this.treeview1]));
227 w8.Position = 2;
228 this.vbox1.Add(this.hbox1);
229 Gtk.Box.BoxChild w9 = ((Gtk.Box.BoxChild)(this.vbox1[this.hbox1]));
230 w9.Position = 1;
231 // Container child vbox1.Gtk.Box+BoxChild
232 this.statusbar1 = new Gtk.Statusbar();
233 this.statusbar1.Name = "statusbar1";
234 this.statusbar1.Spacing = 5;
235 this.vbox1.Add(this.statusbar1);
236 Gtk.Box.BoxChild w10 = ((Gtk.Box.BoxChild)(this.vbox1[this.statusbar1]));
237 w10.PackType = ((Gtk.PackType)(1));
238 w10.Position = 2;
239 w10.Expand = false;
240 w10.Fill = false;
241 this.Add(this.vbox1);
242 if ((this.Child != null)) {
243 this.Child.ShowAll();
244 }
245 this.DefaultWidth = 800;
246 this.DefaultHeight = 800;
247 this.Show();
248 this.DeleteEvent += new Gtk.DeleteEventHandler(this.OnDeleteEvent);
249 this.ConnectToGridserver.Activated += new System.EventHandler(this.ConnectToGridServerMenu);
250 this.ExitGridManager.Activated += new System.EventHandler(this.QuitMenu);
251 this.ShutdownGridserverOnly.Activated += new System.EventHandler(this.ShutdownGridserverMenu);
252 this.RestartGridserverOnly.Activated += new System.EventHandler(this.RestartGridserverMenu);
253 this.DisconnectFromGridServer.Activated += new System.EventHandler(this.DisconnectGridServerMenu);
254 }
255 }
256}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/generated.cs b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/generated.cs
new file mode 100644
index 0000000..dd4abdd
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/generated.cs
@@ -0,0 +1,35 @@
1// ------------------------------------------------------------------------------
2// <autogenerated>
3// This code was generated by a tool.
4// Mono Runtime Version: 2.0.50727.42
5//
6// Changes to this file may cause incorrect behavior and will be lost if
7// the code is regenerated.
8// </autogenerated>
9// ------------------------------------------------------------------------------
10
11namespace Stetic {
12
13
14 internal class Gui {
15
16 private static bool initialized;
17
18 internal static void Initialize() {
19 if ((Stetic.Gui.initialized == false)) {
20 Stetic.Gui.initialized = true;
21 }
22 }
23 }
24
25 internal class ActionGroups {
26
27 public static Gtk.ActionGroup GetActionGroup(System.Type type) {
28 return Stetic.ActionGroups.GetActionGroup(type.FullName);
29 }
30
31 public static Gtk.ActionGroup GetActionGroup(string name) {
32 return null;
33 }
34 }
35}
diff --git a/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/gui.stetic b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/gui.stetic
new file mode 100644
index 0000000..c883f08
--- /dev/null
+++ b/OpenSim/Grid/Manager/OpenGridServices.Manager/gtk-gui/gui.stetic
@@ -0,0 +1,502 @@
1<?xml version="1.0" encoding="utf-8"?>
2<stetic-interface>
3 <widget class="Gtk.Window" id="OpenGridServices.Manager.MainWindow" design-size="800 800">
4 <action-group name="Default">
5 <action id="Grid">
6 <property name="Type">Action</property>
7 <property name="Accelerator">&lt;Alt&gt;&lt;Mod2&gt;g</property>
8 <property name="HideIfEmpty">False</property>
9 <property name="Label" translatable="yes">Grid</property>
10 <property name="ShortLabel" translatable="yes">Grid</property>
11 </action>
12 <action id="User">
13 <property name="Type">Action</property>
14 <property name="HideIfEmpty">False</property>
15 <property name="Label" translatable="yes">User</property>
16 <property name="ShortLabel" translatable="yes">User</property>
17 </action>
18 <action id="Asset">
19 <property name="Type">Action</property>
20 <property name="HideIfEmpty">False</property>
21 <property name="Label" translatable="yes">Asset</property>
22 <property name="ShortLabel" translatable="yes">Asset</property>
23 </action>
24 <action id="Region">
25 <property name="Type">Action</property>
26 <property name="Label" translatable="yes">Region</property>
27 <property name="ShortLabel" translatable="yes">Region</property>
28 </action>
29 <action id="Services">
30 <property name="Type">Action</property>
31 <property name="Label" translatable="yes">Services</property>
32 <property name="ShortLabel" translatable="yes">Services</property>
33 </action>
34 <action id="ConnectToGridserver">
35 <property name="Type">Action</property>
36 <property name="HideIfEmpty">False</property>
37 <property name="Label" translatable="yes">Connect to gridserver...</property>
38 <property name="ShortLabel" translatable="yes">Connect to gridserver</property>
39 <property name="StockId">gtk-connect</property>
40 <signal name="Activated" handler="ConnectToGridServerMenu" />
41 </action>
42 <action id="RestartWholeGrid">
43 <property name="Type">Action</property>
44 <property name="Label" translatable="yes">Restart whole grid</property>
45 <property name="ShortLabel" translatable="yes">Restart whole grid</property>
46 <property name="StockId">gtk-refresh</property>
47 </action>
48 <action id="ShutdownWholeGrid">
49 <property name="Type">Action</property>
50 <property name="Label" translatable="yes">Shutdown whole grid</property>
51 <property name="ShortLabel" translatable="yes">Shutdown whole grid</property>
52 <property name="StockId">gtk-stop</property>
53 </action>
54 <action id="ExitGridManager">
55 <property name="Type">Action</property>
56 <property name="Label" translatable="yes">Exit grid manager</property>
57 <property name="ShortLabel" translatable="yes">Exit grid manager</property>
58 <property name="StockId">gtk-close</property>
59 <signal name="Activated" handler="QuitMenu" after="yes" />
60 </action>
61 <action id="ConnectToUserserver">
62 <property name="Type">Action</property>
63 <property name="Label" translatable="yes">Connect to userserver</property>
64 <property name="ShortLabel" translatable="yes">Connect to userserver</property>
65 <property name="StockId">gtk-connect</property>
66 </action>
67 <action id="AccountManagment">
68 <property name="Type">Action</property>
69 <property name="Label" translatable="yes">Account managment</property>
70 <property name="ShortLabel" translatable="yes">Account managment</property>
71 <property name="StockId">gtk-properties</property>
72 </action>
73 <action id="GlobalNotice">
74 <property name="Type">Action</property>
75 <property name="Label" translatable="yes">Global notice</property>
76 <property name="ShortLabel" translatable="yes">Global notice</property>
77 <property name="StockId">gtk-network</property>
78 </action>
79 <action id="DisableAllLogins">
80 <property name="Type">Action</property>
81 <property name="Label" translatable="yes">Disable all logins</property>
82 <property name="ShortLabel" translatable="yes">Disable all logins</property>
83 <property name="StockId">gtk-no</property>
84 </action>
85 <action id="DisableNonGodUsersOnly">
86 <property name="Type">Action</property>
87 <property name="Label" translatable="yes">Disable non-god users only</property>
88 <property name="ShortLabel" translatable="yes">Disable non-god users only</property>
89 <property name="StockId">gtk-no</property>
90 </action>
91 <action id="ShutdownUserServer">
92 <property name="Type">Action</property>
93 <property name="Label" translatable="yes">Shutdown user server</property>
94 <property name="ShortLabel" translatable="yes">Shutdown user server</property>
95 <property name="StockId">gtk-stop</property>
96 </action>
97 <action id="ShutdownGridserverOnly">
98 <property name="Type">Action</property>
99 <property name="Label" translatable="yes">Shutdown gridserver only</property>
100 <property name="ShortLabel" translatable="yes">Shutdown gridserver only</property>
101 <property name="StockId">gtk-stop</property>
102 <signal name="Activated" handler="ShutdownGridserverMenu" after="yes" />
103 </action>
104 <action id="RestartGridserverOnly">
105 <property name="Type">Action</property>
106 <property name="Label" translatable="yes">Restart gridserver only</property>
107 <property name="ShortLabel" translatable="yes">Restart gridserver only</property>
108 <property name="StockId">gtk-refresh</property>
109 <signal name="Activated" handler="RestartGridserverMenu" after="yes" />
110 </action>
111 <action id="DefaultLocalGridUserserver">
112 <property name="Type">Action</property>
113 <property name="Label" translatable="yes">Default local grid userserver</property>
114 <property name="ShortLabel" translatable="yes">Default local grid userserver</property>
115 </action>
116 <action id="CustomUserserver">
117 <property name="Type">Action</property>
118 <property name="Label" translatable="yes">Custom userserver...</property>
119 <property name="ShortLabel" translatable="yes">Custom userserver</property>
120 </action>
121 <action id="RemoteGridDefaultUserserver">
122 <property name="Type">Action</property>
123 <property name="Label" translatable="yes">Remote grid default userserver...</property>
124 <property name="ShortLabel" translatable="yes">Remote grid default userserver</property>
125 </action>
126 <action id="DisconnectFromGridServer">
127 <property name="Type">Action</property>
128 <property name="Label" translatable="yes">Disconnect from grid server</property>
129 <property name="ShortLabel" translatable="yes">Disconnect from grid server</property>
130 <property name="StockId">gtk-disconnect</property>
131 <property name="Visible">False</property>
132 <signal name="Activated" handler="DisconnectGridServerMenu" after="yes" />
133 </action>
134 <action id="UploadAsset">
135 <property name="Type">Action</property>
136 <property name="Label" translatable="yes">Upload asset</property>
137 <property name="ShortLabel" translatable="yes">Upload asset</property>
138 </action>
139 <action id="AssetManagement">
140 <property name="Type">Action</property>
141 <property name="Label" translatable="yes">Asset management</property>
142 <property name="ShortLabel" translatable="yes">Asset management</property>
143 </action>
144 <action id="ConnectToAssetServer">
145 <property name="Type">Action</property>
146 <property name="Label" translatable="yes">Connect to asset server</property>
147 <property name="ShortLabel" translatable="yes">Connect to asset server</property>
148 </action>
149 <action id="ConnectToDefaultAssetServerForGrid">
150 <property name="Type">Action</property>
151 <property name="Label" translatable="yes">Connect to default asset server for grid</property>
152 <property name="ShortLabel" translatable="yes">Connect to default asset server for grid</property>
153 </action>
154 <action id="DefaultForLocalGrid">
155 <property name="Type">Action</property>
156 <property name="Label" translatable="yes">Default for local grid</property>
157 <property name="ShortLabel" translatable="yes">Default for local grid</property>
158 </action>
159 <action id="DefaultForRemoteGrid">
160 <property name="Type">Action</property>
161 <property name="Label" translatable="yes">Default for remote grid...</property>
162 <property name="ShortLabel" translatable="yes">Default for remote grid...</property>
163 </action>
164 <action id="CustomAssetServer">
165 <property name="Type">Action</property>
166 <property name="Label" translatable="yes">Custom asset server...</property>
167 <property name="ShortLabel" translatable="yes">Custom asset server...</property>
168 </action>
169 </action-group>
170 <property name="MemberName" />
171 <property name="WidthRequest">800</property>
172 <property name="HeightRequest">600</property>
173 <property name="Title" translatable="yes">Open Grid Services Manager</property>
174 <property name="Icon">stock:gtk-network Dialog</property>
175 <signal name="DeleteEvent" handler="OnDeleteEvent" />
176 <child>
177 <widget class="Gtk.VBox" id="vbox1">
178 <property name="MemberName" />
179 <child>
180 <widget class="Gtk.MenuBar" id="menubar2">
181 <property name="MemberName" />
182 <property name="HeightRequest">25</property>
183 <node name="menubar2" type="Menubar">
184 <node type="Menu" action="Grid">
185 <node type="Menuitem" action="ConnectToGridserver" />
186 <node type="Menuitem" action="DisconnectFromGridServer" />
187 <node type="Separator" />
188 <node type="Menuitem" action="RestartWholeGrid" />
189 <node type="Menuitem" action="RestartGridserverOnly" />
190 <node type="Separator" />
191 <node type="Menuitem" action="ShutdownWholeGrid" />
192 <node type="Menuitem" action="ShutdownGridserverOnly" />
193 <node type="Separator" />
194 <node type="Menuitem" action="ExitGridManager" />
195 </node>
196 <node type="Menu" action="User">
197 <node type="Menu" action="ConnectToUserserver">
198 <node type="Menuitem" action="DefaultLocalGridUserserver" />
199 <node type="Menuitem" action="CustomUserserver" />
200 <node type="Menuitem" action="RemoteGridDefaultUserserver" />
201 </node>
202 <node type="Separator" />
203 <node type="Menuitem" action="AccountManagment" />
204 <node type="Menuitem" action="GlobalNotice" />
205 <node type="Separator" />
206 <node type="Menuitem" action="DisableAllLogins" />
207 <node type="Menuitem" action="DisableNonGodUsersOnly" />
208 <node type="Separator" />
209 <node type="Menuitem" action="ShutdownUserServer" />
210 </node>
211 <node type="Menu" action="Asset">
212 <node type="Menuitem" action="UploadAsset" />
213 <node type="Menuitem" action="AssetManagement" />
214 <node type="Menu" action="ConnectToAssetServer">
215 <node type="Menuitem" action="DefaultForLocalGrid" />
216 <node type="Menuitem" action="DefaultForRemoteGrid" />
217 <node type="Menuitem" action="CustomAssetServer" />
218 </node>
219 </node>
220 <node type="Menu" action="Region" />
221 <node type="Menu" action="Services" />
222 </node>
223 </widget>
224 <packing>
225 <property name="Position">0</property>
226 <property name="AutoSize">False</property>
227 <property name="Expand">False</property>
228 <property name="Fill">False</property>
229 </packing>
230 </child>
231 <child>
232 <widget class="Gtk.HBox" id="hbox1">
233 <property name="MemberName" />
234 <child>
235 <placeholder />
236 </child>
237 <child>
238 <widget class="Gtk.ScrolledWindow" id="scrolledwindow1">
239 <property name="MemberName" />
240 <property name="CanFocus">True</property>
241 <property name="VscrollbarPolicy">Automatic</property>
242 <property name="HscrollbarPolicy">Automatic</property>
243 <child>
244 <widget class="Gtk.Viewport" id="GtkViewport">
245 <property name="MemberName" />
246 <property name="ShadowType">None</property>
247 <child>
248 <widget class="Gtk.DrawingArea" id="drawingarea1">
249 <property name="MemberName" />
250 </widget>
251 </child>
252 </widget>
253 </child>
254 </widget>
255 <packing>
256 <property name="Position">1</property>
257 <property name="AutoSize">True</property>
258 </packing>
259 </child>
260 <child>
261 <widget class="Gtk.TreeView" id="treeview1">
262 <property name="MemberName" />
263 <property name="CanFocus">True</property>
264 </widget>
265 <packing>
266 <property name="Position">2</property>
267 <property name="AutoSize">True</property>
268 </packing>
269 </child>
270 </widget>
271 <packing>
272 <property name="Position">1</property>
273 <property name="AutoSize">True</property>
274 </packing>
275 </child>
276 <child>
277 <widget class="Gtk.Statusbar" id="statusbar1">
278 <property name="MemberName">statusBar1</property>
279 <property name="Spacing">5</property>
280 <child>
281 <placeholder />
282 </child>
283 <child>
284 <placeholder />
285 </child>
286 </widget>
287 <packing>
288 <property name="PackType">End</property>
289 <property name="Position">2</property>
290 <property name="AutoSize">False</property>
291 <property name="Expand">False</property>
292 <property name="Fill">False</property>
293 </packing>
294 </child>
295 </widget>
296 </child>
297 </widget>
298 <widget class="Gtk.Dialog" id="OpenGridServices.Manager.ConnectToGridServerDialog" design-size="476 137">
299 <property name="MemberName" />
300 <property name="Events">ButtonPressMask</property>
301 <property name="Title" translatable="yes">Connect to Grid server</property>
302 <property name="WindowPosition">CenterOnParent</property>
303 <property name="Buttons">2</property>
304 <property name="HelpButton">False</property>
305 <property name="HasSeparator">False</property>
306 <signal name="Response" handler="OnResponse" />
307 <child internal-child="VBox">
308 <widget class="Gtk.VBox" id="dialog_VBox">
309 <property name="MemberName" />
310 <property name="Events">ButtonPressMask</property>
311 <property name="BorderWidth">2</property>
312 <child>
313 <widget class="Gtk.VBox" id="vbox2">
314 <property name="MemberName" />
315 <child>
316 <placeholder />
317 </child>
318 <child>
319 <placeholder />
320 </child>
321 <child>
322 <widget class="Gtk.VBox" id="vbox3">
323 <property name="MemberName" />
324 <child>
325 <widget class="Gtk.HBox" id="hbox1">
326 <property name="MemberName" />
327 <child>
328 <widget class="Gtk.Label" id="label1">
329 <property name="MemberName" />
330 <property name="Xalign">1</property>
331 <property name="LabelProp" translatable="yes">Grid server URL: </property>
332 <property name="Justify">Right</property>
333 </widget>
334 <packing>
335 <property name="Position">0</property>
336 <property name="AutoSize">False</property>
337 </packing>
338 </child>
339 <child>
340 <widget class="Gtk.Entry" id="entry1">
341 <property name="MemberName" />
342 <property name="CanFocus">True</property>
343 <property name="Text" translatable="yes">http://gridserver:8001</property>
344 <property name="IsEditable">True</property>
345 <property name="MaxLength">255</property>
346 <property name="InvisibleChar">•</property>
347 </widget>
348 <packing>
349 <property name="Position">1</property>
350 <property name="AutoSize">False</property>
351 </packing>
352 </child>
353 <child>
354 <placeholder />
355 </child>
356 </widget>
357 <packing>
358 <property name="Position">0</property>
359 <property name="AutoSize">True</property>
360 <property name="Expand">False</property>
361 <property name="Fill">False</property>
362 </packing>
363 </child>
364 <child>
365 <widget class="Gtk.HBox" id="hbox2">
366 <property name="MemberName" />
367 <child>
368 <widget class="Gtk.Label" id="label2">
369 <property name="MemberName" />
370 <property name="Xalign">1</property>
371 <property name="LabelProp" translatable="yes">Username:</property>
372 <property name="Justify">Right</property>
373 </widget>
374 <packing>
375 <property name="Position">0</property>
376 <property name="AutoSize">False</property>
377 </packing>
378 </child>
379 <child>
380 <widget class="Gtk.Entry" id="entry2">
381 <property name="MemberName" />
382 <property name="CanFocus">True</property>
383 <property name="IsEditable">True</property>
384 <property name="InvisibleChar">•</property>
385 </widget>
386 <packing>
387 <property name="Position">1</property>
388 <property name="AutoSize">True</property>
389 </packing>
390 </child>
391 <child>
392 <placeholder />
393 </child>
394 </widget>
395 <packing>
396 <property name="Position">1</property>
397 <property name="AutoSize">False</property>
398 <property name="Expand">False</property>
399 <property name="Fill">False</property>
400 </packing>
401 </child>
402 <child>
403 <widget class="Gtk.HBox" id="hbox3">
404 <property name="MemberName" />
405 <child>
406 <widget class="Gtk.Label" id="label3">
407 <property name="MemberName" />
408 <property name="Xalign">1</property>
409 <property name="LabelProp" translatable="yes">Password:</property>
410 <property name="Justify">Right</property>
411 </widget>
412 <packing>
413 <property name="Position">0</property>
414 <property name="AutoSize">False</property>
415 </packing>
416 </child>
417 <child>
418 <widget class="Gtk.Entry" id="entry3">
419 <property name="MemberName" />
420 <property name="CanFocus">True</property>
421 <property name="IsEditable">True</property>
422 <property name="InvisibleChar">•</property>
423 </widget>
424 <packing>
425 <property name="Position">1</property>
426 <property name="AutoSize">True</property>
427 </packing>
428 </child>
429 <child>
430 <placeholder />
431 </child>
432 </widget>
433 <packing>
434 <property name="Position">2</property>
435 <property name="AutoSize">True</property>
436 <property name="Expand">False</property>
437 <property name="Fill">False</property>
438 </packing>
439 </child>
440 </widget>
441 <packing>
442 <property name="Position">2</property>
443 <property name="AutoSize">True</property>
444 <property name="Expand">False</property>
445 <property name="Fill">False</property>
446 </packing>
447 </child>
448 </widget>
449 <packing>
450 <property name="Position">0</property>
451 <property name="AutoSize">True</property>
452 </packing>
453 </child>
454 </widget>
455 </child>
456 <child internal-child="ActionArea">
457 <widget class="Gtk.HButtonBox" id="OpenGridServices.Manager.ConnectToGridServerDialog_ActionArea">
458 <property name="MemberName" />
459 <property name="Events">ButtonPressMask</property>
460 <property name="Spacing">6</property>
461 <property name="BorderWidth">5</property>
462 <property name="Size">2</property>
463 <property name="LayoutStyle">End</property>
464 <child>
465 <widget class="Gtk.Button" id="button2">
466 <property name="MemberName" />
467 <property name="CanDefault">True</property>
468 <property name="CanFocus">True</property>
469 <property name="Type">TextAndIcon</property>
470 <property name="Icon">stock:gtk-apply Menu</property>
471 <property name="Label" translatable="yes">Connect</property>
472 <property name="UseUnderline">True</property>
473 <property name="IsDialogButton">True</property>
474 <property name="ResponseId">-5</property>
475 </widget>
476 <packing>
477 <property name="Expand">False</property>
478 <property name="Fill">False</property>
479 </packing>
480 </child>
481 <child>
482 <widget class="Gtk.Button" id="button8">
483 <property name="MemberName" />
484 <property name="CanDefault">True</property>
485 <property name="CanFocus">True</property>
486 <property name="Type">TextAndIcon</property>
487 <property name="Icon">stock:gtk-cancel Menu</property>
488 <property name="Label" translatable="yes">Cancel</property>
489 <property name="UseUnderline">True</property>
490 <property name="IsDialogButton">True</property>
491 <property name="ResponseId">-6</property>
492 </widget>
493 <packing>
494 <property name="Position">1</property>
495 <property name="Expand">False</property>
496 <property name="Fill">False</property>
497 </packing>
498 </child>
499 </widget>
500 </child>
501 </widget>
502</stetic-interface> \ No newline at end of file
diff --git a/OpenSim/Grid/UserServer.Config/AssemblyInfo.cs b/OpenSim/Grid/UserServer.Config/AssemblyInfo.cs
new file mode 100644
index 0000000..25e0211
--- /dev/null
+++ b/OpenSim/Grid/UserServer.Config/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("UserConfig")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("UserConfig")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Grid/UserServer.Config/DbUserConfig.cs b/OpenSim/Grid/UserServer.Config/DbUserConfig.cs
new file mode 100644
index 0000000..770a6b9
--- /dev/null
+++ b/OpenSim/Grid/UserServer.Config/DbUserConfig.cs
@@ -0,0 +1,96 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using OpenSim.Framework.Console;
31using OpenSim.Framework.Interfaces;
32using Db4objects.Db4o;
33
34namespace OpenUser.Config.UserConfigDb4o
35{
36 public class Db4oConfigPlugin: IUserConfig
37 {
38 public UserConfig GetConfigObject()
39 {
40 OpenSim.Framework.Console.MainLog.Instance.Verbose("Loading Db40Config dll");
41 return ( new DbUserConfig());
42 }
43 }
44
45 public class DbUserConfig : UserConfig
46 {
47 private IObjectContainer db;
48
49 public void LoadDefaults() {
50 OpenSim.Framework.Console.MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings");
51
52 this.DefaultStartupMsg = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default startup message", "Welcome to OGS");
53
54 this.GridServerURL = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid server URL","http://127.0.0.1:8001/");
55 this.GridSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to grid server","null");
56 this.GridRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from grid server","null");
57 }
58
59 public override void InitConfig() {
60 try {
61 db = Db4oFactory.OpenFile("openuser.yap");
62 IObjectSet result = db.Get(typeof(DbUserConfig));
63 if(result.Count==1) {
64 OpenSim.Framework.Console.MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a UserConfig object in the local database, loading");
65 foreach (DbUserConfig cfg in result) {
66 this.GridServerURL=cfg.GridServerURL;
67 this.GridSendKey=cfg.GridSendKey;
68 this.GridRecvKey=cfg.GridRecvKey;
69 this.DefaultStartupMsg=cfg.DefaultStartupMsg;
70 }
71 } else {
72 OpenSim.Framework.Console.MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults");
73 LoadDefaults();
74 OpenSim.Framework.Console.MainLog.Instance.Verbose("Writing out default settings to local database");
75 db.Set(this);
76 db.Close();
77 }
78 } catch(Exception e) {
79 OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
80 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
81 }
82
83 OpenSim.Framework.Console.MainLog.Instance.Verbose("User settings loaded:");
84 OpenSim.Framework.Console.MainLog.Instance.Verbose("Default startup message: " + this.DefaultStartupMsg);
85 OpenSim.Framework.Console.MainLog.Instance.Verbose("Grid server URL: " + this.GridServerURL);
86 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to send to grid: " + this.GridSendKey);
87 OpenSim.Framework.Console.MainLog.Instance.Verbose("Key to expect from grid: " + this.GridRecvKey);
88 }
89
90
91 public void Shutdown() {
92 db.Close();
93 }
94 }
95
96}
diff --git a/OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj b/OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj
new file mode 100644
index 0000000..1ae9589
--- /dev/null
+++ b/OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj
@@ -0,0 +1,107 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{08F87229-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Grid.UserServer.Config</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Grid.UserServer.Config</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework" >
70 <HintPath>OpenSim.Framework.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.Framework.Console" >
74 <HintPath>OpenSim.Framework.Console.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System" >
78 <HintPath>System.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="System.Data.dll" >
82 <HintPath>..\..\..\bin\System.Data.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="System.Xml" >
86 <HintPath>System.Xml.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 </ItemGroup>
90 <ItemGroup>
91 </ItemGroup>
92 <ItemGroup>
93 <Compile Include="AssemblyInfo.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="DbUserConfig.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 </ItemGroup>
100 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
101 <PropertyGroup>
102 <PreBuildEvent>
103 </PreBuildEvent>
104 <PostBuildEvent>
105 </PostBuildEvent>
106 </PropertyGroup>
107</Project>
diff --git a/OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj.user b/OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Grid/UserServer.Config/OpenSim.Grid.UserServer.Config.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs
new file mode 100644
index 0000000..5c27d57
--- /dev/null
+++ b/OpenSim/Grid/UserServer/Main.cs
@@ -0,0 +1,219 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections;
31using System.Collections.Generic;
32using System.Reflection;
33using System.IO;
34using System.Text;
35using libsecondlife;
36using OpenSim.Framework.User;
37using OpenSim.Framework.Sims;
38using OpenSim.Framework.Inventory;
39using OpenSim.Framework.Interfaces;
40using OpenSim.Framework.Console;
41using OpenSim.Servers;
42using OpenSim.Framework.Utilities;
43using OpenSim.GenericConfig;
44
45namespace OpenGridServices.UserServer
46{
47 /// <summary>
48 /// </summary>
49 public class OpenUser_Main : conscmd_callback
50 {
51 private string ConfigDll = "OpenUser.Config.UserConfigDb4o.dll";
52 private string StorageDll = "OpenGrid.Framework.Data.MySQL.dll";
53 private UserConfig Cfg;
54 protected IGenericConfig localXMLConfig;
55
56 public UserManager m_userManager;
57
58 public Dictionary<LLUUID, UserProfile> UserSessions = new Dictionary<LLUUID, UserProfile>();
59
60 LogBase m_console;
61
62 [STAThread]
63 public static void Main(string[] args)
64 {
65 Console.WriteLine("Launching UserServer...");
66
67 OpenUser_Main userserver = new OpenUser_Main();
68
69 userserver.Startup();
70 userserver.Work();
71 }
72
73 private OpenUser_Main()
74 {
75 m_console = new LogBase("opengrid-userserver-console.log", "OpenUser", this , false);
76 OpenSim.Framework.Console.MainLog.Instance = m_console;
77 }
78
79 private void Work()
80 {
81 m_console.Notice("Enter help for a list of commands\n");
82
83 while (true)
84 {
85 m_console.MainLogPrompt();
86 }
87 }
88
89 public void Startup()
90 {
91 this.localXMLConfig = new XmlConfig("UserServerConfig.xml");
92 this.localXMLConfig.LoadData();
93 this.ConfigDB(this.localXMLConfig);
94 this.localXMLConfig.Close();
95
96 OpenSim.Framework.Console.MainLog.Instance.Verbose("Main.cs:Startup() - Loading configuration");
97 Cfg = this.LoadConfigDll(this.ConfigDll);
98 Cfg.InitConfig();
99
100 OpenSim.Framework.Console.MainLog.Instance.Verbose("Main.cs:Startup() - Establishing data connection");
101 m_userManager = new UserManager();
102 m_userManager._config = Cfg;
103 m_userManager.AddPlugin(StorageDll);
104
105 OpenSim.Framework.Console.MainLog.Instance.Verbose("Main.cs:Startup() - Starting HTTP process");
106 BaseHttpServer httpServer = new BaseHttpServer(8002);
107
108 httpServer.AddXmlRPCHandler("login_to_simulator", m_userManager.XmlRpcLoginMethod);
109
110 httpServer.AddRestHandler("GET", "/user/name/", m_userManager.RestGetUserMethodName);
111 httpServer.AddRestHandler("GET", "/user/uuid/", m_userManager.RestGetUserMethodUUID);
112
113 httpServer.AddRestHandler("DELETE", "/usersessions/", m_userManager.RestDeleteUserSessionMethod);
114
115 httpServer.Start();
116 m_console.Status("Userserver 0.3 - Startup complete");
117 }
118
119
120 public void do_create(string what)
121 {
122 switch (what)
123 {
124 case "user":
125 string tempfirstname;
126 string templastname;
127 string tempMD5Passwd;
128 uint regX = 997;
129 uint regY = 996;
130
131 tempfirstname = m_console.CmdPrompt("First name");
132 templastname = m_console.CmdPrompt("Last name");
133 tempMD5Passwd = m_console.PasswdPrompt("Password");
134 regX = Convert.ToUInt32(m_console.CmdPrompt("Start Region X"));
135 regY = Convert.ToUInt32(m_console.CmdPrompt("Start Region Y"));
136
137 tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + "");
138
139 m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
140 break;
141 }
142 }
143
144 public void RunCmd(string cmd, string[] cmdparams)
145 {
146 switch (cmd)
147 {
148 case "help":
149 m_console.Notice("create user - create a new user");
150 m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
151 break;
152
153 case "create":
154 do_create(cmdparams[0]);
155 break;
156
157 case "shutdown":
158 m_console.Close();
159 Environment.Exit(0);
160 break;
161 }
162 }
163
164 private void ConfigDB(IGenericConfig configData)
165 {
166 try
167 {
168 string attri = "";
169 attri = configData.GetAttribute("DataBaseProvider");
170 if (attri == "")
171 {
172 StorageDll = "OpenGrid.Framework.Data.DB4o.dll";
173 configData.SetAttribute("DataBaseProvider", "OpenGrid.Framework.Data.DB4o.dll");
174 }
175 else
176 {
177 StorageDll = attri;
178 }
179 configData.Commit();
180 }
181 catch (Exception e)
182 {
183
184 }
185 }
186
187 private UserConfig LoadConfigDll(string dllName)
188 {
189 Assembly pluginAssembly = Assembly.LoadFrom(dllName);
190 UserConfig config = null;
191
192 foreach (Type pluginType in pluginAssembly.GetTypes())
193 {
194 if (pluginType.IsPublic)
195 {
196 if (!pluginType.IsAbstract)
197 {
198 Type typeInterface = pluginType.GetInterface("IUserConfig", true);
199
200 if (typeInterface != null)
201 {
202 IUserConfig plug = (IUserConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
203 config = plug.GetConfigObject();
204 break;
205 }
206
207 typeInterface = null;
208 }
209 }
210 }
211 pluginAssembly = null;
212 return config;
213 }
214
215 public void Show(string ShowWhat)
216 {
217 }
218 }
219}
diff --git a/OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj b/OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj
new file mode 100644
index 0000000..3c93b78
--- /dev/null
+++ b/OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj
@@ -0,0 +1,132 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{2FC96F92-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Grid.UserServer</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Exe</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Grid.UserServer</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework" >
70 <HintPath>OpenSim.Framework.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.Framework.Console" >
74 <HintPath>OpenSim.Framework.Console.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="OpenSim.Framework.GenericConfig.Xml" >
78 <HintPath>OpenSim.Framework.GenericConfig.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="OpenSim.Framework.Servers" >
82 <HintPath>OpenSim.Framework.Servers.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="OpenSim.Framework.UserManager" >
86 <HintPath>OpenSim.Framework.UserManager.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 <Reference Include="System" >
90 <HintPath>System.dll</HintPath>
91 <Private>False</Private>
92 </Reference>
93 <Reference Include="System.Data" >
94 <HintPath>System.Data.dll</HintPath>
95 <Private>False</Private>
96 </Reference>
97 <Reference Include="System.Xml" >
98 <HintPath>System.Xml.dll</HintPath>
99 <Private>False</Private>
100 </Reference>
101 <Reference Include="XMLRPC.dll" >
102 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
103 <Private>False</Private>
104 </Reference>
105 </ItemGroup>
106 <ItemGroup>
107 <ProjectReference Include="..\..\Framework\Data\OpenSim.Framework.Data.csproj">
108 <Name>OpenSim.Framework.Data</Name>
109 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
110 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
111 <Private>False</Private>
112 </ProjectReference>
113 </ItemGroup>
114 <ItemGroup>
115 <Compile Include="Main.cs">
116 <SubType>Code</SubType>
117 </Compile>
118 <Compile Include="UserManager.cs">
119 <SubType>Code</SubType>
120 </Compile>
121 <Compile Include="Properties\AssemblyInfo.cs">
122 <SubType>Code</SubType>
123 </Compile>
124 </ItemGroup>
125 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
126 <PropertyGroup>
127 <PreBuildEvent>
128 </PreBuildEvent>
129 <PostBuildEvent>
130 </PostBuildEvent>
131 </PropertyGroup>
132</Project>
diff --git a/OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj.user b/OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Grid/UserServer/OpenSim.Grid.UserServer.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Grid/UserServer/Properties/AssemblyInfo.cs b/OpenSim/Grid/UserServer/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..5d5ce8d
--- /dev/null
+++ b/OpenSim/Grid/UserServer/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OGS-UserServer")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OGS-UserServer")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("e266513a-090b-4d38-80f6-8599eef68c8c")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32[assembly: AssemblyVersion("1.0.0.0")]
33[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Grid/UserServer/UserManager.cs b/OpenSim/Grid/UserServer/UserManager.cs
new file mode 100644
index 0000000..0704de1
--- /dev/null
+++ b/OpenSim/Grid/UserServer/UserManager.cs
@@ -0,0 +1,103 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Text;
32using OpenGrid.Framework.Data;
33using libsecondlife;
34using System.Reflection;
35
36using System.Xml;
37using Nwc.XmlRpc;
38using OpenSim.Framework.Sims;
39using OpenSim.Framework.Inventory;
40using OpenSim.Framework.Utilities;
41using OpenGrid.Framework.UserManagement;
42
43using System.Security.Cryptography;
44
45namespace OpenGridServices.UserServer
46{
47 public class UserManager : UserManagerBase
48 {
49 public UserManager()
50 {
51 }
52
53 /// <summary>
54 /// Customises the login response and fills in missing values.
55 /// </summary>
56 /// <param name="response">The existing response</param>
57 /// <param name="theUser">The user profile</param>
58 public override void CustomiseResponse(ref LoginResponse response, ref UserProfileData theUser)
59 {
60 // Load information from the gridserver
61 SimProfile SimInfo = new SimProfile();
62 SimInfo = SimInfo.LoadFromGrid(theUser.currentAgent.currentHandle, _config.GridServerURL, _config.GridSendKey, _config.GridRecvKey);
63
64 // Customise the response
65 // Home Location
66 response.Home = "{'region_handle':[r" + (SimInfo.RegionLocX * 256).ToString() + ",r" + (SimInfo.RegionLocY * 256).ToString() + "], " +
67 "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " +
68 "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}";
69
70 // Destination
71 response.SimAddress = SimInfo.sim_ip;
72 response.SimPort = (Int32)SimInfo.sim_port;
73 response.RegionX = SimInfo.RegionLocY ;
74 response.RegionY = SimInfo.RegionLocX ;
75
76 // Notify the target of an incoming user
77 Console.WriteLine("Notifying " + SimInfo.regionname + " (" + SimInfo.caps_url + ")");
78
79 // Prepare notification
80 Hashtable SimParams = new Hashtable();
81 SimParams["session_id"] = theUser.currentAgent.sessionID.ToString();
82 SimParams["secure_session_id"] = theUser.currentAgent.secureSessionID.ToString();
83 SimParams["firstname"] = theUser.username;
84 SimParams["lastname"] = theUser.surname;
85 SimParams["agent_id"] = theUser.UUID.ToString();
86 SimParams["circuit_code"] = (Int32)Convert.ToUInt32(response.CircuitCode);
87 SimParams["startpos_x"] = theUser.currentAgent.currentPos.X.ToString();
88 SimParams["startpos_y"] = theUser.currentAgent.currentPos.Y.ToString();
89 SimParams["startpos_z"] = theUser.currentAgent.currentPos.Z.ToString();
90 SimParams["regionhandle"] = theUser.currentAgent.currentHandle.ToString();
91 ArrayList SendParams = new ArrayList();
92 SendParams.Add(SimParams);
93
94 // Update agent with target sim
95 theUser.currentAgent.currentRegion = SimInfo.UUID;
96 theUser.currentAgent.currentHandle = SimInfo.regionhandle;
97
98 // Send
99 XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams);
100 XmlRpcResponse GridResp = GridReq.Send(SimInfo.caps_url, 3000);
101 }
102 }
103}
diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs
new file mode 100644
index 0000000..40701b0
--- /dev/null
+++ b/OpenSim/Region/Application/Application.cs
@@ -0,0 +1,121 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Console;
32
33namespace OpenSim
34{
35 public class Application
36 {
37 //could move our main function into OpenSimMain and kill this class
38 [STAThread]
39 public static void Main(string[] args)
40 {
41 Console.WriteLine("OpenSim " + VersionInfo.Version + "\n");
42 Console.WriteLine("Starting...\n");
43
44 bool sandBoxMode = false;
45 bool startLoginServer = false;
46 string physicsEngine = "basicphysics";
47 bool allowFlying = false;
48 bool userAccounts = false;
49 bool gridLocalAsset = false;
50 bool useConfigFile = false;
51 bool silent = false;
52 string configFile = "simconfig.xml";
53
54 for (int i = 0; i < args.Length; i++)
55 {
56 if (args[i] == "-sandbox")
57 {
58 sandBoxMode = true;
59 startLoginServer = true;
60 }
61 /*
62 if (args[i] == "-loginserver")
63 {
64 startLoginServer = true;
65 }*/
66 if (args[i] == "-accounts")
67 {
68 userAccounts = true;
69 }
70 if (args[i] == "-realphysx")
71 {
72 physicsEngine = "RealPhysX";
73 allowFlying = true;
74 }
75 if (args[i] == "-ode")
76 {
77 physicsEngine = "OpenDynamicsEngine";
78 allowFlying = true;
79 }
80 if (args[i] == "-localasset")
81 {
82 gridLocalAsset = true;
83 }
84 if (args[i] == "-configfile")
85 {
86 useConfigFile = true;
87 }
88 if (args[i] == "-noverbose")
89 {
90 silent = true;
91 }
92 if (args[i] == "-config")
93 {
94 try
95 {
96 i++;
97 configFile = args[i];
98 }
99 catch (Exception e)
100 {
101 Console.WriteLine("-config: Please specify a config file. (" + e.ToString() + ")");
102 }
103 }
104 }
105
106 OpenSimMain sim = new OpenSimMain(sandBoxMode, startLoginServer, physicsEngine, useConfigFile, silent, configFile);
107 // OpenSimRoot.Instance.Application = sim;
108 sim.m_sandbox = sandBoxMode;
109 sim.user_accounts = userAccounts;
110 sim.gridLocalAsset = gridLocalAsset;
111 OpenSim.Region.Scenes.ScenePresence.PhysicsEngineFlying = allowFlying;
112
113 sim.StartUp();
114
115 while (true)
116 {
117 OpenSim.Framework.Console.MainLog.Instance.MainLogPrompt();
118 }
119 }
120 }
121}
diff --git a/OpenSim/Region/Application/OpenSim.csproj b/OpenSim/Region/Application/OpenSim.csproj
new file mode 100644
index 0000000..214f2cf
--- /dev/null
+++ b/OpenSim/Region/Application/OpenSim.csproj
@@ -0,0 +1,181 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{438A9556-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Exe</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Axiom.MathLib.dll" >
62 <HintPath>..\..\..\bin\Axiom.MathLib.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="Db4objects.Db4o.dll" >
66 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="libsecondlife.dll" >
70 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System" >
74 <HintPath>System.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="XMLRPC.dll" >
82 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 </ItemGroup>
86 <ItemGroup>
87 <ProjectReference Include="..\..\Framework\General\OpenSim.Framework.csproj">
88 <Name>OpenSim.Framework</Name>
89 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
90 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
91 <Private>False</Private>
92 </ProjectReference>
93 <ProjectReference Include="..\..\Framework\Communications\OpenSim.Framework.Communications.csproj">
94 <Name>OpenSim.Framework.Communications</Name>
95 <Project>{CB52B7E7-0000-0000-0000-000000000000}</Project>
96 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
97 <Private>False</Private>
98 </ProjectReference>
99 <ProjectReference Include="..\..\Framework\Communications.OGS1\OpenSim.Framework.Communications.OGS1.csproj">
100 <Name>OpenSim.Framework.Communications.OGS1</Name>
101 <Project>{6109024D-0000-0000-0000-000000000000}</Project>
102 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
103 <Private>False</Private>
104 </ProjectReference>
105 <ProjectReference Include="..\..\Framework\Console\OpenSim.Framework.Console.csproj">
106 <Name>OpenSim.Framework.Console</Name>
107 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
108 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
109 <Private>False</Private>
110 </ProjectReference>
111 <ProjectReference Include="..\..\Framework\GenericConfig\Xml\OpenSim.Framework.GenericConfig.Xml.csproj">
112 <Name>OpenSim.Framework.GenericConfig.Xml</Name>
113 <Project>{C74E4A30-0000-0000-0000-000000000000}</Project>
114 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
115 <Private>False</Private>
116 </ProjectReference>
117 <ProjectReference Include="..\..\Framework\Servers\OpenSim.Framework.Servers.csproj">
118 <Name>OpenSim.Framework.Servers</Name>
119 <Project>{2CC71860-0000-0000-0000-000000000000}</Project>
120 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
121 <Private>False</Private>
122 </ProjectReference>
123 <ProjectReference Include="..\..\Framework\UserManager\OpenSim.Framework.UserManagement.csproj">
124 <Name>OpenSim.Framework.UserManagement</Name>
125 <Project>{586E2916-0000-0000-0000-000000000000}</Project>
126 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
127 <Private>False</Private>
128 </ProjectReference>
129 <ProjectReference Include="..\Caches\OpenSim.Region.Caches.csproj">
130 <Name>OpenSim.Region.Caches</Name>
131 <Project>{61FCCDB3-0000-0000-0000-000000000000}</Project>
132 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
133 <Private>False</Private>
134 </ProjectReference>
135 <ProjectReference Include="..\ClientStack\OpenSim.Region.ClientStack.csproj">
136 <Name>OpenSim.Region.ClientStack</Name>
137 <Project>{DC3698B2-0000-0000-0000-000000000000}</Project>
138 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
139 <Private>False</Private>
140 </ProjectReference>
141 <ProjectReference Include="..\LocalCommunications\OpenSim.Region.LocalCommunications.csproj">
142 <Name>OpenSim.Region.LocalCommunications</Name>
143 <Project>{EB3A1BA8-0000-0000-0000-000000000000}</Project>
144 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
145 <Private>False</Private>
146 </ProjectReference>
147 <ProjectReference Include="..\Physics\Manager\OpenSim.Region.Physics.Manager.csproj">
148 <Name>OpenSim.Region.Physics.Manager</Name>
149 <Project>{F4FF31EB-0000-0000-0000-000000000000}</Project>
150 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
151 <Private>False</Private>
152 </ProjectReference>
153 <ProjectReference Include="..\Simulation\OpenSim.Region.Simulation.csproj">
154 <Name>OpenSim.Region.Simulation</Name>
155 <Project>{C0DAB338-0000-0000-0000-000000000000}</Project>
156 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
157 <Private>False</Private>
158 </ProjectReference>
159 <ProjectReference Include="..\Terrain.BasicTerrain\OpenSim.Region.Terrain.BasicTerrain.csproj">
160 <Name>OpenSim.Region.Terrain.BasicTerrain</Name>
161 <Project>{C9E0F891-0000-0000-0000-000000000000}</Project>
162 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
163 <Private>False</Private>
164 </ProjectReference>
165 </ItemGroup>
166 <ItemGroup>
167 <Compile Include="Application.cs">
168 <SubType>Code</SubType>
169 </Compile>
170 <Compile Include="OpenSimMain.cs">
171 <SubType>Code</SubType>
172 </Compile>
173 </ItemGroup>
174 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
175 <PropertyGroup>
176 <PreBuildEvent>
177 </PreBuildEvent>
178 <PostBuildEvent>
179 </PostBuildEvent>
180 </PropertyGroup>
181</Project>
diff --git a/OpenSim/Region/Application/OpenSim.csproj.user b/OpenSim/Region/Application/OpenSim.csproj.user
new file mode 100644
index 0000000..2ff1c4c
--- /dev/null
+++ b/OpenSim/Region/Application/OpenSim.csproj.user
@@ -0,0 +1,13 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <StartArguments>-loginserver -sandbox -accounts</StartArguments>
6 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
7 <LastOpenVersion>8.0.50727</LastOpenVersion>
8 <ProjectView>ProjectFiles</ProjectView>
9 <ProjectTrust>0</ProjectTrust>
10 </PropertyGroup>
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
12 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
13</Project>
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs
new file mode 100644
index 0000000..7da2263
--- /dev/null
+++ b/OpenSim/Region/Application/OpenSimMain.cs
@@ -0,0 +1,476 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Text;
31using System.IO;
32using System.Threading;
33using System.Net;
34using System.Net.Sockets;
35using System.Timers;
36using System.Reflection;
37using System.Collections;
38using System.Collections.Generic;
39using libsecondlife;
40using libsecondlife.Packets;
41using OpenSim.Region;
42using OpenSim.Region.Scenes;
43using OpenSim.Terrain;
44using OpenSim.Framework.Interfaces;
45using OpenSim.Framework.Types;
46using OpenSim.Framework;
47using OpenSim.Assets;
48using OpenSim.Caches;
49using OpenSim.Framework.Console;
50using OpenSim.Physics.Manager;
51using Nwc.XmlRpc;
52using OpenSim.Servers;
53using OpenSim.GenericConfig;
54using OpenGrid.Framework.Communications;
55using OpenSim.LocalCommunications;
56using OpenGrid.Framework.Communications.OGS1;
57
58namespace OpenSim
59{
60
61 public class OpenSimMain : RegionApplicationBase, conscmd_callback
62 {
63 // private CheckSumServer checkServer;
64 protected CommunicationsManager commsManager;
65
66 private bool m_silent;
67 private string m_logFilename = "region-console-" + Guid.NewGuid().ToString() + ".log";
68
69 public OpenSimMain(bool sandBoxMode, bool startLoginServer, string physicsEngine, bool useConfigFile, bool silent, string configFile)
70 {
71 this.configFileSetup = useConfigFile;
72 m_sandbox = sandBoxMode;
73 m_loginserver = startLoginServer;
74 m_physicsEngine = physicsEngine;
75 m_config = configFile;
76 m_silent = silent;
77 }
78
79 /// <summary>
80 /// Performs initialisation of the world, such as loading configuration from disk.
81 /// </summary>
82 public override void StartUp()
83 {
84 this.serversData = new NetworkServersInfo();
85
86 this.localConfig = new XmlConfig(m_config);
87 this.localConfig.LoadData();
88
89 if (this.configFileSetup)
90 {
91 this.SetupFromConfigFile(this.localConfig);
92 }
93
94 m_log = new LogBase(m_logFilename, "Region", this, m_silent);
95 OpenSim.Framework.Console.MainLog.Instance = m_log;
96
97 m_log.Verbose( "Main.cs:Startup() - Loading configuration");
98 this.serversData.InitConfig(this.m_sandbox, this.localConfig);
99 this.localConfig.Close();//for now we can close it as no other classes read from it , but this should change
100
101 ScenePresence.LoadTextureFile("avatar-texture.dat");
102
103 ClientView.TerrainManager = new TerrainManager(new SecondLife());
104
105 CommunicationsLocal sandboxCommunications = null;
106 if (m_sandbox)
107 {
108 this.SetupLocalGridServers();
109 // this.checkServer = new CheckSumServer(12036);
110 // this.checkServer.ServerListener();
111 sandboxCommunications = new CommunicationsLocal(this.serversData);
112 this.commsManager = sandboxCommunications;
113 }
114 else
115 {
116 this.SetupRemoteGridServers();
117 this.commsManager = new GridCommsManager(this.serversData);
118 }
119
120 startuptime = DateTime.Now;
121
122 this.physManager = new OpenSim.Physics.Manager.PhysicsManager();
123 this.physManager.LoadPlugins();
124
125 this.SetupHttpListener();
126
127 this.SetupWorld();
128
129 m_log.Verbose( "Main.cs:Startup() - Initialising HTTP server");
130
131
132
133 if (m_sandbox)
134 {
135 httpServer.AddXmlRPCHandler("login_to_simulator", sandboxCommunications.UserServices.XmlRpcLoginMethod);
136 }
137
138 //Start http server
139 m_log.Verbose( "Main.cs:Startup() - Starting HTTP server");
140 httpServer.Start();
141
142 // Start UDP servers
143 for (int i = 0; i < m_udpServer.Count; i++)
144 {
145 this.m_udpServer[i].ServerListener();
146 }
147
148 }
149
150 # region Setup methods
151 protected override void SetupLocalGridServers()
152 {
153 try
154 {
155 AssetCache = new AssetCache("OpenSim.GridInterfaces.Local.dll", this.serversData.AssetURL, this.serversData.AssetSendKey);
156 InventoryCache = new InventoryCache();
157 }
158 catch (Exception e)
159 {
160 m_log.Error( e.Message + "\nSorry, could not setup local cache");
161 Environment.Exit(1);
162 }
163
164 }
165
166 protected override void SetupRemoteGridServers()
167 {
168 try
169 {
170 AssetCache = new AssetCache("OpenSim.GridInterfaces.Remote.dll", this.serversData.AssetURL, this.serversData.AssetSendKey);
171 InventoryCache = new InventoryCache();
172 }
173 catch (Exception e)
174 {
175 m_log.Error( e.Message + "\nSorry, could not setup remote cache");
176 Environment.Exit(1);
177 }
178 }
179
180 protected override void SetupWorld()
181 {
182 IGenericConfig regionConfig;
183 Scene LocalWorld;
184 UDPServer udpServer;
185 RegionInfo regionDat = new RegionInfo();
186 AuthenticateSessionsBase authenBase;
187
188 string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Regions");
189 string[] configFiles = Directory.GetFiles(path, "*.xml");
190
191 if (configFiles.Length == 0)
192 {
193 string path2 = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Regions");
194 string path3 = Path.Combine(path2, "default.xml");
195 Console.WriteLine("Creating default region config file");
196 //TODO create default region
197 IGenericConfig defaultConfig = new XmlConfig(path3);
198 defaultConfig.LoadData();
199 defaultConfig.Commit();
200 defaultConfig.Close();
201 defaultConfig = null;
202 configFiles = Directory.GetFiles(path, "*.xml");
203 }
204
205 for (int i = 0; i < configFiles.Length; i++)
206 {
207 regionDat = new RegionInfo();
208 if (m_sandbox)
209 {
210 AuthenticateSessionsBase authen = new AuthenticateSessionsBase(); // new AuthenticateSessionsLocal();
211 this.AuthenticateSessionsHandler.Add(authen);
212 authenBase = authen;
213 }
214 else
215 {
216 AuthenticateSessionsBase authen = new AuthenticateSessionsBase(); //new AuthenticateSessionsRemote();
217 this.AuthenticateSessionsHandler.Add(authen);
218 authenBase = authen;
219 }
220 Console.WriteLine("Loading region config file");
221 regionConfig = new XmlConfig(configFiles[i]);
222 regionConfig.LoadData();
223 regionDat.InitConfig(this.m_sandbox, regionConfig);
224 regionConfig.Close();
225
226 udpServer = new UDPServer(regionDat.CommsIPListenPort, this.AssetCache, this.InventoryCache, this.m_log, authenBase);
227
228 m_udpServer.Add(udpServer);
229 this.regionData.Add(regionDat);
230
231 /*
232 m_log.WriteLine(OpenSim.Framework.Console.LogPriority.NORMAL, "Main.cs:Startup() - We are " + regionData.RegionName + " at " + regionData.RegionLocX.ToString() + "," + regionData.RegionLocY.ToString());
233 m_log.Verbose( "Initialising world");
234 m_log.componentname = "Region " + regionData.RegionName;
235 */
236
237 LocalWorld = new Scene(udpServer.PacketServer.ClientAPIs, regionDat, authenBase, commsManager, this.AssetCache, httpServer);
238 this.m_localWorld.Add(LocalWorld);
239 //LocalWorld.InventoryCache = InventoryCache;
240 //LocalWorld.AssetCache = AssetCache;
241
242 udpServer.LocalWorld = LocalWorld;
243
244 LocalWorld.LoadStorageDLL("OpenSim.Storage.LocalStorageDb4o.dll"); //all these dll names shouldn't be hard coded.
245 LocalWorld.LoadWorldMap();
246
247 m_log.Verbose( "Main.cs:Startup() - Starting up messaging system");
248 LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this.m_physicsEngine);
249 LocalWorld.PhysScene.SetTerrain(LocalWorld.Terrain.getHeights1D());
250 LocalWorld.LoadPrimsFromStorage();
251 LocalWorld.localStorage.LoadParcels((ILocalStorageParcelReceiver)LocalWorld.parcelManager);
252
253
254 LocalWorld.StartTimer();
255 }
256 }
257
258 protected override void SetupHttpListener()
259 {
260 httpServer = new BaseHttpServer(this.serversData.HttpListenerPort); //regionData[0].IPListenPort);
261
262 if (!this.m_sandbox)
263 {
264
265 // we are in Grid mode so set a XmlRpc handler to handle "expect_user" calls from the user server
266
267
268 httpServer.AddRestHandler("GET", "/simstatus/",
269 delegate(string request, string path, string param)
270 {
271 return "OK";
272 });
273 }
274 }
275
276 protected override void ConnectToRemoteGridServer()
277 {
278
279 }
280
281 #endregion
282
283 private void SetupFromConfigFile(IGenericConfig configData)
284 {
285 // Log filename
286 string attri = "";
287 attri = configData.GetAttribute("LogFilename");
288 if (String.IsNullOrEmpty(attri))
289 {
290 }
291 else
292 {
293 m_logFilename = attri;
294 }
295
296 // SandBoxMode
297 attri = "";
298 attri = configData.GetAttribute("SandBox");
299 if ((attri == "") || ((attri != "false") && (attri != "true")))
300 {
301 this.m_sandbox = false;
302 configData.SetAttribute("SandBox", "false");
303 }
304 else
305 {
306 this.m_sandbox = Convert.ToBoolean(attri);
307 }
308
309 // LoginServer
310 attri = "";
311 attri = configData.GetAttribute("LoginServer");
312 if ((attri == "") || ((attri != "false") && (attri != "true")))
313 {
314 this.m_loginserver = false;
315 configData.SetAttribute("LoginServer", "false");
316 }
317 else
318 {
319 this.m_loginserver = Convert.ToBoolean(attri);
320 }
321
322 // Sandbox User accounts
323 attri = "";
324 attri = configData.GetAttribute("UserAccount");
325 if ((attri == "") || ((attri != "false") && (attri != "true")))
326 {
327 this.user_accounts = false;
328 configData.SetAttribute("UserAccounts", "false");
329 }
330 else if (attri == "true")
331 {
332 this.user_accounts = Convert.ToBoolean(attri);
333 }
334
335 // Grid mode hack to use local asset server
336 attri = "";
337 attri = configData.GetAttribute("LocalAssets");
338 if ((attri == "") || ((attri != "false") && (attri != "true")))
339 {
340 this.gridLocalAsset = false;
341 configData.SetAttribute("LocalAssets", "false");
342 }
343 else if (attri == "true")
344 {
345 this.gridLocalAsset = Convert.ToBoolean(attri);
346 }
347
348
349 attri = "";
350 attri = configData.GetAttribute("PhysicsEngine");
351 switch (attri)
352 {
353 default:
354 m_log.Warn( "Main.cs: SetupFromConfig() - Invalid value for PhysicsEngine attribute, terminating");
355 Environment.Exit(1);
356 break;
357
358 case "":
359 this.m_physicsEngine = "basicphysics";
360 configData.SetAttribute("PhysicsEngine", "basicphysics");
361 OpenSim.Region.Scenes.ScenePresence.PhysicsEngineFlying = false;
362 break;
363
364 case "basicphysics":
365 this.m_physicsEngine = "basicphysics";
366 configData.SetAttribute("PhysicsEngine", "basicphysics");
367 OpenSim.Region.Scenes.ScenePresence.PhysicsEngineFlying = false;
368 break;
369
370 case "RealPhysX":
371 this.m_physicsEngine = "RealPhysX";
372 OpenSim.Region.Scenes.ScenePresence.PhysicsEngineFlying = true;
373 break;
374
375 case "OpenDynamicsEngine":
376 this.m_physicsEngine = "OpenDynamicsEngine";
377 OpenSim.Region.Scenes.ScenePresence.PhysicsEngineFlying = true;
378 break;
379 }
380
381 configData.Commit();
382
383 }
384
385 /// <summary>
386 /// Performs any last-minute sanity checking and shuts down the region server
387 /// </summary>
388 public virtual void Shutdown()
389 {
390 m_log.Verbose( "Main.cs:Shutdown() - Closing all threads");
391 m_log.Verbose( "Main.cs:Shutdown() - Killing listener thread");
392 m_log.Verbose( "Main.cs:Shutdown() - Killing clients");
393 // IMPLEMENT THIS
394 m_log.Verbose( "Main.cs:Shutdown() - Closing console and terminating");
395 for (int i = 0; i < m_localWorld.Count; i++)
396 {
397 ((Scene)m_localWorld[i]).Close();
398 }
399 m_log.Close();
400 Environment.Exit(0);
401 }
402
403 #region Console Commands
404 /// <summary>
405 /// Runs commands issued by the server console from the operator
406 /// </summary>
407 /// <param name="command">The first argument of the parameter (the command)</param>
408 /// <param name="cmdparams">Additional arguments passed to the command</param>
409 public void RunCmd(string command, string[] cmdparams)
410 {
411 switch (command)
412 {
413 case "help":
414 m_log.Error( "show users - show info about connected users");
415 m_log.Error( "shutdown - disconnect all clients and shutdown");
416 break;
417
418 case "show":
419 if (cmdparams.Length > 0)
420 {
421 Show(cmdparams[0]);
422 }
423 break;
424
425 case "terrain":
426 string result = "";
427 for (int i = 0; i < m_localWorld.Count; i++)
428 {
429 if (!((Scene)m_localWorld[i]).Terrain.RunTerrainCmd(cmdparams, ref result))
430 {
431 m_log.Error(result);
432 }
433 }
434 break;
435
436 case "shutdown":
437 Shutdown();
438 break;
439
440 default:
441 m_log.Error( "Unknown command");
442 break;
443 }
444 }
445
446 /// <summary>
447 /// Outputs to the console information about the region
448 /// </summary>
449 /// <param name="ShowWhat">What information to display (valid arguments are "uptime", "users")</param>
450 public void Show(string ShowWhat)
451 {
452 switch (ShowWhat)
453 {
454 case "uptime":
455 m_log.Error( "OpenSim has been running since " + startuptime.ToString());
456 m_log.Error( "That is " + (DateTime.Now - startuptime).ToString());
457 break;
458 case "users":
459 OpenSim.Region.Scenes.ScenePresence TempAv;
460 m_log.Error( String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16}{5,-16}", "Firstname", "Lastname", "Agent ID", "Session ID", "Circuit", "IP"));
461 /* foreach (libsecondlife.LLUUID UUID in LocalWorld.Entities.Keys)
462 {
463 if (LocalWorld.Entities[UUID].ToString() == "OpenSim.world.Avatar")
464 {
465 TempAv = (OpenSim.world.Avatar)LocalWorld.Entities[UUID];
466 m_log.Error( String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16},{5,-16}", TempAv.firstname, TempAv.lastname, UUID, TempAv.ControllingClient.SessionID, TempAv.ControllingClient.CircuitCode, TempAv.ControllingClient.userEP.ToString()));
467 }
468 }*/
469 break;
470 }
471 }
472 #endregion
473 }
474
475
476} \ No newline at end of file
diff --git a/OpenSim/Region/Caches/AssetCache.cs b/OpenSim/Region/Caches/AssetCache.cs
new file mode 100644
index 0000000..d0cc370
--- /dev/null
+++ b/OpenSim/Region/Caches/AssetCache.cs
@@ -0,0 +1,670 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.Threading;
32using System.Reflection;
33using libsecondlife;
34using libsecondlife.Packets;
35using OpenSim.Framework.Interfaces;
36using OpenSim.Framework.Types;
37using OpenSim.Framework.Utilities;
38
39namespace OpenSim.Caches
40{
41 public delegate void DownloadComplete(AssetCache.TextureSender sender);
42
43 /// <summary>
44 /// Manages local cache of assets and their sending to viewers.
45 /// </summary>
46 public class AssetCache : IAssetReceiver
47 {
48 public Dictionary<libsecondlife.LLUUID, AssetInfo> Assets;
49 public Dictionary<libsecondlife.LLUUID, TextureImage> Textures;
50
51 public List<AssetRequest> AssetRequests = new List<AssetRequest>(); //assets ready to be sent to viewers
52 public List<AssetRequest> TextureRequests = new List<AssetRequest>(); //textures ready to be sent
53
54 public Dictionary<LLUUID, AssetRequest> RequestedAssets = new Dictionary<LLUUID, AssetRequest>(); //Assets requested from the asset server
55 public Dictionary<LLUUID, AssetRequest> RequestedTextures = new Dictionary<LLUUID, AssetRequest>(); //Textures requested from the asset server
56
57 public Dictionary<LLUUID, TextureSender> SendingTextures = new Dictionary<LLUUID, TextureSender>();
58 private IAssetServer _assetServer;
59 private Thread _assetCacheThread;
60 private LLUUID[] textureList = new LLUUID[5];
61
62 /// <summary>
63 ///
64 /// </summary>
65 public AssetCache(IAssetServer assetServer)
66 {
67 Console.WriteLine("Creating Asset cache");
68 _assetServer = assetServer;
69 _assetServer.SetReceiver(this);
70 Assets = new Dictionary<libsecondlife.LLUUID, AssetInfo>();
71 Textures = new Dictionary<libsecondlife.LLUUID, TextureImage>();
72 this._assetCacheThread = new Thread(new ThreadStart(RunAssetManager));
73 this._assetCacheThread.IsBackground = true;
74 this._assetCacheThread.Start();
75
76 }
77
78 public AssetCache(string assetServerDLLName, string assetServerURL, string assetServerKey)
79 {
80 Console.WriteLine("Creating Asset cache");
81 _assetServer = this.LoadAssetDll(assetServerDLLName);
82 _assetServer.SetServerInfo(assetServerURL, assetServerKey);
83 _assetServer.SetReceiver(this);
84 Assets = new Dictionary<libsecondlife.LLUUID, AssetInfo>();
85 Textures = new Dictionary<libsecondlife.LLUUID, TextureImage>();
86 this._assetCacheThread = new Thread(new ThreadStart(RunAssetManager));
87 this._assetCacheThread.IsBackground = true;
88 this._assetCacheThread.Start();
89
90 }
91
92 /// <summary>
93 ///
94 /// </summary>
95 public void RunAssetManager()
96 {
97 while (true)
98 {
99 try
100 {
101 //Console.WriteLine("Asset cache loop");
102 this.ProcessAssetQueue();
103 this.ProcessTextureQueue();
104 Thread.Sleep(500);
105 }
106 catch (Exception e)
107 {
108 Console.WriteLine(e.Message);
109 }
110 }
111 }
112
113 public void LoadDefaultTextureSet()
114 {
115 //hack: so we can give each user a set of textures
116 textureList[0] = new LLUUID("00000000-0000-0000-9999-000000000001");
117 textureList[1] = new LLUUID("00000000-0000-0000-9999-000000000002");
118 textureList[2] = new LLUUID("00000000-0000-0000-9999-000000000003");
119 textureList[3] = new LLUUID("00000000-0000-0000-9999-000000000004");
120 textureList[4] = new LLUUID("00000000-0000-0000-9999-000000000005");
121
122 for (int i = 0; i < textureList.Length; i++)
123 {
124 this._assetServer.RequestAsset(textureList[i], true);
125 }
126
127 }
128
129 public AssetBase[] CreateNewInventorySet(LLUUID agentID)
130 {
131 AssetBase[] inventorySet = new AssetBase[this.textureList.Length];
132 for (int i = 0; i < textureList.Length; i++)
133 {
134 if (this.Textures.ContainsKey(textureList[i]))
135 {
136 inventorySet[i] = this.CloneImage(agentID, this.Textures[textureList[i]]);
137 TextureImage image = new TextureImage(inventorySet[i]);
138 this.Textures.Add(image.FullID, image);
139 this._assetServer.UploadNewAsset(image); //save the asset to the asset server
140 }
141 }
142 return inventorySet;
143 }
144
145 public AssetBase GetAsset(LLUUID assetID)
146 {
147 AssetBase asset = null;
148 if (this.Textures.ContainsKey(assetID))
149 {
150 asset = this.Textures[assetID];
151 }
152 else if (this.Assets.ContainsKey(assetID))
153 {
154 asset = this.Assets[assetID];
155 }
156 return asset;
157 }
158
159 public void AddAsset(AssetBase asset)
160 {
161 // Console.WriteLine("adding asset " + asset.FullID.ToStringHyphenated());
162 if (asset.Type == 0)
163 {
164 //Console.WriteLine("which is a texture");
165 if (!this.Textures.ContainsKey(asset.FullID))
166 { //texture
167 TextureImage textur = new TextureImage(asset);
168 this.Textures.Add(textur.FullID, textur);
169 this._assetServer.UploadNewAsset(asset);
170 }
171 }
172 else
173 {
174 if (!this.Assets.ContainsKey(asset.FullID))
175 {
176 AssetInfo assetInf = new AssetInfo(asset);
177 this.Assets.Add(assetInf.FullID, assetInf);
178 this._assetServer.UploadNewAsset(asset);
179 }
180 }
181 }
182
183 /// <summary>
184 ///
185 /// </summary>
186 private void ProcessTextureQueue()
187 {
188 if (this.TextureRequests.Count == 0)
189 {
190 //no requests waiting
191 return;
192 }
193 int num;
194 num = this.TextureRequests.Count;
195
196 AssetRequest req;
197 for (int i = 0; i < num; i++)
198 {
199 req = (AssetRequest)this.TextureRequests[i];
200 if (!this.SendingTextures.ContainsKey(req.ImageInfo.FullID))
201 {
202 TextureSender sender = new TextureSender(req);
203 sender.OnComplete += this.TextureSent;
204 lock (this.SendingTextures)
205 {
206 this.SendingTextures.Add(req.ImageInfo.FullID, sender);
207 }
208 }
209
210 }
211
212 this.TextureRequests.Clear();
213 }
214
215 /// <summary>
216 /// Event handler, called by a TextureSender object to say that texture has been sent
217 /// </summary>
218 /// <param name="sender"></param>
219 public void TextureSent(AssetCache.TextureSender sender)
220 {
221 if (this.SendingTextures.ContainsKey(sender.request.ImageInfo.FullID))
222 {
223 lock (this.SendingTextures)
224 {
225 this.SendingTextures.Remove(sender.request.ImageInfo.FullID);
226 }
227 }
228 }
229
230 public void AssetReceived(AssetBase asset, bool IsTexture)
231 {
232 if (asset.FullID != LLUUID.Zero) // if it is set to zero then the asset wasn't found by the server
233 {
234 //check if it is a texture or not
235 //then add to the correct cache list
236 //then check for waiting requests for this asset/texture (in the Requested lists)
237 //and move those requests into the Requests list.
238 if (IsTexture)
239 {
240 TextureImage image = new TextureImage(asset);
241 this.Textures.Add(image.FullID, image);
242 if (this.RequestedTextures.ContainsKey(image.FullID))
243 {
244 AssetRequest req = this.RequestedTextures[image.FullID];
245 req.ImageInfo = image;
246 if (image.Data.LongLength > 600)
247 {
248 //over 600 bytes so split up file
249 req.NumPackets = 1 + (int)(image.Data.Length - 600 + 999) / 1000;
250 }
251 else
252 {
253 req.NumPackets = 1;
254 }
255 this.RequestedTextures.Remove(image.FullID);
256 this.TextureRequests.Add(req);
257 }
258 }
259 else
260 {
261 AssetInfo assetInf = new AssetInfo(asset);
262 this.Assets.Add(assetInf.FullID, assetInf);
263 if (this.RequestedAssets.ContainsKey(assetInf.FullID))
264 {
265 AssetRequest req = this.RequestedAssets[assetInf.FullID];
266 req.AssetInf = assetInf;
267 if (assetInf.Data.LongLength > 600)
268 {
269 //over 600 bytes so split up file
270 req.NumPackets = 1 + (int)(assetInf.Data.Length - 600 + 999) / 1000;
271 }
272 else
273 {
274 req.NumPackets = 1;
275 }
276 this.RequestedAssets.Remove(assetInf.FullID);
277 this.AssetRequests.Add(req);
278 }
279 }
280 }
281 }
282
283 public void AssetNotFound(AssetBase asset)
284 {
285 //the asset server had no knowledge of requested asset
286
287 }
288
289 #region Assets
290 /// <summary>
291 ///
292 /// </summary>
293 /// <param name="userInfo"></param>
294 /// <param name="transferRequest"></param>
295 public void AddAssetRequest(IClientAPI userInfo, TransferRequestPacket transferRequest)
296 {
297 LLUUID requestID = new LLUUID(transferRequest.TransferInfo.Params, 0);
298 //check to see if asset is in local cache, if not we need to request it from asset server.
299
300 if (!this.Assets.ContainsKey(requestID))
301 {
302 //not found asset
303 // so request from asset server
304 if (!this.RequestedAssets.ContainsKey(requestID))
305 {
306 AssetRequest request = new AssetRequest();
307 request.RequestUser = userInfo;
308 request.RequestAssetID = requestID;
309 request.TransferRequestID = transferRequest.TransferInfo.TransferID;
310 this.RequestedAssets.Add(requestID, request);
311 this._assetServer.RequestAsset(requestID, false);
312 }
313 return;
314 }
315 //it is in our cache
316 AssetInfo asset = this.Assets[requestID];
317
318 //work out how many packets it should be sent in
319 // and add to the AssetRequests list
320 AssetRequest req = new AssetRequest();
321 req.RequestUser = userInfo;
322 req.RequestAssetID = requestID;
323 req.TransferRequestID = transferRequest.TransferInfo.TransferID;
324 req.AssetInf = asset;
325
326 if (asset.Data.LongLength > 600)
327 {
328 //over 600 bytes so split up file
329 req.NumPackets = 1 + (int)(asset.Data.Length - 600 + 999) / 1000;
330 }
331 else
332 {
333 req.NumPackets = 1;
334 }
335
336 this.AssetRequests.Add(req);
337 }
338
339 /// <summary>
340 ///
341 /// </summary>
342 private void ProcessAssetQueue()
343 {
344 if (this.AssetRequests.Count == 0)
345 {
346 //no requests waiting
347 return;
348 }
349 int num;
350
351 if (this.AssetRequests.Count < 5)
352 {
353 //lower than 5 so do all of them
354 num = this.AssetRequests.Count;
355 }
356 else
357 {
358 num = 5;
359 }
360 AssetRequest req;
361 for (int i = 0; i < num; i++)
362 {
363 req = (AssetRequest)this.AssetRequests[i];
364
365 TransferInfoPacket Transfer = new TransferInfoPacket();
366 Transfer.TransferInfo.ChannelType = 2;
367 Transfer.TransferInfo.Status = 0;
368 Transfer.TransferInfo.TargetType = 0;
369 Transfer.TransferInfo.Params = req.RequestAssetID.GetBytes();
370 Transfer.TransferInfo.Size = (int)req.AssetInf.Data.Length;
371 Transfer.TransferInfo.TransferID = req.TransferRequestID;
372 req.RequestUser.OutPacket(Transfer);
373
374 if (req.NumPackets == 1)
375 {
376 TransferPacketPacket TransferPacket = new TransferPacketPacket();
377 TransferPacket.TransferData.Packet = 0;
378 TransferPacket.TransferData.ChannelType = 2;
379 TransferPacket.TransferData.TransferID = req.TransferRequestID;
380 TransferPacket.TransferData.Data = req.AssetInf.Data;
381 TransferPacket.TransferData.Status = 1;
382 req.RequestUser.OutPacket(TransferPacket);
383 }
384 else
385 {
386 //more than one packet so split file up , for now it can't be bigger than 2000 bytes
387 TransferPacketPacket TransferPacket = new TransferPacketPacket();
388 TransferPacket.TransferData.Packet = 0;
389 TransferPacket.TransferData.ChannelType = 2;
390 TransferPacket.TransferData.TransferID = req.TransferRequestID;
391 byte[] chunk = new byte[1000];
392 Array.Copy(req.AssetInf.Data, chunk, 1000);
393 TransferPacket.TransferData.Data = chunk;
394 TransferPacket.TransferData.Status = 0;
395 req.RequestUser.OutPacket(TransferPacket);
396
397 TransferPacket = new TransferPacketPacket();
398 TransferPacket.TransferData.Packet = 1;
399 TransferPacket.TransferData.ChannelType = 2;
400 TransferPacket.TransferData.TransferID = req.TransferRequestID;
401 byte[] chunk1 = new byte[(req.AssetInf.Data.Length - 1000)];
402 Array.Copy(req.AssetInf.Data, 1000, chunk1, 0, chunk1.Length);
403 TransferPacket.TransferData.Data = chunk1;
404 TransferPacket.TransferData.Status = 1;
405 req.RequestUser.OutPacket(TransferPacket);
406 }
407
408 }
409
410 //remove requests that have been completed
411 for (int i = 0; i < num; i++)
412 {
413 this.AssetRequests.RemoveAt(0);
414 }
415
416 }
417
418 public AssetInfo CloneAsset(LLUUID newOwner, AssetInfo sourceAsset)
419 {
420 AssetInfo newAsset = new AssetInfo();
421 newAsset.Data = new byte[sourceAsset.Data.Length];
422 Array.Copy(sourceAsset.Data, newAsset.Data, sourceAsset.Data.Length);
423 newAsset.FullID = LLUUID.Random();
424 newAsset.Type = sourceAsset.Type;
425 newAsset.InvType = sourceAsset.InvType;
426 return (newAsset);
427 }
428 #endregion
429
430 #region Textures
431 /// <summary>
432 ///
433 /// </summary>
434 /// <param name="userInfo"></param>
435 /// <param name="imageID"></param>
436 public void AddTextureRequest(IClientAPI userInfo, LLUUID imageID)
437 {
438 //Console.WriteLine("texture request for " + imageID.ToStringHyphenated());
439 //check to see if texture is in local cache, if not request from asset server
440 if (!this.Textures.ContainsKey(imageID))
441 {
442 if (!this.RequestedTextures.ContainsKey(imageID))
443 {
444 //not is cache so request from asset server
445 AssetRequest request = new AssetRequest();
446 request.RequestUser = userInfo;
447 request.RequestAssetID = imageID;
448 request.IsTextureRequest = true;
449 this.RequestedTextures.Add(imageID, request);
450 this._assetServer.RequestAsset(imageID, true);
451 }
452 return;
453 }
454
455 //Console.WriteLine("texture already in cache");
456 TextureImage imag = this.Textures[imageID];
457 AssetRequest req = new AssetRequest();
458 req.RequestUser = userInfo;
459 req.RequestAssetID = imageID;
460 req.IsTextureRequest = true;
461 req.ImageInfo = imag;
462
463 if (imag.Data.LongLength > 600)
464 {
465 //over 600 bytes so split up file
466 req.NumPackets = 1 + (int)(imag.Data.Length - 600 + 999) / 1000;
467 }
468 else
469 {
470 req.NumPackets = 1;
471 }
472 this.TextureRequests.Add(req);
473 }
474
475 public TextureImage CloneImage(LLUUID newOwner, TextureImage source)
476 {
477 TextureImage newImage = new TextureImage();
478 newImage.Data = new byte[source.Data.Length];
479 Array.Copy(source.Data, newImage.Data, source.Data.Length);
480 //newImage.filename = source.filename;
481 newImage.FullID = LLUUID.Random();
482 newImage.Name = source.Name;
483 return (newImage);
484 }
485 #endregion
486
487 private IAssetServer LoadAssetDll(string dllName)
488 {
489 Assembly pluginAssembly = Assembly.LoadFrom(dllName);
490 IAssetServer server = null;
491
492 foreach (Type pluginType in pluginAssembly.GetTypes())
493 {
494 if (pluginType.IsPublic)
495 {
496 if (!pluginType.IsAbstract)
497 {
498 Type typeInterface = pluginType.GetInterface("IAssetPlugin", true);
499
500 if (typeInterface != null)
501 {
502 IAssetPlugin plug = (IAssetPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
503 server = plug.GetAssetServer();
504 break;
505 }
506
507 typeInterface = null;
508 }
509 }
510 }
511 pluginAssembly = null;
512 return server;
513 }
514
515 public class AssetRequest
516 {
517 public IClientAPI RequestUser;
518 public LLUUID RequestAssetID;
519 public AssetInfo AssetInf;
520 public TextureImage ImageInfo;
521 public LLUUID TransferRequestID;
522 public long DataPointer = 0;
523 public int NumPackets = 0;
524 public int PacketCounter = 0;
525 public bool IsTextureRequest;
526 //public bool AssetInCache;
527 //public int TimeRequested;
528
529 public AssetRequest()
530 {
531
532 }
533 }
534
535 public class AssetInfo : AssetBase
536 {
537 public AssetInfo()
538 {
539
540 }
541
542 public AssetInfo(AssetBase aBase)
543 {
544 Data = aBase.Data;
545 FullID = aBase.FullID;
546 Type = aBase.Type;
547 InvType = aBase.InvType;
548 Name = aBase.Name;
549 Description = aBase.Description;
550 }
551 }
552
553 public class TextureImage : AssetBase
554 {
555 public TextureImage()
556 {
557
558 }
559
560 public TextureImage(AssetBase aBase)
561 {
562 Data = aBase.Data;
563 FullID = aBase.FullID;
564 Type = aBase.Type;
565 InvType = aBase.InvType;
566 Name = aBase.Name;
567 Description = aBase.Description;
568 }
569 }
570
571 public class TextureSender
572 {
573 public AssetRequest request;
574 public event DownloadComplete OnComplete;
575 Thread m_thread;
576 public TextureSender(AssetRequest req)
577 {
578 request = req;
579 //Console.WriteLine("creating worker thread for texture " + req.ImageInfo.FullID.ToStringHyphenated());
580 //Console.WriteLine("texture data length is " + req.ImageInfo.Data.Length);
581 // Console.WriteLine("in " + req.NumPackets + " packets");
582 //ThreadPool.QueueUserWorkItem(new WaitCallback(SendTexture), new object());
583
584 //need some sort of custom threadpool here, as using the .net one, overloads it and stops the handling of incoming packets etc
585 //but don't really want to create a thread for every texture download
586 m_thread = new Thread(new ThreadStart(SendTexture));
587 m_thread.IsBackground = true;
588 m_thread.Start();
589 }
590
591 public void SendTexture()
592 {
593 //Console.WriteLine("starting to send sending texture " + request.ImageInfo.FullID.ToStringHyphenated());
594 while (request.PacketCounter != request.NumPackets)
595 {
596 SendPacket();
597 Thread.Sleep(500);
598 }
599
600 //Console.WriteLine("finished sending texture " + request.ImageInfo.FullID.ToStringHyphenated());
601 if (OnComplete != null)
602 {
603 OnComplete(this);
604 }
605 }
606
607 public void SendPacket()
608 {
609 AssetRequest req = request;
610 // Console.WriteLine("sending " + req.ImageInfo.FullID);
611
612 // if (req.ImageInfo.FullID == new LLUUID("00000000-0000-0000-5005-000000000005"))
613 if (req.PacketCounter == 0)
614 {
615 //first time for this request so send imagedata packet
616 if (req.NumPackets == 1)
617 {
618 //only one packet so send whole file
619 ImageDataPacket im = new ImageDataPacket();
620 im.ImageID.Packets = 1;
621 im.ImageID.ID = req.ImageInfo.FullID;
622 im.ImageID.Size = (uint)req.ImageInfo.Data.Length;
623 im.ImageData.Data = req.ImageInfo.Data;
624 im.ImageID.Codec = 2;
625 req.RequestUser.OutPacket(im);
626 req.PacketCounter++;
627 //req.ImageInfo.l= time;
628 //System.Console.WriteLine("sent texture: " + req.ImageInfo.FullID);
629 // Console.WriteLine("sending packet 1 for " + req.ImageInfo.FullID.ToStringHyphenated());
630 }
631 else
632 {
633 //more than one packet so split file up
634 ImageDataPacket im = new ImageDataPacket();
635 im.ImageID.Packets = (ushort)req.NumPackets;
636 im.ImageID.ID = req.ImageInfo.FullID;
637 im.ImageID.Size = (uint)req.ImageInfo.Data.Length;
638 im.ImageData.Data = new byte[600];
639 Array.Copy(req.ImageInfo.Data, 0, im.ImageData.Data, 0, 600);
640 im.ImageID.Codec = 2;
641 req.RequestUser.OutPacket(im);
642 req.PacketCounter++;
643 //req.ImageInfo.last_used = time;
644 //System.Console.WriteLine("sent first packet of texture:
645 // Console.WriteLine("sending packet 1 for " + req.ImageInfo.FullID.ToStringHyphenated());
646 }
647 }
648 else
649 {
650 //Console.WriteLine("sending packet" + req.PacketCounter + "for " + req.ImageInfo.FullID.ToStringHyphenated());
651 //send imagepacket
652 //more than one packet so split file up
653 ImagePacketPacket im = new ImagePacketPacket();
654 im.ImageID.Packet = (ushort)req.PacketCounter;
655 im.ImageID.ID = req.ImageInfo.FullID;
656 int size = req.ImageInfo.Data.Length - 600 - 1000 * (req.PacketCounter - 1);
657 if (size > 1000) size = 1000;
658 im.ImageData.Data = new byte[size];
659 Array.Copy(req.ImageInfo.Data, 600 + 1000 * (req.PacketCounter - 1), im.ImageData.Data, 0, size);
660 req.RequestUser.OutPacket(im);
661 req.PacketCounter++;
662 //req.ImageInfo.last_used = time;
663 //System.Console.WriteLine("sent a packet of texture: "+req.image_info.FullID);
664 }
665
666 }
667 }
668 }
669}
670
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
new file mode 100644
index 0000000..4a73d08
--- /dev/null
+++ b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
@@ -0,0 +1,97 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{61FCCDB3-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Caches</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Caches</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Xml" >
70 <HintPath>System.Xml.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 </ItemGroup>
74 <ItemGroup>
75 <ProjectReference Include="..\..\Framework\General\OpenSim.Framework.csproj">
76 <Name>OpenSim.Framework</Name>
77 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
78 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
79 <Private>False</Private>
80 </ProjectReference>
81 </ItemGroup>
82 <ItemGroup>
83 <Compile Include="AssetCache.cs">
84 <SubType>Code</SubType>
85 </Compile>
86 <Compile Include="Properties\AssemblyInfo.cs">
87 <SubType>Code</SubType>
88 </Compile>
89 </ItemGroup>
90 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
91 <PropertyGroup>
92 <PreBuildEvent>
93 </PreBuildEvent>
94 <PostBuildEvent>
95 </PostBuildEvent>
96 </PropertyGroup>
97</Project>
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Caches/Properties/AssemblyInfo.cs b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..00f5dfe
--- /dev/null
+++ b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenSim.Caches")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenSim.Caches")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("2b15ddbf-0341-49a6-85c0-cece268a4518")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Region/Caps/Caps.cs b/OpenSim/Region/Caps/Caps.cs
new file mode 100644
index 0000000..13a351d
--- /dev/null
+++ b/OpenSim/Region/Caps/Caps.cs
@@ -0,0 +1,258 @@
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Text;
5using System.IO;
6using System.Xml;
7using OpenSim.Servers;
8using OpenSim.Framework;
9using OpenSim.Framework.Utilities;
10using OpenSim.Framework.Types;
11using OpenSim.Caches;
12using libsecondlife;
13
14namespace OpenSim.Region
15{
16 public delegate void UpLoadedTexture(LLUUID assetID, LLUUID inventoryItem, byte[] data);
17
18 public class Caps
19 {
20 private string httpListenerAddress;
21 private uint httpListenPort;
22 private string capsObjectPath = "00001-";
23 private string requestPath = "0000/";
24 private string mapLayerPath = "0001/";
25 private string newInventory = "0002/";
26 private string requestTexture = "0003/";
27 private string eventQueue = "0100/";
28 private BaseHttpServer httpListener;
29 private LLUUID agentID;
30 private AssetCache assetCache;
31 private int eventQueueCount = 1;
32 private Queue<string> CapsEventQueue = new Queue<string>();
33
34 public Caps(AssetCache assetCach, BaseHttpServer httpServer, string httpListen, uint httpPort, string capsPath, LLUUID agent)
35 {
36 assetCache = assetCach;
37 capsObjectPath = capsPath;
38 httpListener = httpServer;
39 httpListenerAddress = httpListen;
40 httpListenPort = httpPort;
41 agentID = agent;
42 }
43
44 /// <summary>
45 ///
46 /// </summary>
47 public void RegisterHandlers()
48 {
49 Console.WriteLine("registering CAPS handlers");
50 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + requestPath, CapsRequest);
51 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + mapLayerPath, MapLayer);
52 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + newInventory, NewAgentInventory);
53 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + eventQueue, ProcessEventQueue);
54 }
55
56 /// <summary>
57 ///
58 /// </summary>
59 /// <param name="request"></param>
60 /// <param name="path"></param>
61 /// <param name="param"></param>
62 /// <returns></returns>
63 public string CapsRequest(string request, string path, string param)
64 {
65 // Console.WriteLine("Caps Request " + request);
66 string result = "";
67 result = LLSDHelpers.SerialiseLLSDReply(this.GetCapabilities());
68 return result;
69 }
70
71 /// <summary>
72 ///
73 /// </summary>
74 /// <returns></returns>
75 protected LLSDCapsDetails GetCapabilities()
76 {
77 /* string capURLS = "";
78 capURLS += "<key>MapLayer</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + mapLayerPath + "</string>";
79 capURLS += "<key>NewFileAgentInventory</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + newInventory + "</string>";
80 //capURLS += "<key>RequestTextureDownload</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + requestTexture + "</string>";
81 //capURLS += "<key>EventQueueGet</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + eventQueue + "</string>";
82 return capURLS;*/
83
84 LLSDCapsDetails caps = new LLSDCapsDetails();
85 caps.MapLayer = "http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + mapLayerPath;
86 caps.NewFileAgentInventory = "http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + newInventory;
87 return caps;
88 }
89
90 /// <summary>
91 ///
92 /// </summary>
93 /// <param name="request"></param>
94 /// <param name="path"></param>
95 /// <param name="param"></param>
96 /// <returns></returns>
97 public string MapLayer(string request, string path, string param)
98 {
99 Encoding _enc = System.Text.Encoding.UTF8;
100 Hashtable hash =(Hashtable) LLSD.LLSDDeserialize(_enc.GetBytes(request));
101 LLSDMapRequest mapReq = new LLSDMapRequest();
102 LLSDHelpers.DeserialiseLLSDMap(hash, mapReq );
103
104 LLSDMapLayerResponse mapResponse= new LLSDMapLayerResponse();
105 mapResponse.LayerData.Array.Add(this.BuildLLSDMapLayerResponse());
106 string res = LLSDHelpers.SerialiseLLSDReply(mapResponse);
107
108 //Console.WriteLine(" Maplayer response is " + res);
109
110 return res;
111 }
112
113 /// <summary>
114 ///
115 /// </summary>
116 /// <returns></returns>
117 protected LLSDMapLayer BuildLLSDMapLayerResponse()
118 {
119 LLSDMapLayer mapLayer = new LLSDMapLayer();
120 mapLayer.Right = 5000;
121 mapLayer.Top = 5000;
122 mapLayer.ImageID = new LLUUID("00000000-0000-0000-9999-000000000006");
123
124 return mapLayer;
125 }
126
127 public string ProcessEventQueue(string request, string path, string param)
128 {
129 // Console.WriteLine("event queue request " + request);
130 string res = "";
131 int timer = 0;
132
133 /*while ((timer < 200) || (this.CapsEventQueue.Count < 1))
134 {
135 timer++;
136 }*/
137 if (this.CapsEventQueue.Count > 0)
138 {
139 lock (this.CapsEventQueue)
140 {
141 string item = CapsEventQueue.Dequeue();
142 res = item;
143 }
144 }
145 else
146 {
147 res = this.CreateEmptyEventResponse();
148 }
149 return res;
150 }
151
152 public string CreateEstablishAgentComms(string caps, string ipAddressPort)
153 {
154 string res = "<llsd><map><key>id</key><integer>" + eventQueueCount + "</integer>";
155 res += "<key>events</key><array><map>";
156 res += "<key>message</key><string>EstablishAgentCommunication</string>";
157 res += "<key>body</key><map>";
158 res += "<key>sim-ip-and-port</key><string>" + ipAddressPort + "</string>";
159 res += "<key>seed-capability</key><string>" + caps + "</string>";
160 res += "<key>agent-id</key><uuid>" + this.agentID.ToStringHyphenated() + "</uuid>";
161 res += "</map>";
162 res += "</map></array>";
163 res += "</map></llsd>";
164 eventQueueCount++;
165 this.CapsEventQueue.Enqueue(res);
166 return res;
167 }
168
169 public string CreateEmptyEventResponse()
170 {
171 string res = "<llsd><map><key>id</key><integer>" + eventQueueCount + "</integer>";
172 res += "<key>events</key><array><map>";
173 res += "</map></array>";
174 res += "</map></llsd>";
175 eventQueueCount++;
176 return res;
177 }
178
179 public string NewAgentInventory(string request, string path, string param)
180 {
181 //Console.WriteLine("received upload request:"+ request);
182 string res = "";
183 LLUUID newAsset = LLUUID.Random();
184 LLUUID newInvItem = LLUUID.Random();
185 string uploaderPath = capsObjectPath + Util.RandomClass.Next(5000, 8000).ToString("0000");
186 AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener);
187 httpListener.AddRestHandler("POST", "/CAPS/" + uploaderPath, uploader.uploaderCaps);
188 string uploaderURL = "http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + uploaderPath;
189 //Console.WriteLine("uploader url is " + uploaderURL);
190 res += "<llsd><map>";
191 res += "<key>uploader</key><string>" + uploaderURL + "</string>";
192 //res += "<key>success</key><boolean>true</boolean>";
193 res += "<key>state</key><string>upload</string>";
194 res += "</map></llsd>";
195 uploader.OnUpLoad += this.UploadHandler;
196 return res;
197 }
198
199 public void UploadHandler(LLUUID assetID, LLUUID inventoryItem, byte[] data)
200 {
201 // Console.WriteLine("upload handler called");
202 AssetBase asset;
203 asset = new AssetBase();
204 asset.FullID = assetID;
205 asset.Type = 0;
206 asset.InvType = 0;
207 asset.Name = "UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000");
208 asset.Data = data;
209 this.assetCache.AddAsset(asset);
210 }
211
212 public class AssetUploader
213 {
214 public event UpLoadedTexture OnUpLoad;
215
216 private string uploaderPath = "";
217 private LLUUID newAssetID;
218 private LLUUID inventoryItemID;
219 private BaseHttpServer httpListener;
220 public AssetUploader(LLUUID assetID, LLUUID inventoryItem, string path, BaseHttpServer httpServer)
221 {
222 newAssetID = assetID;
223 inventoryItemID = inventoryItem;
224 uploaderPath = path;
225 httpListener = httpServer;
226
227 }
228
229 public string uploaderCaps(string request, string path, string param)
230 {
231 Encoding _enc = System.Text.Encoding.UTF8;
232 byte[] data = _enc.GetBytes(request);
233 //Console.WriteLine("recieved upload " + Util.FieldToString(data));
234 LLUUID inv = this.inventoryItemID;
235 string res = "";
236 res += "<llsd><map>";
237 res += "<key>new_asset</key><string>" + newAssetID.ToStringHyphenated() + "</string>";
238 res += "<key>new_inventory_item</key><uuid>" + inv.ToStringHyphenated() + "</uuid>";
239 res += "<key>state</key><string>complete</string>";
240 res += "</map></llsd>";
241
242 // Console.WriteLine("asset " + newAssetID.ToStringHyphenated() + " , inventory item " + inv.ToStringHyphenated());
243 httpListener.RemoveRestHandler("POST", "/CAPS/" + uploaderPath);
244 if (OnUpLoad != null)
245 {
246 OnUpLoad(newAssetID, inv, data);
247 }
248
249 /*FileStream fs = File.Create("upload.jp2");
250 BinaryWriter bw = new BinaryWriter(fs);
251 bw.Write(data);
252 bw.Close();
253 fs.Close();*/
254 return res;
255 }
256 }
257 }
258}
diff --git a/OpenSim/Region/Caps/LLSDHelpers.cs b/OpenSim/Region/Caps/LLSDHelpers.cs
new file mode 100644
index 0000000..051520c
--- /dev/null
+++ b/OpenSim/Region/Caps/LLSDHelpers.cs
@@ -0,0 +1,246 @@
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Text;
5using System.IO;
6using System.Xml;
7using libsecondlife;
8
9namespace OpenSim.Framework
10{
11 public class LLSDHelpers
12 {
13 public static string SerialiseLLSDReply(object obj)
14 {
15 StringWriter sw = new StringWriter();
16 XmlTextWriter writer = new XmlTextWriter(sw);
17 writer.Formatting = Formatting.None;
18 writer.WriteStartElement(String.Empty, "llsd", String.Empty);
19 LLSDHelpers.SerializeLLSDType(writer, obj);
20 writer.WriteEndElement();
21 writer.Close();
22 return sw.ToString();
23 }
24
25 public static void SerializeLLSDType(XmlTextWriter writer, object obj)
26 {
27 Type myType = obj.GetType();
28 LLSDType[] llsdattributes = (LLSDType[])myType.GetCustomAttributes(typeof(LLSDType), false);
29 if (llsdattributes.Length > 0)
30 {
31 switch (llsdattributes[0].ObjectType)
32 {
33 case "MAP":
34 writer.WriteStartElement(String.Empty, "map", String.Empty);
35 System.Reflection.FieldInfo[] fields = myType.GetFields();
36 for (int i = 0; i < fields.Length; i++)
37 {
38 object fieldValue = fields[i].GetValue(obj);
39 LLSDType[] fieldAttributes = (LLSDType[])fieldValue.GetType().GetCustomAttributes(typeof(LLSDType), false);
40 if (fieldAttributes.Length > 0)
41 {
42 writer.WriteStartElement(String.Empty, "key", String.Empty);
43 writer.WriteString(fields[i].Name);
44 writer.WriteEndElement();
45 SerializeLLSDType(writer, fieldValue);
46 }
47 else
48 {
49 //Console.WriteLine("LLSD field name" + fields[i].Name + " , " + fields[i].GetValue(obj).GetType());
50 writer.WriteStartElement(String.Empty, "key", String.Empty);
51 writer.WriteString(fields[i].Name);
52 writer.WriteEndElement();
53 LLSD.LLSDWriteOne(writer, fieldValue);
54 }
55 }
56 writer.WriteEndElement();
57 break;
58 case "ARRAY":
59 // LLSDArray arrayObject = obj as LLSDArray;
60 // ArrayList a = arrayObject.Array;
61 ArrayList a = (ArrayList)obj.GetType().GetField("Array").GetValue(obj);
62 writer.WriteStartElement(String.Empty, "array", String.Empty);
63 foreach (object item in a)
64 {
65 SerializeLLSDType(writer, item);
66 }
67 writer.WriteEndElement();
68 break;
69 }
70 }
71 else
72 {
73 LLSD.LLSDWriteOne(writer, obj);
74 }
75 }
76
77 public static object DeserialiseLLSDMap(Hashtable llsd, object obj)
78 {
79 Type myType = obj.GetType();
80 LLSDType[] llsdattributes = (LLSDType[])myType.GetCustomAttributes(typeof(LLSDType), false);
81 if (llsdattributes.Length > 0)
82 {
83 switch (llsdattributes[0].ObjectType)
84 {
85 case "MAP":
86 IDictionaryEnumerator enumerator = llsd.GetEnumerator();
87 while (enumerator.MoveNext())
88 {
89 System.Reflection.FieldInfo field = myType.GetField((string)enumerator.Key);
90 if (field != null)
91 {
92 if (enumerator.Value is Hashtable)
93 {
94 object fieldValue = field.GetValue(obj);
95 DeserialiseLLSDMap((Hashtable) enumerator.Value, fieldValue);
96 }
97 else if (enumerator.Value is ArrayList)
98 {
99 object fieldValue = field.GetValue(obj);
100 fieldValue.GetType().GetField("Array").SetValue(fieldValue, enumerator.Value);
101 //TODO
102 // the LLSD map/array types in the array need to be deserialised
103 // but first we need to know the right class to deserialise them into.
104 }
105 else
106 {
107 field.SetValue(obj, enumerator.Value);
108 }
109 }
110 }
111 break;
112 }
113 }
114 return obj;
115 }
116 }
117
118 [LLSDType("MAP")]
119 public class LLSDMapLayerResponse
120 {
121 public LLSDMapRequest AgentData = new LLSDMapRequest();
122 public LLSDArray LayerData = new LLSDArray();
123
124 public LLSDMapLayerResponse()
125 {
126
127 }
128 }
129
130 [LLSDType("MAP")]
131 public class LLSDCapsDetails
132 {
133 public string MapLayer = "";
134 public string NewFileAgentInventory = "";
135 //public string EventQueueGet = "";
136
137 public LLSDCapsDetails()
138 {
139
140 }
141 }
142
143 [LLSDType("MAP")]
144 public class LLSDMapLayer
145 {
146 public int Left = 0;
147 public int Right = 0;
148 public int Top = 0;
149 public int Bottom = 0;
150 public LLUUID ImageID = LLUUID.Zero;
151
152 public LLSDMapLayer()
153 {
154
155 }
156 }
157
158 [LLSDType("ARRAY")]
159 public class LLSDArray
160 {
161 public ArrayList Array = new ArrayList();
162
163 public LLSDArray()
164 {
165
166 }
167 }
168
169 [LLSDType("MAP")]
170 public class LLSDMapRequest
171 {
172 public int Flags = 0;
173
174 public LLSDMapRequest()
175 {
176
177 }
178 }
179
180 [LLSDType("MAP")]
181 public class LLSDUploadReply
182 {
183 public string new_asset = "";
184 public LLUUID new_inventory_item = LLUUID.Zero;
185 public string state = "";
186
187 public LLSDUploadReply()
188 {
189
190 }
191 }
192
193 [LLSDType("MAP")]
194 public class LLSDCapEvent
195 {
196 public int id = 0;
197 public LLSDArray events = new LLSDArray();
198
199 public LLSDCapEvent()
200 {
201
202 }
203 }
204
205 [LLSDType("MAP")]
206 public class LLSDEmpty
207 {
208 public LLSDEmpty()
209 {
210
211 }
212 }
213
214 [LLSDType("MAP")]
215 public class LLSDTest
216 {
217 public int Test1 = 20;
218 public int Test2 = 10;
219
220 public LLSDTest()
221 {
222
223 }
224 }
225
226
227 [AttributeUsage(AttributeTargets.Class)]
228 public class LLSDType : Attribute
229 {
230 private string myType;
231
232 public LLSDType(string type)
233 {
234 myType = type;
235
236 }
237
238 public string ObjectType
239 {
240 get
241 {
242 return myType;
243 }
244 }
245 }
246}
diff --git a/OpenSim/Region/ClientStack/Assets/InventoryCache.cs b/OpenSim/Region/ClientStack/Assets/InventoryCache.cs
new file mode 100644
index 0000000..5d5021c
--- /dev/null
+++ b/OpenSim/Region/ClientStack/Assets/InventoryCache.cs
@@ -0,0 +1,337 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using libsecondlife;
32using OpenSim;
33using libsecondlife.Packets;
34//using OpenSim.GridServers;
35using OpenSim.Framework.Inventory;
36using OpenSim.Framework.Types;
37using OpenSim.Framework.Interfaces;
38
39namespace OpenSim.Assets
40{
41 /// <summary>
42 /// Description of InventoryManager.
43 /// </summary>
44 public class InventoryCache
45 {
46 private Dictionary<LLUUID, AgentInventory> _agentsInventory;
47 private List<UserServerRequest> _serverRequests; //list of requests made to user server.
48 private System.Text.Encoding _enc = System.Text.Encoding.ASCII;
49 private const uint FULL_MASK_PERMISSIONS = 2147483647;
50
51 public InventoryCache()
52 {
53 _agentsInventory = new Dictionary<LLUUID, AgentInventory>();
54 _serverRequests = new List<UserServerRequest>();
55 }
56
57 public void AddNewAgentsInventory(AgentInventory agentInventory)
58 {
59 if (!this._agentsInventory.ContainsKey(agentInventory.AgentID))
60 {
61 this._agentsInventory.Add(agentInventory.AgentID, agentInventory);
62 }
63 }
64
65 public AgentInventory FetchAgentsInventory(LLUUID agentID, IUserServer userserver)
66 {
67 AgentInventory res = null;
68 if (!this._agentsInventory.ContainsKey(agentID))
69 {
70 res = userserver.RequestAgentsInventory(agentID);
71 this._agentsInventory.Add(agentID,res);
72 }
73 return res;
74 }
75
76 public AgentInventory GetAgentsInventory(LLUUID agentID)
77 {
78 if (this._agentsInventory.ContainsKey(agentID))
79 {
80 return this._agentsInventory[agentID];
81 }
82
83 return null;
84 }
85
86 public void ClientLeaving(LLUUID clientID, IUserServer userserver)
87 {
88 if (this._agentsInventory.ContainsKey(clientID))
89 {
90 if (userserver != null)
91 {
92 userserver.UpdateAgentsInventory(clientID, this._agentsInventory[clientID]);
93 }
94 this._agentsInventory.Remove(clientID);
95 }
96 }
97
98 public bool CreateNewInventoryFolder(ClientView remoteClient, LLUUID folderID)
99 {
100 return this.CreateNewInventoryFolder(remoteClient, folderID, 0);
101 }
102
103 public bool CreateNewInventoryFolder(ClientView remoteClient, LLUUID folderID, ushort type)
104 {
105 bool res = false;
106 if (folderID != LLUUID.Zero) //don't create a folder with a zero id
107 {
108 if (this._agentsInventory.ContainsKey(remoteClient.AgentID))
109 {
110 res = this._agentsInventory[remoteClient.AgentID].CreateNewFolder(folderID, type);
111 }
112 }
113 return res;
114 }
115
116 public bool CreateNewInventoryFolder(ClientView remoteClient, LLUUID folderID, ushort type, string folderName, LLUUID parent)
117 {
118 bool res = false;
119 if (folderID != LLUUID.Zero) //don't create a folder with a zero id
120 {
121 if (this._agentsInventory.ContainsKey(remoteClient.AgentID))
122 {
123 res = this._agentsInventory[remoteClient.AgentID].CreateNewFolder(folderID, type, folderName, parent);
124 }
125 }
126 return res;
127 }
128
129 public LLUUID AddNewInventoryItem(ClientView remoteClient, LLUUID folderID, OpenSim.Framework.Types.AssetBase asset)
130 {
131 LLUUID newItem = null;
132 if (this._agentsInventory.ContainsKey(remoteClient.AgentID))
133 {
134 newItem = this._agentsInventory[remoteClient.AgentID].AddToInventory(folderID, asset);
135 if (newItem != null)
136 {
137 InventoryItem Item = this._agentsInventory[remoteClient.AgentID].InventoryItems[newItem];
138 this.SendItemUpdateCreate(remoteClient, Item);
139 }
140 }
141
142 return newItem;
143 }
144 public bool DeleteInventoryItem(ClientView remoteClient, LLUUID itemID)
145 {
146 bool res = false;
147 if (this._agentsInventory.ContainsKey(remoteClient.AgentID))
148 {
149 res = this._agentsInventory[remoteClient.AgentID].DeleteFromInventory(itemID);
150 if (res)
151 {
152 RemoveInventoryItemPacket remove = new RemoveInventoryItemPacket();
153 remove.AgentData.AgentID = remoteClient.AgentID;
154 remove.AgentData.SessionID = remoteClient.SessionID;
155 remove.InventoryData = new RemoveInventoryItemPacket.InventoryDataBlock[1];
156 remove.InventoryData[0] = new RemoveInventoryItemPacket.InventoryDataBlock();
157 remove.InventoryData[0].ItemID = itemID;
158 remoteClient.OutPacket(remove);
159 }
160 }
161
162 return res;
163 }
164
165 public bool UpdateInventoryItemAsset(ClientView remoteClient, LLUUID itemID, OpenSim.Framework.Types.AssetBase asset)
166 {
167 if (this._agentsInventory.ContainsKey(remoteClient.AgentID))
168 {
169 bool res = _agentsInventory[remoteClient.AgentID].UpdateItemAsset(itemID, asset);
170 if (res)
171 {
172 InventoryItem Item = this._agentsInventory[remoteClient.AgentID].InventoryItems[itemID];
173 this.SendItemUpdateCreate(remoteClient, Item);
174 }
175 return res;
176 }
177
178 return false;
179 }
180
181 public bool UpdateInventoryItemDetails(ClientView remoteClient, LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet)
182 {
183 if (this._agentsInventory.ContainsKey(remoteClient.AgentID))
184 {
185 bool res = _agentsInventory[remoteClient.AgentID].UpdateItemDetails(itemID, packet);
186 if (res)
187 {
188 InventoryItem Item = this._agentsInventory[remoteClient.AgentID].InventoryItems[itemID];
189 this.SendItemUpdateCreate(remoteClient, Item);
190 }
191 return res;
192 }
193
194 return false;
195 }
196
197 public void FetchInventoryDescendents(ClientView userInfo, FetchInventoryDescendentsPacket FetchDescend)
198 {
199 if (this._agentsInventory.ContainsKey(userInfo.AgentID))
200 {
201 AgentInventory agentInventory = this._agentsInventory[userInfo.AgentID];
202 if (FetchDescend.InventoryData.FetchItems)
203 {
204 if (agentInventory.InventoryFolders.ContainsKey(FetchDescend.InventoryData.FolderID))
205 {
206 InventoryFolder Folder = agentInventory.InventoryFolders[FetchDescend.InventoryData.FolderID];
207 InventoryDescendentsPacket Descend = new InventoryDescendentsPacket();
208 Descend.AgentData.AgentID = userInfo.AgentID;
209 Descend.AgentData.OwnerID = Folder.OwnerID;
210 Descend.AgentData.FolderID = FetchDescend.InventoryData.FolderID;
211 Descend.AgentData.Descendents = Folder.Items.Count;
212 Descend.AgentData.Version = Folder.Items.Count;
213
214
215 Descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[Folder.Items.Count];
216 for (int i = 0; i < Folder.Items.Count; i++)
217 {
218
219 InventoryItem Item = Folder.Items[i];
220 Descend.ItemData[i] = new InventoryDescendentsPacket.ItemDataBlock();
221 Descend.ItemData[i].ItemID = Item.ItemID;
222 Descend.ItemData[i].AssetID = Item.AssetID;
223 Descend.ItemData[i].CreatorID = Item.CreatorID;
224 Descend.ItemData[i].BaseMask = FULL_MASK_PERMISSIONS;
225 Descend.ItemData[i].CreationDate = 1000;
226 Descend.ItemData[i].Description = _enc.GetBytes(Item.Description + "\0");
227 Descend.ItemData[i].EveryoneMask = FULL_MASK_PERMISSIONS;
228 Descend.ItemData[i].Flags = 1;
229 Descend.ItemData[i].FolderID = Item.FolderID;
230 Descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
231 Descend.ItemData[i].GroupMask = FULL_MASK_PERMISSIONS;
232 Descend.ItemData[i].InvType = Item.InvType;
233 Descend.ItemData[i].Name = _enc.GetBytes(Item.Name + "\0");
234 Descend.ItemData[i].NextOwnerMask = FULL_MASK_PERMISSIONS;
235 Descend.ItemData[i].OwnerID = Item.OwnerID;
236 Descend.ItemData[i].OwnerMask = FULL_MASK_PERMISSIONS;
237 Descend.ItemData[i].SalePrice = 100;
238 Descend.ItemData[i].SaleType = 0;
239 Descend.ItemData[i].Type = Item.Type;
240 Descend.ItemData[i].CRC = libsecondlife.Helpers.InventoryCRC(1000, 0, Descend.ItemData[i].InvType, Descend.ItemData[i].Type, Descend.ItemData[i].AssetID, Descend.ItemData[i].GroupID, 100, Descend.ItemData[i].OwnerID, Descend.ItemData[i].CreatorID, Descend.ItemData[i].ItemID, Descend.ItemData[i].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
241 }
242
243 userInfo.OutPacket(Descend);
244
245 }
246 }
247 else
248 {
249 Console.WriteLine("fetch subfolders");
250 }
251 }
252 }
253
254 public void FetchInventory(ClientView userInfo, FetchInventoryPacket FetchItems)
255 {
256 if (this._agentsInventory.ContainsKey(userInfo.AgentID))
257 {
258 AgentInventory agentInventory = this._agentsInventory[userInfo.AgentID];
259
260 for (int i = 0; i < FetchItems.InventoryData.Length; i++)
261 {
262 if (agentInventory.InventoryItems.ContainsKey(FetchItems.InventoryData[i].ItemID))
263 {
264 InventoryItem Item = agentInventory.InventoryItems[FetchItems.InventoryData[i].ItemID];
265 FetchInventoryReplyPacket InventoryReply = new FetchInventoryReplyPacket();
266 InventoryReply.AgentData.AgentID = userInfo.AgentID;
267 InventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1];
268 InventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock();
269 InventoryReply.InventoryData[0].ItemID = Item.ItemID;
270 InventoryReply.InventoryData[0].AssetID = Item.AssetID;
271 InventoryReply.InventoryData[0].CreatorID = Item.CreatorID;
272 InventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS;
273 InventoryReply.InventoryData[0].CreationDate = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
274 InventoryReply.InventoryData[0].Description = _enc.GetBytes(Item.Description + "\0");
275 InventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS;
276 InventoryReply.InventoryData[0].Flags = 0;
277 InventoryReply.InventoryData[0].FolderID = Item.FolderID;
278 InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
279 InventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS;
280 InventoryReply.InventoryData[0].InvType = Item.InvType;
281 InventoryReply.InventoryData[0].Name = _enc.GetBytes(Item.Name + "\0");
282 InventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS;
283 InventoryReply.InventoryData[0].OwnerID = Item.OwnerID;
284 InventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS;
285 InventoryReply.InventoryData[0].SalePrice = 100;
286 InventoryReply.InventoryData[0].SaleType = 0;
287 InventoryReply.InventoryData[0].Type = Item.Type;
288 InventoryReply.InventoryData[0].CRC = libsecondlife.Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
289 userInfo.OutPacket(InventoryReply);
290 }
291 }
292 }
293 }
294
295 private void SendItemUpdateCreate(ClientView remoteClient, InventoryItem Item)
296 {
297
298 UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket();
299 InventoryReply.AgentData.AgentID = remoteClient.AgentID;
300 InventoryReply.AgentData.SimApproved = true;
301 InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1];
302 InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock();
303 InventoryReply.InventoryData[0].ItemID = Item.ItemID;
304 InventoryReply.InventoryData[0].AssetID = Item.AssetID;
305 InventoryReply.InventoryData[0].CreatorID = Item.CreatorID;
306 InventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS;
307 InventoryReply.InventoryData[0].CreationDate = 1000;
308 InventoryReply.InventoryData[0].Description = _enc.GetBytes(Item.Description + "\0");
309 InventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS;
310 InventoryReply.InventoryData[0].Flags = 0;
311 InventoryReply.InventoryData[0].FolderID = Item.FolderID;
312 InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
313 InventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS;
314 InventoryReply.InventoryData[0].InvType = Item.InvType;
315 InventoryReply.InventoryData[0].Name = _enc.GetBytes(Item.Name + "\0");
316 InventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS;
317 InventoryReply.InventoryData[0].OwnerID = Item.OwnerID;
318 InventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS;
319 InventoryReply.InventoryData[0].SalePrice = 100;
320 InventoryReply.InventoryData[0].SaleType = 0;
321 InventoryReply.InventoryData[0].Type = Item.Type;
322 InventoryReply.InventoryData[0].CRC = libsecondlife.Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
323
324 remoteClient.OutPacket(InventoryReply);
325 }
326 }
327
328
329
330 public class UserServerRequest
331 {
332 public UserServerRequest()
333 {
334
335 }
336 }
337}
diff --git a/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs b/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs
new file mode 100644
index 0000000..7552195
--- /dev/null
+++ b/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs
@@ -0,0 +1,46 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Net;
32using System.Net.Sockets;
33using libsecondlife;
34
35
36namespace OpenSim
37{
38
39 public interface ClientStackNetworkHandler
40 {
41 void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode);// EndPoint packetSender);
42 void RemoveClientCircuit(uint circuitcode);
43 void RegisterPacketServer(PacketServer server);
44 }
45
46}
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs
new file mode 100644
index 0000000..902f3c7
--- /dev/null
+++ b/OpenSim/Region/ClientStack/ClientView.API.cs
@@ -0,0 +1,975 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Interfaces;
32using OpenSim.Framework.Inventory;
33using OpenSim.Framework.Types;
34
35using libsecondlife;
36using libsecondlife.Packets;
37
38namespace OpenSim
39{
40 partial class ClientView
41 {
42 public event ChatFromViewer OnChatFromViewer;
43 public event RezObject OnRezObject;
44 public event GenericCall4 OnDeRezObject;
45 public event ModifyTerrain OnModifyTerrain;
46 public event GenericCall OnRegionHandShakeReply;
47 public event GenericCall OnRequestWearables;
48 public event SetAppearance OnSetAppearance;
49 public event GenericCall2 OnCompleteMovementToRegion;
50 public event UpdateAgent OnAgentUpdate;
51 public event StartAnim OnStartAnim;
52 public event GenericCall OnRequestAvatarsData;
53 public event LinkObjects OnLinkObjects;
54 public event UpdateVector OnGrapObject;
55 public event ObjectSelect OnDeGrapObject;
56 public event MoveObject OnGrapUpdate;
57 public event GenericCall4 OnAddPrim;
58 public event UpdateShape OnUpdatePrimShape;
59 public event ObjectSelect OnObjectSelect;
60 public event UpdatePrimFlags OnUpdatePrimFlags;
61 public event UpdatePrimTexture OnUpdatePrimTexture;
62 public event UpdateVector OnUpdatePrimPosition;
63 public event UpdatePrimRotation OnUpdatePrimRotation;
64 public event UpdateVector OnUpdatePrimScale;
65 public event StatusChange OnChildAgentStatus;
66 public event GenericCall2 OnStopMovement;
67 public event NewAvatar OnNewAvatar;
68 public event GenericCall6 OnRemoveAvatar;
69 public event RequestMapBlocks OnRequestMapBlocks;
70 public event TeleportLocationRequest OnTeleportLocationRequest;
71
72 public event ParcelPropertiesRequest OnParcelPropertiesRequest;
73 public event ParcelDivideRequest OnParcelDivideRequest;
74 public event ParcelJoinRequest OnParcelJoinRequest;
75 public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
76
77 public event EstateOwnerMessageRequest OnEstateOwnerMessage;
78
79 /// <summary>
80 ///
81 /// </summary>
82 public LLVector3 StartPos
83 {
84 get
85 {
86 return startpos;
87 }
88 set
89 {
90 startpos = value;
91 }
92 }
93
94 /// <summary>
95 ///
96 /// </summary>
97 public LLUUID AgentId
98 {
99 get
100 {
101 return this.AgentID;
102 }
103 }
104
105 /// <summary>
106 ///
107 /// </summary>
108 public string FirstName
109 {
110 get
111 {
112 return this.firstName;
113 }
114
115 }
116
117 /// <summary>
118 ///
119 /// </summary>
120 public string LastName
121 {
122 get
123 {
124 return this.lastName;
125 }
126 }
127
128 #region World/Avatar to Client
129
130 /// <summary>
131 ///
132 /// </summary>
133 /// <param name="regionInfo"></param>
134 public void SendRegionHandshake(RegionInfo regionInfo)
135 {
136 System.Text.Encoding _enc = System.Text.Encoding.ASCII;
137 RegionHandshakePacket handshake = new RegionHandshakePacket();
138
139 handshake.RegionInfo.BillableFactor = regionInfo.estateSettings.billableFactor;
140 handshake.RegionInfo.IsEstateManager = false;
141 handshake.RegionInfo.TerrainHeightRange00 = regionInfo.estateSettings.terrainHeightRange0;
142 handshake.RegionInfo.TerrainHeightRange01 = regionInfo.estateSettings.terrainHeightRange1;
143 handshake.RegionInfo.TerrainHeightRange10 = regionInfo.estateSettings.terrainHeightRange2;
144 handshake.RegionInfo.TerrainHeightRange11 = regionInfo.estateSettings.terrainHeightRange3;
145 handshake.RegionInfo.TerrainStartHeight00 = regionInfo.estateSettings.terrainStartHeight0;
146 handshake.RegionInfo.TerrainStartHeight01 = regionInfo.estateSettings.terrainStartHeight1;
147 handshake.RegionInfo.TerrainStartHeight10 = regionInfo.estateSettings.terrainStartHeight2;
148 handshake.RegionInfo.TerrainStartHeight11 = regionInfo.estateSettings.terrainStartHeight3;
149 handshake.RegionInfo.SimAccess = (byte)regionInfo.estateSettings.simAccess;
150 handshake.RegionInfo.WaterHeight = regionInfo.estateSettings.waterHeight;
151
152
153 handshake.RegionInfo.RegionFlags = (uint)regionInfo.estateSettings.regionFlags;
154
155 handshake.RegionInfo.SimName = _enc.GetBytes(regionInfo.RegionName + "\0");
156 handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID;
157 handshake.RegionInfo.TerrainBase0 = regionInfo.estateSettings.terrainBase0;
158 handshake.RegionInfo.TerrainBase1 = regionInfo.estateSettings.terrainBase1;
159 handshake.RegionInfo.TerrainBase2 = regionInfo.estateSettings.terrainBase2;
160 handshake.RegionInfo.TerrainBase3 = regionInfo.estateSettings.terrainBase3;
161 handshake.RegionInfo.TerrainDetail0 = regionInfo.estateSettings.terrainDetail0;
162 handshake.RegionInfo.TerrainDetail1 = regionInfo.estateSettings.terrainDetail1;
163 handshake.RegionInfo.TerrainDetail2 = regionInfo.estateSettings.terrainDetail2;
164 handshake.RegionInfo.TerrainDetail3 = regionInfo.estateSettings.terrainDetail3;
165 handshake.RegionInfo.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting?
166
167 this.OutPacket(handshake);
168 }
169
170 /// <summary>
171 ///
172 /// </summary>
173 /// <param name="regInfo"></param>
174 public void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look)
175 {
176 AgentMovementCompletePacket mov = new AgentMovementCompletePacket();
177 mov.AgentData.SessionID = this.SessionID;
178 mov.AgentData.AgentID = this.AgentID;
179 mov.Data.RegionHandle = regInfo.RegionHandle;
180 mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this
181
182 if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0))
183 {
184 mov.Data.Position = this.startpos;
185 }
186 else
187 {
188 mov.Data.Position = pos;
189 }
190 mov.Data.LookAt = look;
191
192 OutPacket(mov);
193 }
194
195 /// <summary>
196 ///
197 /// </summary>
198 /// <param name="message"></param>
199 /// <param name="type"></param>
200 /// <param name="fromPos"></param>
201 /// <param name="fromName"></param>
202 /// <param name="fromAgentID"></param>
203 public void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
204 {
205 SendChatMessage(Helpers.StringToField(message), type, fromPos, fromName, fromAgentID);
206 }
207
208 /// <summary>
209 ///
210 /// </summary>
211 /// <param name="message"></param>
212 /// <param name="type"></param>
213 /// <param name="fromPos"></param>
214 /// <param name="fromName"></param>
215 /// <param name="fromAgentID"></param>
216 public void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
217 {
218 System.Text.Encoding enc = System.Text.Encoding.ASCII;
219 libsecondlife.Packets.ChatFromSimulatorPacket reply = new ChatFromSimulatorPacket();
220 reply.ChatData.Audible = 1;
221 reply.ChatData.Message = message;
222 reply.ChatData.ChatType = type;
223 reply.ChatData.SourceType = 1;
224 reply.ChatData.Position = fromPos;
225 reply.ChatData.FromName = enc.GetBytes(fromName + "\0");
226 reply.ChatData.OwnerID = fromAgentID;
227 reply.ChatData.SourceID = fromAgentID;
228
229 this.OutPacket(reply);
230 }
231
232
233 /// <summary>
234 /// Send the region heightmap to the client
235 /// </summary>
236 /// <param name="map">heightmap</param>
237 public virtual void SendLayerData(float[] map)
238 {
239 try
240 {
241 int[] patches = new int[4];
242
243 for (int y = 0; y < 16; y++)
244 {
245 for (int x = 0; x < 16; x = x + 4)
246 {
247 patches[0] = x + 0 + y * 16;
248 patches[1] = x + 1 + y * 16;
249 patches[2] = x + 2 + y * 16;
250 patches[3] = x + 3 + y * 16;
251
252 Packet layerpack = TerrainManager.CreateLandPacket(map, patches);
253 OutPacket(layerpack);
254 }
255 }
256 }
257 catch (Exception e)
258 {
259 OpenSim.Framework.Console.MainLog.Instance.Warn("ClientView API.cs: SendLayerData() - Failed with exception " + e.ToString());
260 }
261 }
262
263 /// <summary>
264 /// Sends a specified patch to a client
265 /// </summary>
266 /// <param name="px">Patch coordinate (x) 0..16</param>
267 /// <param name="py">Patch coordinate (y) 0..16</param>
268 /// <param name="map">heightmap</param>
269 public void SendLayerData(int px, int py, float[] map)
270 {
271 try
272 {
273 int[] patches = new int[1];
274 int patchx, patchy;
275 patchx = px / 16;
276 patchy = py / 16;
277
278 patches[0] = patchx + 0 + patchy * 16;
279
280 Packet layerpack = TerrainManager.CreateLandPacket(map, patches);
281 OutPacket(layerpack);
282 }
283 catch (Exception e)
284 {
285 OpenSim.Framework.Console.MainLog.Instance.Warn("ClientView API .cs: SendLayerData() - Failed with exception " + e.ToString());
286 }
287 }
288
289 /// <summary>
290 ///
291 /// </summary>
292 /// <param name="neighbourHandle"></param>
293 /// <param name="neighbourIP"></param>
294 /// <param name="neighbourPort"></param>
295 public void InformClientOfNeighbour(ulong neighbourHandle, System.Net.IPAddress neighbourIP, ushort neighbourPort)
296 {
297 EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket();
298 enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock();
299 enablesimpacket.SimulatorInfo.Handle = neighbourHandle;
300
301 byte[] byteIP = neighbourIP.GetAddressBytes();
302 enablesimpacket.SimulatorInfo.IP = (uint)byteIP[3] << 24;
303 enablesimpacket.SimulatorInfo.IP += (uint)byteIP[2] << 16;
304 enablesimpacket.SimulatorInfo.IP += (uint)byteIP[1] << 8;
305 enablesimpacket.SimulatorInfo.IP += (uint)byteIP[0];
306 enablesimpacket.SimulatorInfo.Port = neighbourPort;
307 OutPacket(enablesimpacket);
308 }
309
310 /// <summary>
311 ///
312 /// </summary>
313 /// <returns></returns>
314 public AgentCircuitData RequestClientInfo()
315 {
316 AgentCircuitData agentData = new AgentCircuitData();
317 agentData.AgentID = this.AgentId;
318 agentData.SessionID = this.SessionID;
319 agentData.SecureSessionID = this.SecureSessionID;
320 agentData.circuitcode = this.CircuitCode;
321 agentData.child = false;
322 agentData.firstname = this.firstName;
323 agentData.lastname = this.lastName;
324
325 return agentData;
326 }
327
328 public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, System.Net.IPAddress newRegionIP, ushort newRegionPort)
329 {
330 LLVector3 look = new LLVector3(lookAt.X * 10, lookAt.Y * 10, lookAt.Z * 10);
331
332 CrossedRegionPacket newSimPack = new CrossedRegionPacket();
333 newSimPack.AgentData = new CrossedRegionPacket.AgentDataBlock();
334 newSimPack.AgentData.AgentID = this.AgentID;
335 newSimPack.AgentData.SessionID = this.SessionID;
336 newSimPack.Info = new CrossedRegionPacket.InfoBlock();
337 newSimPack.Info.Position = pos;
338 newSimPack.Info.LookAt = look; // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!!
339 newSimPack.RegionData = new libsecondlife.Packets.CrossedRegionPacket.RegionDataBlock();
340 newSimPack.RegionData.RegionHandle = newRegionHandle;
341 byte[] byteIP = newRegionIP.GetAddressBytes();
342 newSimPack.RegionData.SimIP = (uint)byteIP[3] << 24;
343 newSimPack.RegionData.SimIP += (uint)byteIP[2] << 16;
344 newSimPack.RegionData.SimIP += (uint)byteIP[1] << 8;
345 newSimPack.RegionData.SimIP += (uint)byteIP[0];
346 newSimPack.RegionData.SimPort = newRegionPort;
347 newSimPack.RegionData.SeedCapability = new byte[0];
348
349 this.OutPacket(newSimPack);
350 //this.DowngradeClient();
351 }
352
353 public void SendMapBlock(List<MapBlockData> mapBlocks)
354 {
355 System.Text.Encoding _enc = System.Text.Encoding.ASCII;
356
357 MapBlockReplyPacket mapReply = new MapBlockReplyPacket();
358 mapReply.AgentData.AgentID = this.AgentID;
359 mapReply.Data = new MapBlockReplyPacket.DataBlock[mapBlocks.Count];
360 mapReply.AgentData.Flags = 0;
361
362 for (int i = 0; i < mapBlocks.Count; i++)
363 {
364 mapReply.Data[i] = new MapBlockReplyPacket.DataBlock();
365 mapReply.Data[i].MapImageID = mapBlocks[i].MapImageId;
366 mapReply.Data[i].X = mapBlocks[i].X;
367 mapReply.Data[i].Y = mapBlocks[i].Y;
368 mapReply.Data[i].WaterHeight = mapBlocks[i].WaterHeight;
369 mapReply.Data[i].Name = _enc.GetBytes(mapBlocks[i].Name);
370 mapReply.Data[i].RegionFlags = mapBlocks[i].RegionFlags;
371 mapReply.Data[i].Access = mapBlocks[i].Access;
372 mapReply.Data[i].Agents = mapBlocks[i].Agents;
373 }
374 this.OutPacket(mapReply);
375 }
376
377 public void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags)
378 {
379 TeleportLocalPacket tpLocal = new TeleportLocalPacket();
380 tpLocal.Info.AgentID = this.AgentID;
381 tpLocal.Info.TeleportFlags = flags;
382 tpLocal.Info.LocationID = 2;
383 tpLocal.Info.LookAt = lookAt;
384 tpLocal.Info.Position = position;
385 OutPacket(tpLocal);
386 }
387
388 public void SendRegionTeleport(ulong regionHandle, byte simAccess, string ipAddress, ushort ipPort, uint locationID, uint flags)
389 {
390 TeleportFinishPacket teleport = new TeleportFinishPacket();
391 teleport.Info.AgentID = this.AgentID;
392 teleport.Info.RegionHandle = regionHandle;
393 teleport.Info.SimAccess = simAccess;
394 teleport.Info.SeedCapability = new byte[0];
395
396 System.Net.IPAddress oIP = System.Net.IPAddress.Parse(ipAddress);
397 byte[] byteIP = oIP.GetAddressBytes();
398 uint ip = (uint)byteIP[3] << 24;
399 ip += (uint)byteIP[2] << 16;
400 ip += (uint)byteIP[1] << 8;
401 ip += (uint)byteIP[0];
402
403 teleport.Info.SimIP = ip;
404 teleport.Info.SimPort = ipPort;
405 teleport.Info.LocationID = 4;
406 teleport.Info.TeleportFlags = 1 << 4;
407 OutPacket(teleport);
408 }
409
410 /// <summary>
411 ///
412 /// </summary>
413 public void SendTeleportCancel()
414 {
415 TeleportCancelPacket tpCancel = new TeleportCancelPacket();
416 tpCancel.Info.SessionID = this.SessionID;
417 tpCancel.Info.AgentID = this.AgentID;
418
419 OutPacket(tpCancel);
420 }
421
422 /// <summary>
423 ///
424 /// </summary>
425 public void SendTeleportLocationStart()
426 {
427 TeleportStartPacket tpStart = new TeleportStartPacket();
428 tpStart.Info.TeleportFlags = 16; // Teleport via location
429 OutPacket(tpStart);
430 }
431
432 public void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance)
433 {
434 MoneyBalanceReplyPacket money = new MoneyBalanceReplyPacket();
435 money.MoneyData.AgentID = this.AgentID;
436 money.MoneyData.TransactionID = transaction;
437 money.MoneyData.TransactionSuccess = success;
438 money.MoneyData.Description = description;
439 money.MoneyData.MoneyBalance = balance;
440 OutPacket(money);
441 }
442
443 #region Appearance/ Wearables Methods
444
445 /// <summary>
446 ///
447 /// </summary>
448 /// <param name="wearables"></param>
449 public void SendWearables(AvatarWearable[] wearables)
450 {
451 AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket();
452 aw.AgentData.AgentID = this.AgentID;
453 aw.AgentData.SerialNum = 0;
454 aw.AgentData.SessionID = this.SessionID;
455
456 aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13];
457 AgentWearablesUpdatePacket.WearableDataBlock awb;
458 for (int i = 0; i < wearables.Length; i++)
459 {
460 awb = new AgentWearablesUpdatePacket.WearableDataBlock();
461 awb.WearableType = (byte)i;
462 awb.AssetID = wearables[i].AssetID;
463 awb.ItemID = wearables[i].ItemID;
464 aw.WearableData[i] = awb;
465 }
466
467 this.OutPacket(aw);
468 }
469
470 /// <summary>
471 ///
472 /// </summary>
473 /// <param name="agentID"></param>
474 /// <param name="visualParams"></param>
475 /// <param name="textureEntry"></param>
476 public void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry)
477 {
478 AvatarAppearancePacket avp = new AvatarAppearancePacket();
479 avp.VisualParam = new AvatarAppearancePacket.VisualParamBlock[218];
480 avp.ObjectData.TextureEntry = textureEntry;
481
482 AvatarAppearancePacket.VisualParamBlock avblock = null;
483 for (int i = 0; i < visualParams.Length; i++)
484 {
485 avblock = new AvatarAppearancePacket.VisualParamBlock();
486 avblock.ParamValue = visualParams[i];
487 avp.VisualParam[i] = avblock;
488 }
489
490 avp.Sender.IsTrial = false;
491 avp.Sender.ID = agentID;
492 OutPacket(avp);
493 }
494
495 #endregion
496
497 #region Avatar Packet/data sending Methods
498
499 /// <summary>
500 ///
501 /// </summary>
502 /// <param name="regionInfo"></param>
503 /// <param name="firstName"></param>
504 /// <param name="lastName"></param>
505 /// <param name="avatarID"></param>
506 /// <param name="avatarLocalID"></param>
507 /// <param name="Pos"></param>
508 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry)
509 {
510 System.Text.Encoding _enc = System.Text.Encoding.ASCII;
511 //send a objectupdate packet with information about the clients avatar
512
513 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
514 objupdate.RegionData.RegionHandle = regionHandle;
515 objupdate.RegionData.TimeDilation = 64096;
516 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
517 objupdate.ObjectData[0] = this.CreateDefaultAvatarPacket(textureEntry);
518 //give this avatar object a local id and assign the user a name
519
520 objupdate.ObjectData[0].ID = avatarLocalID;
521 objupdate.ObjectData[0].FullID = avatarID;
522 objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + firstName + "\nLastName STRING RW SV " + lastName + " \0");
523 libsecondlife.LLVector3 pos2 = new LLVector3((float)Pos.X, (float)Pos.Y, (float)Pos.Z);
524 byte[] pb = pos2.GetBytes();
525 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
526
527 OutPacket(objupdate);
528
529 }
530
531 /// <summary>
532 ///
533 /// </summary>
534 /// <param name="regionHandle"></param>
535 /// <param name="timeDilation"></param>
536 /// <param name="localID"></param>
537 /// <param name="position"></param>
538 /// <param name="velocity"></param>
539 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity)
540 {
541 ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = this.CreateAvatarImprovedBlock(localID, position, velocity);
542 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
543 terse.RegionData.RegionHandle = regionHandle;
544 terse.RegionData.TimeDilation = timeDilation;
545 terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
546 terse.ObjectData[0] = terseBlock;
547
548 this.OutPacket(terse);
549 }
550
551 #endregion
552
553 #region Primitive Packet/data Sending Methods
554
555 /// <summary>
556 ///
557 /// </summary>
558 /// <param name="localID"></param>
559 /// <param name="rotation"></param>
560 /// <param name="attachPoint"></param>
561 public void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint)
562 {
563 ObjectAttachPacket attach = new ObjectAttachPacket();
564 attach.AgentData.AgentID = this.AgentID;
565 attach.AgentData.SessionID = this.SessionID;
566 attach.AgentData.AttachmentPoint = attachPoint;
567 attach.ObjectData = new ObjectAttachPacket.ObjectDataBlock[1];
568 attach.ObjectData[0] = new ObjectAttachPacket.ObjectDataBlock();
569 attach.ObjectData[0].ObjectLocalID = localID;
570 attach.ObjectData[0].Rotation = rotation;
571
572 this.OutPacket(attach);
573 }
574
575 /// <summary>
576 /// Sends a full ObjectUpdatePacket to a client to inform it of a new primitive
577 /// or big changes to a existing primitive.
578 /// </summary>
579 /// <param name="regionHandle"></param>
580 /// <param name="timeDilation"></param>
581 /// <param name="localID"></param>
582 /// <param name="primData"></param>
583 /// <param name="pos"></param>
584 /// <param name="rotation"></param>
585 /// <param name="textureID"></param>
586 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags)
587 {
588 ObjectUpdatePacket outPacket = new ObjectUpdatePacket();
589 outPacket.RegionData.RegionHandle = regionHandle;
590 outPacket.RegionData.TimeDilation = timeDilation;
591 outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
592 outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primData, textureID, flags);
593 outPacket.ObjectData[0].ID = localID;
594 outPacket.ObjectData[0].FullID = primData.FullID;
595 byte[] pb = pos.GetBytes();
596 Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length);
597 byte[] rot = rotation.GetBytes();
598 Array.Copy(rot, 0, outPacket.ObjectData[0].ObjectData, 48, rot.Length);
599 OutPacket(outPacket);
600 }
601
602 /// <summary>
603 /// Sends a full ObjectUpdatePacket to a client to inform it of a new primitive
604 /// or big changes to a existing primitive.
605 /// Uses default rotation
606 /// </summary>
607 /// <param name="primData"></param>
608 /// <param name="pos"></param>
609 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID , uint flags)
610 {
611 ObjectUpdatePacket outPacket = new ObjectUpdatePacket();
612 outPacket.RegionData.RegionHandle = regionHandle;
613 outPacket.RegionData.TimeDilation = timeDilation;
614 outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
615 outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primData, textureID, flags);
616 outPacket.ObjectData[0].ID = localID;
617 outPacket.ObjectData[0].FullID = primData.FullID;
618 byte[] pb = pos.GetBytes();
619 Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length);
620
621 OutPacket(outPacket);
622 }
623
624 /// <summary>
625 ///
626 /// </summary>
627 /// <param name="regionHandle"></param>
628 /// <param name="timeDilation"></param>
629 /// <param name="localID"></param>
630 /// <param name="position"></param>
631 /// <param name="rotation"></param>
632 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation)
633 {
634 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
635 terse.RegionData.RegionHandle = regionHandle;
636 terse.RegionData.TimeDilation = timeDilation;
637 terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
638 terse.ObjectData[0] = this.CreatePrimImprovedBlock(localID, position, rotation);
639
640 this.OutPacket(terse);
641 }
642
643 #endregion
644
645 #endregion
646
647 #region Helper Methods
648
649 protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateAvatarImprovedBlock(uint localID, LLVector3 pos, LLVector3 velocity)
650 {
651 byte[] bytes = new byte[60];
652 int i = 0;
653 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
654
655 dat.TextureEntry = new byte[0];// AvatarTemplate.TextureEntry;
656
657 uint ID = localID;
658
659 bytes[i++] = (byte)(ID % 256);
660 bytes[i++] = (byte)((ID >> 8) % 256);
661 bytes[i++] = (byte)((ID >> 16) % 256);
662 bytes[i++] = (byte)((ID >> 24) % 256);
663 bytes[i++] = 0;
664 bytes[i++] = 1;
665 i += 14;
666 bytes[i++] = 128;
667 bytes[i++] = 63;
668
669 byte[] pb = pos.GetBytes();
670 Array.Copy(pb, 0, bytes, i, pb.Length);
671 i += 12;
672 ushort InternVelocityX;
673 ushort InternVelocityY;
674 ushort InternVelocityZ;
675 Axiom.MathLib.Vector3 internDirec = new Axiom.MathLib.Vector3(0, 0, 0);
676
677 internDirec = new Axiom.MathLib.Vector3(velocity.X, velocity.Y, velocity.Z);
678
679 internDirec = internDirec / 128.0f;
680 internDirec.x += 1;
681 internDirec.y += 1;
682 internDirec.z += 1;
683
684 InternVelocityX = (ushort)(32768 * internDirec.x);
685 InternVelocityY = (ushort)(32768 * internDirec.y);
686 InternVelocityZ = (ushort)(32768 * internDirec.z);
687
688 ushort ac = 32767;
689 bytes[i++] = (byte)(InternVelocityX % 256);
690 bytes[i++] = (byte)((InternVelocityX >> 8) % 256);
691 bytes[i++] = (byte)(InternVelocityY % 256);
692 bytes[i++] = (byte)((InternVelocityY >> 8) % 256);
693 bytes[i++] = (byte)(InternVelocityZ % 256);
694 bytes[i++] = (byte)((InternVelocityZ >> 8) % 256);
695
696 //accel
697 bytes[i++] = (byte)(ac % 256);
698 bytes[i++] = (byte)((ac >> 8) % 256);
699 bytes[i++] = (byte)(ac % 256);
700 bytes[i++] = (byte)((ac >> 8) % 256);
701 bytes[i++] = (byte)(ac % 256);
702 bytes[i++] = (byte)((ac >> 8) % 256);
703
704 //rot
705 bytes[i++] = (byte)(ac % 256);
706 bytes[i++] = (byte)((ac >> 8) % 256);
707 bytes[i++] = (byte)(ac % 256);
708 bytes[i++] = (byte)((ac >> 8) % 256);
709 bytes[i++] = (byte)(ac % 256);
710 bytes[i++] = (byte)((ac >> 8) % 256);
711 bytes[i++] = (byte)(ac % 256);
712 bytes[i++] = (byte)((ac >> 8) % 256);
713
714 //rotation vel
715 bytes[i++] = (byte)(ac % 256);
716 bytes[i++] = (byte)((ac >> 8) % 256);
717 bytes[i++] = (byte)(ac % 256);
718 bytes[i++] = (byte)((ac >> 8) % 256);
719 bytes[i++] = (byte)(ac % 256);
720 bytes[i++] = (byte)((ac >> 8) % 256);
721
722 dat.Data = bytes;
723 return (dat);
724 }
725
726 /// <summary>
727 ///
728 /// </summary>
729 /// <param name="localID"></param>
730 /// <param name="position"></param>
731 /// <param name="rotation"></param>
732 /// <returns></returns>
733 protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreatePrimImprovedBlock(uint localID, LLVector3 position, LLQuaternion rotation)
734 {
735 uint ID = localID;
736 byte[] bytes = new byte[60];
737
738 int i = 0;
739 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
740 dat.TextureEntry = new byte[0];
741 bytes[i++] = (byte)(ID % 256);
742 bytes[i++] = (byte)((ID >> 8) % 256);
743 bytes[i++] = (byte)((ID >> 16) % 256);
744 bytes[i++] = (byte)((ID >> 24) % 256);
745 bytes[i++] = 0;
746 bytes[i++] = 0;
747
748 byte[] pb = position.GetBytes();
749 Array.Copy(pb, 0, bytes, i, pb.Length);
750 i += 12;
751 ushort ac = 32767;
752
753 //vel
754 bytes[i++] = (byte)(ac % 256);
755 bytes[i++] = (byte)((ac >> 8) % 256);
756 bytes[i++] = (byte)(ac % 256);
757 bytes[i++] = (byte)((ac >> 8) % 256);
758 bytes[i++] = (byte)(ac % 256);
759 bytes[i++] = (byte)((ac >> 8) % 256);
760
761 //accel
762 bytes[i++] = (byte)(ac % 256);
763 bytes[i++] = (byte)((ac >> 8) % 256);
764 bytes[i++] = (byte)(ac % 256);
765 bytes[i++] = (byte)((ac >> 8) % 256);
766 bytes[i++] = (byte)(ac % 256);
767 bytes[i++] = (byte)((ac >> 8) % 256);
768
769 ushort rw, rx, ry, rz;
770 rw = (ushort)(32768 * (rotation.W + 1));
771 rx = (ushort)(32768 * (rotation.X + 1));
772 ry = (ushort)(32768 * (rotation.Y + 1));
773 rz = (ushort)(32768 * (rotation.Z + 1));
774
775 //rot
776 bytes[i++] = (byte)(rx % 256);
777 bytes[i++] = (byte)((rx >> 8) % 256);
778 bytes[i++] = (byte)(ry % 256);
779 bytes[i++] = (byte)((ry >> 8) % 256);
780 bytes[i++] = (byte)(rz % 256);
781 bytes[i++] = (byte)((rz >> 8) % 256);
782 bytes[i++] = (byte)(rw % 256);
783 bytes[i++] = (byte)((rw >> 8) % 256);
784
785 //rotation vel
786 bytes[i++] = (byte)(ac % 256);
787 bytes[i++] = (byte)((ac >> 8) % 256);
788 bytes[i++] = (byte)(ac % 256);
789 bytes[i++] = (byte)((ac >> 8) % 256);
790 bytes[i++] = (byte)(ac % 256);
791 bytes[i++] = (byte)((ac >> 8) % 256);
792
793 dat.Data = bytes;
794 return dat;
795 }
796
797
798 /// <summary>
799 /// Create the ObjectDataBlock for a ObjectUpdatePacket (for a Primitive)
800 /// </summary>
801 /// <param name="primData"></param>
802 /// <returns></returns>
803 protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimData primData, LLUUID textureID, uint flags)
804 {
805 ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock();
806 this.SetDefaultPrimPacketValues(objupdate);
807 objupdate.UpdateFlags = flags;
808 this.SetPrimPacketShapeData(objupdate, primData, textureID);
809
810 return objupdate;
811 }
812
813 /// <summary>
814 /// Copy the data from a PrimData object to a ObjectUpdatePacket
815 /// </summary>
816 /// <param name="objectData"></param>
817 /// <param name="primData"></param>
818 protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimData primData, LLUUID textureID)
819 {
820 LLObject.TextureEntry ntex = new LLObject.TextureEntry(textureID);
821 objectData.TextureEntry = ntex.ToBytes();
822 objectData.OwnerID = primData.OwnerID;
823 objectData.PCode = primData.PCode;
824 objectData.PathBegin = primData.PathBegin;
825 objectData.PathEnd = primData.PathEnd;
826 objectData.PathScaleX = primData.PathScaleX;
827 objectData.PathScaleY = primData.PathScaleY;
828 objectData.PathShearX = primData.PathShearX;
829 objectData.PathShearY = primData.PathShearY;
830 objectData.PathSkew = primData.PathSkew;
831 objectData.ProfileBegin = primData.ProfileBegin;
832 objectData.ProfileEnd = primData.ProfileEnd;
833 objectData.Scale = primData.Scale;
834 objectData.PathCurve = primData.PathCurve;
835 objectData.ProfileCurve = primData.ProfileCurve;
836 objectData.ParentID = primData.ParentID;
837 objectData.ProfileHollow = primData.ProfileHollow;
838 objectData.PathRadiusOffset = primData.PathRadiusOffset;
839 objectData.PathRevolutions = primData.PathRevolutions;
840 objectData.PathTaperX = primData.PathTaperX;
841 objectData.PathTaperY = primData.PathTaperY;
842 objectData.PathTwist = primData.PathTwist;
843 objectData.PathTwistBegin = primData.PathTwistBegin;
844 }
845
846 /// <summary>
847 /// Set some default values in a ObjectUpdatePacket
848 /// </summary>
849 /// <param name="objdata"></param>
850 protected void SetDefaultPrimPacketValues(ObjectUpdatePacket.ObjectDataBlock objdata)
851 {
852 objdata.PSBlock = new byte[0];
853 objdata.ExtraParams = new byte[1];
854 objdata.MediaURL = new byte[0];
855 objdata.NameValue = new byte[0];
856 objdata.Text = new byte[0];
857 objdata.TextColor = new byte[4];
858 objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0);
859 objdata.JointPivot = new LLVector3(0, 0, 0);
860 objdata.Material = 3;
861 objdata.TextureAnim = new byte[0];
862 objdata.Sound = LLUUID.Zero;
863 objdata.State = 0;
864 objdata.Data = new byte[0];
865
866 objdata.ObjectData = new byte[60];
867 objdata.ObjectData[46] = 128;
868 objdata.ObjectData[47] = 63;
869 }
870
871
872 /// <summary>
873 ///
874 /// </summary>
875 /// <returns></returns>
876 protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket(byte[] textureEntry)
877 {
878 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
879
880 SetDefaultAvatarPacketValues(ref objdata);
881 objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
882 objdata.PathCurve = 16;
883 objdata.ProfileCurve = 1;
884 objdata.PathScaleX = 100;
885 objdata.PathScaleY = 100;
886 objdata.ParentID = 0;
887 objdata.OwnerID = LLUUID.Zero;
888 objdata.Scale = new LLVector3(1, 1, 1);
889 objdata.PCode = 47;
890 if (textureEntry != null)
891 {
892 objdata.TextureEntry = textureEntry;
893 }
894 System.Text.Encoding enc = System.Text.Encoding.ASCII;
895 libsecondlife.LLVector3 pos = new LLVector3(objdata.ObjectData, 16);
896 pos.X = 100f;
897 objdata.ID = 8880000;
898 objdata.NameValue = enc.GetBytes("FirstName STRING RW SV Test \nLastName STRING RW SV User \0");
899 libsecondlife.LLVector3 pos2 = new LLVector3(100f, 100f, 23f);
900 //objdata.FullID=user.AgentID;
901 byte[] pb = pos.GetBytes();
902 Array.Copy(pb, 0, objdata.ObjectData, 16, pb.Length);
903
904 return objdata;
905 }
906
907 /// <summary>
908 ///
909 /// </summary>
910 /// <param name="objdata"></param>
911 protected void SetDefaultAvatarPacketValues(ref ObjectUpdatePacket.ObjectDataBlock objdata)
912 {
913 objdata.PSBlock = new byte[0];
914 objdata.ExtraParams = new byte[1];
915 objdata.MediaURL = new byte[0];
916 objdata.NameValue = new byte[0];
917 objdata.Text = new byte[0];
918 objdata.TextColor = new byte[4];
919 objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0);
920 objdata.JointPivot = new LLVector3(0, 0, 0);
921 objdata.Material = 4;
922 objdata.TextureAnim = new byte[0];
923 objdata.Sound = LLUUID.Zero;
924 LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
925 objdata.TextureEntry = ntex.ToBytes();
926 objdata.State = 0;
927 objdata.Data = new byte[0];
928
929 objdata.ObjectData = new byte[76];
930 objdata.ObjectData[15] = 128;
931 objdata.ObjectData[16] = 63;
932 objdata.ObjectData[56] = 128;
933 objdata.ObjectData[61] = 102;
934 objdata.ObjectData[62] = 40;
935 objdata.ObjectData[63] = 61;
936 objdata.ObjectData[64] = 189;
937 }
938
939 /// <summary>
940 ///
941 /// </summary>
942 /// <param name="addPacket"></param>
943 /// <returns></returns>
944 protected PrimData CreatePrimFromObjectAdd(ObjectAddPacket addPacket)
945 {
946 PrimData PData = new PrimData();
947 PData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
948 PData.PCode = addPacket.ObjectData.PCode;
949 PData.PathBegin = addPacket.ObjectData.PathBegin;
950 PData.PathEnd = addPacket.ObjectData.PathEnd;
951 PData.PathScaleX = addPacket.ObjectData.PathScaleX;
952 PData.PathScaleY = addPacket.ObjectData.PathScaleY;
953 PData.PathShearX = addPacket.ObjectData.PathShearX;
954 PData.PathShearY = addPacket.ObjectData.PathShearY;
955 PData.PathSkew = addPacket.ObjectData.PathSkew;
956 PData.ProfileBegin = addPacket.ObjectData.ProfileBegin;
957 PData.ProfileEnd = addPacket.ObjectData.ProfileEnd;
958 PData.Scale = addPacket.ObjectData.Scale;
959 PData.PathCurve = addPacket.ObjectData.PathCurve;
960 PData.ProfileCurve = addPacket.ObjectData.ProfileCurve;
961 PData.ParentID = 0;
962 PData.ProfileHollow = addPacket.ObjectData.ProfileHollow;
963 PData.PathRadiusOffset = addPacket.ObjectData.PathRadiusOffset;
964 PData.PathRevolutions = addPacket.ObjectData.PathRevolutions;
965 PData.PathTaperX = addPacket.ObjectData.PathTaperX;
966 PData.PathTaperY = addPacket.ObjectData.PathTaperY;
967 PData.PathTwist = addPacket.ObjectData.PathTwist;
968 PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin;
969
970 return PData;
971 }
972 #endregion
973
974 }
975}
diff --git a/OpenSim/Region/ClientStack/ClientView.AgentAssetUpload.cs b/OpenSim/Region/ClientStack/ClientView.AgentAssetUpload.cs
new file mode 100644
index 0000000..914c38a
--- /dev/null
+++ b/OpenSim/Region/ClientStack/ClientView.AgentAssetUpload.cs
@@ -0,0 +1,358 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Assets;
32using OpenSim.Framework.Types;
33using OpenSim.Framework.Interfaces;
34using OpenSim.Framework.Utilities;
35using OpenSim.Caches;
36using libsecondlife;
37using libsecondlife.Packets;
38
39namespace OpenSim
40{
41 partial class ClientView
42 {
43 public class AgentAssetUpload
44 {
45 private Dictionary<LLUUID, AssetTransaction> transactions = new Dictionary<LLUUID, AssetTransaction>();
46 private ClientView ourClient;
47 private AssetCache m_assetCache;
48 private InventoryCache m_inventoryCache;
49
50 public AgentAssetUpload(ClientView client, AssetCache assetCache, InventoryCache inventoryCache)
51 {
52 this.ourClient = client;
53 m_assetCache = assetCache;
54 m_inventoryCache = inventoryCache;
55 }
56
57 public void AddUpload(LLUUID transactionID, AssetBase asset)
58 {
59 AssetTransaction upload = new AssetTransaction();
60 lock (this.transactions)
61 {
62 upload.Asset = asset;
63 upload.TransactionID = transactionID;
64 this.transactions.Add(transactionID, upload);
65 }
66 if (upload.Asset.Data.Length > 2)
67 {
68 //is complete
69 upload.UploadComplete = true;
70 AssetUploadCompletePacket response = new AssetUploadCompletePacket();
71 response.AssetBlock.Type = asset.Type;
72 response.AssetBlock.Success = true;
73 response.AssetBlock.UUID = transactionID.Combine(this.ourClient.SecureSessionID);
74 this.ourClient.OutPacket(response);
75 m_assetCache.AddAsset(asset);
76 }
77 else
78 {
79 upload.UploadComplete = false;
80 upload.XferID = Util.GetNextXferID();
81 RequestXferPacket xfer = new RequestXferPacket();
82 xfer.XferID.ID = upload.XferID;
83 xfer.XferID.VFileType = upload.Asset.Type;
84 xfer.XferID.VFileID = transactionID.Combine(this.ourClient.SecureSessionID);
85 xfer.XferID.FilePath = 0;
86 xfer.XferID.Filename = new byte[0];
87 this.ourClient.OutPacket(xfer);
88 }
89
90 }
91
92 public AssetBase GetUpload(LLUUID transactionID)
93 {
94 if (this.transactions.ContainsKey(transactionID))
95 {
96 return this.transactions[transactionID].Asset;
97 }
98
99 return null;
100 }
101
102 public void HandleUploadPacket(AssetUploadRequestPacket pack, LLUUID assetID)
103 {
104 // Console.Write("asset upload request , type = " + pack.AssetBlock.Type.ToString());
105 AssetBase asset = null;
106 if (pack.AssetBlock.Type == 0)
107 {
108
109 //first packet for transaction
110 asset = new AssetBase();
111 asset.FullID = assetID;
112 asset.Type = pack.AssetBlock.Type;
113 asset.InvType = asset.Type;
114 asset.Name = "UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000");
115 asset.Data = pack.AssetBlock.AssetData;
116
117
118 }
119 else if (pack.AssetBlock.Type == 13 | pack.AssetBlock.Type == 5 | pack.AssetBlock.Type == 7)
120 {
121
122 asset = new AssetBase();
123 asset.FullID = assetID;
124 // Console.WriteLine("skin asset id is " + assetID.ToStringHyphenated());
125 asset.Type = pack.AssetBlock.Type;
126 asset.InvType = asset.Type;
127 asset.Name = "NewClothing" + Util.RandomClass.Next(1, 1000).ToString("000");
128 asset.Data = pack.AssetBlock.AssetData;
129
130
131 }
132
133 if (asset != null)
134 {
135 this.AddUpload(pack.AssetBlock.TransactionID, asset);
136 }
137 else
138 {
139
140 //currently we don't support this asset type
141 //so lets just tell the client that the upload is complete
142 AssetUploadCompletePacket response = new AssetUploadCompletePacket();
143 response.AssetBlock.Type = pack.AssetBlock.Type;
144 response.AssetBlock.Success = true;
145 response.AssetBlock.UUID = pack.AssetBlock.TransactionID.Combine(this.ourClient.SecureSessionID);
146 this.ourClient.OutPacket(response);
147 }
148
149 }
150
151 #region Xfer packet system for larger uploads
152
153 public void HandleXferPacket(SendXferPacketPacket xferPacket)
154 {
155 lock (this.transactions)
156 {
157 foreach (AssetTransaction trans in this.transactions.Values)
158 {
159 if (trans.XferID == xferPacket.XferID.ID)
160 {
161 if (trans.Asset.Data.Length > 1)
162 {
163 byte[] newArray = new byte[trans.Asset.Data.Length + xferPacket.DataPacket.Data.Length];
164 Array.Copy(trans.Asset.Data, 0, newArray, 0, trans.Asset.Data.Length);
165 Array.Copy(xferPacket.DataPacket.Data, 0, newArray, trans.Asset.Data.Length, xferPacket.DataPacket.Data.Length);
166 trans.Asset.Data = newArray;
167 }
168 else
169 {
170 byte[] newArray = new byte[xferPacket.DataPacket.Data.Length - 4];
171 Array.Copy(xferPacket.DataPacket.Data, 4, newArray, 0, xferPacket.DataPacket.Data.Length - 4);
172 trans.Asset.Data = newArray;
173 }
174
175 if ((xferPacket.XferID.Packet & 2147483648) != 0)
176 {
177 //end of transfer
178 trans.UploadComplete = true;
179 AssetUploadCompletePacket response = new AssetUploadCompletePacket();
180 response.AssetBlock.Type = trans.Asset.Type;
181 response.AssetBlock.Success = true;
182 response.AssetBlock.UUID = trans.TransactionID.Combine(this.ourClient.SecureSessionID);
183 this.ourClient.OutPacket(response);
184
185 m_assetCache.AddAsset(trans.Asset);
186 //check if we should add it to inventory
187 if (trans.AddToInventory)
188 {
189 // m_assetCache.AddAsset(trans.Asset);
190 m_inventoryCache.AddNewInventoryItem(this.ourClient, trans.InventFolder, trans.Asset);
191 }
192
193
194 }
195 break;
196 }
197
198 }
199 }
200
201 ConfirmXferPacketPacket confirmXfer = new ConfirmXferPacketPacket();
202 confirmXfer.XferID.ID = xferPacket.XferID.ID;
203 confirmXfer.XferID.Packet = xferPacket.XferID.Packet;
204 this.ourClient.OutPacket(confirmXfer);
205 }
206
207 #endregion
208
209 public AssetBase AddUploadToAssetCache(LLUUID transactionID)
210 {
211 AssetBase asset = null;
212 if (this.transactions.ContainsKey(transactionID))
213 {
214 AssetTransaction trans = this.transactions[transactionID];
215 if (trans.UploadComplete)
216 {
217 m_assetCache.AddAsset(trans.Asset);
218 asset = trans.Asset;
219 }
220 }
221
222 return asset;
223 }
224
225 public void CreateInventoryItem(CreateInventoryItemPacket packet)
226 {
227 if (this.transactions.ContainsKey(packet.InventoryBlock.TransactionID))
228 {
229 AssetTransaction trans = this.transactions[packet.InventoryBlock.TransactionID];
230 trans.Asset.Description = Util.FieldToString(packet.InventoryBlock.Description);
231 trans.Asset.Name = Util.FieldToString(packet.InventoryBlock.Name);
232 trans.Asset.Type = packet.InventoryBlock.Type;
233 trans.Asset.InvType = packet.InventoryBlock.InvType;
234 if (trans.UploadComplete)
235 {
236 //already complete so we can add it to the inventory
237 //m_assetCache.AddAsset(trans.Asset);
238 m_inventoryCache.AddNewInventoryItem(this.ourClient, packet.InventoryBlock.FolderID, trans.Asset);
239 }
240 else
241 {
242 trans.AddToInventory = true;
243 trans.InventFolder = packet.InventoryBlock.FolderID;
244 }
245 }
246 }
247
248 private class AssetTransaction
249 {
250 public uint XferID;
251 public AssetBase Asset;
252 public bool AddToInventory;
253 public LLUUID InventFolder = LLUUID.Zero;
254 public bool UploadComplete = false;
255 public LLUUID TransactionID = LLUUID.Zero;
256
257 public AssetTransaction()
258 {
259
260 }
261 }
262
263 //new class , not currently used.
264 public class AssetXferUploader
265 {
266 private IClientAPI ourClient;
267
268 public bool UploadComplete = false;
269
270 public bool AddToInventory;
271 public LLUUID InventFolder = LLUUID.Zero;
272
273 public uint XferID;
274 public AssetBase Asset;
275 public LLUUID TransactionID = LLUUID.Zero;
276
277
278 public AssetXferUploader(IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data)
279 {
280 ourClient = remoteClient;
281 Asset = new AssetBase();
282 Asset.FullID = assetID;
283 Asset.InvType = type;
284 Asset.Type = type;
285 Asset.Data = data;
286 Asset.Name = "blank";
287 Asset.Description = "empty";
288 TransactionID = transaction;
289
290 if (Asset.Data.Length > 2)
291 {
292 //data block should only have data in it, if there is no more data to be uploaded
293 this.SendCompleteMessage();
294 }
295 else
296 {
297 this.ReqestStartXfer();
298 }
299 }
300
301 protected void SendCompleteMessage()
302 {
303 UploadComplete = true;
304 AssetUploadCompletePacket response = new AssetUploadCompletePacket();
305 response.AssetBlock.Type = Asset.Type;
306 response.AssetBlock.Success = true;
307 response.AssetBlock.UUID = Asset.FullID;
308 this.ourClient.OutPacket(response);
309
310 //TODO trigger event
311 }
312
313 protected void ReqestStartXfer()
314 {
315 UploadComplete = false;
316 XferID = Util.GetNextXferID();
317 RequestXferPacket xfer = new RequestXferPacket();
318 xfer.XferID.ID = XferID;
319 xfer.XferID.VFileType = Asset.Type;
320 xfer.XferID.VFileID = Asset.FullID;
321 xfer.XferID.FilePath = 0;
322 xfer.XferID.Filename = new byte[0];
323 this.ourClient.OutPacket(xfer);
324 }
325
326 public void HandleXferPacket(uint xferID, uint packetID, byte[] data)
327 {
328 if (XferID == xferID)
329 {
330 if (Asset.Data.Length > 1)
331 {
332 byte[] newArray = new byte[Asset.Data.Length + data.Length];
333 Array.Copy(Asset.Data, 0, newArray, 0, Asset.Data.Length);
334 Array.Copy(data, 0, newArray, Asset.Data.Length, data.Length);
335 Asset.Data = newArray;
336 }
337 else
338 {
339 byte[] newArray = new byte[data.Length - 4];
340 Array.Copy(data, 4, newArray, 0, data.Length - 4);
341 Asset.Data = newArray;
342 }
343
344 ConfirmXferPacketPacket confirmXfer = new ConfirmXferPacketPacket();
345 confirmXfer.XferID.ID = xferID;
346 confirmXfer.XferID.Packet = packetID;
347 this.ourClient.OutPacket(confirmXfer);
348
349 if ((packetID & 2147483648) != 0)
350 {
351 this.SendCompleteMessage();
352 }
353 }
354 }
355 }
356 }
357 }
358}
diff --git a/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs b/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs
new file mode 100644
index 0000000..32aed02
--- /dev/null
+++ b/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs
@@ -0,0 +1,198 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using libsecondlife;
32using libsecondlife.Packets;
33using Nwc.XmlRpc;
34using System.Net;
35using System.Net.Sockets;
36using System.IO;
37using System.Threading;
38using System.Timers;
39using OpenSim.Framework.Interfaces;
40using OpenSim.Framework.Types;
41using OpenSim.Framework.Inventory;
42using OpenSim.Framework.Utilities;
43using OpenSim.Assets;
44
45namespace OpenSim
46{
47 public partial class ClientView
48 {
49 protected virtual void RegisterLocalPacketHandlers()
50 {
51 this.AddLocalPacketHandler(PacketType.LogoutRequest, this.Logout);
52 this.AddLocalPacketHandler(PacketType.AgentCachedTexture, this.AgentTextureCached);
53 this.AddLocalPacketHandler(PacketType.MultipleObjectUpdate, this.MultipleObjUpdate);
54 }
55
56 protected virtual bool Logout(ClientView simClient, Packet packet)
57 {
58 OpenSim.Framework.Console.MainLog.Instance.Verbose( "OpenSimClient.cs:ProcessInPacket() - Got a logout request");
59 //send reply to let the client logout
60 LogoutReplyPacket logReply = new LogoutReplyPacket();
61 logReply.AgentData.AgentID = this.AgentID;
62 logReply.AgentData.SessionID = this.SessionID;
63 logReply.InventoryData = new LogoutReplyPacket.InventoryDataBlock[1];
64 logReply.InventoryData[0] = new LogoutReplyPacket.InventoryDataBlock();
65 logReply.InventoryData[0].ItemID = LLUUID.Zero;
66 OutPacket(logReply);
67 //tell all clients to kill our object
68 KillObjectPacket kill = new KillObjectPacket();
69 kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1];
70 kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock();
71 // kill.ObjectData[0].ID = this.ClientAvatar.localid;
72 foreach (ClientView client in m_clientThreads.Values)
73 {
74 client.OutPacket(kill);
75 }
76
77 this.m_inventoryCache.ClientLeaving(this.AgentID, null);
78
79
80 // m_gridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode);
81 /*lock (m_world.Entities)
82 {
83 m_world.Entities.Remove(this.AgentID);
84 }*/
85 // m_world.RemoveViewerAgent(this);
86 //need to do other cleaning up here too
87 m_clientThreads.Remove(this.CircuitCode);
88 m_networkServer.RemoveClientCircuit(this.CircuitCode);
89 this.ClientThread.Abort();
90 return true;
91 }
92
93 protected bool AgentTextureCached(ClientView simclient, Packet packet)
94 {
95 // Console.WriteLine(packet.ToString());
96 AgentCachedTexturePacket chechedtex = (AgentCachedTexturePacket)packet;
97 AgentCachedTextureResponsePacket cachedresp = new AgentCachedTextureResponsePacket();
98 cachedresp.AgentData.AgentID = this.AgentID;
99 cachedresp.AgentData.SessionID = this.SessionID;
100 cachedresp.AgentData.SerialNum = this.cachedtextureserial;
101 this.cachedtextureserial++;
102 cachedresp.WearableData = new AgentCachedTextureResponsePacket.WearableDataBlock[chechedtex.WearableData.Length];
103 for (int i = 0; i < chechedtex.WearableData.Length; i++)
104 {
105 cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock();
106 cachedresp.WearableData[i].TextureIndex = chechedtex.WearableData[i].TextureIndex;
107 cachedresp.WearableData[i].TextureID = LLUUID.Zero;
108 cachedresp.WearableData[i].HostName = new byte[0];
109 }
110 this.OutPacket(cachedresp);
111 return true;
112 }
113
114 protected bool MultipleObjUpdate(ClientView simClient, Packet packet)
115 {
116 MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket)packet;
117 for (int i = 0; i < multipleupdate.ObjectData.Length; i++)
118 {
119 if (multipleupdate.ObjectData[i].Type == 9) //change position
120 {
121 if (OnUpdatePrimPosition != null)
122 {
123 libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
124 OnUpdatePrimPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
125 }
126 //should update stored position of the prim
127 }
128 else if (multipleupdate.ObjectData[i].Type == 10)//rotation
129 {
130 if (OnUpdatePrimRotation != null)
131 {
132 libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true);
133 OnUpdatePrimRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this);
134 }
135 }
136 else if (multipleupdate.ObjectData[i].Type == 13)//scale
137 {
138 if (OnUpdatePrimScale != null)
139 {
140 libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
141 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
142 }
143 }
144 }
145 return true;
146 }
147
148 public void RequestMapLayer()
149 {
150 //should be getting the map layer from the grid server
151 //send a layer covering the 800,800 - 1200,1200 area (should be covering the requested area)
152 MapLayerReplyPacket mapReply = new MapLayerReplyPacket();
153 mapReply.AgentData.AgentID = this.AgentID;
154 mapReply.AgentData.Flags = 0;
155 mapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1];
156 mapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock();
157 mapReply.LayerData[0].Bottom = 0;
158 mapReply.LayerData[0].Left = 0;
159 mapReply.LayerData[0].Top = 30000;
160 mapReply.LayerData[0].Right = 30000;
161 mapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-9999-000000000006");
162 this.OutPacket(mapReply);
163 }
164
165 public void RequestMapBlocks(int minX, int minY, int maxX, int maxY)
166 {
167 /*
168 IList simMapProfiles = m_gridServer.RequestMapBlocks(minX, minY, maxX, maxY);
169 MapBlockReplyPacket mbReply = new MapBlockReplyPacket();
170 mbReply.AgentData.AgentID = this.AgentID;
171 int len;
172 if (simMapProfiles == null)
173 len = 0;
174 else
175 len = simMapProfiles.Count;
176
177 mbReply.Data = new MapBlockReplyPacket.DataBlock[len];
178 int iii;
179 for (iii = 0; iii < len; iii++)
180 {
181 Hashtable mp = (Hashtable)simMapProfiles[iii];
182 mbReply.Data[iii] = new MapBlockReplyPacket.DataBlock();
183 mbReply.Data[iii].Name = System.Text.Encoding.UTF8.GetBytes((string)mp["name"]);
184 mbReply.Data[iii].Access = System.Convert.ToByte(mp["access"]);
185 mbReply.Data[iii].Agents = System.Convert.ToByte(mp["agents"]);
186 mbReply.Data[iii].MapImageID = new LLUUID((string)mp["map-image-id"]);
187 mbReply.Data[iii].RegionFlags = System.Convert.ToUInt32(mp["region-flags"]);
188 mbReply.Data[iii].WaterHeight = System.Convert.ToByte(mp["water-height"]);
189 mbReply.Data[iii].X = System.Convert.ToUInt16(mp["x"]);
190 mbReply.Data[iii].Y = System.Convert.ToUInt16(mp["y"]);
191 }
192 this.OutPacket(mbReply);
193 */
194 }
195
196
197 }
198}
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
new file mode 100644
index 0000000..191ef21
--- /dev/null
+++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
@@ -0,0 +1,550 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using libsecondlife;
32using libsecondlife.Packets;
33using Nwc.XmlRpc;
34using System.Net;
35using System.Net.Sockets;
36using System.IO;
37using System.Threading;
38using System.Timers;
39using OpenSim.Framework.Interfaces;
40using OpenSim.Framework.Types;
41using OpenSim.Framework.Inventory;
42using OpenSim.Framework.Utilities;
43using OpenSim.Assets;
44
45namespace OpenSim
46{
47 public partial class ClientView
48 {
49 protected override void ProcessInPacket(Packet Pack)
50 {
51 ack_pack(Pack);
52 if (debug)
53 {
54 if (Pack.Type != PacketType.AgentUpdate)
55 {
56 Console.WriteLine(Pack.Type.ToString());
57 }
58 }
59
60 if (this.ProcessPacketMethod(Pack))
61 {
62 //there is a handler registered that handled this packet type
63 return;
64 }
65 else
66 {
67 System.Text.Encoding _enc = System.Text.Encoding.ASCII;
68
69 switch (Pack.Type)
70 {
71 case PacketType.ViewerEffect:
72 ViewerEffectPacket viewer = (ViewerEffectPacket)Pack;
73 foreach (ClientView client in m_clientThreads.Values)
74 {
75 if (client.AgentID != this.AgentID)
76 {
77 viewer.AgentData.AgentID = client.AgentID;
78 viewer.AgentData.SessionID = client.SessionID;
79 client.OutPacket(viewer);
80 }
81 }
82 break;
83
84 #region World/Avatar
85 case PacketType.ChatFromViewer:
86 ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack;
87 if (Util.FieldToString(inchatpack.ChatData.Message) == "")
88 {
89 //empty message so don't bother with it
90 break;
91 }
92 string fromName = ""; //ClientAvatar.firstname + " " + ClientAvatar.lastname;
93 byte[] message = inchatpack.ChatData.Message;
94 byte type = inchatpack.ChatData.Type;
95 LLVector3 fromPos = new LLVector3(); // ClientAvatar.Pos;
96 LLUUID fromAgentID = AgentID;
97 if (OnChatFromViewer != null)
98 {
99 this.OnChatFromViewer(message, type, fromPos, fromName, fromAgentID);
100 }
101 break;
102 case PacketType.RezObject:
103 RezObjectPacket rezPacket = (RezObjectPacket)Pack;
104 AgentInventory inven = this.m_inventoryCache.GetAgentsInventory(this.AgentID);
105 if (inven != null)
106 {
107 if (inven.InventoryItems.ContainsKey(rezPacket.InventoryData.ItemID))
108 {
109 AssetBase asset = this.m_assetCache.GetAsset(inven.InventoryItems[rezPacket.InventoryData.ItemID].AssetID);
110 if (asset != null)
111 {
112 if (OnRezObject != null)
113 {
114 this.OnRezObject(asset, rezPacket.RezData.RayEnd);
115 this.m_inventoryCache.DeleteInventoryItem(this, rezPacket.InventoryData.ItemID);
116 }
117 }
118 }
119 }
120 break;
121 case PacketType.DeRezObject:
122 if (OnDeRezObject != null)
123 {
124 OnDeRezObject(Pack, this);
125 }
126 break;
127 case PacketType.ModifyLand:
128 ModifyLandPacket modify = (ModifyLandPacket)Pack;
129 if (modify.ParcelData.Length > 0)
130 {
131 if (OnModifyTerrain != null)
132 {
133 OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds, modify.ModifyBlock.BrushSize,
134 modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West);
135 }
136 }
137 break;
138 case PacketType.RegionHandshakeReply:
139 if (OnRegionHandShakeReply != null)
140 {
141 OnRegionHandShakeReply(this);
142 }
143 break;
144 case PacketType.AgentWearablesRequest:
145 if (OnRequestWearables != null)
146 {
147 OnRequestWearables(this);
148 }
149 if (OnRequestAvatarsData != null)
150 {
151 OnRequestAvatarsData(this);
152 }
153 break;
154 case PacketType.AgentSetAppearance:
155 AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack;
156 if (OnSetAppearance != null)
157 {
158 OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam);
159 }
160 break;
161 case PacketType.CompleteAgentMovement:
162 if (OnCompleteMovementToRegion != null)
163 {
164 OnCompleteMovementToRegion();
165 }
166 break;
167 case PacketType.AgentUpdate:
168 if (OnAgentUpdate != null)
169 {
170 AgentUpdatePacket agenUpdate = (AgentUpdatePacket) Pack;
171 OnAgentUpdate(this, agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotation );
172 }
173 break;
174 case PacketType.AgentAnimation:
175 if (!m_child)
176 {
177 AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack;
178 for (int i = 0; i < AgentAni.AnimationList.Length; i++)
179 {
180 if (AgentAni.AnimationList[i].StartAnim)
181 {
182 if (OnStartAnim != null)
183 {
184 OnStartAnim(AgentAni.AnimationList[i].AnimID, 1);
185 }
186 }
187 }
188 }
189 break;
190
191 #endregion
192
193 #region Objects/Prims
194 case PacketType.ObjectLink:
195 // OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString());
196 ObjectLinkPacket link = (ObjectLinkPacket)Pack;
197 uint parentprimid = 0;
198 List<uint> childrenprims = new List<uint>();
199 if (link.ObjectData.Length > 1)
200 {
201 parentprimid = link.ObjectData[0].ObjectLocalID;
202
203 for (int i = 1; i < link.ObjectData.Length; i++)
204 {
205 childrenprims.Add(link.ObjectData[i].ObjectLocalID);
206 }
207 }
208 if (OnLinkObjects != null)
209 {
210 OnLinkObjects(parentprimid, childrenprims);
211 }
212 break;
213 case PacketType.ObjectAdd:
214 // m_world.AddNewPrim((ObjectAddPacket)Pack, this);
215 if (OnAddPrim != null)
216 {
217 OnAddPrim(Pack, this);
218 }
219 break;
220 case PacketType.ObjectShape:
221 ObjectShapePacket shape = (ObjectShapePacket)Pack;
222 for (int i = 0; i < shape.ObjectData.Length; i++)
223 {
224 if (OnUpdatePrimShape != null)
225 {
226 OnUpdatePrimShape(shape.ObjectData[i].ObjectLocalID, shape.ObjectData[i]);
227 }
228 }
229 break;
230 case PacketType.ObjectSelect:
231 ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack;
232 for (int i = 0; i < incomingselect.ObjectData.Length; i++)
233 {
234 if (OnObjectSelect != null)
235 {
236 OnObjectSelect(incomingselect.ObjectData[i].ObjectLocalID, this);
237 }
238 }
239 break;
240 case PacketType.ObjectFlagUpdate:
241 ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack;
242 if (OnUpdatePrimFlags != null)
243 {
244 OnUpdatePrimFlags(flags.AgentData.ObjectLocalID, Pack, this);
245 }
246 break;
247 case PacketType.ObjectImage:
248 ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
249 for (int i = 0; i < imagePack.ObjectData.Length; i++)
250 {
251 if (OnUpdatePrimTexture != null)
252 {
253 OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID, imagePack.ObjectData[i].TextureEntry, this);
254 }
255 }
256 break;
257 case PacketType.ObjectGrab:
258 ObjectGrabPacket grap = (ObjectGrabPacket)Pack;
259 if (OnGrapObject != null)
260 {
261 OnGrapObject(grap.ObjectData.LocalID, grap.ObjectData.GrabOffset, this);
262 }
263 break;
264 case PacketType.ObjectGrabUpdate:
265 ObjectGrabUpdatePacket grapUpdate = (ObjectGrabUpdatePacket)Pack;
266 if (OnGrapUpdate != null)
267 {
268 OnGrapUpdate(grapUpdate.ObjectData.ObjectID, grapUpdate.ObjectData.GrabOffsetInitial, grapUpdate.ObjectData.GrabPosition, this);
269 }
270 break;
271 case PacketType.ObjectDeGrab:
272 ObjectDeGrabPacket deGrap = (ObjectDeGrabPacket)Pack;
273 if (OnDeGrapObject != null)
274 {
275 OnDeGrapObject(deGrap.ObjectData.LocalID, this);
276 }
277 break;
278 #endregion
279
280 #region Inventory/Asset/Other related packets
281 case PacketType.RequestImage:
282 RequestImagePacket imageRequest = (RequestImagePacket)Pack;
283 for (int i = 0; i < imageRequest.RequestImage.Length; i++)
284 {
285 m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image);
286 }
287 break;
288 case PacketType.TransferRequest:
289 //Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request");
290 TransferRequestPacket transfer = (TransferRequestPacket)Pack;
291 m_assetCache.AddAssetRequest(this, transfer);
292 break;
293 case PacketType.AssetUploadRequest:
294 AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
295 this.UploadAssets.HandleUploadPacket(request, request.AssetBlock.TransactionID.Combine(this.SecureSessionID));
296 break;
297 case PacketType.RequestXfer:
298 //Console.WriteLine(Pack.ToString());
299 break;
300 case PacketType.SendXferPacket:
301 this.UploadAssets.HandleXferPacket((SendXferPacketPacket)Pack);
302 break;
303 case PacketType.CreateInventoryFolder:
304 CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
305 m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
306 //Console.WriteLine(Pack.ToString());
307 break;
308 case PacketType.CreateInventoryItem:
309 //Console.WriteLine(Pack.ToString());
310 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
311 if (createItem.InventoryBlock.TransactionID != LLUUID.Zero)
312 {
313 this.UploadAssets.CreateInventoryItem(createItem);
314 }
315 else
316 {
317 // Console.Write(Pack.ToString());
318 this.CreateInventoryItem(createItem);
319 }
320 break;
321 case PacketType.FetchInventory:
322 //Console.WriteLine("fetch item packet");
323 FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack;
324 m_inventoryCache.FetchInventory(this, FetchInventory);
325 break;
326 case PacketType.FetchInventoryDescendents:
327 FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
328 m_inventoryCache.FetchInventoryDescendents(this, Fetch);
329 break;
330 case PacketType.UpdateInventoryItem:
331 UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack;
332 //Console.WriteLine(Pack.ToString());
333 for (int i = 0; i < update.InventoryData.Length; i++)
334 {
335 if (update.InventoryData[i].TransactionID != LLUUID.Zero)
336 {
337 AssetBase asset = m_assetCache.GetAsset(update.InventoryData[i].TransactionID.Combine(this.SecureSessionID));
338 if (asset != null)
339 {
340 // Console.WriteLine("updating inventory item, found asset" + asset.FullID.ToStringHyphenated() + " already in cache");
341 m_inventoryCache.UpdateInventoryItemAsset(this, update.InventoryData[i].ItemID, asset);
342 }
343 else
344 {
345 asset = this.UploadAssets.AddUploadToAssetCache(update.InventoryData[i].TransactionID);
346 if (asset != null)
347 {
348 //Console.WriteLine("updating inventory item, adding asset" + asset.FullID.ToStringHyphenated() + " to cache");
349 m_inventoryCache.UpdateInventoryItemAsset(this, update.InventoryData[i].ItemID, asset);
350 }
351 else
352 {
353 //Console.WriteLine("trying to update inventory item, but asset is null");
354 }
355 }
356 }
357 else
358 {
359 m_inventoryCache.UpdateInventoryItemDetails(this, update.InventoryData[i].ItemID, update.InventoryData[i]); ;
360 }
361 }
362 break;
363 case PacketType.RequestTaskInventory:
364 // Console.WriteLine(Pack.ToString());
365 RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
366 ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket();
367 bool foundent = false;
368 /* foreach (Entity ent in m_world.Entities.Values)
369 {
370 if (ent.localid == requesttask.InventoryData.LocalID)
371 {
372 replytask.InventoryData.TaskID = ent.uuid;
373 replytask.InventoryData.Serial = 0;
374 replytask.InventoryData.Filename = new byte[0];
375 foundent = true;
376 }
377 }
378 if (foundent)
379 {
380 this.OutPacket(replytask);
381 }*/
382 break;
383 case PacketType.UpdateTaskInventory:
384 // Console.WriteLine(Pack.ToString());
385 UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
386 AgentInventory myinventory = this.m_inventoryCache.GetAgentsInventory(this.AgentID);
387 /*if (myinventory != null)
388 {
389 if (updatetask.UpdateData.Key == 0)
390 {
391 if (myinventory.InventoryItems[updatetask.InventoryData.ItemID] != null)
392 {
393 if (myinventory.InventoryItems[updatetask.InventoryData.ItemID].Type == 7)
394 {
395 LLUUID noteaid = myinventory.InventoryItems[updatetask.InventoryData.ItemID].AssetID;
396 AssetBase assBase = this.m_assetCache.GetAsset(noteaid);
397 if (assBase != null)
398 {
399 foreach (Entity ent in m_world.Entities.Values)
400 {
401 if (ent.localid == updatetask.UpdateData.LocalID)
402 {
403 if (ent is OpenSim.world.Primitive)
404 {
405 this.m_world.AddScript(ent, Util.FieldToString(assBase.Data));
406 }
407 }
408 }
409 }
410 }
411 }
412 }
413 }*/
414 break;
415 case PacketType.MapLayerRequest:
416 this.RequestMapLayer();
417 break;
418 case PacketType.MapBlockRequest:
419 MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack;
420 if (OnRequestMapBlocks != null)
421 {
422 OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY);
423 }
424 break;
425 case PacketType.TeleportLandmarkRequest:
426 TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack;
427
428 TeleportStartPacket tpStart = new TeleportStartPacket();
429 tpStart.Info.TeleportFlags = 8; // tp via lm
430 this.OutPacket(tpStart);
431
432 TeleportProgressPacket tpProgress = new TeleportProgressPacket();
433 tpProgress.Info.Message = (new System.Text.ASCIIEncoding()).GetBytes("sending_landmark");
434 tpProgress.Info.TeleportFlags = 8;
435 tpProgress.AgentData.AgentID = tpReq.Info.AgentID;
436 this.OutPacket(tpProgress);
437
438 // Fetch landmark
439 LLUUID lmid = tpReq.Info.LandmarkID;
440 AssetBase lma = this.m_assetCache.GetAsset(lmid);
441 if (lma != null)
442 {
443 AssetLandmark lm = new AssetLandmark(lma);
444
445 if (lm.RegionID == m_regionData.SimUUID)
446 {
447 TeleportLocalPacket tpLocal = new TeleportLocalPacket();
448
449 tpLocal.Info.AgentID = tpReq.Info.AgentID;
450 tpLocal.Info.TeleportFlags = 8; // Teleport via landmark
451 tpLocal.Info.LocationID = 2;
452 tpLocal.Info.Position = lm.Position;
453 OutPacket(tpLocal);
454 }
455 else
456 {
457 TeleportCancelPacket tpCancel = new TeleportCancelPacket();
458 tpCancel.Info.AgentID = tpReq.Info.AgentID;
459 tpCancel.Info.SessionID = tpReq.Info.SessionID;
460 OutPacket(tpCancel);
461 }
462 }
463 else
464 {
465 Console.WriteLine("Cancelling Teleport - fetch asset not yet implemented");
466
467 TeleportCancelPacket tpCancel = new TeleportCancelPacket();
468 tpCancel.Info.AgentID = tpReq.Info.AgentID;
469 tpCancel.Info.SessionID = tpReq.Info.SessionID;
470 OutPacket(tpCancel);
471 }
472 break;
473 case PacketType.TeleportLocationRequest:
474 TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
475 // Console.WriteLine(tpLocReq.ToString());
476
477 if (OnTeleportLocationRequest != null)
478 {
479 OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position, tpLocReq.Info.LookAt, 16);
480 }
481 else
482 {
483 //no event handler so cancel request
484 TeleportCancelPacket tpCancel = new TeleportCancelPacket();
485 tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID;
486 tpCancel.Info.AgentID = tpLocReq.AgentData.AgentID;
487 OutPacket(tpCancel);
488 }
489 break;
490 #endregion
491
492 case PacketType.MoneyBalanceRequest:
493 this.SendMoneyBalance(LLUUID.Zero, true, new byte[0], 1000);
494 break;
495
496 #region Parcel related packets
497 case PacketType.ParcelPropertiesRequest:
498 ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack;
499 if (OnParcelPropertiesRequest != null)
500 {
501 OnParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West), (int)Math.Round(propertiesRequest.ParcelData.South), (int)Math.Round(propertiesRequest.ParcelData.East), (int)Math.Round(propertiesRequest.ParcelData.North), propertiesRequest.ParcelData.SequenceID, propertiesRequest.ParcelData.SnapSelection, this);
502 }
503 break;
504 case PacketType.ParcelDivide:
505 ParcelDividePacket parcelDivide = (ParcelDividePacket)Pack;
506 if (OnParcelDivideRequest != null)
507 {
508 OnParcelDivideRequest((int)Math.Round(parcelDivide.ParcelData.West), (int)Math.Round(parcelDivide.ParcelData.South), (int)Math.Round(parcelDivide.ParcelData.East), (int)Math.Round(parcelDivide.ParcelData.North), this);
509 }
510 break;
511 case PacketType.ParcelJoin:
512 ParcelJoinPacket parcelJoin = (ParcelJoinPacket)Pack;
513 if (OnParcelJoinRequest != null)
514 {
515 OnParcelJoinRequest((int)Math.Round(parcelJoin.ParcelData.West), (int)Math.Round(parcelJoin.ParcelData.South), (int)Math.Round(parcelJoin.ParcelData.East), (int)Math.Round(parcelJoin.ParcelData.North), this);
516 }
517 break;
518 case PacketType.ParcelPropertiesUpdate:
519 ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket)Pack;
520 if (OnParcelPropertiesUpdateRequest != null)
521 {
522 OnParcelPropertiesUpdateRequest(updatePacket, this);
523 }
524 break;
525 #endregion
526
527 #region Estate Packets
528 case PacketType.EstateOwnerMessage:
529 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack;
530 if (OnEstateOwnerMessage != null)
531 {
532 OnEstateOwnerMessage(messagePacket, this);
533 }
534 break;
535 #endregion
536
537 #region unimplemented handlers
538 case PacketType.AgentIsNowWearing:
539 // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack;
540 //Console.WriteLine(Pack.ToString());
541 break;
542 case PacketType.ObjectScale:
543 //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString());
544 break;
545 #endregion
546 }
547 }
548 }
549 }
550}
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs
new file mode 100644
index 0000000..312da9d
--- /dev/null
+++ b/OpenSim/Region/ClientStack/ClientView.cs
@@ -0,0 +1,273 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using libsecondlife;
32using libsecondlife.Packets;
33using Nwc.XmlRpc;
34using System.Net;
35using System.Net.Sockets;
36using System.IO;
37using System.Threading;
38using System.Timers;
39using OpenSim.Framework;
40using OpenSim.Framework.Interfaces;
41using OpenSim.Framework.Types;
42using OpenSim.Framework.Inventory;
43using OpenSim.Framework.Utilities;
44using OpenSim.Assets;
45using OpenSim.Caches;
46
47namespace OpenSim
48{
49 public delegate bool PacketMethod(ClientView simClient, Packet packet);
50
51 /// <summary>
52 /// Handles new client connections
53 /// Constructor takes a single Packet and authenticates everything
54 /// </summary>
55 public partial class ClientView : ClientViewBase, IClientAPI
56 {
57 public static TerrainManager TerrainManager;
58
59 protected static Dictionary<PacketType, PacketMethod> PacketHandlers = new Dictionary<PacketType, PacketMethod>(); //Global/static handlers for all clients
60 protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); //local handlers for this instance
61
62 public LLUUID AgentID;
63 public LLUUID SessionID;
64 public LLUUID SecureSessionID = LLUUID.Zero;
65 public string firstName;
66 public string lastName;
67 public bool m_child = false;
68 private UseCircuitCodePacket cirpack;
69 public Thread ClientThread;
70 public LLVector3 startpos;
71
72 private AgentAssetUpload UploadAssets;
73 private LLUUID newAssetFolder = LLUUID.Zero;
74 private bool debug = false;
75 protected IWorld m_world;
76 private Dictionary<uint, ClientView> m_clientThreads;
77 private AssetCache m_assetCache;
78 private InventoryCache m_inventoryCache;
79 private int cachedtextureserial = 0;
80 private RegionInfo m_regionData;
81 protected AuthenticateSessionsBase m_authenticateSessionsHandler;
82
83 public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IWorld world, AssetCache assetCache, PacketServer packServer, InventoryCache inventoryCache, AuthenticateSessionsBase authenSessions )
84 {
85 m_world = world;
86 m_clientThreads = clientThreads;
87 m_assetCache = assetCache;
88
89 m_networkServer = packServer;
90 m_inventoryCache = inventoryCache;
91 m_authenticateSessionsHandler = authenSessions;
92
93 OpenSim.Framework.Console.MainLog.Instance.Verbose( "OpenSimClient.cs - Started up new client thread to handle incoming request");
94 cirpack = initialcirpack;
95 userEP = remoteEP;
96
97 this.startpos = m_authenticateSessionsHandler.GetPosition(initialcirpack.CircuitCode.Code);
98
99 PacketQueue = new BlockingQueue<QueItem>();
100
101 this.UploadAssets = new AgentAssetUpload(this, m_assetCache, m_inventoryCache);
102 AckTimer = new System.Timers.Timer(500);
103 AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed);
104 AckTimer.Start();
105
106 this.RegisterLocalPacketHandlers();
107
108 ClientThread = new Thread(new ThreadStart(AuthUser));
109 ClientThread.IsBackground = true;
110 ClientThread.Start();
111 }
112
113 # region Client Methods
114
115 public void KillClient()
116 {
117 KillObjectPacket kill = new KillObjectPacket();
118 kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1];
119 kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock();
120 //kill.ObjectData[0].ID = this.ClientAvatar.localid;
121 foreach (ClientView client in m_clientThreads.Values)
122 {
123 client.OutPacket(kill);
124 }
125
126 this.m_inventoryCache.ClientLeaving(this.AgentID, null);
127 m_world.RemoveClient(this.AgentId);
128
129 m_clientThreads.Remove(this.CircuitCode);
130 m_networkServer.RemoveClientCircuit(this.CircuitCode);
131 this.ClientThread.Abort();
132 }
133 #endregion
134
135 # region Packet Handling
136 public static bool AddPacketHandler(PacketType packetType, PacketMethod handler)
137 {
138 bool result = false;
139 lock (PacketHandlers)
140 {
141 if (!PacketHandlers.ContainsKey(packetType))
142 {
143 PacketHandlers.Add(packetType, handler);
144 result = true;
145 }
146 }
147 return result;
148 }
149
150 public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler)
151 {
152 bool result = false;
153 lock (m_packetHandlers)
154 {
155 if (!m_packetHandlers.ContainsKey(packetType))
156 {
157 m_packetHandlers.Add(packetType, handler);
158 result = true;
159 }
160 }
161 return result;
162 }
163
164 protected virtual bool ProcessPacketMethod(Packet packet)
165 {
166 bool result = false;
167 bool found = false;
168 PacketMethod method;
169 if (m_packetHandlers.TryGetValue(packet.Type, out method))
170 {
171 //there is a local handler for this packet type
172 result = method(this, packet);
173 }
174 else
175 {
176 //there is not a local handler so see if there is a Global handler
177 lock (PacketHandlers)
178 {
179 found = PacketHandlers.TryGetValue(packet.Type, out method);
180 }
181 if (found)
182 {
183 result = method(this, packet);
184 }
185 }
186 return result;
187 }
188
189 protected virtual void ClientLoop()
190 {
191 OpenSim.Framework.Console.MainLog.Instance.Verbose( "OpenSimClient.cs:ClientLoop() - Entered loop");
192 while (true)
193 {
194 QueItem nextPacket = PacketQueue.Dequeue();
195 if (nextPacket.Incoming)
196 {
197 //is a incoming packet
198 ProcessInPacket(nextPacket.Packet);
199 }
200 else
201 {
202 //is a out going packet
203 ProcessOutPacket(nextPacket.Packet);
204 }
205 }
206 }
207 # endregion
208
209 # region Setup
210
211 protected virtual void InitNewClient()
212 {
213 OpenSim.Framework.Console.MainLog.Instance.Verbose( "OpenSimClient.cs:InitNewClient() - Adding viewer agent to world");
214 this.m_world.AddNewClient(this, this.AgentID, false);
215 }
216
217 protected virtual void AuthUser()
218 {
219 // AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
220 AuthenticateResponse sessionInfo = this.m_authenticateSessionsHandler.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
221 if (!sessionInfo.Authorised)
222 {
223 //session/circuit not authorised
224 OpenSim.Framework.Console.MainLog.Instance.Notice("OpenSimClient.cs:AuthUser() - New user request denied to " + userEP.ToString());
225 ClientThread.Abort();
226 }
227 else
228 {
229 OpenSim.Framework.Console.MainLog.Instance.Notice("OpenSimClient.cs:AuthUser() - Got authenticated connection from " + userEP.ToString());
230 //session is authorised
231 this.AgentID = cirpack.CircuitCode.ID;
232 this.SessionID = cirpack.CircuitCode.SessionID;
233 this.CircuitCode = cirpack.CircuitCode.Code;
234 this.firstName = sessionInfo.LoginInfo.First;
235 this.lastName = sessionInfo.LoginInfo.Last;
236
237 if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero)
238 {
239 this.SecureSessionID = sessionInfo.LoginInfo.SecureSession;
240 }
241 InitNewClient();
242
243 ClientLoop();
244 }
245 }
246 # endregion
247
248
249 protected override void KillThread()
250 {
251 this.ClientThread.Abort();
252 }
253
254 #region Inventory Creation
255 private void SetupInventory(AuthenticateResponse sessionInfo)
256 {
257
258 }
259 private AgentInventory CreateInventory(LLUUID baseFolder)
260 {
261 AgentInventory inventory = null;
262
263 return inventory;
264 }
265
266 private void CreateInventoryItem(CreateInventoryItemPacket packet)
267 {
268
269 }
270 #endregion
271
272 }
273}
diff --git a/OpenSim/Region/ClientStack/ClientViewBase.cs b/OpenSim/Region/ClientStack/ClientViewBase.cs
new file mode 100644
index 0000000..8b503f0
--- /dev/null
+++ b/OpenSim/Region/ClientStack/ClientViewBase.cs
@@ -0,0 +1,327 @@
1
2/*
3* Copyright (c) Contributors, http://www.openmetaverse.org/
4* See CONTRIBUTORS.TXT for a full list of copyright holders.
5*
6* Redistribution and use in source and binary forms, with or without
7* modification, are permitted provided that the following conditions are met:
8* * Redistributions of source code must retain the above copyright
9* notice, this list of conditions and the following disclaimer.
10* * Redistributions in binary form must reproduce the above copyright
11* notice, this list of conditions and the following disclaimer in the
12* documentation and/or other materials provided with the distribution.
13* * Neither the name of the OpenSim Project nor the
14* names of its contributors may be used to endorse or promote products
15* derived from this software without specific prior written permission.
16*
17* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
18* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
21* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27*
28*/
29using System;
30using System.Collections;
31using System.Collections.Generic;
32using libsecondlife;
33using libsecondlife.Packets;
34using System.Net;
35using System.Net.Sockets;
36using System.IO;
37using System.Threading;
38using System.Timers;
39using OpenSim.Framework.Utilities;
40using OpenSim.Framework.Interfaces;
41
42namespace OpenSim
43{
44 public class ClientViewBase
45 {
46 protected BlockingQueue<QueItem> PacketQueue;
47 protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>();
48 protected Dictionary<uint, Packet> NeedAck = new Dictionary<uint, Packet>();
49
50 protected System.Timers.Timer AckTimer;
51 protected uint Sequence = 0;
52 protected object SequenceLock = new object();
53 protected const int MAX_APPENDED_ACKS = 10;
54 protected const int RESEND_TIMEOUT = 4000;
55 protected const int MAX_SEQUENCE = 0xFFFFFF;
56
57 public uint CircuitCode;
58 public EndPoint userEP;
59
60 protected PacketServer m_networkServer;
61
62 public ClientViewBase()
63 {
64
65 }
66
67 protected virtual void ProcessInPacket(Packet Pack)
68 {
69
70 }
71
72 protected virtual void ProcessOutPacket(Packet Pack)
73 {
74 // Keep track of when this packet was sent out
75 Pack.TickCount = Environment.TickCount;
76
77 if (!Pack.Header.Resent)
78 {
79 // Set the sequence number
80 lock (SequenceLock)
81 {
82 if (Sequence >= MAX_SEQUENCE)
83 Sequence = 1;
84 else
85 Sequence++;
86 Pack.Header.Sequence = Sequence;
87 }
88
89 if (Pack.Header.Reliable) //DIRTY HACK
90 {
91 lock (NeedAck)
92 {
93 if (!NeedAck.ContainsKey(Pack.Header.Sequence))
94 {
95 try
96 {
97 NeedAck.Add(Pack.Header.Sequence, Pack);
98 }
99 catch (Exception e) // HACKY
100 {
101 e.ToString();
102 // Ignore
103 // Seems to throw a exception here occasionally
104 // of 'duplicate key' despite being locked.
105 // !?!?!?
106 }
107 }
108 else
109 {
110 // Client.Log("Attempted to add a duplicate sequence number (" +
111 // packet.Header.Sequence + ") to the NeedAck dictionary for packet type " +
112 // packet.Type.ToString(), Helpers.LogLevel.Warning);
113 }
114 }
115
116 // Don't append ACKs to resent packets, in case that's what was causing the
117 // delivery to fail
118 if (!Pack.Header.Resent)
119 {
120 // Append any ACKs that need to be sent out to this packet
121 lock (PendingAcks)
122 {
123 if (PendingAcks.Count > 0 && PendingAcks.Count < MAX_APPENDED_ACKS &&
124 Pack.Type != PacketType.PacketAck &&
125 Pack.Type != PacketType.LogoutRequest)
126 {
127 Pack.Header.AckList = new uint[PendingAcks.Count];
128 int i = 0;
129
130 foreach (uint ack in PendingAcks.Values)
131 {
132 Pack.Header.AckList[i] = ack;
133 i++;
134 }
135
136 PendingAcks.Clear();
137 Pack.Header.AppendedAcks = true;
138 }
139 }
140 }
141 }
142 }
143
144 byte[] ZeroOutBuffer = new byte[4096];
145 byte[] sendbuffer;
146 sendbuffer = Pack.ToBytes();
147
148 try
149 {
150 if (Pack.Header.Zerocoded)
151 {
152 int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
153 m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, CircuitCode);//userEP);
154 }
155 else
156 {
157 m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, CircuitCode); //userEP);
158 }
159 }
160 catch (Exception)
161 {
162 OpenSim.Framework.Console.MainLog.Instance.Warn("OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + userEP.ToString() + " - killing thread");
163 this.KillThread();
164 }
165
166 }
167
168 public virtual void InPacket(Packet NewPack)
169 {
170 // Handle appended ACKs
171 if (NewPack.Header.AppendedAcks)
172 {
173 lock (NeedAck)
174 {
175 foreach (uint ack in NewPack.Header.AckList)
176 {
177 NeedAck.Remove(ack);
178 }
179 }
180 }
181
182 // Handle PacketAck packets
183 if (NewPack.Type == PacketType.PacketAck)
184 {
185 PacketAckPacket ackPacket = (PacketAckPacket)NewPack;
186
187 lock (NeedAck)
188 {
189 foreach (PacketAckPacket.PacketsBlock block in ackPacket.Packets)
190 {
191 NeedAck.Remove(block.ID);
192 }
193 }
194 }
195 else if ((NewPack.Type == PacketType.StartPingCheck))
196 {
197 //reply to pingcheck
198 libsecondlife.Packets.StartPingCheckPacket startPing = (libsecondlife.Packets.StartPingCheckPacket)NewPack;
199 libsecondlife.Packets.CompletePingCheckPacket endPing = new CompletePingCheckPacket();
200 endPing.PingID.PingID = startPing.PingID.PingID;
201 OutPacket(endPing);
202 }
203 else
204 {
205 QueItem item = new QueItem();
206 item.Packet = NewPack;
207 item.Incoming = true;
208 this.PacketQueue.Enqueue(item);
209 }
210
211 }
212
213 public virtual void OutPacket(Packet NewPack)
214 {
215 QueItem item = new QueItem();
216 item.Packet = NewPack;
217 item.Incoming = false;
218 this.PacketQueue.Enqueue(item);
219 }
220
221 # region Low Level Packet Methods
222
223 protected void ack_pack(Packet Pack)
224 {
225 if (Pack.Header.Reliable)
226 {
227 libsecondlife.Packets.PacketAckPacket ack_it = new PacketAckPacket();
228 ack_it.Packets = new PacketAckPacket.PacketsBlock[1];
229 ack_it.Packets[0] = new PacketAckPacket.PacketsBlock();
230 ack_it.Packets[0].ID = Pack.Header.Sequence;
231 ack_it.Header.Reliable = false;
232
233 OutPacket(ack_it);
234
235 }
236 /*
237 if (Pack.Header.Reliable)
238 {
239 lock (PendingAcks)
240 {
241 uint sequence = (uint)Pack.Header.Sequence;
242 if (!PendingAcks.ContainsKey(sequence)) { PendingAcks[sequence] = sequence; }
243 }
244 }*/
245 }
246
247 protected void ResendUnacked()
248 {
249 int now = Environment.TickCount;
250
251 lock (NeedAck)
252 {
253 foreach (Packet packet in NeedAck.Values)
254 {
255 if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent))
256 {
257 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Resending " + packet.Type.ToString() + " packet, " +
258 (now - packet.TickCount) + "ms have passed");
259
260 packet.Header.Resent = true;
261 OutPacket(packet);
262 }
263 }
264 }
265 }
266
267 protected void SendAcks()
268 {
269 lock (PendingAcks)
270 {
271 if (PendingAcks.Count > 0)
272 {
273 if (PendingAcks.Count > 250)
274 {
275 // FIXME: Handle the odd case where we have too many pending ACKs queued up
276 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Too many ACKs queued up!");
277 return;
278 }
279
280 //OpenSim.Framework.Console.MainLog.Instance.WriteLine("Sending PacketAck");
281
282
283 int i = 0;
284 PacketAckPacket acks = new PacketAckPacket();
285 acks.Packets = new PacketAckPacket.PacketsBlock[PendingAcks.Count];
286
287 foreach (uint ack in PendingAcks.Values)
288 {
289 acks.Packets[i] = new PacketAckPacket.PacketsBlock();
290 acks.Packets[i].ID = ack;
291 i++;
292 }
293
294 acks.Header.Reliable = false;
295 OutPacket(acks);
296
297 PendingAcks.Clear();
298 }
299 }
300 }
301
302 protected void AckTimer_Elapsed(object sender, ElapsedEventArgs ea)
303 {
304 SendAcks();
305 ResendUnacked();
306 }
307 #endregion
308
309 protected virtual void KillThread()
310 {
311
312 }
313
314 #region Nested Classes
315
316 public class QueItem
317 {
318 public QueItem()
319 {
320 }
321
322 public Packet Packet;
323 public bool Incoming;
324 }
325 #endregion
326 }
327}
diff --git a/OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj b/OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj
new file mode 100644
index 0000000..0b19359
--- /dev/null
+++ b/OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj
@@ -0,0 +1,173 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{DC3698B2-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.ClientStack</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.ClientStack</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Axiom.MathLib.dll" >
62 <HintPath>..\..\..\bin\Axiom.MathLib.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="Db4objects.Db4o.dll" >
66 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="libsecondlife.dll" >
70 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.FrameworkGenericConfig.Xml" >
74 <HintPath>OpenSim.FrameworkGenericConfig.Xml.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System" >
78 <HintPath>System.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="System.Xml" >
82 <HintPath>System.Xml.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="XMLRPC.dll" >
86 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 </ItemGroup>
90 <ItemGroup>
91 <ProjectReference Include="..\..\Framework\General\OpenSim.Framework.csproj">
92 <Name>OpenSim.Framework</Name>
93 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
94 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
95 <Private>False</Private>
96 </ProjectReference>
97 <ProjectReference Include="..\..\Framework\Console\OpenSim.Framework.Console.csproj">
98 <Name>OpenSim.Framework.Console</Name>
99 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
100 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
101 <Private>False</Private>
102 </ProjectReference>
103 <ProjectReference Include="..\..\Framework\Servers\OpenSim.Framework.Servers.csproj">
104 <Name>OpenSim.Framework.Servers</Name>
105 <Project>{2CC71860-0000-0000-0000-000000000000}</Project>
106 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
107 <Private>False</Private>
108 </ProjectReference>
109 <ProjectReference Include="..\Caches\OpenSim.Region.Caches.csproj">
110 <Name>OpenSim.Region.Caches</Name>
111 <Project>{61FCCDB3-0000-0000-0000-000000000000}</Project>
112 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
113 <Private>False</Private>
114 </ProjectReference>
115 <ProjectReference Include="..\Physics\Manager\OpenSim.Region.Physics.Manager.csproj">
116 <Name>OpenSim.Region.Physics.Manager</Name>
117 <Project>{F4FF31EB-0000-0000-0000-000000000000}</Project>
118 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
119 <Private>False</Private>
120 </ProjectReference>
121 <ProjectReference Include="..\Terrain.BasicTerrain\OpenSim.Region.Terrain.BasicTerrain.csproj">
122 <Name>OpenSim.Region.Terrain.BasicTerrain</Name>
123 <Project>{C9E0F891-0000-0000-0000-000000000000}</Project>
124 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
125 <Private>False</Private>
126 </ProjectReference>
127 </ItemGroup>
128 <ItemGroup>
129 <Compile Include="ClientStackNetworkHandler.cs">
130 <SubType>Code</SubType>
131 </Compile>
132 <Compile Include="ClientView.AgentAssetUpload.cs">
133 <SubType>Code</SubType>
134 </Compile>
135 <Compile Include="ClientView.API.cs">
136 <SubType>Code</SubType>
137 </Compile>
138 <Compile Include="ClientView.cs">
139 <SubType>Code</SubType>
140 </Compile>
141 <Compile Include="ClientView.PacketHandlers.cs">
142 <SubType>Code</SubType>
143 </Compile>
144 <Compile Include="ClientView.ProcessPackets.cs">
145 <SubType>Code</SubType>
146 </Compile>
147 <Compile Include="ClientViewBase.cs">
148 <SubType>Code</SubType>
149 </Compile>
150 <Compile Include="PacketServer.cs">
151 <SubType>Code</SubType>
152 </Compile>
153 <Compile Include="RegionApplicationBase.cs">
154 <SubType>Code</SubType>
155 </Compile>
156 <Compile Include="UDPServer.cs">
157 <SubType>Code</SubType>
158 </Compile>
159 <Compile Include="VersionInfo.cs">
160 <SubType>Code</SubType>
161 </Compile>
162 <Compile Include="Assets\InventoryCache.cs">
163 <SubType>Code</SubType>
164 </Compile>
165 </ItemGroup>
166 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
167 <PropertyGroup>
168 <PreBuildEvent>
169 </PreBuildEvent>
170 <PostBuildEvent>
171 </PostBuildEvent>
172 </PropertyGroup>
173</Project>
diff --git a/OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj.user b/OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/ClientStack/OpenSim.Region.ClientStack.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/ClientStack/PacketServer.cs b/OpenSim/Region/ClientStack/PacketServer.cs
new file mode 100644
index 0000000..229570c
--- /dev/null
+++ b/OpenSim/Region/ClientStack/PacketServer.cs
@@ -0,0 +1,183 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife.Packets;
32using OpenSim.Framework.Interfaces;
33using OpenSim.Framework;
34using System.Net;
35using System.Net.Sockets;
36using OpenSim.Assets;
37using OpenSim.Caches;
38
39namespace OpenSim
40{
41 public class PacketServer
42 {
43 private ClientStackNetworkHandler _networkHandler;
44 private IWorld _localWorld;
45 public Dictionary<uint, ClientView> ClientThreads = new Dictionary<uint, ClientView>();
46 public Dictionary<uint, IClientAPI> ClientAPIs = new Dictionary<uint, IClientAPI>();
47 protected uint serverPort;
48
49 public PacketServer(ClientStackNetworkHandler networkHandler, uint port)
50 {
51 _networkHandler = networkHandler;
52 this.serverPort = port;
53 _networkHandler.RegisterPacketServer(this);
54 }
55
56 public IWorld LocalWorld
57 {
58 set
59 {
60 this._localWorld = value;
61 }
62 }
63
64 /// <summary>
65 ///
66 /// </summary>
67 /// <param name="circuitCode"></param>
68 /// <param name="packet"></param>
69 public virtual void ClientInPacket(uint circuitCode, Packet packet)
70 {
71 if (this.ClientThreads.ContainsKey(circuitCode))
72 {
73 ClientThreads[circuitCode].InPacket(packet);
74 }
75 }
76
77 /// <summary>
78 ///
79 /// </summary>
80 /// <param name="circuitCode"></param>
81 /// <returns></returns>
82 public virtual bool AddNewCircuitCodeClient(uint circuitCode)
83 {
84 return false;
85 }
86
87 /// <summary>
88 ///
89 /// </summary>
90 /// <param name="packet"></param>
91 public virtual void SendPacketToAllClients(Packet packet)
92 {
93
94 }
95
96 /// <summary>
97 ///
98 /// </summary>
99 /// <param name="packet"></param>
100 /// <param name="simClient"></param>
101 public virtual void SendPacketToAllExcept(Packet packet, ClientView simClient)
102 {
103
104 }
105
106 /// <summary>
107 ///
108 /// </summary>
109 /// <param name="packetType"></param>
110 /// <param name="handler"></param>
111 public virtual void AddClientPacketHandler(PacketType packetType, PacketMethod handler)
112 {
113
114 }
115
116 /// <summary>
117 ///
118 /// </summary>
119 public virtual void RegisterClientPacketHandlers()
120 {
121
122 }
123
124 /// <summary>
125 ///
126 /// </summary>
127 /// <param name="remoteEP"></param>
128 /// <param name="initialcirpack"></param>
129 /// <param name="clientThreads"></param>
130 /// <param name="world"></param>
131 /// <param name="assetCache"></param>
132 /// <param name="packServer"></param>
133 /// <param name="inventoryCache"></param>
134 /// <param name="authenSessions"></param>
135 /// <returns></returns>
136 protected virtual ClientView CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IWorld world, AssetCache assetCache, PacketServer packServer, InventoryCache inventoryCache, AuthenticateSessionsBase authenSessions)
137 {
138 return new ClientView(remoteEP, initialcirpack, clientThreads, world, assetCache, packServer, inventoryCache, authenSessions );
139 }
140
141 /// <summary>
142 ///
143 /// </summary>
144 /// <param name="epSender"></param>
145 /// <param name="useCircuit"></param>
146 /// <param name="assetCache"></param>
147 /// <param name="inventoryCache"></param>
148 /// <param name="authenticateSessionsClass"></param>
149 /// <returns></returns>
150 public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache, InventoryCache inventoryCache, AuthenticateSessionsBase authenticateSessionsClass)
151 {
152 ClientView newuser =
153 CreateNewClient(epSender, useCircuit, ClientThreads, _localWorld, assetCache, this, inventoryCache,
154 authenticateSessionsClass);
155
156 this.ClientThreads.Add(useCircuit.CircuitCode.Code, newuser);
157 this.ClientAPIs.Add(useCircuit.CircuitCode.Code, (IClientAPI)newuser);
158
159 return true;
160 }
161
162 /// <summary>
163 ///
164 /// </summary>
165 /// <param name="buffer"></param>
166 /// <param name="size"></param>
167 /// <param name="flags"></param>
168 /// <param name="circuitcode"></param>
169 public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
170 {
171 this._networkHandler.SendPacketTo(buffer, size, flags, circuitcode);
172 }
173
174 /// <summary>
175 ///
176 /// </summary>
177 /// <param name="circuitcode"></param>
178 public virtual void RemoveClientCircuit(uint circuitcode)
179 {
180 this._networkHandler.RemoveClientCircuit(circuitcode);
181 }
182 }
183}
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
new file mode 100644
index 0000000..b421fbd
--- /dev/null
+++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
@@ -0,0 +1,129 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Text;
30using System.IO;
31using System.Threading;
32using System.Net;
33using System.Net.Sockets;
34using System.Timers;
35using System.Reflection;
36using System.Collections;
37using System.Collections.Generic;
38using libsecondlife;
39using libsecondlife.Packets;
40using OpenSim.Terrain;
41using OpenSim.Framework.Interfaces;
42using OpenSim.Framework.Types;
43using OpenSim.Framework;
44using OpenSim.Assets;
45using OpenSim.Caches;
46using OpenSim.Framework.Console;
47using OpenSim.Physics.Manager;
48using Nwc.XmlRpc;
49using OpenSim.Framework.Servers;
50using OpenSim.Framework.GenericConfig;
51
52namespace OpenSim
53{
54 public class RegionApplicationBase
55 {
56 protected IGenericConfig localConfig;
57 protected PhysicsManager physManager;
58 protected AssetCache AssetCache;
59 protected InventoryCache InventoryCache;
60 protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>();
61 protected DateTime startuptime;
62 protected NetworkServersInfo serversData;
63
64 public string m_physicsEngine;
65 public bool m_sandbox = false;
66 public bool m_loginserver;
67 public bool user_accounts = false;
68 public bool gridLocalAsset = false;
69 protected bool configFileSetup = false;
70 public string m_config;
71
72 protected List<UDPServer> m_udpServer = new List<UDPServer>();
73 protected List<RegionInfo> regionData = new List<RegionInfo>();
74 protected List<IWorld> m_localWorld = new List<IWorld>();
75 protected BaseHttpServer httpServer;
76 protected List<AuthenticateSessionsBase> AuthenticateSessionsHandler = new List<AuthenticateSessionsBase>();
77
78 protected LogBase m_log;
79
80 public RegionApplicationBase()
81 {
82
83 }
84
85 public RegionApplicationBase(bool sandBoxMode, bool startLoginServer, string physicsEngine, bool useConfigFile, bool silent, string configFile)
86 {
87 this.configFileSetup = useConfigFile;
88 m_sandbox = sandBoxMode;
89 m_loginserver = startLoginServer;
90 m_physicsEngine = physicsEngine;
91 m_config = configFile;
92 }
93
94 /*protected World m_localWorld;
95 public World LocalWorld
96 {
97 get { return m_localWorld; }
98 }*/
99
100 /// <summary>
101 /// Performs initialisation of the world, such as loading configuration from disk.
102 /// </summary>
103 public virtual void StartUp()
104 {
105 }
106
107 protected virtual void SetupLocalGridServers()
108 {
109 }
110
111 protected virtual void SetupRemoteGridServers()
112 {
113
114 }
115
116 protected virtual void SetupWorld()
117 {
118 }
119
120 protected virtual void SetupHttpListener()
121 {
122 }
123
124 protected virtual void ConnectToRemoteGridServer()
125 {
126
127 }
128 }
129}
diff --git a/OpenSim/Region/ClientStack/UDPServer.cs b/OpenSim/Region/ClientStack/UDPServer.cs
new file mode 100644
index 0000000..f2a02d9
--- /dev/null
+++ b/OpenSim/Region/ClientStack/UDPServer.cs
@@ -0,0 +1,208 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Text;
30using System.IO;
31using System.Threading;
32using System.Net;
33using System.Net.Sockets;
34using System.Timers;
35using System.Reflection;
36using System.Collections;
37using System.Collections.Generic;
38using libsecondlife;
39using libsecondlife.Packets;
40using OpenSim.Terrain;
41using OpenSim.Framework.Interfaces;
42using OpenSim.Framework.Types;
43using OpenSim.Assets;
44using OpenSim.Caches;
45using OpenSim.Framework.Console;
46using OpenSim.Framework;
47using Nwc.XmlRpc;
48using OpenSim.Servers;
49using OpenSim.GenericConfig;
50
51namespace OpenSim
52{
53
54 public class UDPServer : ClientStackNetworkHandler
55 {
56 protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>();
57 public Socket Server;
58 protected IPEndPoint ServerIncoming;
59 protected byte[] RecvBuffer = new byte[4096];
60 protected byte[] ZeroBuffer = new byte[8192];
61 protected IPEndPoint ipeSender;
62 protected EndPoint epSender;
63 protected AsyncCallback ReceivedData;
64 protected PacketServer _packetServer;
65
66 protected int listenPort;
67 protected IWorld m_localWorld;
68 protected AssetCache m_assetCache;
69 protected InventoryCache m_inventoryCache;
70 protected LogBase m_log;
71 protected AuthenticateSessionsBase m_authenticateSessionsClass;
72
73 public PacketServer PacketServer
74 {
75 get
76 {
77 return _packetServer;
78 }
79 set
80 {
81 _packetServer = value;
82 }
83 }
84
85 public IWorld LocalWorld
86 {
87 set
88 {
89 this.m_localWorld = value;
90 this._packetServer.LocalWorld = this.m_localWorld;
91 }
92 }
93
94 public UDPServer()
95 {
96 }
97
98 public UDPServer(int port, AssetCache assetCache, InventoryCache inventoryCache, LogBase console, AuthenticateSessionsBase authenticateClass)
99 {
100 listenPort = port;
101 this.m_assetCache = assetCache;
102 this.m_inventoryCache = inventoryCache;
103 this.m_log = console;
104 this.m_authenticateSessionsClass = authenticateClass;
105 this.CreatePacketServer();
106
107 }
108
109 protected virtual void CreatePacketServer()
110 {
111 PacketServer packetServer = new PacketServer(this, (uint) listenPort);
112 }
113
114 protected virtual void OnReceivedData(IAsyncResult result)
115 {
116 ipeSender = new IPEndPoint(IPAddress.Any, 0);
117 epSender = (EndPoint)ipeSender;
118 Packet packet = null;
119 int numBytes = Server.EndReceiveFrom(result, ref epSender);
120 int packetEnd = numBytes - 1;
121
122 packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
123
124 // do we already have a circuit for this endpoint
125 if (this.clientCircuits.ContainsKey(epSender))
126 {
127 //if so then send packet to the packetserver
128 this._packetServer.ClientInPacket(this.clientCircuits[epSender], packet);
129 }
130 else if (packet.Type == PacketType.UseCircuitCode)
131 {
132 // new client
133 this.AddNewClient(packet);
134 }
135 else
136 { // invalid client
137 m_log.Warn("UDPServer.cs:OnReceivedData() - WARNING: Got a packet from an invalid client - " + epSender.ToString());
138 }
139
140 Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
141 }
142
143 protected virtual void AddNewClient(Packet packet)
144 {
145 UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet;
146 this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code);
147
148 this.PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_inventoryCache, m_authenticateSessionsClass);
149 }
150
151 public void ServerListener()
152 {
153 m_log.Status("UDPServer.cs:ServerListener() - Opening UDP socket on " + listenPort);
154
155 ServerIncoming = new IPEndPoint(IPAddress.Any, listenPort);
156 Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
157 Server.Bind(ServerIncoming);
158
159 m_log.Verbose("UDPServer.cs:ServerListener() - UDP socket bound, getting ready to listen");
160
161 ipeSender = new IPEndPoint(IPAddress.Any, 0);
162 epSender = (EndPoint)ipeSender;
163 ReceivedData = new AsyncCallback(this.OnReceivedData);
164 Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
165
166 m_log.Verbose("UDPServer.cs:ServerListener() - Listening...");
167
168 }
169
170 public virtual void RegisterPacketServer(PacketServer server)
171 {
172 this._packetServer = server;
173 }
174
175 public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)//EndPoint packetSender)
176 {
177 // find the endpoint for this circuit
178 EndPoint sendto = null;
179 foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits)
180 {
181 if (p.Value == circuitcode)
182 {
183 sendto = p.Key;
184 break;
185 }
186 }
187 if (sendto != null)
188 {
189 //we found the endpoint so send the packet to it
190 this.Server.SendTo(buffer, size, flags, sendto);
191 }
192 }
193
194 public virtual void RemoveClientCircuit(uint circuitcode)
195 {
196 foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits)
197 {
198 if (p.Value == circuitcode)
199 {
200 this.clientCircuits.Remove(p.Key);
201 break;
202 }
203 }
204 }
205
206
207 }
208} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/VersionInfo.cs b/OpenSim/Region/ClientStack/VersionInfo.cs
new file mode 100644
index 0000000..5d1354e
--- /dev/null
+++ b/OpenSim/Region/ClientStack/VersionInfo.cs
@@ -0,0 +1,38 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29
30namespace OpenSim
31{
32 /// <summary>
33 /// </summary>
34 public class VersionInfo
35 {
36 public static string Version = "0.3, SVN build ";
37 }
38}
diff --git a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs
new file mode 100644
index 0000000..01e0c59
--- /dev/null
+++ b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs
@@ -0,0 +1,113 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenSim.Framework.Interfaces;
5using OpenSim.Framework.Types;
6using OpenSim.Framework.Console;
7using libsecondlife;
8using OpenSim.Region;
9using Avatar=OpenSim.Region.Scenes.ScenePresence;
10using OpenSim.Region.Scenes;
11using OpenSim.Framework;
12using OpenSim.Caches;
13using OpenGrid.Framework.Communications;
14using OpenSim.Servers;
15
16namespace SimpleApp
17{
18 public class MyWorld : Scene
19 {
20 private RegionInfo m_regionInfo;
21 private List<OpenSim.Region.Scenes.ScenePresence> m_avatars;
22
23 public MyWorld(Dictionary<uint, IClientAPI> clientThreads, RegionInfo regionInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach, BaseHttpServer httpServer)
24 : base(clientThreads, regionInfo, authen, commsMan, assetCach, httpServer)
25 {
26 m_regionInfo = regionInfo;
27 m_avatars = new List<Avatar>();
28 }
29
30 public override void SendLayerData(IClientAPI remoteClient)
31 {
32 float[] map = new float[65536];
33
34 for (int i = 0; i < 65536; i++)
35 {
36 int x = i % 256;
37 int y = i / 256;
38
39 map[i] = (float)(x + y / 2);
40 }
41
42 remoteClient.SendLayerData(map);
43 }
44
45 #region IWorld Members
46
47 override public void AddNewClient(IClientAPI client, LLUUID agentID, bool child)
48
49 {
50 LLVector3 pos = new LLVector3(128, 128, 128);
51
52 client.OnRegionHandShakeReply += SendLayerData;
53 client.OnChatFromViewer +=
54 delegate(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
55 {
56 // Echo it (so you know what you typed)
57 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
58 client.SendChatMessage("Ready.", 1, pos, "System", LLUUID.Zero );
59 };
60
61 client.OnRequestWearables += SendWearables;
62
63 client.OnCompleteMovementToRegion += delegate()
64 {
65 client.MoveAgentIntoRegion(m_regionInfo, pos, LLVector3.Zero );
66 };
67
68 client.OnCompleteMovementToRegion += delegate()
69 {
70 client.SendAvatarData(m_regionInfo.RegionHandle, client.FirstName,
71 client.LastName, client.AgentId, 0,
72 pos, null);
73
74 client.SendChatMessage("Welcome to My World.", 1, pos, "System", LLUUID.Zero );
75 };
76
77 client.SendRegionHandshake(m_regionInfo);
78
79 OpenSim.Region.Scenes.ScenePresence avatar = new Avatar( client, this, m_regionInfo );
80
81 }
82
83 private void SendWearables( IClientAPI client )
84 {
85 client.SendWearables( AvatarWearable.DefaultWearables );
86 }
87
88
89 override public void RemoveClient(LLUUID agentID)
90 {
91
92 }
93
94 public RegionInfo RegionInfo
95 {
96 get { return m_regionInfo; }
97 }
98
99 public object SyncRoot
100 {
101 get { return this; }
102 }
103
104 private uint m_nextLocalId = 1;
105
106 public uint NextLocalId
107 {
108 get { return m_nextLocalId++; }
109 }
110
111 #endregion
112 }
113}
diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs
new file mode 100644
index 0000000..e1465d1
--- /dev/null
+++ b/OpenSim/Region/Examples/SimpleApp/Program.cs
@@ -0,0 +1,128 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenSim;
5using OpenSim.GridInterfaces.Local;
6using OpenSim.Framework.Interfaces;
7using OpenSim.Framework.Types;
8using OpenSim.Framework.Console;
9using OpenSim.Assets;
10using libsecondlife;
11using OpenSim.Servers;
12using OpenSim.Framework;
13using OpenSim.Caches;
14using OpenGrid.Framework.Communications;
15using OpenSim.LocalCommunications;
16
17namespace SimpleApp
18{
19 class Program : IAssetReceiver, conscmd_callback
20 {
21 private LogBase m_log;
22 AuthenticateSessionsBase m_circuitManager;
23
24 private void Run()
25 {
26 m_log = new LogBase(null, "SimpleApp", this, false);
27 MainLog.Instance = m_log;
28
29 // CheckSumServer checksumServer = new CheckSumServer(12036);
30 // checksumServer.ServerListener();
31
32 string simAddr = "127.0.0.1";
33 int simPort = 9000;
34 /*
35 LoginServer loginServer = new LoginServer( simAddr, simPort, 0, 0, false );
36 loginServer.Startup();
37 loginServer.SetSessionHandler( AddNewSessionHandler );*/
38
39 m_circuitManager = new AuthenticateSessionsBase();
40
41 InventoryCache inventoryCache = new InventoryCache();
42
43 LocalAssetServer assetServer = new LocalAssetServer();
44 assetServer.SetServerInfo("http://127.0.0.1:8003/", "");
45 assetServer.SetReceiver(this);
46
47 AssetCache assetCache = new AssetCache(assetServer);
48
49 UDPServer udpServer = new UDPServer(simPort, assetCache, inventoryCache, m_log, m_circuitManager );
50 PacketServer packetServer = new PacketServer( udpServer, (uint) simPort );
51 udpServer.ServerListener();
52
53 ClientView.TerrainManager = new TerrainManager(new SecondLife());
54
55 CommunicationsManager communicationsManager = new CommunicationsLocal(null);
56
57 RegionInfo regionInfo = new RegionInfo( );
58 BaseHttpServer httpServer = new BaseHttpServer(simPort);
59 udpServer.LocalWorld = new MyWorld( packetServer.ClientAPIs, regionInfo, m_circuitManager, communicationsManager, assetCache, httpServer );
60
61 // World world = new World(udpServer.PacketServer.ClientAPIs, regionInfo);
62 // PhysicsScene physicsScene = new NullPhysicsScene();
63 // world.PhysicsScene = physicsScene;
64 // udpServer.LocalWorld = world;
65
66 // httpServer.AddXmlRPCHandler( "login_to_simulator", loginServer.XmlRpcLoginMethod );
67 httpServer.Start();
68
69 m_log.WriteLine( LogPriority.NORMAL, "Press enter to quit.");
70 m_log.ReadLine();
71 }
72
73 private bool AddNewSessionHandler(ulong regionHandle, Login loginData)
74 {
75 m_log.WriteLine(LogPriority.NORMAL, "Region [{0}] recieved Login from [{1}] [{2}]", regionHandle, loginData.First, loginData.Last);
76
77 AgentCircuitData agent = new AgentCircuitData();
78 agent.AgentID = loginData.Agent;
79 agent.firstname = loginData.First;
80 agent.lastname = loginData.Last;
81 agent.SessionID = loginData.Session;
82 agent.SecureSessionID = loginData.SecureSession;
83 agent.circuitcode = loginData.CircuitCode;
84 agent.BaseFolder = loginData.BaseFolder;
85 agent.InventoryFolder = loginData.InventoryFolder;
86 agent.startpos = new LLVector3(128, 128, 70);
87
88 m_circuitManager.AddNewCircuit(agent.circuitcode, agent);
89
90 return true;
91 }
92
93 #region IAssetReceiver Members
94
95 public void AssetReceived( AssetBase asset, bool IsTexture)
96 {
97 throw new Exception("The method or operation is not implemented.");
98 }
99
100 public void AssetNotFound( AssetBase asset)
101 {
102 throw new Exception("The method or operation is not implemented.");
103 }
104
105 #endregion
106
107 #region conscmd_callback Members
108
109 public void RunCmd(string cmd, string[] cmdparams)
110 {
111 throw new Exception("The method or operation is not implemented.");
112 }
113
114 public void Show(string ShowWhat)
115 {
116 throw new Exception("The method or operation is not implemented.");
117 }
118
119 #endregion
120
121 static void Main(string[] args)
122 {
123 Program app = new Program();
124
125 app.Run();
126 }
127 }
128}
diff --git a/OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs b/OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0f9bf0f
--- /dev/null
+++ b/OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("SimpleApp")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("Playahead AB")]
12[assembly: AssemblyProduct("SimpleApp")]
13[assembly: AssemblyCopyright("Copyright © Playahead AB 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("a5cfa45f-5acf-4b2e-9c50-1dd1fd7608ee")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32[assembly: AssemblyVersion("1.0.0.0")]
33[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj b/OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj
new file mode 100644
index 0000000..5129be2
--- /dev/null
+++ b/OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj
@@ -0,0 +1,154 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{24B12448-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>SimpleApp</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Exe</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>SimpleApp</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="OpenSim.Servers" >
66 <HintPath>OpenSim.Servers.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Data.dll" >
74 <HintPath>..\..\..\..\bin\System.Data.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="XMLRPC.dll" >
82 <HintPath>..\..\..\..\bin\XMLRPC.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 </ItemGroup>
86 <ItemGroup>
87 <ProjectReference Include="..\..\..\Framework\General\OpenSim.Framework.csproj">
88 <Name>OpenSim.Framework</Name>
89 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
90 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
91 <Private>False</Private>
92 </ProjectReference>
93 <ProjectReference Include="..\..\..\Framework\Communications\OpenSim.Framework.Communications.csproj">
94 <Name>OpenSim.Framework.Communications</Name>
95 <Project>{CB52B7E7-0000-0000-0000-000000000000}</Project>
96 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
97 <Private>False</Private>
98 </ProjectReference>
99 <ProjectReference Include="..\..\..\Framework\Console\OpenSim.Framework.Console.csproj">
100 <Name>OpenSim.Framework.Console</Name>
101 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
102 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
103 <Private>False</Private>
104 </ProjectReference>
105 <ProjectReference Include="..\..\Caches\OpenSim.Region.Caches.csproj">
106 <Name>OpenSim.Region.Caches</Name>
107 <Project>{61FCCDB3-0000-0000-0000-000000000000}</Project>
108 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
109 <Private>False</Private>
110 </ProjectReference>
111 <ProjectReference Include="..\..\ClientStack\OpenSim.Region.ClientStack.csproj">
112 <Name>OpenSim.Region.ClientStack</Name>
113 <Project>{DC3698B2-0000-0000-0000-000000000000}</Project>
114 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
115 <Private>False</Private>
116 </ProjectReference>
117 <ProjectReference Include="..\..\GridInterfaces\Local\OpenSim.Region.GridInterfaces.Local.csproj">
118 <Name>OpenSim.Region.GridInterfaces.Local</Name>
119 <Project>{241A8CDD-0000-0000-0000-000000000000}</Project>
120 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
121 <Private>False</Private>
122 </ProjectReference>
123 <ProjectReference Include="..\..\LocalCommunications\OpenSim.Region.LocalCommunications.csproj">
124 <Name>OpenSim.Region.LocalCommunications</Name>
125 <Project>{EB3A1BA8-0000-0000-0000-000000000000}</Project>
126 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
127 <Private>False</Private>
128 </ProjectReference>
129 <ProjectReference Include="..\..\Simulation\OpenSim.Region.Simulation.csproj">
130 <Name>OpenSim.Region.Simulation</Name>
131 <Project>{C0DAB338-0000-0000-0000-000000000000}</Project>
132 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
133 <Private>False</Private>
134 </ProjectReference>
135 </ItemGroup>
136 <ItemGroup>
137 <Compile Include="MyWorld.cs">
138 <SubType>Code</SubType>
139 </Compile>
140 <Compile Include="Program.cs">
141 <SubType>Code</SubType>
142 </Compile>
143 <Compile Include="Properties\AssemblyInfo.cs">
144 <SubType>Code</SubType>
145 </Compile>
146 </ItemGroup>
147 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
148 <PropertyGroup>
149 <PreBuildEvent>
150 </PreBuildEvent>
151 <PostBuildEvent>
152 </PostBuildEvent>
153 </PropertyGroup>
154</Project>
diff --git a/OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj.user b/OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Examples/SimpleApp/SimpleApp.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/GridInterfaces/Local/AssemblyInfo.cs b/OpenSim/Region/GridInterfaces/Local/AssemblyInfo.cs
new file mode 100644
index 0000000..52ecd6b
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Local/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("LocalGridServers")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("LocalGridServers")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs b/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs
new file mode 100644
index 0000000..87eff49
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs
@@ -0,0 +1,312 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Threading;
32using System.IO;
33using OpenSim.Framework.Interfaces;
34using OpenSim.Framework.Types;
35using OpenSim.Framework.Utilities;
36using OpenSim.Framework.Console;
37using libsecondlife;
38using Db4objects.Db4o;
39using Db4objects.Db4o.Query;
40
41namespace OpenSim.GridInterfaces.Local
42{
43 public class LocalAssetPlugin : IAssetPlugin
44 {
45 public LocalAssetPlugin()
46 {
47
48 }
49
50 public IAssetServer GetAssetServer()
51 {
52 return (new LocalAssetServer());
53 }
54 }
55
56 public class LocalAssetServer : IAssetServer
57 {
58 private IAssetReceiver _receiver;
59 private BlockingQueue<ARequest> _assetRequests;
60 private IObjectContainer db;
61 private Thread _localAssetServerThread;
62
63 public LocalAssetServer()
64 {
65 bool yapfile;
66 this._assetRequests = new BlockingQueue<ARequest>();
67 yapfile = System.IO.File.Exists("assets.yap");
68
69 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Local Asset Server class created");
70 try
71 {
72 db = Db4oFactory.OpenFile("assets.yap");
73 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Db4 Asset database creation");
74 }
75 catch (Exception e)
76 {
77 db.Close();
78 OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.MEDIUM, "Db4 Asset server :Constructor - Exception occured");
79 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
80 }
81 if (!yapfile)
82 {
83 this.SetUpAssetDatabase();
84 }
85 this._localAssetServerThread = new Thread(new ThreadStart(RunRequests));
86 this._localAssetServerThread.IsBackground = true;
87 this._localAssetServerThread.Start();
88
89 }
90
91 public void SetReceiver(IAssetReceiver receiver)
92 {
93 this._receiver = receiver;
94 }
95
96 public void RequestAsset(LLUUID assetID, bool isTexture)
97 {
98 ARequest req = new ARequest();
99 req.AssetID = assetID;
100 req.IsTexture = isTexture;
101 this._assetRequests.Enqueue(req);
102 }
103
104 public void UpdateAsset(AssetBase asset)
105 {
106
107 }
108
109 public void UploadNewAsset(AssetBase asset)
110 {
111 AssetStorage store = new AssetStorage();
112 store.Data = asset.Data;
113 store.Name = asset.Name;
114 store.UUID = asset.FullID;
115 db.Set(store);
116 db.Commit();
117 }
118
119 public void SetServerInfo(string ServerUrl, string ServerKey)
120 {
121
122 }
123 public void Close()
124 {
125 if (db != null)
126 {
127 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Closing local asset server database");
128 db.Close();
129 }
130 }
131
132 private void RunRequests()
133 {
134 while (true)
135 {
136 byte[] idata = null;
137 bool found = false;
138 AssetStorage foundAsset = null;
139 ARequest req = this._assetRequests.Dequeue();
140 IObjectSet result = db.Query(new AssetUUIDQuery(req.AssetID));
141 if (result.Count > 0)
142 {
143 foundAsset = (AssetStorage)result.Next();
144 found = true;
145 }
146
147 AssetBase asset = new AssetBase();
148 if (found)
149 {
150 asset.FullID = foundAsset.UUID;
151 asset.Type = foundAsset.Type;
152 asset.InvType = foundAsset.Type;
153 asset.Name = foundAsset.Name;
154 idata = foundAsset.Data;
155 }
156 else
157 {
158 asset.FullID = LLUUID.Zero;
159 }
160 asset.Data = idata;
161 _receiver.AssetReceived(asset, req.IsTexture);
162 }
163
164 }
165
166 private void SetUpAssetDatabase()
167 {
168 try
169 {
170
171 OpenSim.Framework.Console.MainLog.Instance.Verbose( "Setting up asset database");
172
173 AssetBase Image = new AssetBase();
174 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
175 Image.Name = "Bricks";
176 this.LoadAsset(Image, true, "bricks.jp2");
177 AssetStorage store = new AssetStorage();
178 store.Data = Image.Data;
179 store.Name = Image.Name;
180 store.UUID = Image.FullID;
181 db.Set(store);
182 db.Commit();
183
184 Image = new AssetBase();
185 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
186 Image.Name = "Plywood";
187 this.LoadAsset(Image, true, "plywood.jp2");
188 store = new AssetStorage();
189 store.Data = Image.Data;
190 store.Name = Image.Name;
191 store.UUID = Image.FullID;
192 db.Set(store);
193 db.Commit();
194
195 Image = new AssetBase();
196 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
197 Image.Name = "Rocks";
198 this.LoadAsset(Image, true, "rocks.jp2");
199 store = new AssetStorage();
200 store.Data = Image.Data;
201 store.Name = Image.Name;
202 store.UUID = Image.FullID;
203 db.Set(store);
204 db.Commit();
205
206 Image = new AssetBase();
207 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
208 Image.Name = "Granite";
209 this.LoadAsset(Image, true, "granite.jp2");
210 store = new AssetStorage();
211 store.Data = Image.Data;
212 store.Name = Image.Name;
213 store.UUID = Image.FullID;
214 db.Set(store);
215 db.Commit();
216
217 Image = new AssetBase();
218 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
219 Image.Name = "Hardwood";
220 this.LoadAsset(Image, true, "hardwood.jp2");
221 store = new AssetStorage();
222 store.Data = Image.Data;
223 store.Name = Image.Name;
224 store.UUID = Image.FullID;
225 db.Set(store);
226 db.Commit();
227
228 Image = new AssetBase();
229 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
230 Image.Name = "Prim Base Texture";
231 this.LoadAsset(Image, true, "plywood.jp2");
232 store = new AssetStorage();
233 store.Data = Image.Data;
234 store.Name = Image.Name;
235 store.UUID = Image.FullID;
236 db.Set(store);
237 db.Commit();
238
239 Image = new AssetBase();
240 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000006");
241 Image.Name = "Map Base Texture";
242 this.LoadAsset(Image, true, "map_base.jp2");
243 store = new AssetStorage();
244 store.Data = Image.Data;
245 store.Name = Image.Name;
246 store.UUID = Image.FullID;
247 db.Set(store);
248 db.Commit();
249
250 Image = new AssetBase();
251 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000007");
252 Image.Name = "Map Texture";
253 this.LoadAsset(Image, true, "map1.jp2");
254 store = new AssetStorage();
255 store.Data = Image.Data;
256 store.Name = Image.Name;
257 store.UUID = Image.FullID;
258 db.Set(store);
259 db.Commit();
260
261 Image = new AssetBase();
262 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
263 Image.Name = "Shape";
264 this.LoadAsset(Image, false, "base_shape.dat");
265 store = new AssetStorage();
266 store.Data = Image.Data;
267 store.Name = Image.Name;
268 store.UUID = Image.FullID;
269 db.Set(store);
270 db.Commit();
271 }
272 catch (Exception e)
273 {
274 Console.WriteLine(e.Message);
275 }
276
277 }
278
279 private void LoadAsset(AssetBase info, bool image, string filename)
280 {
281 //should request Asset from storage manager
282 //but for now read from file
283
284 string dataPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder;
285 string fileName = Path.Combine(dataPath, filename);
286 FileInfo fInfo = new FileInfo(fileName);
287 long numBytes = fInfo.Length;
288 FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
289 byte[] idata = new byte[numBytes];
290 BinaryReader br = new BinaryReader(fStream);
291 idata = br.ReadBytes((int)numBytes);
292 br.Close();
293 fStream.Close();
294 info.Data = idata;
295 //info.loaded=true;
296 }
297 }
298 public class AssetUUIDQuery : Predicate
299 {
300 private LLUUID _findID;
301
302 public AssetUUIDQuery(LLUUID find)
303 {
304 _findID = find;
305 }
306 public bool Match(AssetStorage asset)
307 {
308 return (asset.UUID == _findID);
309 }
310 }
311
312}
diff --git a/OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj b/OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj
new file mode 100644
index 0000000..484a205
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj
@@ -0,0 +1,107 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{241A8CDD-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.GridInterfaces.Local</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.GridInterfaces.Local</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Xml" >
74 <HintPath>System.Xml.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 </ItemGroup>
78 <ItemGroup>
79 <ProjectReference Include="..\..\..\Framework\General\OpenSim.Framework.csproj">
80 <Name>OpenSim.Framework</Name>
81 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
82 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
83 <Private>False</Private>
84 </ProjectReference>
85 <ProjectReference Include="..\..\..\Framework\Console\OpenSim.Framework.Console.csproj">
86 <Name>OpenSim.Framework.Console</Name>
87 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
88 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
89 <Private>False</Private>
90 </ProjectReference>
91 </ItemGroup>
92 <ItemGroup>
93 <Compile Include="AssemblyInfo.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="LocalAssetServer.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 </ItemGroup>
100 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
101 <PropertyGroup>
102 <PreBuildEvent>
103 </PreBuildEvent>
104 <PostBuildEvent>
105 </PostBuildEvent>
106 </PropertyGroup>
107</Project>
diff --git a/OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj.user b/OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Local/OpenSim.Region.GridInterfaces.Local.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/GridInterfaces/Remote/AssemblyInfo.cs b/OpenSim/Region/GridInterfaces/Remote/AssemblyInfo.cs
new file mode 100644
index 0000000..51596d0
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Remote/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("RemoteGridServers")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("RemoteGridServers")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj b/OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj
new file mode 100644
index 0000000..793fde2
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj
@@ -0,0 +1,107 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{98C7B681-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.GridInterfaces.Remote</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.GridInterfaces.Remote</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Xml" >
70 <HintPath>System.Xml.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="XMLRPC.dll" >
74 <HintPath>..\..\..\..\bin\XMLRPC.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 </ItemGroup>
78 <ItemGroup>
79 <ProjectReference Include="..\..\..\Framework\General\OpenSim.Framework.csproj">
80 <Name>OpenSim.Framework</Name>
81 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
82 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
83 <Private>False</Private>
84 </ProjectReference>
85 <ProjectReference Include="..\..\..\Framework\Console\OpenSim.Framework.Console.csproj">
86 <Name>OpenSim.Framework.Console</Name>
87 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
88 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
89 <Private>False</Private>
90 </ProjectReference>
91 </ItemGroup>
92 <ItemGroup>
93 <Compile Include="AssemblyInfo.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="RemoteAssetServer.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 </ItemGroup>
100 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
101 <PropertyGroup>
102 <PreBuildEvent>
103 </PreBuildEvent>
104 <PostBuildEvent>
105 </PostBuildEvent>
106 </PropertyGroup>
107</Project>
diff --git a/OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj.user b/OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Remote/OpenSim.Region.GridInterfaces.Remote.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/GridInterfaces/Remote/RemoteAssetServer.cs b/OpenSim/Region/GridInterfaces/Remote/RemoteAssetServer.cs
new file mode 100644
index 0000000..ca01c68
--- /dev/null
+++ b/OpenSim/Region/GridInterfaces/Remote/RemoteAssetServer.cs
@@ -0,0 +1,135 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Threading;
32using System.Net;
33using System.Net.Sockets;
34using System.IO;
35using libsecondlife;
36using OpenSim.Framework.Interfaces;
37using OpenSim.Framework.Types;
38using OpenSim.Framework.Utilities;
39
40namespace OpenSim.GridInterfaces.Remote
41{
42 public class RemoteAssetServer : IAssetServer
43 {
44 private IAssetReceiver _receiver;
45 private BlockingQueue<ARequest> _assetRequests;
46 private Thread _remoteAssetServerThread;
47 private string AssetServerUrl;
48 private string AssetSendKey;
49
50 public RemoteAssetServer()
51 {
52 this._assetRequests = new BlockingQueue<ARequest>();
53 this._remoteAssetServerThread = new Thread(new ThreadStart(RunRequests));
54 this._remoteAssetServerThread.IsBackground = true;
55 this._remoteAssetServerThread.Start();
56 OpenSim.Framework.Console.MainLog.Instance.Verbose("Remote Asset Server class created");
57 }
58
59 public void SetReceiver(IAssetReceiver receiver)
60 {
61 this._receiver = receiver;
62 }
63
64 public void RequestAsset(LLUUID assetID, bool isTexture)
65 {
66 ARequest req = new ARequest();
67 req.AssetID = assetID;
68 req.IsTexture = isTexture;
69 this._assetRequests.Enqueue(req);
70 }
71
72 public void UpdateAsset(AssetBase asset)
73 {
74
75 }
76
77 public void UploadNewAsset(AssetBase asset)
78 {
79 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
80 string ret = Windows1252Encoding.GetString(asset.Data);
81 byte[] buffer = Windows1252Encoding.GetBytes(ret);
82 WebClient client = new WebClient();
83 client.UploadData(this.AssetServerUrl + "assets/" + asset.FullID, buffer);
84
85 }
86
87 public void SetServerInfo(string ServerUrl, string ServerKey)
88 {
89 this.AssetServerUrl = ServerUrl;
90 this.AssetSendKey = ServerKey;
91 }
92
93 private void RunRequests()
94 {
95 while (true)
96 {
97 //we need to add support for the asset server not knowing about a requested asset
98 // 404... THE MAGIC FILE NOT FOUND ERROR, very useful for telling you things such as a file (or asset ;) ) not being found!!!!!!!!!!! it's 2:22AM
99 ARequest req = this._assetRequests.Dequeue();
100 LLUUID assetID = req.AssetID;
101 // OpenSim.Framework.Console.MainLog.Instance.Verbose(" RemoteAssetServer- Got a AssetServer request, processing it - " + this.AssetServerUrl + "assets/" + assetID);
102 WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "assets/" + assetID);
103 WebResponse AssetResponse = AssetLoad.GetResponse();
104 byte[] idata = new byte[(int)AssetResponse.ContentLength];
105 BinaryReader br = new BinaryReader(AssetResponse.GetResponseStream());
106 idata = br.ReadBytes((int)AssetResponse.ContentLength);
107 br.Close();
108
109 AssetBase asset = new AssetBase();
110 asset.FullID = assetID;
111 asset.Data = idata;
112 _receiver.AssetReceived(asset, req.IsTexture);
113 }
114 }
115
116 public void Close()
117 {
118
119 }
120 }
121
122 public class RemoteAssetPlugin : IAssetPlugin
123 {
124 public RemoteAssetPlugin()
125 {
126
127 }
128
129 public IAssetServer GetAssetServer()
130 {
131 return (new RemoteAssetServer());
132 }
133 }
134
135}
diff --git a/OpenSim/Region/LocalCommunications/CommunicationsLocal.cs b/OpenSim/Region/LocalCommunications/CommunicationsLocal.cs
new file mode 100644
index 0000000..743b9b4
--- /dev/null
+++ b/OpenSim/Region/LocalCommunications/CommunicationsLocal.cs
@@ -0,0 +1,61 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Text;
32using libsecondlife;
33using OpenSim.Framework;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36using OpenGrid.Framework.Communications;
37
38
39namespace OpenSim.LocalCommunications
40{
41 public class CommunicationsLocal : CommunicationsManager
42 {
43 public LocalBackEndServices SandBoxServices = new LocalBackEndServices();
44 public LocalUserServices UserServices;
45
46 public CommunicationsLocal(NetworkServersInfo serversInfo)
47 : base(serversInfo)
48 {
49 UserServices = new LocalUserServices(this , serversInfo.DefaultHomeLocX, serversInfo.DefaultHomeLocY);
50 UserServices.AddPlugin("OpenGrid.Framework.Data.DB4o.dll");
51 UserServer = UserServices;
52 GridServer = SandBoxServices;
53 InterRegion = SandBoxServices;
54 }
55
56 internal void InformRegionOfLogin(ulong regionHandle, Login login)
57 {
58 this.SandBoxServices.AddNewSession(regionHandle, login);
59 }
60 }
61}
diff --git a/OpenSim/Region/LocalCommunications/LocalBackEndServices.cs b/OpenSim/Region/LocalCommunications/LocalBackEndServices.cs
new file mode 100644
index 0000000..ce48c6e
--- /dev/null
+++ b/OpenSim/Region/LocalCommunications/LocalBackEndServices.cs
@@ -0,0 +1,209 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenGrid.Framework.Communications;
32using libsecondlife;
33using OpenSim.Framework.Types;
34using OpenSim.Framework;
35
36namespace OpenSim.LocalCommunications
37{
38
39 public class LocalBackEndServices : IGridServices, IInterRegionCommunications
40 {
41 protected Dictionary<ulong, RegionInfo> regions = new Dictionary<ulong, RegionInfo>();
42 protected Dictionary<ulong, RegionCommsListener> regionHosts = new Dictionary<ulong, RegionCommsListener>();
43
44 public LocalBackEndServices()
45 {
46
47 }
48
49 /// <summary>
50 /// Register a region method with the BackEnd Services.
51 /// </summary>
52 /// <param name="regionInfo"></param>
53 /// <returns></returns>
54 public RegionCommsListener RegisterRegion(RegionInfo regionInfo, GridInfo gridInfo)
55 {
56 //Console.WriteLine("CommsManager - Region " + regionInfo.RegionHandle + " , " + regionInfo.RegionLocX + " , "+ regionInfo.RegionLocY +" is registering");
57 if (!this.regions.ContainsKey((uint)regionInfo.RegionHandle))
58 {
59 //Console.WriteLine("CommsManager - Adding Region " + regionInfo.RegionHandle );
60 this.regions.Add(regionInfo.RegionHandle, regionInfo);
61 RegionCommsListener regionHost = new RegionCommsListener();
62 this.regionHosts.Add(regionInfo.RegionHandle, regionHost);
63
64 return regionHost;
65 }
66
67 //already in our list of regions so for now lets return null
68 return null;
69 }
70
71 /// <summary>
72 /// </summary>
73 /// <param name="regionInfo"></param>
74 /// <returns></returns>
75 public List<RegionInfo> RequestNeighbours(RegionInfo regionInfo)
76 {
77 // Console.WriteLine("Finding Neighbours to " + regionInfo.RegionHandle);
78 List<RegionInfo> neighbours = new List<RegionInfo>();
79
80 foreach (RegionInfo reg in this.regions.Values)
81 {
82 // Console.WriteLine("CommsManager- RequestNeighbours() checking region " + reg.RegionLocX + " , "+ reg.RegionLocY);
83 if (reg.RegionHandle != regionInfo.RegionHandle)
84 {
85 //Console.WriteLine("CommsManager- RequestNeighbours() - found a different region in list, checking location");
86 if ((reg.RegionLocX > (regionInfo.RegionLocX - 2)) && (reg.RegionLocX < (regionInfo.RegionLocX + 2)))
87 {
88 if ((reg.RegionLocY > (regionInfo.RegionLocY - 2)) && (reg.RegionLocY < (regionInfo.RegionLocY + 2)))
89 {
90 neighbours.Add(reg);
91 }
92 }
93 }
94 }
95 return neighbours;
96 }
97
98 /// <summary>
99 ///
100 /// </summary>
101 /// <param name="regionHandle"></param>
102 /// <returns></returns>
103 public RegionInfo RequestNeighbourInfo(ulong regionHandle)
104 {
105 if (this.regions.ContainsKey(regionHandle))
106 {
107 return this.regions[regionHandle];
108 }
109 return null;
110 }
111
112 /// <summary>
113 ///
114 /// </summary>
115 /// <param name="minX"></param>
116 /// <param name="minY"></param>
117 /// <param name="maxX"></param>
118 /// <param name="maxY"></param>
119 /// <returns></returns>
120 public List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY)
121 {
122 List<MapBlockData> mapBlocks = new List<MapBlockData>();
123 foreach(RegionInfo regInfo in this.regions.Values)
124 {
125 if (((regInfo.RegionLocX >= minX) && (regInfo.RegionLocX <= maxX)) && ((regInfo.RegionLocY >= minY) && (regInfo.RegionLocY <= maxY)))
126 {
127 MapBlockData map = new MapBlockData();
128 map.Name = regInfo.RegionName;
129 map.X = (ushort)regInfo.RegionLocX;
130 map.Y = (ushort)regInfo.RegionLocY;
131 map.WaterHeight =(byte) regInfo.estateSettings.waterHeight;
132 map.MapImageId = regInfo.estateSettings.terrainImageID; //new LLUUID("00000000-0000-0000-9999-000000000007");
133 map.Agents = 1;
134 map.RegionFlags = 72458694;
135 map.Access = 13;
136 mapBlocks.Add(map);
137 }
138 }
139 return mapBlocks;
140 }
141
142 /// <summary>
143 /// </summary>
144 /// <param name="regionHandle"></param>
145 /// <param name="agentData"></param>
146 /// <returns></returns>
147 public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) //should change from agentCircuitData
148 {
149 //Console.WriteLine("CommsManager- Trying to Inform a region to expect child agent");
150 if (this.regionHosts.ContainsKey(regionHandle))
151 {
152 // Console.WriteLine("CommsManager- Informing a region to expect child agent");
153 this.regionHosts[regionHandle].TriggerExpectUser(regionHandle, agentData);
154 return true;
155 }
156 return false;
157 }
158
159 /// <summary>
160 ///
161 /// </summary>
162 /// <param name="regionHandle"></param>
163 /// <param name="agentID"></param>
164 /// <param name="position"></param>
165 /// <returns></returns>
166 public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position)
167 {
168 if (this.regionHosts.ContainsKey(regionHandle))
169 {
170 // Console.WriteLine("CommsManager- Informing a region to expect avatar crossing");
171 this.regionHosts[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position);
172 return true;
173 }
174 return false;
175 }
176
177 /// <summary>
178 /// Is a Sandbox mode method, used by the local Login server to inform a region of a connection user/session
179 /// </summary>
180 /// <param name="regionHandle"></param>
181 /// <param name="loginData"></param>
182 /// <returns></returns>
183 public bool AddNewSession(ulong regionHandle, Login loginData)
184 {
185 //Console.WriteLine(" comms manager been told to expect new user");
186 AgentCircuitData agent = new AgentCircuitData();
187 agent.AgentID = loginData.Agent;
188 agent.firstname = loginData.First;
189 agent.lastname = loginData.Last;
190 agent.SessionID = loginData.Session;
191 agent.SecureSessionID = loginData.SecureSession;
192 agent.circuitcode = loginData.CircuitCode;
193 agent.BaseFolder = loginData.BaseFolder;
194 agent.InventoryFolder = loginData.InventoryFolder;
195 agent.startpos = new LLVector3(128, 128, 70);
196 agent.CapsPath = loginData.CapsPath;
197
198 if (this.regionHosts.ContainsKey(regionHandle))
199 {
200 this.regionHosts[regionHandle].TriggerExpectUser(regionHandle, agent);
201 return true;
202 }
203
204 // region not found
205 return false;
206 }
207 }
208}
209
diff --git a/OpenSim/Region/LocalCommunications/LocalUserServices.cs b/OpenSim/Region/LocalCommunications/LocalUserServices.cs
new file mode 100644
index 0000000..a7f7aa4
--- /dev/null
+++ b/OpenSim/Region/LocalCommunications/LocalUserServices.cs
@@ -0,0 +1,118 @@
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Text;
5
6using OpenGrid.Framework.Communications;
7//using OpenSim.Framework.User;
8using OpenGrid.Framework.UserManagement;
9using OpenGrid.Framework.Data;
10using OpenSim.Framework.Types;
11using OpenSim.Framework.Utilities;
12
13using libsecondlife;
14
15namespace OpenSim.LocalCommunications
16{
17 public class LocalUserServices : UserManagerBase, IUserServices
18 {
19 private CommunicationsLocal m_Parent;
20
21 private uint defaultHomeX ;
22 private uint defaultHomeY;
23 public LocalUserServices(CommunicationsLocal parent, uint defHomeX, uint defHomeY)
24 {
25 m_Parent = parent;
26 defaultHomeX = defHomeX;
27 defaultHomeY = defHomeY;
28 }
29
30 public UserProfileData GetUserProfile(string firstName, string lastName)
31 {
32 return GetUserProfile(firstName + " " + lastName);
33 }
34
35 public UserProfileData GetUserProfile(string name)
36 {
37 return this.getUserProfile(name);
38 }
39 public UserProfileData GetUserProfile(LLUUID avatarID)
40 {
41 return this.getUserProfile(avatarID);
42 }
43
44 /// <summary>
45 ///
46 /// </summary>
47 /// <returns></returns>
48 public override string GetMessage()
49 {
50 return "Welcome to OpenSim";
51 }
52
53 public override UserProfileData GetTheUser(string firstname, string lastname)
54 {
55 UserProfileData profile = getUserProfile(firstname, lastname);
56 if (profile != null)
57 {
58
59 return profile;
60 }
61
62 //no current user account so make one
63 Console.WriteLine("No User account found so creating a new one ");
64 this.AddUserProfile(firstname, lastname, "test", defaultHomeX, defaultHomeY);
65
66 profile = getUserProfile(firstname, lastname);
67
68 return profile;
69 }
70
71 public override bool AuthenticateUser(ref UserProfileData profile, string password)
72 {
73 //for now we will accept any password in sandbox mode
74 Console.WriteLine("authorising user");
75 return true;
76 }
77
78 public override void CustomiseResponse(ref LoginResponse response, ref UserProfileData theUser)
79 {
80 ulong currentRegion = theUser.currentAgent.currentHandle;
81 RegionInfo reg = m_Parent.GridServer.RequestNeighbourInfo(currentRegion);
82
83
84 if (reg != null)
85 {
86 response.Home = "{'region_handle':[r" + (reg.RegionLocX * 256).ToString() + ",r" + (reg.RegionLocY * 256).ToString() + "], " +
87 "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " +
88 "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}";
89 string capsPath = Util.GetRandomCapsPath();
90 response.SimAddress = reg.CommsIPListenAddr;
91 response.SimPort = (Int32)reg.CommsIPListenPort;
92 response.RegionX = reg.RegionLocX ;
93 response.RegionY = reg.RegionLocY ;
94 response.SeedCapability = "http://" + reg.CommsIPListenAddr + ":" + "9000" + "/CAPS/" + capsPath + "0000/";
95 theUser.currentAgent.currentRegion = reg.SimUUID;
96 theUser.currentAgent.currentHandle = reg.RegionHandle;
97
98 Login _login = new Login();
99 //copy data to login object
100 _login.First = response.Firstname;
101 _login.Last = response.Lastname;
102 _login.Agent = response.AgentID;
103 _login.Session = response.SessionID;
104 _login.SecureSession = response.SecureSessionID;
105 _login.CircuitCode = (uint)response.CircuitCode;
106 _login.CapsPath = capsPath;
107
108 m_Parent.InformRegionOfLogin(currentRegion, _login);
109 }
110 else
111 {
112 Console.WriteLine("not found region " + currentRegion);
113 }
114
115 }
116
117 }
118}
diff --git a/OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj b/OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj
new file mode 100644
index 0000000..6b2b78c
--- /dev/null
+++ b/OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj
@@ -0,0 +1,121 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{EB3A1BA8-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.LocalCommunications</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.LocalCommunications</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Xml" >
70 <HintPath>System.Xml.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 </ItemGroup>
74 <ItemGroup>
75 <ProjectReference Include="..\..\Framework\General\OpenSim.Framework.csproj">
76 <Name>OpenSim.Framework</Name>
77 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
78 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
79 <Private>False</Private>
80 </ProjectReference>
81 <ProjectReference Include="..\..\Framework\Communications\OpenSim.Framework.Communications.csproj">
82 <Name>OpenSim.Framework.Communications</Name>
83 <Project>{CB52B7E7-0000-0000-0000-000000000000}</Project>
84 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
85 <Private>False</Private>
86 </ProjectReference>
87 <ProjectReference Include="..\..\Framework\Data\OpenSim.Framework.Data.csproj">
88 <Name>OpenSim.Framework.Data</Name>
89 <Project>{36B72A9B-0000-0000-0000-000000000000}</Project>
90 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
91 <Private>False</Private>
92 </ProjectReference>
93 <ProjectReference Include="..\..\Framework\UserManager\OpenSim.Framework.UserManagement.csproj">
94 <Name>OpenSim.Framework.UserManagement</Name>
95 <Project>{586E2916-0000-0000-0000-000000000000}</Project>
96 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
97 <Private>False</Private>
98 </ProjectReference>
99 </ItemGroup>
100 <ItemGroup>
101 <Compile Include="CommunicationsLocal.cs">
102 <SubType>Code</SubType>
103 </Compile>
104 <Compile Include="LocalBackEndServices.cs">
105 <SubType>Code</SubType>
106 </Compile>
107 <Compile Include="LocalUserServices.cs">
108 <SubType>Code</SubType>
109 </Compile>
110 <Compile Include="Properties\AssemblyInfo.cs">
111 <SubType>Code</SubType>
112 </Compile>
113 </ItemGroup>
114 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
115 <PropertyGroup>
116 <PreBuildEvent>
117 </PreBuildEvent>
118 <PostBuildEvent>
119 </PostBuildEvent>
120 </PropertyGroup>
121</Project>
diff --git a/OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj.user b/OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/LocalCommunications/OpenSim.Region.LocalCommunications.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/LocalCommunications/Properties/AssemblyInfo.cs b/OpenSim/Region/LocalCommunications/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..8e6e711
--- /dev/null
+++ b/OpenSim/Region/LocalCommunications/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenSim.LocalCommunications")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenSim.LocalCommunications")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("fb173926-bd0a-4cd0-bb45-185b2f72ddfb")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs
new file mode 100644
index 0000000..177c49d
--- /dev/null
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("PhysXplugin")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("PhysXplugin")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
new file mode 100644
index 0000000..dcb8f3b
--- /dev/null
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
@@ -0,0 +1,294 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using OpenSim.Physics.Manager;
31
32namespace OpenSim.Region.Physics.BasicPhysicsPlugin
33{
34 /// <summary>
35 /// Will be the PhysX plugin but for now will be a very basic physics engine
36 /// </summary>
37 public class BasicPhysicsPlugin : IPhysicsPlugin
38 {
39 private BasicScene _mScene;
40
41 public BasicPhysicsPlugin()
42 {
43
44 }
45
46 public bool Init()
47 {
48 return true;
49 }
50
51 public PhysicsScene GetScene()
52 {
53 return new BasicScene();
54 }
55
56 public string GetName()
57 {
58 return("basicphysics");
59 }
60
61 public void Dispose()
62 {
63
64 }
65 }
66
67 public class BasicScene :PhysicsScene
68 {
69 private List<BasicActor> _actors = new List<BasicActor>();
70 private float[] _heightMap;
71
72 public BasicScene()
73 {
74
75 }
76
77 public override PhysicsActor AddAvatar(PhysicsVector position)
78 {
79 BasicActor act = new BasicActor();
80 act.Position = position;
81 _actors.Add(act);
82 return act;
83 }
84
85 public override void RemoveAvatar(PhysicsActor actor)
86 {
87 BasicActor act = (BasicActor)actor;
88 if(_actors.Contains(act))
89 {
90 _actors.Remove(act);
91 }
92
93 }
94
95 public override PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size)
96 {
97 return null;
98 }
99
100 public override void Simulate(float timeStep)
101 {
102 foreach (BasicActor actor in _actors)
103 {
104 actor.Position.X = actor.Position.X + (actor.Velocity.X * timeStep);
105 actor.Position.Y = actor.Position.Y + (actor.Velocity.Y * timeStep);
106 actor.Position.Z = actor.Position.Z + (actor.Velocity.Z * timeStep);
107 /*if(actor.Flying)
108 {
109 actor.Position.Z = actor.Position.Z + (actor.Velocity.Z * timeStep);
110 }
111 else
112 {
113 actor.Position.Z = actor.Position.Z + ((-9.8f + actor.Velocity.Z) * timeStep);
114 }
115 if(actor.Position.Z < (_heightMap[(int)actor.Position.Y * 256 + (int)actor.Position.X]+1))
116 {*/
117 if ((actor.Position.Y > 0 && actor.Position.Y < 256) && (actor.Position.X > 0 && actor.Position.X < 256))
118 {
119 actor.Position.Z = _heightMap[(int)actor.Position.Y * 256 + (int)actor.Position.X] + 1;
120 }
121 else
122 {
123 if (actor.Position.Y < 0)
124 {
125 actor.Position.Y = 0;
126 }
127 else if (actor.Position.Y > 256)
128 {
129 actor.Position.Y = 256;
130 }
131
132 if (actor.Position.X < 0)
133 {
134 actor.Position.X = 0;
135 }
136 if (actor.Position.X > 256)
137 {
138 actor.Position.X = 256;
139 }
140 }
141 //}
142
143
144
145 // This code needs sorting out - border crossings etc
146/* if(actor.Position.X<0)
147 {
148 ControllingClient.CrossSimBorder(new LLVector3(this.Position.X,this.Position.Y,this.Position.Z));
149 actor.Position.X = 0;
150 actor.Velocity.X = 0;
151 }
152 if(actor.Position.Y < 0)
153 {
154 ControllingClient.CrossSimBorder(new LLVector3(this.Position.X,this.Position.Y,this.Position.Z));
155 actor.Position.Y = 0;
156 actor.Velocity.Y = 0;
157 }
158 if(actor.Position.X > 255)
159 {
160 ControllingClient.CrossSimBorder(new LLVector3(this.Position.X,this.Position.Y,this.Position.Z));
161 actor.Position.X = 255;
162 actor.Velocity.X = 0;
163 }
164 if(actor.Position.Y > 255)
165 {
166 ControllingClient.CrossSimBorder(new LLVector3(this.Position.X,this.Position.Y,this.Position.Z));
167 actor.Position.Y = 255;
168 actor.Velocity.X = 0;
169 }*/
170 }
171 }
172
173 public override void GetResults()
174 {
175
176 }
177
178 public override bool IsThreaded
179 {
180 get
181 {
182 return(false); // for now we won't be multithreaded
183 }
184 }
185
186 public override void SetTerrain(float[] heightMap)
187 {
188 this._heightMap = heightMap;
189 }
190
191 public override void DeleteTerrain()
192 {
193
194 }
195 }
196
197 public class BasicActor : PhysicsActor
198 {
199 private PhysicsVector _position;
200 private PhysicsVector _velocity;
201 private PhysicsVector _acceleration;
202 private bool flying;
203 public BasicActor()
204 {
205 _velocity = new PhysicsVector();
206 _position = new PhysicsVector();
207 _acceleration = new PhysicsVector();
208 }
209
210 public override bool Flying
211 {
212 get
213 {
214 return false;
215 }
216 set
217 {
218 flying= value;
219 }
220 }
221
222 public override PhysicsVector Position
223 {
224 get
225 {
226 return _position;
227 }
228 set
229 {
230 _position = value;
231 }
232 }
233
234 public override PhysicsVector Velocity
235 {
236 get
237 {
238 return _velocity;
239 }
240 set
241 {
242 _velocity = value;
243 }
244 }
245
246 public override Axiom.MathLib.Quaternion Orientation
247 {
248 get
249 {
250 return Axiom.MathLib.Quaternion.Identity;
251 }
252 set
253 {
254
255 }
256 }
257
258 public override PhysicsVector Acceleration
259 {
260 get
261 {
262 return _acceleration;
263 }
264
265 }
266
267 public override bool Kinematic
268 {
269 get
270 {
271 return true;
272 }
273 set
274 {
275
276 }
277 }
278 public void SetAcceleration (PhysicsVector accel)
279 {
280 this._acceleration = accel;
281 }
282
283 public override void AddForce(PhysicsVector force)
284 {
285
286 }
287
288 public override void SetMomentum(PhysicsVector momentum)
289 {
290
291 }
292 }
293
294}
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj b/OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj
new file mode 100644
index 0000000..7dad533
--- /dev/null
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj
@@ -0,0 +1,93 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{15B4FEF3-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Physics.BasicPhysicsPlugin</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Physics.BasicPhysicsPlugin</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\Physics\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\Physics\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Axiom.MathLib.dll" >
62 <HintPath>..\..\..\..\bin\Axiom.MathLib.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 </ItemGroup>
70 <ItemGroup>
71 <ProjectReference Include="..\Manager\OpenSim.Region.Physics.Manager.csproj">
72 <Name>OpenSim.Region.Physics.Manager</Name>
73 <Project>{F4FF31EB-0000-0000-0000-000000000000}</Project>
74 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
75 <Private>False</Private>
76 </ProjectReference>
77 </ItemGroup>
78 <ItemGroup>
79 <Compile Include="AssemblyInfo.cs">
80 <SubType>Code</SubType>
81 </Compile>
82 <Compile Include="BasicPhysicsPlugin.cs">
83 <SubType>Code</SubType>
84 </Compile>
85 </ItemGroup>
86 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
87 <PropertyGroup>
88 <PreBuildEvent>
89 </PreBuildEvent>
90 <PostBuildEvent>
91 </PostBuildEvent>
92 </PropertyGroup>
93</Project>
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj.user b/OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/OpenSim.Region.Physics.BasicPhysicsPlugin.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Physics/Manager/AssemblyInfo.cs b/OpenSim/Region/Physics/Manager/AssemblyInfo.cs
new file mode 100644
index 0000000..132f64a
--- /dev/null
+++ b/OpenSim/Region/Physics/Manager/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("PhysicsManager")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("PhysicsManager")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj b/OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj
new file mode 100644
index 0000000..f340400
--- /dev/null
+++ b/OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj
@@ -0,0 +1,112 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{F4FF31EB-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Physics.Manager</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Physics.Manager</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Axiom.MathLib.dll" >
62 <HintPath>..\..\..\..\bin\Axiom.MathLib.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Xml" >
70 <HintPath>System.Xml.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 </ItemGroup>
74 <ItemGroup>
75 <ProjectReference Include="..\..\..\Framework\General\OpenSim.Framework.csproj">
76 <Name>OpenSim.Framework</Name>
77 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
78 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
79 <Private>False</Private>
80 </ProjectReference>
81 <ProjectReference Include="..\..\..\Framework\Console\OpenSim.Framework.Console.csproj">
82 <Name>OpenSim.Framework.Console</Name>
83 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
84 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
85 <Private>False</Private>
86 </ProjectReference>
87 </ItemGroup>
88 <ItemGroup>
89 <Compile Include="AssemblyInfo.cs">
90 <SubType>Code</SubType>
91 </Compile>
92 <Compile Include="PhysicsActor.cs">
93 <SubType>Code</SubType>
94 </Compile>
95 <Compile Include="PhysicsManager.cs">
96 <SubType>Code</SubType>
97 </Compile>
98 <Compile Include="PhysicsScene.cs">
99 <SubType>Code</SubType>
100 </Compile>
101 <Compile Include="PhysicsVector.cs">
102 <SubType>Code</SubType>
103 </Compile>
104 </ItemGroup>
105 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
106 <PropertyGroup>
107 <PreBuildEvent>
108 </PreBuildEvent>
109 <PostBuildEvent>
110 </PostBuildEvent>
111 </PropertyGroup>
112</Project>
diff --git a/OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj.user b/OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Physics/Manager/OpenSim.Region.Physics.Manager.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
new file mode 100644
index 0000000..6366fb8
--- /dev/null
+++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
@@ -0,0 +1,161 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Physics.Manager
33{
34 public abstract class PhysicsActor
35 {
36 public static PhysicsActor Null
37 {
38 get
39 {
40 return new NullPhysicsActor();
41 }
42 }
43
44 public abstract PhysicsVector Position
45 {
46 get;
47 set;
48 }
49
50 public abstract PhysicsVector Velocity
51 {
52 get;
53 set;
54 }
55
56 public abstract PhysicsVector Acceleration
57 {
58 get;
59 }
60
61 public abstract Axiom.MathLib.Quaternion Orientation
62 {
63 get;
64 set;
65 }
66
67 public abstract bool Flying
68 {
69 get;
70 set;
71 }
72
73 public abstract bool Kinematic
74 {
75 get;
76 set;
77 }
78
79 public abstract void AddForce(PhysicsVector force);
80
81 public abstract void SetMomentum(PhysicsVector momentum);
82 }
83
84 public class NullPhysicsActor : PhysicsActor
85 {
86 public override PhysicsVector Position
87 {
88 get
89 {
90 return PhysicsVector.Zero;
91 }
92 set
93 {
94 return;
95 }
96 }
97
98 public override PhysicsVector Velocity
99 {
100 get
101 {
102 return PhysicsVector.Zero;
103 }
104 set
105 {
106 return;
107 }
108 }
109
110 public override Axiom.MathLib.Quaternion Orientation
111 {
112 get
113 {
114 return Axiom.MathLib.Quaternion.Identity;
115 }
116 set
117 {
118
119 }
120 }
121
122 public override PhysicsVector Acceleration
123 {
124 get { return PhysicsVector.Zero; }
125 }
126
127 public override bool Flying
128 {
129 get
130 {
131 return false;
132 }
133 set
134 {
135 return;
136 }
137 }
138
139 public override bool Kinematic
140 {
141 get
142 {
143 return true;
144 }
145 set
146 {
147 return;
148 }
149 }
150
151 public override void AddForce(PhysicsVector force)
152 {
153 return;
154 }
155
156 public override void SetMomentum(PhysicsVector momentum)
157 {
158 return;
159 }
160 }
161}
diff --git a/OpenSim/Region/Physics/Manager/PhysicsManager.cs b/OpenSim/Region/Physics/Manager/PhysicsManager.cs
new file mode 100644
index 0000000..efccb36
--- /dev/null
+++ b/OpenSim/Region/Physics/Manager/PhysicsManager.cs
@@ -0,0 +1,117 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Collections;
31using System.IO;
32using System.Reflection;
33using Axiom.MathLib;
34using OpenSim.Framework.Console;
35
36namespace OpenSim.Physics.Manager
37{
38 /// <summary>
39 /// Description of MyClass.
40 /// </summary>
41 public class PhysicsManager
42 {
43 private Dictionary<string, IPhysicsPlugin> _plugins=new Dictionary<string, IPhysicsPlugin>();
44
45 public PhysicsManager()
46 {
47
48 }
49
50 public PhysicsScene GetPhysicsScene(string engineName)
51 {
52 if (String.IsNullOrEmpty(engineName))
53 {
54 return new NullPhysicsScene();
55 }
56
57 if(_plugins.ContainsKey(engineName))
58 {
59 OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.LOW,"creating "+engineName);
60 return _plugins[engineName].GetScene();
61 }
62 else
63 {
64 OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.MEDIUM,"couldn't find physicsEngine: {0}",engineName);
65 throw new ArgumentException(String.Format("couldn't find physicsEngine: {0}",engineName));
66 }
67 }
68
69 public void LoadPlugins()
70 {
71 string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory ,"Physics");
72 string[] pluginFiles = Directory.GetFiles(path, "*.dll");
73
74
75 for(int i= 0; i<pluginFiles.Length; i++)
76 {
77 this.AddPlugin(pluginFiles[i]);
78 }
79 }
80
81 private void AddPlugin(string FileName)
82 {
83 Assembly pluginAssembly = Assembly.LoadFrom(FileName);
84
85 foreach (Type pluginType in pluginAssembly.GetTypes())
86 {
87 if (pluginType.IsPublic)
88 {
89 if (!pluginType.IsAbstract)
90 {
91 Type typeInterface = pluginType.GetInterface("IPhysicsPlugin", true);
92
93 if (typeInterface != null)
94 {
95 IPhysicsPlugin plug = (IPhysicsPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
96 plug.Init();
97 this._plugins.Add(plug.GetName(),plug);
98
99 }
100
101 typeInterface = null;
102 }
103 }
104 }
105
106 pluginAssembly = null;
107 }
108 }
109
110 public interface IPhysicsPlugin
111 {
112 bool Init();
113 PhysicsScene GetScene();
114 string GetName();
115 void Dispose();
116 }
117}
diff --git a/OpenSim/Region/Physics/Manager/PhysicsScene.cs b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
new file mode 100644
index 0000000..0901c2f
--- /dev/null
+++ b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
@@ -0,0 +1,113 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Console;
32
33namespace OpenSim.Physics.Manager
34{
35 public abstract class PhysicsScene
36 {
37 public static PhysicsScene Null
38 {
39 get
40 {
41 return new NullPhysicsScene();
42 }
43 }
44
45 public abstract PhysicsActor AddAvatar(PhysicsVector position);
46
47 public abstract void RemoveAvatar(PhysicsActor actor);
48
49 public abstract PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size);
50
51 public abstract void Simulate(float timeStep);
52
53 public abstract void GetResults();
54
55 public abstract void SetTerrain(float[] heightMap);
56
57 public abstract void DeleteTerrain();
58
59 public abstract bool IsThreaded
60 {
61 get;
62 }
63 }
64
65 public class NullPhysicsScene : PhysicsScene
66 {
67 private static int m_workIndicator;
68
69 public override PhysicsActor AddAvatar(PhysicsVector position)
70 {
71 OpenSim.Framework.Console.MainLog.Instance.Verbose("NullPhysicsScene : AddAvatar({0})", position);
72 return PhysicsActor.Null;
73 }
74
75 public override void RemoveAvatar(PhysicsActor actor)
76 {
77
78 }
79
80 public override PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size)
81 {
82 OpenSim.Framework.Console.MainLog.Instance.Verbose( "NullPhysicsScene : AddPrim({0},{1})", position, size);
83 return PhysicsActor.Null;
84 }
85
86 public override void Simulate(float timeStep)
87 {
88 m_workIndicator = (m_workIndicator + 1) % 10;
89
90 //OpenSim.Framework.Console.MainLog.Instance.SetStatus(m_workIndicator.ToString());
91 }
92
93 public override void GetResults()
94 {
95 OpenSim.Framework.Console.MainLog.Instance.Verbose( "NullPhysicsScene : GetResults()");
96 }
97
98 public override void SetTerrain(float[] heightMap)
99 {
100 OpenSim.Framework.Console.MainLog.Instance.Verbose( "NullPhysicsScene : SetTerrain({0} items)", heightMap.Length);
101 }
102
103 public override void DeleteTerrain()
104 {
105
106 }
107
108 public override bool IsThreaded
109 {
110 get { return false; }
111 }
112 }
113}
diff --git a/OpenSim/Region/Physics/Manager/PhysicsVector.cs b/OpenSim/Region/Physics/Manager/PhysicsVector.cs
new file mode 100644
index 0000000..888dbb5
--- /dev/null
+++ b/OpenSim/Region/Physics/Manager/PhysicsVector.cs
@@ -0,0 +1,54 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Physics.Manager
33{
34 public class PhysicsVector
35 {
36 public float X;
37 public float Y;
38 public float Z;
39
40 public PhysicsVector()
41 {
42
43 }
44
45 public PhysicsVector(float x, float y, float z)
46 {
47 X = x;
48 Y = y;
49 Z = z;
50 }
51
52 public static readonly PhysicsVector Zero = new PhysicsVector(0f, 0f, 0f);
53 }
54}
diff --git a/OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs
new file mode 100644
index 0000000..b49c8da
--- /dev/null
+++ b/OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("RealPhysXplugin")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("RealPhysXplugin")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
new file mode 100644
index 0000000..8aca851
--- /dev/null
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -0,0 +1,456 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using OpenSim.Physics.Manager;
31using Ode.NET;
32
33namespace OpenSim.Region.Physics.OdePlugin
34{
35 /// <summary>
36 /// ODE plugin
37 /// </summary>
38 public class OdePlugin : IPhysicsPlugin
39 {
40 private OdeScene _mScene;
41
42 public OdePlugin()
43 {
44
45 }
46
47 public bool Init()
48 {
49 return true;
50 }
51
52 public PhysicsScene GetScene()
53 {
54 if (_mScene == null)
55 {
56 _mScene = new OdeScene();
57 }
58 return (_mScene);
59 }
60
61 public string GetName()
62 {
63 return ("OpenDynamicsEngine");
64 }
65
66 public void Dispose()
67 {
68
69 }
70 }
71
72 public class OdeScene : PhysicsScene
73 {
74 static public IntPtr world;
75 static public IntPtr space;
76 static private IntPtr contactgroup;
77 static private IntPtr LandGeom;
78 //static private IntPtr Land;
79 private double[] _heightmap;
80 static private d.NearCallback nearCallback = near;
81 private List<OdeCharacter> _characters = new List<OdeCharacter>();
82 private static d.ContactGeom[] contacts = new d.ContactGeom[30];
83 private static d.Contact contact;
84
85 public OdeScene()
86 {
87 contact.surface.mode = d.ContactFlags.Bounce | d.ContactFlags.SoftCFM;
88 contact.surface.mu = d.Infinity;
89 contact.surface.mu2 = 0.0f;
90 contact.surface.bounce = 0.1f;
91 contact.surface.bounce_vel = 0.1f;
92 contact.surface.soft_cfm = 0.01f;
93
94 world = d.WorldCreate();
95 space = d.HashSpaceCreate(IntPtr.Zero);
96 contactgroup = d.JointGroupCreate(0);
97 d.WorldSetGravity(world, 0.0f, 0.0f, -0.5f);
98 //d.WorldSetCFM(world, 1e-5f);
99 d.WorldSetAutoDisableFlag(world, false);
100 d.WorldSetContactSurfaceLayer(world, 0.001f);
101 // d.CreatePlane(space, 0, 0, 1, 0);
102 this._heightmap = new double[65536];
103 }
104
105 // This function blatantly ripped off from BoxStack.cs
106 static private void near(IntPtr space, IntPtr g1, IntPtr g2)
107 {
108 IntPtr b1 = d.GeomGetBody(g1);
109 IntPtr b2 = d.GeomGetBody(g2);
110 if (b1 != IntPtr.Zero && b2 != IntPtr.Zero && d.AreConnectedExcluding(b1, b2, d.JointType.Contact))
111 return;
112
113 int count = d.Collide(g1, g2, 500, contacts, d.ContactGeom.SizeOf);
114 for (int i = 0; i < count; ++i)
115 {
116 contact.geom = contacts[i];
117 IntPtr joint = d.JointCreateContact(world, contactgroup, ref contact);
118 d.JointAttach(joint, b1, b2);
119 }
120
121 }
122
123 public override PhysicsActor AddAvatar(PhysicsVector position)
124 {
125 PhysicsVector pos = new PhysicsVector();
126 pos.X = position.X;
127 pos.Y = position.Y;
128 pos.Z = position.Z + 20;
129 OdeCharacter newAv = new OdeCharacter(this, pos);
130 this._characters.Add(newAv);
131 return newAv;
132 }
133
134 public override void RemoveAvatar(PhysicsActor actor)
135 {
136
137 }
138
139 public override PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size)
140 {
141 PhysicsVector pos = new PhysicsVector();
142 pos.X = position.X;
143 pos.Y = position.Y;
144 pos.Z = position.Z;
145 PhysicsVector siz = new PhysicsVector();
146 siz.X = size.X;
147 siz.Y = size.Y;
148 siz.Z = size.Z;
149 return new OdePrim();
150 }
151
152 public override void Simulate(float timeStep)
153 {
154 foreach (OdeCharacter actor in _characters)
155 {
156 actor.Move(timeStep * 5f);
157 }
158 d.SpaceCollide(space, IntPtr.Zero, nearCallback);
159 d.WorldQuickStep(world, timeStep * 5f);
160 d.JointGroupEmpty(contactgroup);
161 foreach (OdeCharacter actor in _characters)
162 {
163 actor.UpdatePosition();
164 }
165
166 }
167
168 public override void GetResults()
169 {
170
171 }
172
173 public override bool IsThreaded
174 {
175 get
176 {
177 return (false); // for now we won't be multithreaded
178 }
179 }
180
181 public override void SetTerrain(float[] heightMap)
182 {
183 for (int i = 0; i < 65536; i++)
184 {
185 // this._heightmap[i] = (double)heightMap[i];
186 // dbm (danx0r) -- heightmap x,y must be swapped for Ode (should fix ODE, but for now...)
187 int x = i & 0xff;
188 int y = i >> 8;
189 this._heightmap[i] = (double)heightMap[x * 256 + y];
190 }
191 IntPtr HeightmapData = d.GeomHeightfieldDataCreate();
192 d.GeomHeightfieldDataBuildDouble(HeightmapData, _heightmap, 0, 256, 256, 256, 256, 1.0f, 0.0f, 2.0f, 0);
193 d.GeomHeightfieldDataSetBounds(HeightmapData, 256, 256);
194 LandGeom = d.CreateHeightfield(space, HeightmapData, 1);
195 d.Matrix3 R = new d.Matrix3();
196
197 Axiom.MathLib.Quaternion q1 =Axiom.MathLib.Quaternion.FromAngleAxis(1.5707f, new Axiom.MathLib.Vector3(1,0,0));
198 Axiom.MathLib.Quaternion q2 =Axiom.MathLib.Quaternion.FromAngleAxis(1.5707f, new Axiom.MathLib.Vector3(0,1,0));
199 //Axiom.MathLib.Quaternion q3 = Axiom.MathLib.Quaternion.FromAngleAxis(3.14f, new Axiom.MathLib.Vector3(0, 0, 1));
200
201 q1 = q1 * q2;
202 //q1 = q1 * q3;
203 Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3();
204 float angle = 0;
205 q1.ToAngleAxis(ref angle, ref v3);
206
207 d.RFromAxisAndAngle(out R, v3.x, v3.y, v3.z, angle);
208 d.GeomSetRotation(LandGeom, ref R);
209 d.GeomSetPosition(LandGeom, 128, 128, 0);
210 }
211
212 public override void DeleteTerrain()
213 {
214
215 }
216 }
217
218 public class OdeCharacter : PhysicsActor
219 {
220 private PhysicsVector _position;
221 private PhysicsVector _velocity;
222 private PhysicsVector _acceleration;
223 private bool flying;
224 //private float gravityAccel;
225 private IntPtr BoundingCapsule;
226 IntPtr capsule_geom;
227 d.Mass capsule_mass;
228
229 public OdeCharacter(OdeScene parent_scene, PhysicsVector pos)
230 {
231 _velocity = new PhysicsVector();
232 _position = pos;
233 _acceleration = new PhysicsVector();
234 d.MassSetCapsule(out capsule_mass, 5.0f, 3, 0.5f, 2f);
235 capsule_geom = d.CreateCapsule(OdeScene.space, 0.5f, 2f);
236 this.BoundingCapsule = d.BodyCreate(OdeScene.world);
237 d.BodySetMass(BoundingCapsule, ref capsule_mass);
238 d.BodySetPosition(BoundingCapsule, pos.X, pos.Y, pos.Z);
239 d.GeomSetBody(capsule_geom, BoundingCapsule);
240 }
241
242 public override bool Flying
243 {
244 get
245 {
246 return flying;
247 }
248 set
249 {
250 flying = value;
251 }
252 }
253
254 public override PhysicsVector Position
255 {
256 get
257 {
258 return _position;
259 }
260 set
261 {
262 _position = value;
263 }
264 }
265
266 public override PhysicsVector Velocity
267 {
268 get
269 {
270 return _velocity;
271 }
272 set
273 {
274 _velocity = value;
275 }
276 }
277
278 public override bool Kinematic
279 {
280 get
281 {
282 return false;
283 }
284 set
285 {
286
287 }
288 }
289
290 public override Axiom.MathLib.Quaternion Orientation
291 {
292 get
293 {
294 return Axiom.MathLib.Quaternion.Identity;
295 }
296 set
297 {
298
299 }
300 }
301
302 public override PhysicsVector Acceleration
303 {
304 get
305 {
306 return _acceleration;
307 }
308
309 }
310 public void SetAcceleration(PhysicsVector accel)
311 {
312 this._acceleration = accel;
313 }
314
315 public override void AddForce(PhysicsVector force)
316 {
317
318 }
319
320 public override void SetMomentum(PhysicsVector momentum)
321 {
322
323 }
324
325 public void Move(float timeStep)
326 {
327 PhysicsVector vec = new PhysicsVector();
328 vec.X = this._velocity.X * timeStep;
329 vec.Y = this._velocity.Y * timeStep;
330 if (flying)
331 {
332 vec.Z = (this._velocity.Z + 0.5f) * timeStep;
333 }
334 d.BodySetLinearVel(this.BoundingCapsule, vec.X, vec.Y, vec.Z);
335 }
336
337 public void UpdatePosition()
338 {
339 d.Vector3 vec = d.BodyGetPosition(BoundingCapsule);
340 this._position.X = vec.X;
341 this._position.Y = vec.Y;
342 this._position.Z = vec.Z+1.0f;
343 }
344 }
345
346 public class OdePrim : PhysicsActor
347 {
348 private PhysicsVector _position;
349 private PhysicsVector _velocity;
350 private PhysicsVector _acceleration;
351
352 public OdePrim()
353 {
354 _velocity = new PhysicsVector();
355 _position = new PhysicsVector();
356 _acceleration = new PhysicsVector();
357 }
358 public override bool Flying
359 {
360 get
361 {
362 return false; //no flying prims for you
363 }
364 set
365 {
366
367 }
368 }
369 public override PhysicsVector Position
370 {
371 get
372 {
373 PhysicsVector pos = new PhysicsVector();
374 // PhysicsVector vec = this._prim.Position;
375 //pos.X = vec.X;
376 //pos.Y = vec.Y;
377 //pos.Z = vec.Z;
378 return pos;
379
380 }
381 set
382 {
383 /*PhysicsVector vec = value;
384 PhysicsVector pos = new PhysicsVector();
385 pos.X = vec.X;
386 pos.Y = vec.Y;
387 pos.Z = vec.Z;
388 this._prim.Position = pos;*/
389 }
390 }
391
392 public override PhysicsVector Velocity
393 {
394 get
395 {
396 return _velocity;
397 }
398 set
399 {
400 _velocity = value;
401 }
402 }
403
404 public override bool Kinematic
405 {
406 get
407 {
408 return false;
409 //return this._prim.Kinematic;
410 }
411 set
412 {
413 //this._prim.Kinematic = value;
414 }
415 }
416
417 public override Axiom.MathLib.Quaternion Orientation
418 {
419 get
420 {
421 Axiom.MathLib.Quaternion res = new Axiom.MathLib.Quaternion();
422 return res;
423 }
424 set
425 {
426
427 }
428 }
429
430 public override PhysicsVector Acceleration
431 {
432 get
433 {
434 return _acceleration;
435 }
436
437 }
438 public void SetAcceleration(PhysicsVector accel)
439 {
440 this._acceleration = accel;
441 }
442
443 public override void AddForce(PhysicsVector force)
444 {
445
446 }
447
448 public override void SetMomentum(PhysicsVector momentum)
449 {
450
451 }
452
453
454 }
455
456}
diff --git a/OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj b/OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj
new file mode 100644
index 0000000..490c681
--- /dev/null
+++ b/OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj
@@ -0,0 +1,97 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{90620634-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Physics.OdePlugin</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Physics.OdePlugin</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\Physics\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\Physics\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Axiom.MathLib.dll" >
62 <HintPath>..\..\..\..\bin\Axiom.MathLib.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="Ode.NET.dll" >
66 <HintPath>..\..\..\..\bin\Ode.NET.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 </ItemGroup>
74 <ItemGroup>
75 <ProjectReference Include="..\Manager\OpenSim.Region.Physics.Manager.csproj">
76 <Name>OpenSim.Region.Physics.Manager</Name>
77 <Project>{F4FF31EB-0000-0000-0000-000000000000}</Project>
78 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
79 <Private>False</Private>
80 </ProjectReference>
81 </ItemGroup>
82 <ItemGroup>
83 <Compile Include="AssemblyInfo.cs">
84 <SubType>Code</SubType>
85 </Compile>
86 <Compile Include="OdePlugin.cs">
87 <SubType>Code</SubType>
88 </Compile>
89 </ItemGroup>
90 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
91 <PropertyGroup>
92 <PreBuildEvent>
93 </PreBuildEvent>
94 <PostBuildEvent>
95 </PostBuildEvent>
96 </PropertyGroup>
97</Project>
diff --git a/OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj.user b/OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Physics/OdePlugin/OpenSim.Region.Physics.OdePlugin.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs
new file mode 100644
index 0000000..b49c8da
--- /dev/null
+++ b/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("RealPhysXplugin")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("RealPhysXplugin")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj b/OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj
new file mode 100644
index 0000000..77da908
--- /dev/null
+++ b/OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj
@@ -0,0 +1,97 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{A6D191D8-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Physics.PhysXPlugin</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Physics.PhysXPlugin</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\Physics\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\Physics\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Axiom.MathLib.dll" >
62 <HintPath>..\..\..\..\bin\Axiom.MathLib.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="PhysX_Wrapper_Dotnet.dll" >
66 <HintPath>..\..\..\..\bin\PhysX_Wrapper_Dotnet.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 </ItemGroup>
74 <ItemGroup>
75 <ProjectReference Include="..\Manager\OpenSim.Region.Physics.Manager.csproj">
76 <Name>OpenSim.Region.Physics.Manager</Name>
77 <Project>{F4FF31EB-0000-0000-0000-000000000000}</Project>
78 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
79 <Private>False</Private>
80 </ProjectReference>
81 </ItemGroup>
82 <ItemGroup>
83 <Compile Include="AssemblyInfo.cs">
84 <SubType>Code</SubType>
85 </Compile>
86 <Compile Include="PhysXPlugin.cs">
87 <SubType>Code</SubType>
88 </Compile>
89 </ItemGroup>
90 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
91 <PropertyGroup>
92 <PreBuildEvent>
93 </PreBuildEvent>
94 <PostBuildEvent>
95 </PostBuildEvent>
96 </PropertyGroup>
97</Project>
diff --git a/OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj.user b/OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Physics/PhysXPlugin/OpenSim.Region.Physics.PhysXPlugin.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs
new file mode 100644
index 0000000..8bf794b
--- /dev/null
+++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs
@@ -0,0 +1,424 @@
1/*/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using OpenSim.Physics.Manager;
31using PhysXWrapper;
32
33namespace OpenSim.Region.Physics.PhysXPlugin
34{
35 /// <summary>
36 /// Will be the PhysX plugin but for now will be a very basic physics engine
37 /// </summary>
38 public class PhysXPlugin : IPhysicsPlugin
39 {
40 private PhysXScene _mScene;
41
42 public PhysXPlugin()
43 {
44
45 }
46
47 public bool Init()
48 {
49 return true;
50 }
51
52 public PhysicsScene GetScene()
53 {
54 if(_mScene == null)
55 {
56 _mScene = new PhysXScene();
57 }
58 return(_mScene);
59 }
60
61 public string GetName()
62 {
63 return("RealPhysX");
64 }
65
66 public void Dispose()
67 {
68
69 }
70 }
71
72 public class PhysXScene :PhysicsScene
73 {
74 private List<PhysXCharacter> _characters = new List<PhysXCharacter>();
75 private List<PhysXPrim> _prims = new List<PhysXPrim>();
76 private float[] _heightMap = null;
77 private NxPhysicsSDK mySdk;
78 private NxScene scene;
79
80 public PhysXScene()
81 {
82 mySdk = NxPhysicsSDK.CreateSDK();
83 Console.WriteLine("Sdk created - now creating scene");
84 scene = mySdk.CreateScene();
85
86 }
87
88 public override PhysicsActor AddAvatar(PhysicsVector position)
89 {
90 Vec3 pos = new Vec3();
91 pos.X = position.X;
92 pos.Y = position.Y;
93 pos.Z = position.Z;
94 PhysXCharacter act = new PhysXCharacter( scene.AddCharacter(pos));
95 act.Position = position;
96 _characters.Add(act);
97 return act;
98 }
99
100 public override void RemoveAvatar(PhysicsActor actor)
101 {
102
103 }
104
105 public override PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size)
106 {
107 Vec3 pos = new Vec3();
108 pos.X = position.X;
109 pos.Y = position.Y;
110 pos.Z = position.Z;
111 Vec3 siz = new Vec3();
112 siz.X = size.X;
113 siz.Y = size.Y;
114 siz.Z = size.Z;
115 PhysXPrim act = new PhysXPrim( scene.AddNewBox(pos, siz));
116 _prims.Add(act);
117 return act;
118 }
119 public override void Simulate(float timeStep)
120 {
121 try
122 {
123 foreach (PhysXCharacter actor in _characters)
124 {
125 actor.Move(timeStep);
126 }
127 scene.Simulate(timeStep);
128 scene.FetchResults();
129 scene.UpdateControllers();
130
131 foreach (PhysXCharacter actor in _characters)
132 {
133 actor.UpdatePosition();
134 }
135 }
136 catch (Exception e)
137 {
138 Console.WriteLine(e.Message);
139 }
140
141 }
142
143 public override void GetResults()
144 {
145
146 }
147
148 public override bool IsThreaded
149 {
150 get
151 {
152 return(false); // for now we won't be multithreaded
153 }
154 }
155
156 public override void SetTerrain(float[] heightMap)
157 {
158 if (this._heightMap != null)
159 {
160 Console.WriteLine("PhysX - deleting old terrain");
161 this.scene.DeleteTerrain();
162 }
163 this._heightMap = heightMap;
164 this.scene.AddTerrain(heightMap);
165 }
166
167 public override void DeleteTerrain()
168 {
169 this.scene.DeleteTerrain();
170 }
171 }
172
173 public class PhysXCharacter : PhysicsActor
174 {
175 private PhysicsVector _position;
176 private PhysicsVector _velocity;
177 private PhysicsVector _acceleration;
178 private NxCharacter _character;
179 private bool flying;
180 private float gravityAccel;
181
182 public PhysXCharacter(NxCharacter character)
183 {
184 _velocity = new PhysicsVector();
185 _position = new PhysicsVector();
186 _acceleration = new PhysicsVector();
187 _character = character;
188 }
189
190 public override bool Flying
191 {
192 get
193 {
194 return flying;
195 }
196 set
197 {
198 flying = value;
199 }
200 }
201
202 public override PhysicsVector Position
203 {
204 get
205 {
206 return _position;
207 }
208 set
209 {
210 _position = value;
211 Vec3 ps = new Vec3();
212 ps.X = value.X;
213 ps.Y = value.Y;
214 ps.Z = value.Z;
215 this._character.Position = ps;
216 }
217 }
218
219 public override PhysicsVector Velocity
220 {
221 get
222 {
223 return _velocity;
224 }
225 set
226 {
227 _velocity = value;
228 }
229 }
230
231 public override bool Kinematic
232 {
233 get
234 {
235 return false;
236 }
237 set
238 {
239
240 }
241 }
242
243 public override Axiom.MathLib.Quaternion Orientation
244 {
245 get
246 {
247 return Axiom.MathLib.Quaternion.Identity;
248 }
249 set
250 {
251
252 }
253 }
254
255 public override PhysicsVector Acceleration
256 {
257 get
258 {
259 return _acceleration;
260 }
261
262 }
263 public void SetAcceleration (PhysicsVector accel)
264 {
265 this._acceleration = accel;
266 }
267
268 public override void AddForce(PhysicsVector force)
269 {
270
271 }
272
273 public override void SetMomentum(PhysicsVector momentum)
274 {
275
276 }
277
278 public void Move(float timeStep)
279 {
280 Vec3 vec = new Vec3();
281 vec.X = this._velocity.X * timeStep;
282 vec.Y = this._velocity.Y * timeStep;
283 if(flying)
284 {
285 vec.Z = ( this._velocity.Z) * timeStep;
286 }
287 else
288 {
289 gravityAccel+= -9.8f;
290 vec.Z = (gravityAccel + this._velocity.Z) * timeStep;
291 }
292 int res = this._character.Move(vec);
293 if(res == 1)
294 {
295 gravityAccel = 0;
296 }
297 }
298
299 public void UpdatePosition()
300 {
301 Vec3 vec = this._character.Position;
302 this._position.X = vec.X;
303 this._position.Y = vec.Y;
304 this._position.Z = vec.Z;
305 }
306 }
307
308 public class PhysXPrim : PhysicsActor
309 {
310 private PhysicsVector _position;
311 private PhysicsVector _velocity;
312 private PhysicsVector _acceleration;
313 private NxActor _prim;
314
315 public PhysXPrim(NxActor prim)
316 {
317 _velocity = new PhysicsVector();
318 _position = new PhysicsVector();
319 _acceleration = new PhysicsVector();
320 _prim = prim;
321 }
322 public override bool Flying
323 {
324 get
325 {
326 return false; //no flying prims for you
327 }
328 set
329 {
330
331 }
332 }
333 public override PhysicsVector Position
334 {
335 get
336 {
337 PhysicsVector pos = new PhysicsVector();
338 Vec3 vec = this._prim.Position;
339 pos.X = vec.X;
340 pos.Y = vec.Y;
341 pos.Z = vec.Z;
342 return pos;
343
344 }
345 set
346 {
347 PhysicsVector vec = value;
348 Vec3 pos = new Vec3();
349 pos.X = vec.X;
350 pos.Y = vec.Y;
351 pos.Z = vec.Z;
352 this._prim.Position = pos;
353 }
354 }
355
356 public override PhysicsVector Velocity
357 {
358 get
359 {
360 return _velocity;
361 }
362 set
363 {
364 _velocity = value;
365 }
366 }
367
368 public override bool Kinematic
369 {
370 get
371 {
372 return this._prim.Kinematic;
373 }
374 set
375 {
376 this._prim.Kinematic = value;
377 }
378 }
379
380 public override Axiom.MathLib.Quaternion Orientation
381 {
382 get
383 {
384 Axiom.MathLib.Quaternion res = new Axiom.MathLib.Quaternion();
385 PhysXWrapper.Quaternion quat = this._prim.GetOrientation();
386 res.w = quat.W;
387 res.x = quat.X;
388 res.y = quat.Y;
389 res.z = quat.Z;
390 return res;
391 }
392 set
393 {
394
395 }
396 }
397
398 public override PhysicsVector Acceleration
399 {
400 get
401 {
402 return _acceleration;
403 }
404
405 }
406 public void SetAcceleration (PhysicsVector accel)
407 {
408 this._acceleration = accel;
409 }
410
411 public override void AddForce(PhysicsVector force)
412 {
413
414 }
415
416 public override void SetMomentum(PhysicsVector momentum)
417 {
418
419 }
420
421
422 }
423
424}
diff --git a/OpenSim/Region/Scripting/Properties/AssemblyInfo.cs b/OpenSim/Region/Scripting/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..f5da4c0
--- /dev/null
+++ b/OpenSim/Region/Scripting/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenSim.Scripting")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenSim.Scripting")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("61eae1ad-82aa-4c77-8bc5-b5a8c9522b18")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Region/Scripting/Script.cs b/OpenSim/Region/Scripting/Script.cs
new file mode 100644
index 0000000..0f4af00
--- /dev/null
+++ b/OpenSim/Region/Scripting/Script.cs
@@ -0,0 +1,32 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5using OpenSim.Framework.Console;
6using OpenSim.Framework;
7using OpenSim.Region;
8using OpenSim.Region.Scenes;
9
10namespace OpenSim.Scripting
11{
12 public interface IScript
13 {
14 void Initialise(ScriptInfo scriptInfo);
15 }
16
17 public class TestScript : IScript
18 {
19 ScriptInfo script;
20
21 public void Initialise(ScriptInfo scriptInfo)
22 {
23 script = scriptInfo;
24 script.events.OnFrame += new OpenSim.Region.Scenes.EventManager.OnFrameDelegate(events_OnFrame);
25 }
26
27 void events_OnFrame()
28 {
29 script.logger.Verbose("Hello World!");
30 }
31 }
32}
diff --git a/OpenSim/Region/Scripting/ScriptAccess.cs b/OpenSim/Region/Scripting/ScriptAccess.cs
new file mode 100644
index 0000000..a9fede5
--- /dev/null
+++ b/OpenSim/Region/Scripting/ScriptAccess.cs
@@ -0,0 +1,31 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5using OpenSim.Region.Scenes;
6using OpenSim.Framework.Console;
7
8namespace OpenSim.Scripting
9{
10 /// <summary>
11 /// Class which provides access to the world
12 /// </summary>
13 public class ScriptInfo
14 {
15 // Reference to world.eventsManager provided for convenience
16 public EventManager events;
17
18 // The main world
19 public Scene world;
20
21 // The console
22 public LogBase logger;
23
24 public ScriptInfo(Scene scene)
25 {
26 world = scene;
27 events = world.eventManager;
28 logger = OpenSim.Framework.Console.MainLog.Instance;
29 }
30 }
31}
diff --git a/OpenSim/Region/Simulation/Caps.cs b/OpenSim/Region/Simulation/Caps.cs
new file mode 100644
index 0000000..13a351d
--- /dev/null
+++ b/OpenSim/Region/Simulation/Caps.cs
@@ -0,0 +1,258 @@
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Text;
5using System.IO;
6using System.Xml;
7using OpenSim.Servers;
8using OpenSim.Framework;
9using OpenSim.Framework.Utilities;
10using OpenSim.Framework.Types;
11using OpenSim.Caches;
12using libsecondlife;
13
14namespace OpenSim.Region
15{
16 public delegate void UpLoadedTexture(LLUUID assetID, LLUUID inventoryItem, byte[] data);
17
18 public class Caps
19 {
20 private string httpListenerAddress;
21 private uint httpListenPort;
22 private string capsObjectPath = "00001-";
23 private string requestPath = "0000/";
24 private string mapLayerPath = "0001/";
25 private string newInventory = "0002/";
26 private string requestTexture = "0003/";
27 private string eventQueue = "0100/";
28 private BaseHttpServer httpListener;
29 private LLUUID agentID;
30 private AssetCache assetCache;
31 private int eventQueueCount = 1;
32 private Queue<string> CapsEventQueue = new Queue<string>();
33
34 public Caps(AssetCache assetCach, BaseHttpServer httpServer, string httpListen, uint httpPort, string capsPath, LLUUID agent)
35 {
36 assetCache = assetCach;
37 capsObjectPath = capsPath;
38 httpListener = httpServer;
39 httpListenerAddress = httpListen;
40 httpListenPort = httpPort;
41 agentID = agent;
42 }
43
44 /// <summary>
45 ///
46 /// </summary>
47 public void RegisterHandlers()
48 {
49 Console.WriteLine("registering CAPS handlers");
50 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + requestPath, CapsRequest);
51 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + mapLayerPath, MapLayer);
52 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + newInventory, NewAgentInventory);
53 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + eventQueue, ProcessEventQueue);
54 }
55
56 /// <summary>
57 ///
58 /// </summary>
59 /// <param name="request"></param>
60 /// <param name="path"></param>
61 /// <param name="param"></param>
62 /// <returns></returns>
63 public string CapsRequest(string request, string path, string param)
64 {
65 // Console.WriteLine("Caps Request " + request);
66 string result = "";
67 result = LLSDHelpers.SerialiseLLSDReply(this.GetCapabilities());
68 return result;
69 }
70
71 /// <summary>
72 ///
73 /// </summary>
74 /// <returns></returns>
75 protected LLSDCapsDetails GetCapabilities()
76 {
77 /* string capURLS = "";
78 capURLS += "<key>MapLayer</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + mapLayerPath + "</string>";
79 capURLS += "<key>NewFileAgentInventory</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + newInventory + "</string>";
80 //capURLS += "<key>RequestTextureDownload</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + requestTexture + "</string>";
81 //capURLS += "<key>EventQueueGet</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + eventQueue + "</string>";
82 return capURLS;*/
83
84 LLSDCapsDetails caps = new LLSDCapsDetails();
85 caps.MapLayer = "http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + mapLayerPath;
86 caps.NewFileAgentInventory = "http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath + newInventory;
87 return caps;
88 }
89
90 /// <summary>
91 ///
92 /// </summary>
93 /// <param name="request"></param>
94 /// <param name="path"></param>
95 /// <param name="param"></param>
96 /// <returns></returns>
97 public string MapLayer(string request, string path, string param)
98 {
99 Encoding _enc = System.Text.Encoding.UTF8;
100 Hashtable hash =(Hashtable) LLSD.LLSDDeserialize(_enc.GetBytes(request));
101 LLSDMapRequest mapReq = new LLSDMapRequest();
102 LLSDHelpers.DeserialiseLLSDMap(hash, mapReq );
103
104 LLSDMapLayerResponse mapResponse= new LLSDMapLayerResponse();
105 mapResponse.LayerData.Array.Add(this.BuildLLSDMapLayerResponse());
106 string res = LLSDHelpers.SerialiseLLSDReply(mapResponse);
107
108 //Console.WriteLine(" Maplayer response is " + res);
109
110 return res;
111 }
112
113 /// <summary>
114 ///
115 /// </summary>
116 /// <returns></returns>
117 protected LLSDMapLayer BuildLLSDMapLayerResponse()
118 {
119 LLSDMapLayer mapLayer = new LLSDMapLayer();
120 mapLayer.Right = 5000;
121 mapLayer.Top = 5000;
122 mapLayer.ImageID = new LLUUID("00000000-0000-0000-9999-000000000006");
123
124 return mapLayer;
125 }
126
127 public string ProcessEventQueue(string request, string path, string param)
128 {
129 // Console.WriteLine("event queue request " + request);
130 string res = "";
131 int timer = 0;
132
133 /*while ((timer < 200) || (this.CapsEventQueue.Count < 1))
134 {
135 timer++;
136 }*/
137 if (this.CapsEventQueue.Count > 0)
138 {
139 lock (this.CapsEventQueue)
140 {
141 string item = CapsEventQueue.Dequeue();
142 res = item;
143 }
144 }
145 else
146 {
147 res = this.CreateEmptyEventResponse();
148 }
149 return res;
150 }
151
152 public string CreateEstablishAgentComms(string caps, string ipAddressPort)
153 {
154 string res = "<llsd><map><key>id</key><integer>" + eventQueueCount + "</integer>";
155 res += "<key>events</key><array><map>";
156 res += "<key>message</key><string>EstablishAgentCommunication</string>";
157 res += "<key>body</key><map>";
158 res += "<key>sim-ip-and-port</key><string>" + ipAddressPort + "</string>";
159 res += "<key>seed-capability</key><string>" + caps + "</string>";
160 res += "<key>agent-id</key><uuid>" + this.agentID.ToStringHyphenated() + "</uuid>";
161 res += "</map>";
162 res += "</map></array>";
163 res += "</map></llsd>";
164 eventQueueCount++;
165 this.CapsEventQueue.Enqueue(res);
166 return res;
167 }
168
169 public string CreateEmptyEventResponse()
170 {
171 string res = "<llsd><map><key>id</key><integer>" + eventQueueCount + "</integer>";
172 res += "<key>events</key><array><map>";
173 res += "</map></array>";
174 res += "</map></llsd>";
175 eventQueueCount++;
176 return res;
177 }
178
179 public string NewAgentInventory(string request, string path, string param)
180 {
181 //Console.WriteLine("received upload request:"+ request);
182 string res = "";
183 LLUUID newAsset = LLUUID.Random();
184 LLUUID newInvItem = LLUUID.Random();
185 string uploaderPath = capsObjectPath + Util.RandomClass.Next(5000, 8000).ToString("0000");
186 AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener);
187 httpListener.AddRestHandler("POST", "/CAPS/" + uploaderPath, uploader.uploaderCaps);
188 string uploaderURL = "http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + uploaderPath;
189 //Console.WriteLine("uploader url is " + uploaderURL);
190 res += "<llsd><map>";
191 res += "<key>uploader</key><string>" + uploaderURL + "</string>";
192 //res += "<key>success</key><boolean>true</boolean>";
193 res += "<key>state</key><string>upload</string>";
194 res += "</map></llsd>";
195 uploader.OnUpLoad += this.UploadHandler;
196 return res;
197 }
198
199 public void UploadHandler(LLUUID assetID, LLUUID inventoryItem, byte[] data)
200 {
201 // Console.WriteLine("upload handler called");
202 AssetBase asset;
203 asset = new AssetBase();
204 asset.FullID = assetID;
205 asset.Type = 0;
206 asset.InvType = 0;
207 asset.Name = "UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000");
208 asset.Data = data;
209 this.assetCache.AddAsset(asset);
210 }
211
212 public class AssetUploader
213 {
214 public event UpLoadedTexture OnUpLoad;
215
216 private string uploaderPath = "";
217 private LLUUID newAssetID;
218 private LLUUID inventoryItemID;
219 private BaseHttpServer httpListener;
220 public AssetUploader(LLUUID assetID, LLUUID inventoryItem, string path, BaseHttpServer httpServer)
221 {
222 newAssetID = assetID;
223 inventoryItemID = inventoryItem;
224 uploaderPath = path;
225 httpListener = httpServer;
226
227 }
228
229 public string uploaderCaps(string request, string path, string param)
230 {
231 Encoding _enc = System.Text.Encoding.UTF8;
232 byte[] data = _enc.GetBytes(request);
233 //Console.WriteLine("recieved upload " + Util.FieldToString(data));
234 LLUUID inv = this.inventoryItemID;
235 string res = "";
236 res += "<llsd><map>";
237 res += "<key>new_asset</key><string>" + newAssetID.ToStringHyphenated() + "</string>";
238 res += "<key>new_inventory_item</key><uuid>" + inv.ToStringHyphenated() + "</uuid>";
239 res += "<key>state</key><string>complete</string>";
240 res += "</map></llsd>";
241
242 // Console.WriteLine("asset " + newAssetID.ToStringHyphenated() + " , inventory item " + inv.ToStringHyphenated());
243 httpListener.RemoveRestHandler("POST", "/CAPS/" + uploaderPath);
244 if (OnUpLoad != null)
245 {
246 OnUpLoad(newAssetID, inv, data);
247 }
248
249 /*FileStream fs = File.Create("upload.jp2");
250 BinaryWriter bw = new BinaryWriter(fs);
251 bw.Write(data);
252 bw.Close();
253 fs.Close();*/
254 return res;
255 }
256 }
257 }
258}
diff --git a/OpenSim/Region/Simulation/EstateManager.cs b/OpenSim/Region/Simulation/EstateManager.cs
new file mode 100644
index 0000000..dcb5564
--- /dev/null
+++ b/OpenSim/Region/Simulation/EstateManager.cs
@@ -0,0 +1,301 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using OpenSim.Framework.Types;
32using OpenSim.Framework.Interfaces;
33using OpenSim.Region;
34using OpenSim.Region.Scenes;
35using OpenSim;
36using libsecondlife;
37using libsecondlife.Packets;
38using Avatar = OpenSim.Region.Scenes.ScenePresence;
39
40
41namespace OpenSim.Region
42{
43
44 /// <summary>
45 /// Processes requests regarding estates. Refer to EstateSettings.cs in OpenSim.Framework. Types for all of the core settings
46 /// </summary>
47 public class EstateManager
48 {
49 private Scene m_world;
50 private RegionInfo m_regInfo;
51
52 public EstateManager(Scene world,RegionInfo reginfo)
53 {
54 m_world = world; //Estate settings found at world.m_regInfo.estateSettings
55 m_regInfo = reginfo;
56 }
57
58 private bool convertParamStringToBool(byte[] field)
59 {
60 string s = Helpers.FieldToUTF8String(field);
61 if (s == "1" || s.ToLower() == "y" || s.ToLower() == "yes" || s.ToLower() == "t" || s.ToLower() == "true")
62 {
63 return true;
64 }
65 return false;
66 }
67
68 public void handleEstateOwnerMessage(EstateOwnerMessagePacket packet, IClientAPI remote_client)
69 {
70 if (remote_client.AgentId == m_regInfo.MasterAvatarAssignedUUID)
71 {
72 switch (Helpers.FieldToUTF8String(packet.MethodData.Method))
73 {
74 case "getinfo":
75 Console.WriteLine("GETINFO Requested");
76 this.sendRegionInfoPacketToAll();
77
78 break;
79 case "setregioninfo":
80 if (packet.ParamList.Length != 9)
81 {
82 OpenSim.Framework.Console.MainLog.Instance.Error("EstateOwnerMessage: SetRegionInfo method has a ParamList of invalid length");
83 }
84 else
85 {
86 m_regInfo.estateSettings.regionFlags = libsecondlife.Simulator.RegionFlags.None;
87
88 if (convertParamStringToBool(packet.ParamList[0].Parameter))
89 {
90 m_regInfo.estateSettings.regionFlags = m_regInfo.estateSettings.regionFlags | libsecondlife.Simulator.RegionFlags.BlockTerraform;
91 }
92
93 if (convertParamStringToBool(packet.ParamList[1].Parameter))
94 {
95 m_regInfo.estateSettings.regionFlags = m_regInfo.estateSettings.regionFlags | libsecondlife.Simulator.RegionFlags.NoFly;
96 }
97
98 if (convertParamStringToBool(packet.ParamList[2].Parameter))
99 {
100 m_regInfo.estateSettings.regionFlags = m_regInfo.estateSettings.regionFlags | libsecondlife.Simulator.RegionFlags.AllowDamage;
101 }
102
103 if (convertParamStringToBool(packet.ParamList[3].Parameter) == false)
104 {
105 m_regInfo.estateSettings.regionFlags = m_regInfo.estateSettings.regionFlags | libsecondlife.Simulator.RegionFlags.BlockLandResell;
106 }
107
108
109 int tempMaxAgents = Convert.ToInt16(Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[4].Parameter)));
110 m_regInfo.estateSettings.maxAgents = (byte)tempMaxAgents;
111
112 float tempObjectBonusFactor = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[5].Parameter));
113 m_regInfo.estateSettings.objectBonusFactor = tempObjectBonusFactor;
114
115 int tempMatureLevel = Convert.ToInt16(Helpers.FieldToUTF8String(packet.ParamList[6].Parameter));
116 m_regInfo.estateSettings.simAccess = (libsecondlife.Simulator.SimAccess)tempMatureLevel;
117
118
119 if (convertParamStringToBool(packet.ParamList[7].Parameter))
120 {
121 m_regInfo.estateSettings.regionFlags = m_regInfo.estateSettings.regionFlags | libsecondlife.Simulator.RegionFlags.RestrictPushObject;
122 }
123
124 if (convertParamStringToBool(packet.ParamList[8].Parameter))
125 {
126 m_regInfo.estateSettings.regionFlags = m_regInfo.estateSettings.regionFlags | libsecondlife.Simulator.RegionFlags.AllowParcelChanges;
127 }
128
129 sendRegionInfoPacketToAll();
130
131 }
132 break;
133 case "texturebase":
134 foreach (EstateOwnerMessagePacket.ParamListBlock block in packet.ParamList)
135 {
136 string s = Helpers.FieldToUTF8String(block.Parameter);
137 string[] splitField = s.Split(' ');
138 if (splitField.Length == 2)
139 {
140 LLUUID tempUUID = new LLUUID(splitField[1]);
141 switch (Convert.ToInt16(splitField[0]))
142 {
143 case 0:
144 m_regInfo.estateSettings.terrainBase0 = tempUUID;
145 break;
146 case 1:
147 m_regInfo.estateSettings.terrainBase1 = tempUUID;
148 break;
149 case 2:
150 m_regInfo.estateSettings.terrainBase2 = tempUUID;
151 break;
152 case 3:
153 m_regInfo.estateSettings.terrainBase3 = tempUUID;
154 break;
155 }
156 }
157 }
158 break;
159 case "texturedetail":
160 foreach (EstateOwnerMessagePacket.ParamListBlock block in packet.ParamList)
161 {
162
163 string s = Helpers.FieldToUTF8String(block.Parameter);
164 string[] splitField = s.Split(' ');
165 if (splitField.Length == 2)
166 {
167 LLUUID tempUUID = new LLUUID(splitField[1]);
168 switch (Convert.ToInt16(splitField[0]))
169 {
170 case 0:
171 m_regInfo.estateSettings.terrainDetail0 = tempUUID;
172 break;
173 case 1:
174 m_regInfo.estateSettings.terrainDetail1 = tempUUID;
175 break;
176 case 2:
177 m_regInfo.estateSettings.terrainDetail2 = tempUUID;
178 break;
179 case 3:
180 m_regInfo.estateSettings.terrainDetail3 = tempUUID;
181 break;
182 }
183 }
184 }
185 break;
186 case "textureheights":
187 foreach (EstateOwnerMessagePacket.ParamListBlock block in packet.ParamList)
188 {
189
190 string s = Helpers.FieldToUTF8String(block.Parameter);
191 string[] splitField = s.Split(' ');
192 if (splitField.Length == 3)
193 {
194
195 float tempHeightLow = (float)Convert.ToDecimal(splitField[1]);
196 float tempHeightHigh = (float)Convert.ToDecimal(splitField[2]);
197
198 switch (Convert.ToInt16(splitField[0]))
199 {
200 case 0:
201 m_regInfo.estateSettings.terrainStartHeight0 = tempHeightLow;
202 m_regInfo.estateSettings.terrainHeightRange0 = tempHeightHigh;
203 break;
204 case 1:
205 m_regInfo.estateSettings.terrainStartHeight1 = tempHeightLow;
206 m_regInfo.estateSettings.terrainHeightRange1 = tempHeightHigh;
207 break;
208 case 2:
209 m_regInfo.estateSettings.terrainStartHeight2 = tempHeightLow;
210 m_regInfo.estateSettings.terrainHeightRange2 = tempHeightHigh;
211 break;
212 case 3:
213 m_regInfo.estateSettings.terrainStartHeight3 = tempHeightLow;
214 m_regInfo.estateSettings.terrainHeightRange3 = tempHeightHigh;
215 break;
216 }
217 }
218 }
219 break;
220 case "texturecommit":
221 sendRegionHandshakeToAll();
222 break;
223 case "setregionterrain":
224 if (packet.ParamList.Length != 9)
225 {
226 OpenSim.Framework.Console.MainLog.Instance.Error("EstateOwnerMessage: SetRegionTerrain method has a ParamList of invalid length");
227 }
228 else
229 {
230 m_regInfo.estateSettings.waterHeight = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[0].Parameter));
231 m_regInfo.estateSettings.terrainRaiseLimit = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[1].Parameter));
232 m_regInfo.estateSettings.terrainLowerLimit = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[2].Parameter));
233 m_regInfo.estateSettings.useFixedSun = this.convertParamStringToBool(packet.ParamList[4].Parameter);
234 m_regInfo.estateSettings.sunHour = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[5].Parameter));
235
236 sendRegionInfoPacketToAll();
237 }
238 break;
239 default:
240 OpenSim.Framework.Console.MainLog.Instance.Error("EstateOwnerMessage: Unknown method requested\n" + packet.ToString());
241 break;
242 }
243 }
244 }
245
246 public void sendRegionInfoPacketToAll()
247 {
248 List<Avatar> avatars = m_world.RequestAvatarList();
249
250 for (int i = 0; i < avatars.Count; i++)
251 {
252 this.sendRegionInfoPacket(avatars[i].ControllingClient);
253 }
254 }
255
256 public void sendRegionHandshakeToAll()
257 {
258 List<Avatar> avatars = m_world.RequestAvatarList();
259
260 for (int i = 0; i < avatars.Count; i++)
261 {
262 this.sendRegionHandshake(avatars[i].ControllingClient);
263 }
264 }
265
266 public void sendRegionInfoPacket(IClientAPI remote_client)
267 {
268 Encoding _enc = System.Text.Encoding.ASCII;
269
270 AgentCircuitData circuitData = remote_client.RequestClientInfo();
271
272 RegionInfoPacket regionInfoPacket = new RegionInfoPacket();
273 regionInfoPacket.AgentData.AgentID = circuitData.AgentID;
274 regionInfoPacket.AgentData.SessionID = circuitData.SessionID;
275 regionInfoPacket.RegionInfo.BillableFactor = m_regInfo.estateSettings.billableFactor;
276 regionInfoPacket.RegionInfo.EstateID = m_regInfo.estateSettings.estateID;
277 regionInfoPacket.RegionInfo.MaxAgents = m_regInfo.estateSettings.maxAgents;
278 regionInfoPacket.RegionInfo.ObjectBonusFactor = m_regInfo.estateSettings.objectBonusFactor;
279 regionInfoPacket.RegionInfo.ParentEstateID = m_regInfo.estateSettings.parentEstateID;
280 regionInfoPacket.RegionInfo.PricePerMeter = m_regInfo.estateSettings.pricePerMeter;
281 regionInfoPacket.RegionInfo.RedirectGridX = m_regInfo.estateSettings.redirectGridX;
282 regionInfoPacket.RegionInfo.RedirectGridY = m_regInfo.estateSettings.redirectGridY;
283 regionInfoPacket.RegionInfo.RegionFlags = (uint)m_regInfo.estateSettings.regionFlags;
284 regionInfoPacket.RegionInfo.SimAccess = (byte)m_regInfo.estateSettings.simAccess;
285 regionInfoPacket.RegionInfo.SimName = _enc.GetBytes( m_regInfo.RegionName);
286 regionInfoPacket.RegionInfo.SunHour = m_regInfo.estateSettings.sunHour;
287 regionInfoPacket.RegionInfo.TerrainLowerLimit = m_regInfo.estateSettings.terrainLowerLimit;
288 regionInfoPacket.RegionInfo.TerrainRaiseLimit = m_regInfo.estateSettings.terrainRaiseLimit;
289 regionInfoPacket.RegionInfo.UseEstateSun = !m_regInfo.estateSettings.useFixedSun;
290 regionInfoPacket.RegionInfo.WaterHeight = m_regInfo.estateSettings.waterHeight;
291
292 remote_client.OutPacket(regionInfoPacket);
293 }
294
295 public void sendRegionHandshake(IClientAPI remoteClient)
296 {
297 remoteClient.SendRegionHandshake(m_regInfo);
298 }
299
300 }
301}
diff --git a/OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj b/OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj
new file mode 100644
index 0000000..7811a55
--- /dev/null
+++ b/OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj
@@ -0,0 +1,211 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{C0DAB338-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Simulation</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Simulation</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Axiom.MathLib.dll" >
62 <HintPath>..\..\..\bin\Axiom.MathLib.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="Db4objects.Db4o.dll" >
66 <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="libsecondlife.dll" >
70 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System" >
74 <HintPath>System.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="XMLRPC.dll" >
82 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 </ItemGroup>
86 <ItemGroup>
87 <ProjectReference Include="..\..\Framework\General\OpenSim.Framework.csproj">
88 <Name>OpenSim.Framework</Name>
89 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
90 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
91 <Private>False</Private>
92 </ProjectReference>
93 <ProjectReference Include="..\..\Framework\Communications\OpenSim.Framework.Communications.csproj">
94 <Name>OpenSim.Framework.Communications</Name>
95 <Project>{CB52B7E7-0000-0000-0000-000000000000}</Project>
96 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
97 <Private>False</Private>
98 </ProjectReference>
99 <ProjectReference Include="..\..\Framework\Console\OpenSim.Framework.Console.csproj">
100 <Name>OpenSim.Framework.Console</Name>
101 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
102 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
103 <Private>False</Private>
104 </ProjectReference>
105 <ProjectReference Include="..\..\Framework\GenericConfig\Xml\OpenSim.Framework.GenericConfig.Xml.csproj">
106 <Name>OpenSim.Framework.GenericConfig.Xml</Name>
107 <Project>{C74E4A30-0000-0000-0000-000000000000}</Project>
108 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
109 <Private>False</Private>
110 </ProjectReference>
111 <ProjectReference Include="..\..\Framework\Servers\OpenSim.Framework.Servers.csproj">
112 <Name>OpenSim.Framework.Servers</Name>
113 <Project>{2CC71860-0000-0000-0000-000000000000}</Project>
114 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
115 <Private>False</Private>
116 </ProjectReference>
117 <ProjectReference Include="..\Caches\OpenSim.Region.Caches.csproj">
118 <Name>OpenSim.Region.Caches</Name>
119 <Project>{61FCCDB3-0000-0000-0000-000000000000}</Project>
120 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
121 <Private>False</Private>
122 </ProjectReference>
123 <ProjectReference Include="..\Physics\Manager\OpenSim.Region.Physics.Manager.csproj">
124 <Name>OpenSim.Region.Physics.Manager</Name>
125 <Project>{F4FF31EB-0000-0000-0000-000000000000}</Project>
126 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
127 <Private>False</Private>
128 </ProjectReference>
129 <ProjectReference Include="..\Terrain.BasicTerrain\OpenSim.Region.Terrain.BasicTerrain.csproj">
130 <Name>OpenSim.Region.Terrain.BasicTerrain</Name>
131 <Project>{C9E0F891-0000-0000-0000-000000000000}</Project>
132 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
133 <Private>False</Private>
134 </ProjectReference>
135 </ItemGroup>
136 <ItemGroup>
137 <Compile Include="Caps.cs">
138 <SubType>Code</SubType>
139 </Compile>
140 <Compile Include="EstateManager.cs">
141 <SubType>Code</SubType>
142 </Compile>
143 <Compile Include="ParcelManager.cs">
144 <SubType>Code</SubType>
145 </Compile>
146 <Compile Include="RegionManager.cs">
147 <SubType>Code</SubType>
148 </Compile>
149 <Compile Include="Scenes\Entity.cs">
150 <SubType>Code</SubType>
151 </Compile>
152 <Compile Include="Scenes\IScenePresenceBody.cs">
153 <SubType>Code</SubType>
154 </Compile>
155 <Compile Include="Scenes\Primitive.cs">
156 <SubType>Code</SubType>
157 </Compile>
158 <Compile Include="Scenes\Scene.cs">
159 <SubType>Code</SubType>
160 </Compile>
161 <Compile Include="Scenes\Scene.PacketHandlers.cs">
162 <SubType>Code</SubType>
163 </Compile>
164 <Compile Include="Scenes\Scene.Scripting.cs">
165 <SubType>Code</SubType>
166 </Compile>
167 <Compile Include="Scenes\SceneBase.cs">
168 <SubType>Code</SubType>
169 </Compile>
170 <Compile Include="Scenes\SceneEvents.cs">
171 <SubType>Code</SubType>
172 </Compile>
173 <Compile Include="Scenes\SceneObject.cs">
174 <SubType>Code</SubType>
175 </Compile>
176 <Compile Include="Scenes\ScenePresence.Animations.cs">
177 <SubType>Code</SubType>
178 </Compile>
179 <Compile Include="Scenes\ScenePresence.Body.cs">
180 <SubType>Code</SubType>
181 </Compile>
182 <Compile Include="Scenes\ScenePresence.cs">
183 <SubType>Code</SubType>
184 </Compile>
185 <Compile Include="Scenes\scripting\IScriptContext.cs">
186 <SubType>Code</SubType>
187 </Compile>
188 <Compile Include="Scenes\scripting\IScriptEntity.cs">
189 <SubType>Code</SubType>
190 </Compile>
191 <Compile Include="Scenes\scripting\IScriptHandler.cs">
192 <SubType>Code</SubType>
193 </Compile>
194 <Compile Include="Scenes\scripting\Script.cs">
195 <SubType>Code</SubType>
196 </Compile>
197 <Compile Include="Scenes\scripting\ScriptFactory.cs">
198 <SubType>Code</SubType>
199 </Compile>
200 <Compile Include="Scenes\scripting\Scripts\FollowRandomAvatar.cs">
201 <SubType>Code</SubType>
202 </Compile>
203 </ItemGroup>
204 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
205 <PropertyGroup>
206 <PreBuildEvent>
207 </PreBuildEvent>
208 <PostBuildEvent>
209 </PostBuildEvent>
210 </PropertyGroup>
211</Project>
diff --git a/OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj.user b/OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Simulation/OpenSim.Region.Simulation.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Simulation/ParcelManager.cs b/OpenSim/Region/Simulation/ParcelManager.cs
new file mode 100644
index 0000000..d15d77d
--- /dev/null
+++ b/OpenSim/Region/Simulation/ParcelManager.cs
@@ -0,0 +1,892 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using libsecondlife.Packets;
33using OpenSim.Framework.Interfaces;
34using OpenSim.Framework.Types;
35using OpenSim.Region.Scenes;
36using Avatar = OpenSim.Region.Scenes.ScenePresence;
37
38namespace OpenSim.Region
39{
40
41
42 #region ParcelManager Class
43 /// <summary>
44 /// Handles Parcel objects and operations requiring information from other Parcel objects (divide, join, etc)
45 /// </summary>
46 public class ParcelManager : OpenSim.Framework.Interfaces.ILocalStorageParcelReceiver
47 {
48
49 #region Constants
50 //Parcel types set with flags in ParcelOverlay.
51 //Only one of these can be used.
52 public const byte PARCEL_TYPE_PUBLIC = (byte)0; //Equals 00000000
53 public const byte PARCEL_TYPE_OWNED_BY_OTHER = (byte)1; //Equals 00000001
54 public const byte PARCEL_TYPE_OWNED_BY_GROUP = (byte)2; //Equals 00000010
55 public const byte PARCEL_TYPE_OWNED_BY_REQUESTER = (byte)3; //Equals 00000011
56 public const byte PARCEL_TYPE_IS_FOR_SALE = (byte)4; //Equals 00000100
57 public const byte PARCEL_TYPE_IS_BEING_AUCTIONED = (byte)5; //Equals 00000101
58
59
60 //Flags that when set, a border on the given side will be placed
61 //NOTE: North and East is assumable by the west and south sides (if parcel to east has a west border, then I have an east border; etc)
62 //This took forever to figure out -- jeesh. /blame LL for even having to send these
63 public const byte PARCEL_FLAG_PROPERTY_BORDER_WEST = (byte)64; //Equals 01000000
64 public const byte PARCEL_FLAG_PROPERTY_BORDER_SOUTH = (byte)128; //Equals 10000000
65
66 //RequestResults (I think these are right, they seem to work):
67 public const int PARCEL_RESULT_ONE_PARCEL = 0; // The request they made contained only one parcel
68 public const int PARCEL_RESULT_MULTIPLE_PARCELS = 1; // The request they made contained more than one parcel
69
70 //These are other constants. Yay!
71 public const int START_PARCEL_LOCAL_ID = 1;
72 #endregion
73
74 #region Member Variables
75 public Dictionary<int, Parcel> parcelList = new Dictionary<int, Parcel>();
76 private int lastParcelLocalID = START_PARCEL_LOCAL_ID - 1;
77 private int[,] parcelIDList = new int[64, 64];
78
79 private Scene m_world;
80 private RegionInfo m_regInfo;
81
82 #endregion
83
84 #region Constructors
85 public ParcelManager(Scene world, RegionInfo reginfo)
86 {
87
88 m_world = world;
89 m_regInfo = reginfo;
90 parcelIDList.Initialize();
91
92 }
93 #endregion
94
95 #region Member Functions
96
97 #region Parcel From Storage Functions
98 public void ParcelFromStorage(ParcelData data)
99 {
100 Parcel new_parcel = new Parcel(data.ownerID, data.isGroupOwned, m_world);
101 new_parcel.parcelData = data.Copy();
102 new_parcel.setParcelBitmapFromByteArray();
103 addParcel(new_parcel);
104
105 }
106
107 public void NoParcelDataFromStorage()
108 {
109 resetSimParcels();
110 }
111 #endregion
112
113 #region Parcel Add/Remove/Get/Create
114 /// <summary>
115 /// Creates a basic Parcel object without an owner (a zeroed key)
116 /// </summary>
117 /// <returns></returns>
118 public Parcel createBaseParcel()
119 {
120 return new Parcel(new LLUUID(), false, m_world);
121 }
122
123 /// <summary>
124 /// Adds a parcel to the stored list and adds them to the parcelIDList to what they own
125 /// </summary>
126 /// <param name="new_parcel">The parcel being added</param>
127 public void addParcel(Parcel new_parcel)
128 {
129 lastParcelLocalID++;
130 new_parcel.parcelData.localID = lastParcelLocalID;
131 parcelList.Add(lastParcelLocalID, new_parcel.Copy());
132
133
134 bool[,] parcelBitmap = new_parcel.getParcelBitmap();
135 int x, y;
136 for (x = 0; x < 64; x++)
137 {
138 for (y = 0; y < 64; y++)
139 {
140 if (parcelBitmap[x, y])
141 {
142 parcelIDList[x, y] = lastParcelLocalID;
143 }
144 }
145 }
146 parcelList[lastParcelLocalID].forceUpdateParcelInfo();
147
148
149 }
150 /// <summary>
151 /// Removes a parcel from the list. Will not remove if local_id is still owning an area in parcelIDList
152 /// </summary>
153 /// <param name="local_id">Parcel.localID of the parcel to remove.</param>
154 public void removeParcel(int local_id)
155 {
156 int x, y;
157 for (x = 0; x < 64; x++)
158 {
159 for (y = 0; y < 64; y++)
160 {
161 if (parcelIDList[x, y] == local_id)
162 {
163 throw new Exception("Could not remove parcel. Still being used at " + x + ", " + y);
164 }
165 }
166 }
167 m_world.localStorage.RemoveParcel(parcelList[local_id].parcelData);
168 parcelList.Remove(local_id);
169 }
170
171 private void performFinalParcelJoin(Parcel master, Parcel slave)
172 {
173 int x, y;
174 bool[,] parcelBitmapSlave = slave.getParcelBitmap();
175 for (x = 0; x < 64; x++)
176 {
177 for (y = 0; y < 64; y++)
178 {
179 if (parcelBitmapSlave[x, y])
180 {
181 parcelIDList[x, y] = master.parcelData.localID;
182 }
183 }
184 }
185 removeParcel(slave.parcelData.localID);
186 }
187 /// <summary>
188 /// Get the parcel at the specified point
189 /// </summary>
190 /// <param name="x">Value between 0 - 256 on the x axis of the point</param>
191 /// <param name="y">Value between 0 - 256 on the y axis of the point</param>
192 /// <returns>Parcel at the point supplied</returns>
193 public Parcel getParcel(int x, int y)
194 {
195 if (x > 256 || y > 256 || x < 0 || y < 0)
196 {
197 throw new Exception("Error: Parcel not found at point " + x + ", " + y);
198 }
199 else
200 {
201 return parcelList[parcelIDList[x / 4, y / 4]];
202 }
203
204 }
205 #endregion
206
207 #region Parcel Modification
208 /// <summary>
209 /// Subdivides a parcel
210 /// </summary>
211 /// <param name="start_x">West Point</param>
212 /// <param name="start_y">South Point</param>
213 /// <param name="end_x">East Point</param>
214 /// <param name="end_y">North Point</param>
215 /// <param name="attempting_user_id">LLUUID of user who is trying to subdivide</param>
216 /// <returns>Returns true if successful</returns>
217 private bool subdivide(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id)
218 {
219 //First, lets loop through the points and make sure they are all in the same parcel
220 //Get the parcel at start
221 Parcel startParcel = getParcel(start_x, start_y);
222 if (startParcel == null) return false; //No such parcel at the beginning
223
224 //Loop through the points
225 try
226 {
227 int totalX = end_x - start_x;
228 int totalY = end_y - start_y;
229 int x, y;
230 for (y = 0; y < totalY; y++)
231 {
232 for (x = 0; x < totalX; x++)
233 {
234 Parcel tempParcel = getParcel(start_x + x, start_y + y);
235 if (tempParcel == null) return false; //No such parcel at that point
236 if (tempParcel != startParcel) return false; //Subdividing over 2 parcels; no-no
237 }
238 }
239 }
240 catch (Exception)
241 {
242 return false; //Exception. For now, lets skip subdivision
243 }
244
245 //If we are still here, then they are subdividing within one parcel
246 //Check owner
247 if (startParcel.parcelData.ownerID != attempting_user_id)
248 {
249 return false; //They cant do this!
250 }
251
252 //Lets create a new parcel with bitmap activated at that point (keeping the old parcels info)
253 Parcel newParcel = startParcel.Copy();
254 newParcel.parcelData.parcelName = "Subdivision of " + newParcel.parcelData.parcelName;
255 newParcel.parcelData.globalID = LLUUID.Random();
256
257 newParcel.setParcelBitmap(Parcel.getSquareParcelBitmap(start_x, start_y, end_x, end_y));
258
259 //Now, lets set the subdivision area of the original to false
260 int startParcelIndex = startParcel.parcelData.localID;
261 parcelList[startParcelIndex].setParcelBitmap(Parcel.modifyParcelBitmapSquare(startParcel.getParcelBitmap(), start_x, start_y, end_x, end_y, false));
262 parcelList[startParcelIndex].forceUpdateParcelInfo();
263
264
265 //Now add the new parcel
266 addParcel(newParcel);
267
268
269
270
271
272 return true;
273 }
274 /// <summary>
275 /// Join 2 parcels together
276 /// </summary>
277 /// <param name="start_x">x value in first parcel</param>
278 /// <param name="start_y">y value in first parcel</param>
279 /// <param name="end_x">x value in second parcel</param>
280 /// <param name="end_y">y value in second parcel</param>
281 /// <param name="attempting_user_id">LLUUID of the avatar trying to join the parcels</param>
282 /// <returns>Returns true if successful</returns>
283 private bool join(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id)
284 {
285 end_x -= 4;
286 end_y -= 4;
287
288 //NOTE: The following only connects the parcels in each corner and not all the parcels that are within the selection box!
289 //This should be fixed later -- somewhat "incomplete code" --Ming
290 Parcel startParcel, endParcel;
291
292 try
293 {
294 startParcel = getParcel(start_x, start_y);
295 endParcel = getParcel(end_x, end_y);
296 }
297 catch (Exception)
298 {
299 return false; //Error occured when trying to get the start and end parcels
300 }
301 if (startParcel == endParcel)
302 {
303 return false; //Subdivision of the same parcel is not allowed
304 }
305
306 //Check the parcel owners:
307 if (startParcel.parcelData.ownerID != endParcel.parcelData.ownerID)
308 {
309 return false;
310 }
311 if (startParcel.parcelData.ownerID != attempting_user_id)
312 {
313 //TODO: Group editing stuff. Avatar owner support for now
314 return false;
315 }
316
317 //Same owners! Lets join them
318 //Merge them to startParcel
319 parcelList[startParcel.parcelData.localID].setParcelBitmap(Parcel.mergeParcelBitmaps(startParcel.getParcelBitmap(), endParcel.getParcelBitmap()));
320 performFinalParcelJoin(startParcel, endParcel);
321
322 return true;
323
324
325
326 }
327 #endregion
328
329 #region Parcel Updating
330 /// <summary>
331 /// Where we send the ParcelOverlay packet to the client
332 /// </summary>
333 /// <param name="remote_client">The object representing the client</param>
334 public void sendParcelOverlay(IClientAPI remote_client)
335 {
336 const int PARCEL_BLOCKS_PER_PACKET = 1024;
337 int x, y = 0;
338 byte[] byteArray = new byte[PARCEL_BLOCKS_PER_PACKET];
339 int byteArrayCount = 0;
340 int sequenceID = 0;
341 ParcelOverlayPacket packet;
342
343 for (y = 0; y < 64; y++)
344 {
345 for (x = 0; x < 64; x++)
346 {
347 byte tempByte = (byte)0; //This represents the byte for the current 4x4
348 Parcel currentParcelBlock = getParcel(x * 4, y * 4);
349
350 if (currentParcelBlock.parcelData.ownerID == remote_client.AgentId)
351 {
352 //Owner Flag
353 tempByte = Convert.ToByte(tempByte | PARCEL_TYPE_OWNED_BY_REQUESTER);
354 }
355 else if (currentParcelBlock.parcelData.salePrice > 0 && (currentParcelBlock.parcelData.authBuyerID == LLUUID.Zero || currentParcelBlock.parcelData.authBuyerID == remote_client.AgentId))
356 {
357 //Sale Flag
358 tempByte = Convert.ToByte(tempByte | PARCEL_TYPE_IS_FOR_SALE);
359 }
360 else if (currentParcelBlock.parcelData.ownerID == LLUUID.Zero)
361 {
362 //Public Flag
363 tempByte = Convert.ToByte(tempByte | PARCEL_TYPE_PUBLIC);
364 }
365 else
366 {
367 //Other Flag
368 tempByte = Convert.ToByte(tempByte | PARCEL_TYPE_OWNED_BY_OTHER);
369 }
370
371
372 //Now for border control
373 if (x == 0)
374 {
375 tempByte = Convert.ToByte(tempByte | PARCEL_FLAG_PROPERTY_BORDER_WEST);
376 }
377 else if (getParcel((x - 1) * 4, y * 4) != currentParcelBlock)
378 {
379 tempByte = Convert.ToByte(tempByte | PARCEL_FLAG_PROPERTY_BORDER_WEST);
380 }
381
382 if (y == 0)
383 {
384 tempByte = Convert.ToByte(tempByte | PARCEL_FLAG_PROPERTY_BORDER_SOUTH);
385 }
386 else if (getParcel(x * 4, (y - 1) * 4) != currentParcelBlock)
387 {
388 tempByte = Convert.ToByte(tempByte | PARCEL_FLAG_PROPERTY_BORDER_SOUTH);
389 }
390
391 byteArray[byteArrayCount] = tempByte;
392 byteArrayCount++;
393 if (byteArrayCount >= PARCEL_BLOCKS_PER_PACKET)
394 {
395 byteArrayCount = 0;
396 packet = new ParcelOverlayPacket();
397 packet.ParcelData.Data = byteArray;
398 packet.ParcelData.SequenceID = sequenceID;
399 remote_client.OutPacket((Packet)packet);
400 sequenceID++;
401 byteArray = new byte[PARCEL_BLOCKS_PER_PACKET];
402 }
403 }
404 }
405
406 packet = new ParcelOverlayPacket();
407 packet.ParcelData.Data = byteArray;
408 packet.ParcelData.SequenceID = sequenceID; //Eh?
409 remote_client.OutPacket((Packet)packet);
410 }
411
412 public void handleParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client)
413 {
414 //Get the parcels within the bounds
415 List<Parcel> temp = new List<Parcel>();
416 int x, y, i;
417 int inc_x = end_x - start_x;
418 int inc_y = end_y - start_y;
419 for (x = 0; x < inc_x; x++)
420 {
421 for (y = 0; y < inc_y; y++)
422 {
423 OpenSim.Region.Parcel currentParcel = getParcel(start_x + x, start_y + y);
424 if (!temp.Contains(currentParcel))
425 {
426 currentParcel.forceUpdateParcelInfo();
427 temp.Add(currentParcel);
428 }
429 }
430 }
431
432 int requestResult = ParcelManager.PARCEL_RESULT_ONE_PARCEL;
433 if (temp.Count > 1)
434 {
435 requestResult = ParcelManager.PARCEL_RESULT_MULTIPLE_PARCELS;
436 }
437
438 for (i = 0; i < temp.Count; i++)
439 {
440 temp[i].sendParcelProperties(sequence_id, snap_selection, requestResult, remote_client);
441 }
442
443
444 sendParcelOverlay(remote_client);
445 }
446
447 public void handleParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client)
448 {
449 if (parcelList.ContainsKey(packet.ParcelData.LocalID))
450 {
451 parcelList[packet.ParcelData.LocalID].updateParcelProperties(packet, remote_client);
452 }
453 }
454 public void handleParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client)
455 {
456 subdivide(west, south, east, north, remote_client.AgentId);
457 }
458 public void handleParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client)
459 {
460 join(west, south, east, north, remote_client.AgentId);
461
462 }
463 #endregion
464
465 /// <summary>
466 /// Resets the sim to the default parcel (full sim parcel owned by the default user)
467 /// </summary>
468 public void resetSimParcels()
469 {
470 //Remove all the parcels in the sim and add a blank, full sim parcel set to public
471 parcelList.Clear();
472 lastParcelLocalID = START_PARCEL_LOCAL_ID - 1;
473 parcelIDList.Initialize();
474
475 Parcel fullSimParcel = new Parcel(LLUUID.Zero, false, m_world);
476
477 fullSimParcel.setParcelBitmap(Parcel.getSquareParcelBitmap(0, 0, 256, 256));
478 fullSimParcel.parcelData.parcelName = "Your Sim Parcel";
479 fullSimParcel.parcelData.parcelDesc = "";
480
481 fullSimParcel.parcelData.ownerID = m_regInfo.MasterAvatarAssignedUUID;
482 fullSimParcel.parcelData.salePrice = 1;
483 fullSimParcel.parcelData.parcelFlags = libsecondlife.Parcel.ParcelFlags.ForSale;
484 fullSimParcel.parcelData.parcelStatus = libsecondlife.Parcel.ParcelStatus.Leased;
485
486 addParcel(fullSimParcel);
487
488 }
489 #endregion
490 }
491 #endregion
492
493
494 #region Parcel Class
495 /// <summary>
496 /// Keeps track of a specific parcel's information
497 /// </summary>
498 public class Parcel
499 {
500 #region Member Variables
501 public ParcelData parcelData = new ParcelData();
502 public Scene m_world;
503
504 private bool[,] parcelBitmap = new bool[64, 64];
505
506 #endregion
507
508
509 #region Constructors
510 public Parcel(LLUUID owner_id, bool is_group_owned, Scene world)
511 {
512 m_world = world;
513 parcelData.ownerID = owner_id;
514 parcelData.isGroupOwned = is_group_owned;
515
516 }
517 #endregion
518
519
520 #region Member Functions
521
522 #region General Functions
523 /// <summary>
524 /// Checks to see if this parcel contains a point
525 /// </summary>
526 /// <param name="x"></param>
527 /// <param name="y"></param>
528 /// <returns>Returns true if the parcel contains the specified point</returns>
529 public bool containsPoint(int x, int y)
530 {
531 if (x >= 0 && y >= 0 && x <= 256 && x <= 256)
532 {
533 return (parcelBitmap[x / 4, y / 4] == true);
534 }
535 else
536 {
537 return false;
538 }
539 }
540
541 public Parcel Copy()
542 {
543 Parcel newParcel = new Parcel(this.parcelData.ownerID, this.parcelData.isGroupOwned, m_world);
544
545 //Place all new variables here!
546 newParcel.parcelBitmap = (bool[,])(this.parcelBitmap.Clone());
547 newParcel.parcelData = parcelData.Copy();
548
549 return newParcel;
550 }
551
552 #endregion
553
554
555 #region Packet Request Handling
556 /// <summary>
557 /// Sends parcel properties as requested
558 /// </summary>
559 /// <param name="sequence_id">ID sent by client for them to keep track of</param>
560 /// <param name="snap_selection">Bool sent by client for them to use</param>
561 /// <param name="remote_client">Object representing the client</param>
562 public void sendParcelProperties(int sequence_id, bool snap_selection, int request_result, IClientAPI remote_client)
563 {
564
565 ParcelPropertiesPacket updatePacket = new ParcelPropertiesPacket();
566 updatePacket.ParcelData.AABBMax = parcelData.AABBMax;
567 updatePacket.ParcelData.AABBMin = parcelData.AABBMin;
568 updatePacket.ParcelData.Area = parcelData.area;
569 updatePacket.ParcelData.AuctionID = parcelData.auctionID;
570 updatePacket.ParcelData.AuthBuyerID = parcelData.authBuyerID; //unemplemented
571
572 updatePacket.ParcelData.Bitmap = parcelData.parcelBitmapByteArray;
573
574 updatePacket.ParcelData.Desc = libsecondlife.Helpers.StringToField(parcelData.parcelDesc);
575 updatePacket.ParcelData.Category = (byte)parcelData.category;
576 updatePacket.ParcelData.ClaimDate = parcelData.claimDate;
577 updatePacket.ParcelData.ClaimPrice = parcelData.claimPrice;
578 updatePacket.ParcelData.GroupID = parcelData.groupID;
579 updatePacket.ParcelData.GroupPrims = parcelData.groupPrims;
580 updatePacket.ParcelData.IsGroupOwned = parcelData.isGroupOwned;
581 updatePacket.ParcelData.LandingType = (byte)parcelData.landingType;
582 updatePacket.ParcelData.LocalID = parcelData.localID;
583 updatePacket.ParcelData.MaxPrims = 1000; //unemplemented
584 updatePacket.ParcelData.MediaAutoScale = parcelData.mediaAutoScale;
585 updatePacket.ParcelData.MediaID = parcelData.mediaID;
586 updatePacket.ParcelData.MediaURL = Helpers.StringToField(parcelData.mediaURL);
587 updatePacket.ParcelData.MusicURL = Helpers.StringToField(parcelData.musicURL);
588 updatePacket.ParcelData.Name = Helpers.StringToField(parcelData.parcelName);
589 updatePacket.ParcelData.OtherCleanTime = 0; //unemplemented
590 updatePacket.ParcelData.OtherCount = 0; //unemplemented
591 updatePacket.ParcelData.OtherPrims = 0; //unemplented
592 updatePacket.ParcelData.OwnerID = parcelData.ownerID;
593 updatePacket.ParcelData.OwnerPrims = 0; //unemplemented
594 updatePacket.ParcelData.ParcelFlags = (uint)parcelData.parcelFlags; //unemplemented
595 updatePacket.ParcelData.ParcelPrimBonus = (float)1.0; //unemplemented
596 updatePacket.ParcelData.PassHours = parcelData.passHours;
597 updatePacket.ParcelData.PassPrice = parcelData.passPrice;
598 updatePacket.ParcelData.PublicCount = 0; //unemplemented
599 updatePacket.ParcelData.RegionDenyAnonymous = false; //unemplemented
600 updatePacket.ParcelData.RegionDenyIdentified = false; //unemplemented
601 updatePacket.ParcelData.RegionDenyTransacted = false; //unemplemented
602 updatePacket.ParcelData.RegionPushOverride = true; //unemplemented
603 updatePacket.ParcelData.RentPrice = 0; //??
604 updatePacket.ParcelData.RequestResult = request_result;
605 updatePacket.ParcelData.SalePrice = parcelData.salePrice; //unemplemented
606 updatePacket.ParcelData.SelectedPrims = 0; //unemeplemented
607 updatePacket.ParcelData.SelfCount = 0;//unemplemented
608 updatePacket.ParcelData.SequenceID = sequence_id;
609 updatePacket.ParcelData.SimWideMaxPrims = 15000; //unemplemented
610 updatePacket.ParcelData.SimWideTotalPrims = 0; //unemplemented
611 updatePacket.ParcelData.SnapSelection = snap_selection;
612 updatePacket.ParcelData.SnapshotID = parcelData.snapshotID;
613 updatePacket.ParcelData.Status = (byte)parcelData.parcelStatus;
614 updatePacket.ParcelData.TotalPrims = 0; //unemplemented
615 updatePacket.ParcelData.UserLocation = parcelData.userLocation;
616 updatePacket.ParcelData.UserLookAt = parcelData.userLookAt;
617 remote_client.OutPacket((Packet)updatePacket);
618 }
619
620 public void updateParcelProperties(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client)
621 {
622 if (remote_client.AgentId == parcelData.ownerID)
623 {
624 //Needs later group support
625 parcelData.authBuyerID = packet.ParcelData.AuthBuyerID;
626 parcelData.category = (libsecondlife.Parcel.ParcelCategory)packet.ParcelData.Category;
627 parcelData.parcelDesc = Helpers.FieldToUTF8String(packet.ParcelData.Desc);
628 parcelData.groupID = packet.ParcelData.GroupID;
629 parcelData.landingType = packet.ParcelData.LandingType;
630 parcelData.mediaAutoScale = packet.ParcelData.MediaAutoScale;
631 parcelData.mediaID = packet.ParcelData.MediaID;
632 parcelData.mediaURL = Helpers.FieldToUTF8String(packet.ParcelData.MediaURL);
633 parcelData.musicURL = Helpers.FieldToUTF8String(packet.ParcelData.MusicURL);
634 parcelData.parcelName = libsecondlife.Helpers.FieldToUTF8String(packet.ParcelData.Name);
635 parcelData.parcelFlags = (libsecondlife.Parcel.ParcelFlags)packet.ParcelData.ParcelFlags;
636 parcelData.passHours = packet.ParcelData.PassHours;
637 parcelData.passPrice = packet.ParcelData.PassPrice;
638 parcelData.salePrice = packet.ParcelData.SalePrice;
639 parcelData.snapshotID = packet.ParcelData.SnapshotID;
640 parcelData.userLocation = packet.ParcelData.UserLocation;
641 parcelData.userLookAt = packet.ParcelData.UserLookAt;
642
643 List<Avatar> avatars = m_world.RequestAvatarList();
644
645 for (int i = 0; i < avatars.Count; i++)
646 {
647 Parcel over = m_world.parcelManager.getParcel((int)Math.Round(avatars[i].Pos.X), (int)Math.Round(avatars[i].Pos.Y));
648 if (over == this)
649 {
650 sendParcelProperties(0, false, 0, avatars[i].ControllingClient);
651 }
652 }
653
654 }
655 }
656 #endregion
657
658
659 #region Update Functions
660 /// <summary>
661 /// Updates the AABBMin and AABBMax values after area/shape modification of parcel
662 /// </summary>
663 private void updateAABBAndAreaValues()
664 {
665 int min_x = 64;
666 int min_y = 64;
667 int max_x = 0;
668 int max_y = 0;
669 int tempArea = 0;
670 int x, y;
671 for (x = 0; x < 64; x++)
672 {
673 for (y = 0; y < 64; y++)
674 {
675 if (parcelBitmap[x, y] == true)
676 {
677 if (min_x > x) min_x = x;
678 if (min_y > y) min_y = y;
679 if (max_x < x) max_x = x;
680 if (max_y < y) max_y = y;
681 tempArea += 16; //16sqm parcel
682 }
683 }
684 }
685 parcelData.AABBMin = new LLVector3((float)(min_x * 4), (float)(min_y * 4), m_world.Terrain[(min_x * 4), (min_y * 4)]);
686 parcelData.AABBMax = new LLVector3((float)(max_x * 4), (float)(max_y * 4), m_world.Terrain[(max_x * 4), (max_y * 4)]);
687 parcelData.area = tempArea;
688 }
689
690 public void updateParcelBitmapByteArray()
691 {
692 parcelData.parcelBitmapByteArray = convertParcelBitmapToBytes();
693 }
694
695 /// <summary>
696 /// Update all settings in parcel such as area, bitmap byte array, etc
697 /// </summary>
698 public void forceUpdateParcelInfo()
699 {
700 this.updateAABBAndAreaValues();
701 this.updateParcelBitmapByteArray();
702 }
703
704 public void setParcelBitmapFromByteArray()
705 {
706 parcelBitmap = convertBytesToParcelBitmap();
707 }
708 #endregion
709
710
711 #region Parcel Bitmap Functions
712 /// <summary>
713 /// Sets the parcel's bitmap manually
714 /// </summary>
715 /// <param name="bitmap">64x64 block representing where this parcel is on a map</param>
716 public void setParcelBitmap(bool[,] bitmap)
717 {
718 if (bitmap.GetLength(0) != 64 || bitmap.GetLength(1) != 64 || bitmap.Rank != 2)
719 {
720 //Throw an exception - The bitmap is not 64x64
721 throw new Exception("Error: Invalid Parcel Bitmap");
722 }
723 else
724 {
725 //Valid: Lets set it
726 parcelBitmap = bitmap;
727 forceUpdateParcelInfo();
728
729 }
730 }
731 /// <summary>
732 /// Gets the parcels bitmap manually
733 /// </summary>
734 /// <returns></returns>
735 public bool[,] getParcelBitmap()
736 {
737 return parcelBitmap;
738 }
739 /// <summary>
740 /// Converts the parcel bitmap to a packet friendly byte array
741 /// </summary>
742 /// <returns></returns>
743 private byte[] convertParcelBitmapToBytes()
744 {
745 byte[] tempConvertArr = new byte[512];
746 byte tempByte = 0;
747 int x, y, i, byteNum = 0;
748 i = 0;
749 for (y = 0; y < 64; y++)
750 {
751 for (x = 0; x < 64; x++)
752 {
753 tempByte = Convert.ToByte(tempByte | Convert.ToByte(parcelBitmap[x, y]) << (i++ % 8));
754 if (i % 8 == 0)
755 {
756 tempConvertArr[byteNum] = tempByte;
757 tempByte = (byte)0;
758 i = 0;
759 byteNum++;
760 }
761 }
762 }
763 return tempConvertArr;
764 }
765
766 private bool[,] convertBytesToParcelBitmap()
767 {
768 bool[,] tempConvertMap = new bool[64, 64];
769 tempConvertMap.Initialize();
770 byte tempByte = 0;
771 int x = 0, y = 0, i = 0, bitNum = 0;
772 for (i = 0; i < 512; i++)
773 {
774 tempByte = parcelData.parcelBitmapByteArray[i];
775 for (bitNum = 0; bitNum < 8; bitNum++)
776 {
777 bool bit = Convert.ToBoolean(Convert.ToByte(tempByte >> bitNum) & (byte)1);
778 tempConvertMap[x, y] = bit;
779 x++;
780 if (x > 63)
781 {
782 x = 0;
783 y++;
784 }
785
786 }
787
788 }
789 return tempConvertMap;
790 }
791 /// <summary>
792 /// Full sim parcel creation
793 /// </summary>
794 /// <returns></returns>
795 public static bool[,] basicFullRegionParcelBitmap()
796 {
797 return getSquareParcelBitmap(0, 0, 256, 256);
798 }
799
800 /// <summary>
801 /// Used to modify the bitmap between the x and y points. Points use 64 scale
802 /// </summary>
803 /// <param name="start_x"></param>
804 /// <param name="start_y"></param>
805 /// <param name="end_x"></param>
806 /// <param name="end_y"></param>
807 /// <returns></returns>
808 public static bool[,] getSquareParcelBitmap(int start_x, int start_y, int end_x, int end_y)
809 {
810
811 bool[,] tempBitmap = new bool[64, 64];
812 tempBitmap.Initialize();
813
814 tempBitmap = modifyParcelBitmapSquare(tempBitmap, start_x, start_y, end_x, end_y, true);
815 return tempBitmap;
816 }
817
818 /// <summary>
819 /// Change a parcel's bitmap at within a square and set those points to a specific value
820 /// </summary>
821 /// <param name="parcel_bitmap"></param>
822 /// <param name="start_x"></param>
823 /// <param name="start_y"></param>
824 /// <param name="end_x"></param>
825 /// <param name="end_y"></param>
826 /// <param name="set_value"></param>
827 /// <returns></returns>
828 public static bool[,] modifyParcelBitmapSquare(bool[,] parcel_bitmap, int start_x, int start_y, int end_x, int end_y, bool set_value)
829 {
830 if (parcel_bitmap.GetLength(0) != 64 || parcel_bitmap.GetLength(1) != 64 || parcel_bitmap.Rank != 2)
831 {
832 //Throw an exception - The bitmap is not 64x64
833 throw new Exception("Error: Invalid Parcel Bitmap in modifyParcelBitmapSquare()");
834 }
835
836 int x, y;
837 for (y = 0; y < 64; y++)
838 {
839 for (x = 0; x < 64; x++)
840 {
841 if (x >= start_x / 4 && x < end_x / 4
842 && y >= start_y / 4 && y < end_y / 4)
843 {
844 parcel_bitmap[x, y] = set_value;
845 }
846 }
847 }
848 return parcel_bitmap;
849 }
850 /// <summary>
851 /// Join the true values of 2 bitmaps together
852 /// </summary>
853 /// <param name="bitmap_base"></param>
854 /// <param name="bitmap_add"></param>
855 /// <returns></returns>
856 public static bool[,] mergeParcelBitmaps(bool[,] bitmap_base, bool[,] bitmap_add)
857 {
858 if (bitmap_base.GetLength(0) != 64 || bitmap_base.GetLength(1) != 64 || bitmap_base.Rank != 2)
859 {
860 //Throw an exception - The bitmap is not 64x64
861 throw new Exception("Error: Invalid Parcel Bitmap - Bitmap_base in mergeParcelBitmaps");
862 }
863 if (bitmap_add.GetLength(0) != 64 || bitmap_add.GetLength(1) != 64 || bitmap_add.Rank != 2)
864 {
865 //Throw an exception - The bitmap is not 64x64
866 throw new Exception("Error: Invalid Parcel Bitmap - Bitmap_add in mergeParcelBitmaps");
867
868 }
869
870 int x, y;
871 for (y = 0; y < 64; y++)
872 {
873 for (x = 0; x < 64; x++)
874 {
875 if (bitmap_add[x, y])
876 {
877 bitmap_base[x, y] = true;
878 }
879 }
880 }
881 return bitmap_base;
882 }
883 #endregion
884
885 #endregion
886
887
888 }
889 #endregion
890
891
892}
diff --git a/OpenSim/Region/Simulation/RegionManager.cs b/OpenSim/Region/Simulation/RegionManager.cs
new file mode 100644
index 0000000..a317f0f
--- /dev/null
+++ b/OpenSim/Region/Simulation/RegionManager.cs
@@ -0,0 +1,30 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenGrid.Framework.Communications;
5using OpenSim.Framework;
6using OpenSim.Framework.Types;
7using OpenSim.Servers;
8
9namespace OpenSim.Region
10{
11 public class RegionManager //needs renaming , but first we need to rename the namespace
12 {
13 protected AuthenticateSessionsBase authenticateHandler;
14 protected RegionCommsListener regionCommsHost;
15 protected CommunicationsManager commsManager;
16 protected List<Caps> capsHandlers = new List<Caps>();
17 protected BaseHttpServer httpListener;
18
19 protected Scenes.Scene m_Scene;
20
21 public ParcelManager parcelManager;
22 public EstateManager estateManager;
23
24 public RegionManager()
25 {
26
27 }
28
29 }
30}
diff --git a/OpenSim/Region/Simulation/Scenes/Entity.cs b/OpenSim/Region/Simulation/Scenes/Entity.cs
new file mode 100644
index 0000000..f8754f5
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/Entity.cs
@@ -0,0 +1,194 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using Axiom.MathLib;
32using OpenSim.Physics.Manager;
33using libsecondlife;
34using OpenSim.Region.Scripting;
35
36namespace OpenSim.Region.Scenes
37{
38 public abstract class Entity : IScriptReadonlyEntity
39 {
40 public libsecondlife.LLUUID uuid;
41 public Quaternion rotation;
42 protected List<Entity> children;
43
44 protected PhysicsActor _physActor;
45 protected Scene m_world;
46 protected string m_name;
47
48 /// <summary>
49 ///
50 /// </summary>
51 public virtual string Name
52 {
53 get { return m_name; }
54 }
55
56 protected LLVector3 m_pos;
57 /// <summary>
58 ///
59 /// </summary>
60 public virtual LLVector3 Pos
61 {
62 get
63 {
64 if (this._physActor != null)
65 {
66 m_pos.X = _physActor.Position.X;
67 m_pos.Y = _physActor.Position.Y;
68 m_pos.Z = _physActor.Position.Z;
69 }
70
71 return m_pos;
72 }
73 set
74 {
75 if (this._physActor != null)
76 {
77 try
78 {
79 lock (this.m_world.SyncRoot)
80 {
81
82 this._physActor.Position = new PhysicsVector(value.X, value.Y, value.Z);
83 }
84 }
85 catch (Exception e)
86 {
87 Console.WriteLine(e.Message);
88 }
89 }
90
91 m_pos = value;
92 }
93 }
94
95 public LLVector3 velocity;
96
97 /// <summary>
98 ///
99 /// </summary>
100 public virtual LLVector3 Velocity
101 {
102 get
103 {
104 if (this._physActor != null)
105 {
106 velocity.X = _physActor.Velocity.X;
107 velocity.Y = _physActor.Velocity.Y;
108 velocity.Z = _physActor.Velocity.Z;
109 }
110
111 return velocity;
112 }
113 set
114 {
115 if (this._physActor != null)
116 {
117 try
118 {
119 lock (this.m_world.SyncRoot)
120 {
121
122 this._physActor.Velocity = new PhysicsVector(value.X, value.Y, value.Z);
123 }
124 }
125 catch (Exception e)
126 {
127 Console.WriteLine(e.Message);
128 }
129 }
130
131 velocity = value;
132 }
133 }
134
135 protected uint m_localId;
136
137 public uint LocalId
138 {
139 get { return m_localId; }
140 }
141
142 /// <summary>
143 /// Creates a new Entity (should not occur on it's own)
144 /// </summary>
145 public Entity()
146 {
147 uuid = new libsecondlife.LLUUID();
148
149 m_pos = new LLVector3();
150 velocity = new LLVector3();
151 rotation = new Quaternion();
152 m_name = "(basic entity)";
153 children = new List<Entity>();
154 }
155
156 /// <summary>
157 ///
158 /// </summary>
159 public virtual void updateMovement()
160 {
161 foreach (Entity child in children)
162 {
163 child.updateMovement();
164 }
165 }
166
167 /// <summary>
168 /// Performs any updates that need to be done at each frame. This function is overridable from it's children.
169 /// </summary>
170 public virtual void update() {
171 // Do any per-frame updates needed that are applicable to every type of entity
172 foreach (Entity child in children)
173 {
174 child.update();
175 }
176 }
177
178 /// <summary>
179 /// Called at a set interval to inform entities that they should back themsleves up to the DB
180 /// </summary>
181 public virtual void BackUp()
182 {
183
184 }
185
186 /// <summary>
187 /// Infoms the entity that the land (heightmap) has changed
188 /// </summary>
189 public virtual void LandRenegerated()
190 {
191
192 }
193 }
194}
diff --git a/OpenSim/Region/Simulation/Scenes/IScenePresenceBody.cs b/OpenSim/Region/Simulation/Scenes/IScenePresenceBody.cs
new file mode 100644
index 0000000..65077e6
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/IScenePresenceBody.cs
@@ -0,0 +1,19 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using libsecondlife;
5using libsecondlife.Packets;
6using OpenSim.Physics.Manager;
7using OpenSim.Framework.Interfaces;
8using OpenSim.Framework.Types;
9
10namespace OpenSim.Region.Scenes
11{
12 public interface IScenePresenceBody
13 {
14 void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
15 void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
16 void SendOurAppearance(IClientAPI OurClient);
17 void SendAppearanceToOtherAgent(ScenePresence avatarInfo);
18 }
19}
diff --git a/OpenSim/Region/Simulation/Scenes/Primitive.cs b/OpenSim/Region/Simulation/Scenes/Primitive.cs
new file mode 100644
index 0000000..e04c711
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/Primitive.cs
@@ -0,0 +1,582 @@
1
2/*
3* Copyright (c) Contributors, http://www.openmetaverse.org/
4* See CONTRIBUTORS.TXT for a full list of copyright holders.
5*
6* Redistribution and use in source and binary forms, with or without
7* modification, are permitted provided that the following conditions are met:
8* * Redistributions of source code must retain the above copyright
9* notice, this list of conditions and the following disclaimer.
10* * Redistributions in binary form must reproduce the above copyright
11* notice, this list of conditions and the following disclaimer in the
12* documentation and/or other materials provided with the distribution.
13* * Neither the name of the OpenSim Project nor the
14* names of its contributors may be used to endorse or promote products
15* derived from this software without specific prior written permission.
16*
17* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
18* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
21* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27*
28*/
29using System;
30using System.Collections.Generic;
31using System.Text;
32using libsecondlife;
33using libsecondlife.Packets;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Physics.Manager;
36using OpenSim.Framework.Types;
37using OpenSim.Framework.Inventory;
38
39namespace OpenSim.Region.Scenes
40{
41 public class Primitive : Entity
42 {
43 internal PrimData primData;
44 private LLVector3 positionLastFrame = new LLVector3(0, 0, 0);
45 // private Dictionary<uint, IClientAPI> m_clientThreads;
46 private ulong m_regionHandle;
47 private const uint FULL_MASK_PERMISSIONS = 2147483647;
48 private bool physicsEnabled = false;
49 private byte updateFlag = 0;
50 private uint flags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456 + 128;
51
52 private Dictionary<LLUUID, InventoryItem> inventoryItems;
53
54 #region Properties
55
56 public LLVector3 Scale
57 {
58 set
59 {
60 this.primData.Scale = value;
61 //this.dirtyFlag = true;
62 }
63 get
64 {
65 return this.primData.Scale;
66 }
67 }
68
69 public PhysicsActor PhysActor
70 {
71 set
72 {
73 this._physActor = value;
74 }
75 }
76
77 public override LLVector3 Pos
78 {
79 get
80 {
81 return base.Pos;
82 }
83 set
84 {
85 base.Pos = value;
86 }
87 }
88 #endregion
89
90 /// <summary>
91 ///
92 /// </summary>
93 /// <param name="clientThreads"></param>
94 /// <param name="regionHandle"></param>
95 /// <param name="world"></param>
96 public Primitive( ulong regionHandle, Scene world)
97 {
98 // m_clientThreads = clientThreads;
99 m_regionHandle = regionHandle;
100 m_world = world;
101 inventoryItems = new Dictionary<LLUUID, InventoryItem>();
102 }
103
104 /// <summary>
105 ///
106 /// </summary>
107 /// <param name="regionHandle"></param>
108 /// <param name="world"></param>
109 /// <param name="addPacket"></param>
110 /// <param name="ownerID"></param>
111 /// <param name="localID"></param>
112 public Primitive(ulong regionHandle, Scene world, ObjectAddPacket addPacket, LLUUID ownerID, uint localID)
113 {
114 // m_clientThreads = clientThreads;
115 m_regionHandle = regionHandle;
116 m_world = world;
117 inventoryItems = new Dictionary<LLUUID, InventoryItem>();
118 this.CreateFromPacket(addPacket, ownerID, localID);
119 }
120
121 /// <summary>
122 ///
123 /// </summary>
124 /// <param name="clientThreads"></param>
125 /// <param name="regionHandle"></param>
126 /// <param name="world"></param>
127 /// <param name="owner"></param>
128 /// <param name="fullID"></param>
129 /// <param name="localID"></param>
130 public Primitive( ulong regionHandle, Scene world, LLUUID owner, LLUUID fullID, uint localID)
131 {
132 // m_clientThreads = clientThreads;
133 m_regionHandle = regionHandle;
134 m_world = world;
135 inventoryItems = new Dictionary<LLUUID, InventoryItem>();
136 this.primData = new PrimData();
137 this.primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
138 this.primData.OwnerID = owner;
139 this.primData.FullID = this.uuid = fullID;
140 this.primData.LocalID = m_localId = localID;
141 }
142
143 /// <summary>
144 /// Constructor to create a default cube
145 /// </summary>
146 /// <param name="clientThreads"></param>
147 /// <param name="regionHandle"></param>
148 /// <param name="world"></param>
149 /// <param name="owner"></param>
150 /// <param name="localID"></param>
151 /// <param name="position"></param>
152 public Primitive( ulong regionHandle, Scene world, LLUUID owner, uint localID, LLVector3 position)
153 {
154 //m_clientThreads = clientThreads;
155 m_regionHandle = regionHandle;
156 m_world = world;
157 inventoryItems = new Dictionary<LLUUID, InventoryItem>();
158 this.primData = PrimData.DefaultCube();
159 this.primData.OwnerID = owner;
160 this.primData.LocalID = m_localId = localID;
161 this.Pos = this.primData.Position = position;
162
163 this.updateFlag = 1;
164 }
165
166 /// <summary>
167 ///
168 /// </summary>
169 /// <returns></returns>
170 public byte[] GetByteArray()
171 {
172 byte[] result = null;
173 List<byte[]> dataArrays = new List<byte[]>();
174 dataArrays.Add(primData.ToBytes());
175 foreach (Entity child in children)
176 {
177 if (child is OpenSim.Region.Scenes.Primitive)
178 {
179 dataArrays.Add(((OpenSim.Region.Scenes.Primitive)child).GetByteArray());
180 }
181 }
182 byte[] primstart = Helpers.StringToField("<Prim>");
183 byte[] primend = Helpers.StringToField("</Prim>");
184 int totalLength = primstart.Length + primend.Length;
185 for (int i = 0; i < dataArrays.Count; i++)
186 {
187 totalLength += dataArrays[i].Length;
188 }
189
190 result = new byte[totalLength];
191 int arraypos = 0;
192 Array.Copy(primstart, 0, result, 0, primstart.Length);
193 arraypos += primstart.Length;
194 for (int i = 0; i < dataArrays.Count; i++)
195 {
196 Array.Copy(dataArrays[i], 0, result, arraypos, dataArrays[i].Length);
197 arraypos += dataArrays[i].Length;
198 }
199 Array.Copy(primend, 0, result, arraypos, primend.Length);
200
201 return result;
202 }
203
204 #region Overridden Methods
205
206 /// <summary>
207 ///
208 /// </summary>
209 public override void update()
210 {
211 if (this.updateFlag == 1) // is a new prim just been created/reloaded
212 {
213 this.SendFullUpdateToAllClients();
214 this.updateFlag = 0;
215 }
216 if (this.updateFlag == 2) //some change has been made so update the clients
217 {
218 this.SendTerseUpdateToALLClients();
219 this.updateFlag = 0;
220 }
221 }
222
223 /// <summary>
224 ///
225 /// </summary>
226 public override void BackUp()
227 {
228
229 }
230
231 #endregion
232
233 #region Packet handlers
234
235 /// <summary>
236 ///
237 /// </summary>
238 /// <param name="pos"></param>
239 public void UpdatePosition(LLVector3 pos)
240 {
241 this.Pos = new LLVector3(pos.X, pos.Y, pos.Z);
242 this.updateFlag = 2;
243 }
244
245 /// <summary>
246 ///
247 /// </summary>
248 /// <param name="addPacket"></param>
249 public void UpdateShape(ObjectShapePacket.ObjectDataBlock updatePacket)
250 {
251 this.primData.PathBegin = updatePacket.PathBegin;
252 this.primData.PathEnd = updatePacket.PathEnd;
253 this.primData.PathScaleX = updatePacket.PathScaleX;
254 this.primData.PathScaleY = updatePacket.PathScaleY;
255 this.primData.PathShearX = updatePacket.PathShearX;
256 this.primData.PathShearY = updatePacket.PathShearY;
257 this.primData.PathSkew = updatePacket.PathSkew;
258 this.primData.ProfileBegin = updatePacket.ProfileBegin;
259 this.primData.ProfileEnd = updatePacket.ProfileEnd;
260 this.primData.PathCurve = updatePacket.PathCurve;
261 this.primData.ProfileCurve = updatePacket.ProfileCurve;
262 this.primData.ProfileHollow = updatePacket.ProfileHollow;
263 this.primData.PathRadiusOffset = updatePacket.PathRadiusOffset;
264 this.primData.PathRevolutions = updatePacket.PathRevolutions;
265 this.primData.PathTaperX = updatePacket.PathTaperX;
266 this.primData.PathTaperY = updatePacket.PathTaperY;
267 this.primData.PathTwist = updatePacket.PathTwist;
268 this.primData.PathTwistBegin = updatePacket.PathTwistBegin;
269 }
270
271 /// <summary>
272 ///
273 /// </summary>
274 /// <param name="tex"></param>
275 public void UpdateTexture(byte[] tex)
276 {
277 this.primData.TextureEntry = tex;
278 }
279
280 /// <summary>
281 ///
282 /// </summary>
283 /// <param name="pack"></param>
284 public void UpdateObjectFlags(ObjectFlagUpdatePacket pack)
285 {
286
287 }
288
289 /// <summary>
290 ///
291 /// </summary>
292 /// <param name="prim"></param>
293 public void AssignToParent(Primitive prim)
294 {
295
296 }
297
298 #endregion
299
300 # region Inventory Methods
301 /// <summary>
302 ///
303 /// </summary>
304 /// <param name="item"></param>
305 /// <returns></returns>
306 public bool AddToInventory(InventoryItem item)
307 {
308 return false;
309 }
310
311 /// <summary>
312 ///
313 /// </summary>
314 /// <param name="itemID"></param>
315 /// <returns></returns>
316 public InventoryItem RemoveFromInventory(LLUUID itemID)
317 {
318 return null;
319 }
320
321 /// <summary>
322 ///
323 /// </summary>
324 /// <param name="simClient"></param>
325 /// <param name="packet"></param>
326 public void RequestInventoryInfo(IClientAPI simClient, RequestTaskInventoryPacket packet)
327 {
328
329 }
330
331 /// <summary>
332 ///
333 /// </summary>
334 /// <param name="simClient"></param>
335 /// <param name="xferID"></param>
336 public void RequestXferInventory(IClientAPI simClient, ulong xferID)
337 {
338 //will only currently work if the total size of the inventory data array is under about 1000 bytes
339 SendXferPacketPacket send = new SendXferPacketPacket();
340
341 send.XferID.ID = xferID;
342 send.XferID.Packet = 1 + 2147483648;
343 send.DataPacket.Data = this.ConvertInventoryToBytes();
344
345 simClient.OutPacket(send);
346 }
347
348 /// <summary>
349 ///
350 /// </summary>
351 /// <returns></returns>
352 public byte[] ConvertInventoryToBytes()
353 {
354 System.Text.Encoding enc = System.Text.Encoding.ASCII;
355 byte[] result = new byte[0];
356 List<byte[]> inventoryData = new List<byte[]>();
357 int totallength = 0;
358 foreach (InventoryItem invItem in inventoryItems.Values)
359 {
360 byte[] data = enc.GetBytes(invItem.ExportString());
361 inventoryData.Add(data);
362 totallength += data.Length;
363 }
364 //TODO: copy arrays into the single result array
365
366 return result;
367 }
368
369 /// <summary>
370 ///
371 /// </summary>
372 /// <param name="data"></param>
373 public void CreateInventoryFromBytes(byte[] data)
374 {
375
376 }
377
378 #endregion
379
380 #region Update viewers Methods
381
382 /// <summary>
383 ///
384 /// </summary>
385 /// <param name="remoteClient"></param>
386 public void SendFullUpdateForAllChildren(IClientAPI remoteClient)
387 {
388 this.SendFullUpdateToClient(remoteClient);
389 for (int i = 0; i < this.children.Count; i++)
390 {
391 if (this.children[i] is Primitive)
392 {
393 ((Primitive)this.children[i]).SendFullUpdateForAllChildren(remoteClient);
394 }
395 }
396 }
397
398 /// <summary>
399 ///
400 /// </summary>
401 /// <param name="remoteClient"></param>
402 public void SendFullUpdateToClient(IClientAPI remoteClient)
403 {
404 LLVector3 lPos;
405 if (this._physActor != null && this.physicsEnabled)
406 {
407 PhysicsVector pPos = this._physActor.Position;
408 lPos = new LLVector3(pPos.X, pPos.Y, pPos.Z);
409 }
410 else
411 {
412 lPos = this.Pos;
413 }
414
415 remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.primData, lPos, new LLUUID("00000000-0000-0000-9999-000000000005"), this.flags);
416 }
417
418 /// <summary>
419 ///
420 /// </summary>
421 public void SendFullUpdateToAllClients()
422 {
423 List<ScenePresence> avatars = this.m_world.RequestAvatarList();
424 for (int i = 0; i < avatars.Count; i++)
425 {
426 this.SendFullUpdateToClient(avatars[i].ControllingClient);
427 }
428 }
429
430 /// <summary>
431 ///
432 /// </summary>
433 /// <param name="RemoteClient"></param>
434 public void SendTerseUpdateToClient(IClientAPI RemoteClient)
435 {
436 LLVector3 lPos;
437 Axiom.MathLib.Quaternion lRot;
438 if (this._physActor != null && this.physicsEnabled) //is this needed ? doesn't the property fields do this for us?
439 {
440 PhysicsVector pPos = this._physActor.Position;
441 lPos = new LLVector3(pPos.X, pPos.Y, pPos.Z);
442 lRot = this._physActor.Orientation;
443 }
444 else
445 {
446 lPos = this.Pos;
447 lRot = this.rotation;
448 }
449 LLQuaternion mRot = new LLQuaternion(lRot.x, lRot.y, lRot.z, lRot.w);
450 RemoteClient.SendPrimTerseUpdate(this.m_regionHandle, 64096, this.LocalId, lPos, mRot);
451 }
452
453 /// <summary>
454 ///
455 /// </summary>
456 public void SendTerseUpdateToALLClients()
457 {
458 List<ScenePresence> avatars = this.m_world.RequestAvatarList();
459 for (int i = 0; i < avatars.Count; i++)
460 {
461 this.SendTerseUpdateToClient(avatars[i].ControllingClient);
462 }
463 }
464
465 #endregion
466
467 #region Create Methods
468
469 /// <summary>
470 ///
471 /// </summary>
472 /// <param name="addPacket"></param>
473 /// <param name="ownerID"></param>
474 /// <param name="localID"></param>
475 public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID ownerID, uint localID)
476 {
477 PrimData PData = new PrimData();
478 this.primData = PData;
479 this.primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
480
481 PData.OwnerID = ownerID;
482 PData.PCode = addPacket.ObjectData.PCode;
483 PData.PathBegin = addPacket.ObjectData.PathBegin;
484 PData.PathEnd = addPacket.ObjectData.PathEnd;
485 PData.PathScaleX = addPacket.ObjectData.PathScaleX;
486 PData.PathScaleY = addPacket.ObjectData.PathScaleY;
487 PData.PathShearX = addPacket.ObjectData.PathShearX;
488 PData.PathShearY = addPacket.ObjectData.PathShearY;
489 PData.PathSkew = addPacket.ObjectData.PathSkew;
490 PData.ProfileBegin = addPacket.ObjectData.ProfileBegin;
491 PData.ProfileEnd = addPacket.ObjectData.ProfileEnd;
492 PData.Scale = addPacket.ObjectData.Scale;
493 PData.PathCurve = addPacket.ObjectData.PathCurve;
494 PData.ProfileCurve = addPacket.ObjectData.ProfileCurve;
495 PData.ParentID = 0;
496 PData.ProfileHollow = addPacket.ObjectData.ProfileHollow;
497 PData.PathRadiusOffset = addPacket.ObjectData.PathRadiusOffset;
498 PData.PathRevolutions = addPacket.ObjectData.PathRevolutions;
499 PData.PathTaperX = addPacket.ObjectData.PathTaperX;
500 PData.PathTaperY = addPacket.ObjectData.PathTaperY;
501 PData.PathTwist = addPacket.ObjectData.PathTwist;
502 PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin;
503 LLVector3 pos1 = addPacket.ObjectData.RayEnd;
504 this.primData.FullID = this.uuid = LLUUID.Random();
505 this.primData.LocalID = m_localId = (uint)(localID);
506 this.primData.Position = this.Pos = pos1;
507
508 this.updateFlag = 1;
509 }
510
511 /// <summary>
512 ///
513 /// </summary>
514 /// <param name="data"></param>
515 public void CreateFromBytes(byte[] data)
516 {
517
518 }
519
520 /// <summary>
521 ///
522 /// </summary>
523 /// <param name="primData"></param>
524 public void CreateFromPrimData(PrimData primData)
525 {
526 this.CreateFromPrimData(primData, primData.Position, primData.LocalID, false);
527 }
528
529 /// <summary>
530 ///
531 /// </summary>
532 /// <param name="primData"></param>
533 /// <param name="posi"></param>
534 /// <param name="localID"></param>
535 /// <param name="newprim"></param>
536 public void CreateFromPrimData(PrimData primData, LLVector3 posi, uint localID, bool newprim)
537 {
538
539 }
540
541 public void GrapMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
542 {
543 // Console.WriteLine("moving prim to new location " + pos.X + " , " + pos.Y + " , " + pos.Z);
544 this.Pos = pos;
545 this.SendTerseUpdateToALLClients();
546 }
547
548 public void GetProperites(IClientAPI client)
549 {
550 //needs changing
551 ObjectPropertiesPacket proper = new ObjectPropertiesPacket();
552 proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1];
553 proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock();
554 proper.ObjectData[0].ItemID = LLUUID.Zero;
555 proper.ObjectData[0].CreationDate = (ulong)primData.CreationDate;
556 proper.ObjectData[0].CreatorID = primData.OwnerID;
557 proper.ObjectData[0].FolderID = LLUUID.Zero;
558 proper.ObjectData[0].FromTaskID = LLUUID.Zero;
559 proper.ObjectData[0].GroupID = LLUUID.Zero;
560 proper.ObjectData[0].InventorySerial = 0;
561 proper.ObjectData[0].LastOwnerID = LLUUID.Zero;
562 proper.ObjectData[0].ObjectID = this.uuid;
563 proper.ObjectData[0].OwnerID = primData.OwnerID;
564 proper.ObjectData[0].TouchName = new byte[0];
565 proper.ObjectData[0].TextureID = new byte[0];
566 proper.ObjectData[0].SitName = new byte[0];
567 proper.ObjectData[0].Name = new byte[0];
568 proper.ObjectData[0].Description = new byte[0];
569 proper.ObjectData[0].OwnerMask = primData.OwnerMask;
570 proper.ObjectData[0].NextOwnerMask = primData.NextOwnerMask;
571 proper.ObjectData[0].GroupMask = primData.GroupMask;
572 proper.ObjectData[0].EveryoneMask = primData.EveryoneMask;
573 proper.ObjectData[0].BaseMask = primData.BaseMask;
574
575 client.OutPacket(proper);
576
577 }
578
579 #endregion
580
581 }
582}
diff --git a/OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs
new file mode 100644
index 0000000..d1a2717
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs
@@ -0,0 +1,305 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using libsecondlife.Packets;
33using OpenSim.Physics.Manager;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36using OpenSim.Framework.Inventory;
37using OpenSim.Framework.Utilities;
38
39namespace OpenSim.Region.Scenes
40{
41 public partial class Scene
42 {
43 /// <summary>
44 /// Modifies terrain using the specified information
45 /// </summary>
46 /// <param name="height">The height at which the user started modifying the terrain</param>
47 /// <param name="seconds">The number of seconds the modify button was pressed</param>
48 /// <param name="brushsize">The size of the brush used</param>
49 /// <param name="action">The action to be performed</param>
50 /// <param name="north">Distance from the north border where the cursor is located</param>
51 /// <param name="west">Distance from the west border where the cursor is located</param>
52 public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west)
53 {
54 // Shiny.
55 double size = (double)(1 << brushsize);
56
57 switch (action)
58 {
59 case 0:
60 // flatten terrain
61 Terrain.flatten(north, west, size, (double)seconds / 100.0);
62 RegenerateTerrain(true, (int)north, (int)west);
63 break;
64 case 1:
65 // raise terrain
66 Terrain.raise(north, west, size, (double)seconds / 100.0);
67 RegenerateTerrain(true, (int)north, (int)west);
68 break;
69 case 2:
70 //lower terrain
71 Terrain.lower(north, west, size, (double)seconds / 100.0);
72 RegenerateTerrain(true, (int)north, (int)west);
73 break;
74 case 3:
75 // smooth terrain
76 Terrain.smooth(north, west, size, (double)seconds / 100.0);
77 RegenerateTerrain(true, (int)north, (int)west);
78 break;
79 case 4:
80 // noise
81 Terrain.noise(north, west, size, (double)seconds / 100.0);
82 RegenerateTerrain(true, (int)north, (int)west);
83 break;
84 case 5:
85 // revert
86 Terrain.revert(north, west, size, (double)seconds / 100.0);
87 RegenerateTerrain(true, (int)north, (int)west);
88 break;
89
90 // CLIENT EXTENSIONS GO HERE
91 case 128:
92 // erode-thermal
93 break;
94 case 129:
95 // erode-aerobic
96 break;
97 case 130:
98 // erode-hydraulic
99 break;
100 }
101 return;
102 }
103
104 /// <summary>
105 ///
106 /// </summary>
107 /// <param name="message"></param>
108 /// <param name="type"></param>
109 /// <param name="fromPos"></param>
110 /// <param name="fromName"></param>
111 /// <param name="fromAgentID"></param>
112 public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
113 {
114 Console.WriteLine("Chat message");
115 ScenePresence avatar = null;
116 foreach (IClientAPI client in m_clientThreads.Values)
117 {
118 int dis = -1000;
119 if (this.Avatars.ContainsKey(client.AgentId))
120 {
121
122 avatar = this.Avatars[client.AgentId];
123 // int dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y));
124 dis= (int)avatar.Pos.GetDistanceTo(fromPos);
125 Console.WriteLine("found avatar at " +dis);
126
127 }
128
129 switch (type)
130 {
131 case 0: // Whisper
132 if ((dis < 10) && (dis > -10))
133 {
134 //should change so the message is sent through the avatar rather than direct to the ClientView
135 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
136 }
137 break;
138 case 1: // Say
139 if ((dis < 30) && (dis > -30))
140 {
141 Console.WriteLine("sending chat");
142 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
143 }
144 break;
145 case 2: // Shout
146 if ((dis < 100) && (dis > -100))
147 {
148 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
149 }
150 break;
151
152 case 0xff: // Broadcast
153 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
154 break;
155 }
156
157 }
158 }
159
160 /// <summary>
161 ///
162 /// </summary>
163 /// <param name="primAsset"></param>
164 /// <param name="pos"></param>
165 public void RezObject(AssetBase primAsset, LLVector3 pos)
166 {
167
168 }
169
170 /// <summary>
171 ///
172 /// </summary>
173 /// <param name="packet"></param>
174 /// <param name="simClient"></param>
175 public void DeRezObject(Packet packet, IClientAPI simClient)
176 {
177
178 }
179
180 /// <summary>
181 ///
182 /// </summary>
183 /// <param name="remoteClient"></param>
184 public void SendAvatarsToClient(IClientAPI remoteClient)
185 {
186
187 }
188
189 /// <summary>
190 ///
191 /// </summary>
192 /// <param name="parentPrim"></param>
193 /// <param name="childPrims"></param>
194 public void LinkObjects(uint parentPrim, List<uint> childPrims)
195 {
196
197
198 }
199
200 /// <summary>
201 ///
202 /// </summary>
203 /// <param name="primLocalID"></param>
204 /// <param name="shapeBlock"></param>
205 public void UpdatePrimShape(uint primLocalID, ObjectShapePacket.ObjectDataBlock shapeBlock)
206 {
207
208 }
209
210 /// <summary>
211 ///
212 /// </summary>
213 /// <param name="primLocalID"></param>
214 /// <param name="remoteClient"></param>
215 public void SelectPrim(uint primLocalID, IClientAPI remoteClient)
216 {
217 foreach (Entity ent in Entities.Values)
218 {
219 if (ent.LocalId == primLocalID)
220 {
221 ((OpenSim.Region.Scenes.Primitive)ent).GetProperites(remoteClient);
222 break;
223 }
224 }
225 }
226
227 public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
228 {
229 if (this.Entities.ContainsKey(objectID))
230 {
231 ((Primitive)this.Entities[objectID]).GrapMovement(offset, pos, remoteClient);
232 }
233 }
234
235 /// <summary>
236 ///
237 /// </summary>
238 /// <param name="localID"></param>
239 /// <param name="packet"></param>
240 /// <param name="remoteClient"></param>
241 public void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient)
242 {
243
244 }
245
246 /// <summary>
247 ///
248 /// </summary>
249 /// <param name="localID"></param>
250 /// <param name="texture"></param>
251 /// <param name="remoteClient"></param>
252 public void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient)
253 {
254
255 }
256
257 /// <summary>
258 ///
259 /// </summary>
260 /// <param name="localID"></param>
261 /// <param name="pos"></param>
262 /// <param name="remoteClient"></param>
263 public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient)
264 {
265 foreach (Entity ent in Entities.Values)
266 {
267 if (ent.LocalId == localID)
268 {
269 ((OpenSim.Region.Scenes.Primitive)ent).UpdatePosition(pos);
270 break;
271 }
272 }
273 }
274
275 /// <summary>
276 ///
277 /// </summary>
278 /// <param name="localID"></param>
279 /// <param name="rot"></param>
280 /// <param name="remoteClient"></param>
281 public void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient)
282 {
283
284 }
285
286 /// <summary>
287 ///
288 /// </summary>
289 /// <param name="localID"></param>
290 /// <param name="scale"></param>
291 /// <param name="remoteClient"></param>
292 public void UpdatePrimScale(uint localID, LLVector3 scale, IClientAPI remoteClient)
293 {
294 }
295
296 /// <summary>
297 /// Sends prims to a client
298 /// </summary>
299 /// <param name="RemoteClient">Client to send to</param>
300 public void GetInitialPrims(IClientAPI RemoteClient)
301 {
302
303 }
304 }
305}
diff --git a/OpenSim/Region/Simulation/Scenes/Scene.Scripting.cs b/OpenSim/Region/Simulation/Scenes/Scene.Scripting.cs
new file mode 100644
index 0000000..7b53388
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/Scene.Scripting.cs
@@ -0,0 +1,184 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.IO;
32using System.Reflection;
33using OpenSim.Framework;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36using libsecondlife;
37
38namespace OpenSim.Region.Scenes
39{
40 public partial class Scene
41 {
42 private Dictionary<string, IScriptEngine> scriptEngines = new Dictionary<string, IScriptEngine>();
43
44 /// <summary>
45 ///
46 /// </summary>
47 private void LoadScriptEngines()
48 {
49 this.LoadScriptPlugins();
50 }
51
52 /// <summary>
53 ///
54 /// </summary>
55 public void LoadScriptPlugins()
56 {
57 string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "ScriptEngines");
58 string[] pluginFiles = Directory.GetFiles(path, "*.dll");
59
60
61 for (int i = 0; i < pluginFiles.Length; i++)
62 {
63 this.AddPlugin(pluginFiles[i]);
64 }
65 }
66
67 /// <summary>
68 ///
69 /// </summary>
70 /// <param name="FileName"></param>
71 private void AddPlugin(string FileName)
72 {
73 Assembly pluginAssembly = Assembly.LoadFrom(FileName);
74
75 foreach (Type pluginType in pluginAssembly.GetTypes())
76 {
77 if (pluginType.IsPublic)
78 {
79 if (!pluginType.IsAbstract)
80 {
81 Type typeInterface = pluginType.GetInterface("IScriptEngine", true);
82
83 if (typeInterface != null)
84 {
85 IScriptEngine plug = (IScriptEngine)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
86 plug.Init(this);
87 this.scriptEngines.Add(plug.GetName(), plug);
88
89 }
90
91 typeInterface = null;
92 }
93 }
94 }
95
96 pluginAssembly = null;
97 }
98
99 /// <summary>
100 ///
101 /// </summary>
102 /// <param name="scriptType"></param>
103 /// <param name="scriptName"></param>
104 /// <param name="script"></param>
105 /// <param name="ent"></param>
106 public void LoadScript(string scriptType, string scriptName, string script, Entity ent)
107 {
108 if(this.scriptEngines.ContainsKey(scriptType))
109 {
110 this.scriptEngines[scriptType].LoadScript(script, scriptName, ent.LocalId);
111 }
112 }
113
114 #region IScriptAPI Methods
115
116 /// <summary>
117 ///
118 /// </summary>
119 /// <param name="localID"></param>
120 /// <returns></returns>
121 public LLVector3 GetEntityPosition(uint localID)
122 {
123 LLVector3 res = new LLVector3();
124 // Console.WriteLine("script- getting entity " + localID + " position");
125 foreach (Entity entity in this.Entities.Values)
126 {
127 if (entity.LocalId == localID)
128 {
129 res.X = entity.Pos.X;
130 res.Y = entity.Pos.Y;
131 res.Z = entity.Pos.Z;
132 }
133 }
134 return res;
135 }
136
137 /// <summary>
138 ///
139 /// </summary>
140 /// <param name="localID"></param>
141 /// <param name="x"></param>
142 /// <param name="y"></param>
143 /// <param name="z"></param>
144 public void SetEntityPosition(uint localID, float x , float y, float z)
145 {
146 foreach (Entity entity in this.Entities.Values)
147 {
148 if (entity.LocalId == localID && entity is Primitive)
149 {
150 LLVector3 pos = entity.Pos;
151 pos.X = x;
152 pos.Y = y;
153 Primitive prim = entity as Primitive;
154 // Of course, we really should have asked the physEngine if this is possible, and if not, returned false.
155 //prim.UpdatePosition(pos);
156 // Console.WriteLine("script- setting entity " + localID + " positon");
157 }
158 }
159
160 }
161
162 /// <summary>
163 ///
164 /// </summary>
165 /// <returns></returns>
166 public uint GetRandomAvatarID()
167 {
168 //Console.WriteLine("script- getting random avatar id");
169 uint res = 0;
170 foreach (Entity entity in this.Entities.Values)
171 {
172 if (entity is ScenePresence)
173 {
174 res = entity.LocalId;
175 }
176 }
177 return res;
178 }
179
180 #endregion
181
182
183 }
184}
diff --git a/OpenSim/Region/Simulation/Scenes/Scene.cs b/OpenSim/Region/Simulation/Scenes/Scene.cs
new file mode 100644
index 0000000..bf2244e
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/Scene.cs
@@ -0,0 +1,795 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using libsecondlife;
30using libsecondlife.Packets;
31using System.Collections.Generic;
32using System.Text;
33using System.Reflection;
34using System.IO;
35using System.Threading;
36using System.Timers;
37using OpenSim.Physics.Manager;
38using OpenSim.Framework.Interfaces;
39using OpenSim.Framework.Types;
40using OpenSim.Framework.Inventory;
41using OpenSim.Framework;
42using OpenSim.Region.Scripting;
43using OpenSim.Terrain;
44using OpenGrid.Framework.Communications;
45using OpenSim.Caches;
46using OpenSim.Region;
47using OpenSim.Servers;
48
49namespace OpenSim.Region.Scenes
50{
51 public delegate bool FilterAvatarList(ScenePresence avatar);
52
53 public partial class Scene : SceneBase, ILocalStorageReceiver, IScriptAPI
54 {
55 protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer();
56 protected Dictionary<libsecondlife.LLUUID, ScenePresence> Avatars;
57 protected Dictionary<libsecondlife.LLUUID, Primitive> Prims;
58 private PhysicsScene phyScene;
59 private float timeStep = 0.1f;
60 private Random Rand = new Random();
61 private uint _primCount = 702000;
62 private int storageCount;
63 private Dictionary<LLUUID, ScriptHandler> m_scriptHandlers;
64 private Dictionary<string, ScriptFactory> m_scripts;
65 private Mutex updateLock;
66
67 protected AuthenticateSessionsBase authenticateHandler;
68 protected RegionCommsListener regionCommsHost;
69 protected CommunicationsManager commsManager;
70
71 protected Dictionary<LLUUID, Caps> capsHandlers = new Dictionary<LLUUID, Caps>();
72 protected BaseHttpServer httpListener;
73
74 public ParcelManager parcelManager;
75 public EstateManager estateManager;
76 public EventManager eventManager;
77
78 #region Properties
79 /// <summary>
80 ///
81 /// </summary>
82 public PhysicsScene PhysScene
83 {
84 set
85 {
86 this.phyScene = value;
87 }
88 get
89 {
90 return (this.phyScene);
91 }
92 }
93
94 #endregion
95
96 #region Constructors
97 /// <summary>
98 /// Creates a new World class, and a region to go with it.
99 /// </summary>
100 /// <param name="clientThreads">Dictionary to contain client threads</param>
101 /// <param name="regionHandle">Region Handle for this region</param>
102 /// <param name="regionName">Region Name for this region</param>
103 public Scene(Dictionary<uint, IClientAPI> clientThreads, RegionInfo regInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach, BaseHttpServer httpServer)
104 {
105 try
106 {
107 updateLock = new Mutex(false);
108 this.authenticateHandler = authen;
109 this.commsManager = commsMan;
110 this.assetCache = assetCach;
111 m_clientThreads = clientThreads;
112 m_regInfo = regInfo;
113 m_regionHandle = m_regInfo.RegionHandle;
114 m_regionName = m_regInfo.RegionName;
115 this.m_datastore = m_regInfo.DataStore;
116 this.RegisterRegionWithComms();
117
118 parcelManager = new ParcelManager(this, this.m_regInfo);
119 estateManager = new EstateManager(this, this.m_regInfo);
120
121 eventManager = new EventManager();
122
123 m_scriptHandlers = new Dictionary<LLUUID, ScriptHandler>();
124 m_scripts = new Dictionary<string, ScriptFactory>();
125
126 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs - creating new entitities instance");
127 Entities = new Dictionary<libsecondlife.LLUUID, Entity>();
128 Avatars = new Dictionary<LLUUID, ScenePresence>();
129 Prims = new Dictionary<LLUUID, Primitive>();
130
131 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs - creating LandMap");
132 Terrain = new TerrainEngine();
133
134 ScenePresence.LoadAnims();
135 this.httpListener = httpServer;
136
137 }
138 catch (Exception e)
139 {
140 OpenSim.Framework.Console.MainLog.Instance.Error( "World.cs: Constructor failed with exception " + e.ToString());
141 }
142 }
143 #endregion
144
145 /// <summary>
146 ///
147 /// </summary>
148 public void StartTimer()
149 {
150 m_heartbeatTimer.Enabled = true;
151 m_heartbeatTimer.Interval = 100;
152 m_heartbeatTimer.Elapsed += new ElapsedEventHandler(this.Heartbeat);
153 }
154
155
156 #region Update Methods
157
158
159 /// <summary>
160 /// Performs per-frame updates regularly
161 /// </summary>
162 /// <param name="sender"></param>
163 /// <param name="e"></param>
164 void Heartbeat(object sender, System.EventArgs e)
165 {
166 this.Update();
167 }
168
169 /// <summary>
170 /// Performs per-frame updates on the world, this should be the central world loop
171 /// </summary>
172 public override void Update()
173 {
174 updateLock.WaitOne();
175 try
176 {
177 if (this.phyScene.IsThreaded)
178 {
179 this.phyScene.GetResults();
180
181 }
182
183 foreach (libsecondlife.LLUUID UUID in Entities.Keys)
184 {
185 Entities[UUID].updateMovement();
186 }
187
188 lock (this.m_syncRoot)
189 {
190 this.phyScene.Simulate(timeStep);
191 }
192
193 foreach (libsecondlife.LLUUID UUID in Entities.Keys)
194 {
195 Entities[UUID].update();
196 }
197
198 // New
199 eventManager.TriggerOnFrame();
200
201 // TODO: Obsolete - Phase out
202 foreach (ScriptHandler scriptHandler in m_scriptHandlers.Values)
203 {
204 scriptHandler.OnFrame();
205 }
206 foreach (IScriptEngine scripteng in this.scriptEngines.Values)
207 {
208 scripteng.OnFrame();
209 }
210
211 //backup world data
212 this.storageCount++;
213 if (storageCount > 1200) //set to how often you want to backup
214 {
215 this.Backup();
216 storageCount = 0;
217 }
218 }
219 catch (Exception e)
220 {
221 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: Update() - Failed with exception " + e.ToString());
222 }
223 updateLock.ReleaseMutex();
224
225 }
226
227 /// <summary>
228 ///
229 /// </summary>
230 /// <returns></returns>
231 public bool Backup()
232 {
233 /*
234 try
235 {
236 // Terrain backup routines
237 if (Terrain.tainted > 0)
238 {
239 Terrain.tainted = 0;
240 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs: Backup() - Terrain tainted, saving.");
241 localStorage.SaveMap(Terrain.getHeights1D());
242 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs: Backup() - Terrain saved, informing Physics.");
243 lock (this.m_syncRoot)
244 {
245 phyScene.SetTerrain(Terrain.getHeights1D());
246 }
247 }
248
249 // Primitive backup routines
250 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs: Backup() - Backing up Primitives");
251 foreach (libsecondlife.LLUUID UUID in Entities.Keys)
252 {
253 Entities[UUID].BackUp();
254 }
255
256 //Parcel backup routines
257 ParcelData[] parcels = new ParcelData[parcelManager.parcelList.Count];
258 int i = 0;
259 foreach (OpenSim.Region.Parcel parcel in parcelManager.parcelList.Values)
260 {
261 parcels[i] = parcel.parcelData;
262 i++;
263 }
264 localStorage.SaveParcels(parcels);
265
266 // Backup successful
267 return true;
268 }
269 catch (Exception e)
270 {
271 // Backup failed
272 OpenSim.Framework.Console.MainLog.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "World.cs: Backup() - Backup Failed with exception " + e.ToString());
273 return false;
274 }
275 */
276 return true;
277 }
278 #endregion
279
280 #region Regenerate Terrain
281
282 /// <summary>
283 /// Rebuilds the terrain using a procedural algorithm
284 /// </summary>
285 public void RegenerateTerrain()
286 {
287 try
288 {
289 Terrain.hills();
290
291 lock (this.m_syncRoot)
292 {
293 this.phyScene.SetTerrain(Terrain.getHeights1D());
294 }
295 this.localStorage.SaveMap(this.Terrain.getHeights1D());
296
297 foreach (IClientAPI client in m_clientThreads.Values)
298 {
299 this.SendLayerData(client);
300 }
301
302 foreach (libsecondlife.LLUUID UUID in Entities.Keys)
303 {
304 Entities[UUID].LandRenegerated();
305 }
306 }
307 catch (Exception e)
308 {
309 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: RegenerateTerrain() - Failed with exception " + e.ToString());
310 }
311 }
312
313 /// <summary>
314 /// Rebuilds the terrain using a 2D float array
315 /// </summary>
316 /// <param name="newMap">256,256 float array containing heights</param>
317 public void RegenerateTerrain(float[,] newMap)
318 {
319 try
320 {
321 this.Terrain.setHeights2D(newMap);
322 lock (this.m_syncRoot)
323 {
324 this.phyScene.SetTerrain(this.Terrain.getHeights1D());
325 }
326 this.localStorage.SaveMap(this.Terrain.getHeights1D());
327
328 foreach (IClientAPI client in m_clientThreads.Values)
329 {
330 this.SendLayerData(client);
331 }
332
333 foreach (libsecondlife.LLUUID UUID in Entities.Keys)
334 {
335 Entities[UUID].LandRenegerated();
336 }
337 }
338 catch (Exception e)
339 {
340 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: RegenerateTerrain() - Failed with exception " + e.ToString());
341 }
342 }
343
344 /// <summary>
345 /// Rebuilds the terrain assuming changes occured at a specified point[?]
346 /// </summary>
347 /// <param name="changes">???</param>
348 /// <param name="pointx">???</param>
349 /// <param name="pointy">???</param>
350 public void RegenerateTerrain(bool changes, int pointx, int pointy)
351 {
352 try
353 {
354 if (changes)
355 {
356 /* Dont save here, rely on tainting system instead */
357
358 foreach (IClientAPI client in m_clientThreads.Values)
359 {
360 this.SendLayerData(pointx, pointy, client);
361 }
362 }
363 }
364 catch (Exception e)
365 {
366 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: RegenerateTerrain() - Failed with exception " + e.ToString());
367 }
368 }
369
370 #endregion
371
372 #region Load Terrain
373 /// <summary>
374 /// Loads the World heightmap
375 /// </summary>
376 ///
377 public override void LoadWorldMap()
378 {
379 try
380 {
381 float[] map = this.localStorage.LoadWorld();
382 if (map == null)
383 {
384 if (string.IsNullOrEmpty(this.m_regInfo.estateSettings.terrainFile))
385 {
386 Console.WriteLine("No default terrain, procedurally generating...");
387 this.Terrain.hills();
388
389 this.localStorage.SaveMap(this.Terrain.getHeights1D());
390 }
391 else
392 {
393 try
394 {
395 this.Terrain.loadFromFileF32(this.m_regInfo.estateSettings.terrainFile);
396 this.Terrain *= this.m_regInfo.estateSettings.terrainMultiplier;
397 }
398 catch
399 {
400 Console.WriteLine("Unable to load default terrain, procedurally generating instead...");
401 Terrain.hills();
402 }
403 this.localStorage.SaveMap(this.Terrain.getHeights1D());
404 }
405 }
406 else
407 {
408 this.Terrain.setHeights1D(map);
409 }
410
411 CreateTerrainTexture();
412
413 }
414 catch (Exception e)
415 {
416 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: LoadWorldMap() - Failed with exception " + e.ToString());
417 }
418 }
419
420 /// <summary>
421 ///
422 /// </summary>
423 private void CreateTerrainTexture()
424 {
425 //create a texture asset of the terrain
426 byte[] data = this.Terrain.exportJpegImage("defaultstripe.png");
427 this.m_regInfo.estateSettings.terrainImageID = LLUUID.Random();
428 AssetBase asset = new AssetBase();
429 asset.FullID = this.m_regInfo.estateSettings.terrainImageID;
430 asset.Data = data;
431 asset.Name = "terrainImage";
432 asset.Type = 0;
433 this.assetCache.AddAsset(asset);
434 }
435 #endregion
436
437 #region Primitives Methods
438
439
440 /// <summary>
441 /// Loads the World's objects
442 /// </summary>
443 public void LoadPrimsFromStorage()
444 {
445 try
446 {
447 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs: LoadPrimsFromStorage() - Loading primitives");
448 this.localStorage.LoadPrimitives(this);
449 }
450 catch (Exception e)
451 {
452 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: LoadPrimsFromStorage() - Failed with exception " + e.ToString());
453 }
454 }
455
456 /// <summary>
457 /// Loads a specific object from storage
458 /// </summary>
459 /// <param name="prim">The object to load</param>
460 public void PrimFromStorage(PrimData prim)
461 {
462
463 }
464
465 /// <summary>
466 ///
467 /// </summary>
468 /// <param name="addPacket"></param>
469 /// <param name="agentClient"></param>
470 public void AddNewPrim(Packet addPacket, IClientAPI agentClient)
471 {
472 AddNewPrim((ObjectAddPacket)addPacket, agentClient.AgentId);
473 }
474
475 /// <summary>
476 ///
477 /// </summary>
478 /// <param name="addPacket"></param>
479 /// <param name="ownerID"></param>
480 public void AddNewPrim(ObjectAddPacket addPacket, LLUUID ownerID)
481 {
482 try
483 {
484 Primitive prim = new Primitive(m_regionHandle, this, addPacket, ownerID, this._primCount);
485
486 this.Entities.Add(prim.uuid, prim);
487 this._primCount++;
488
489 // Trigger event for listeners
490 eventManager.TriggerOnNewPrimitive(prim);
491 }
492 catch (Exception e)
493 {
494 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: AddNewPrim() - Failed with exception " + e.ToString());
495 }
496 }
497
498 #endregion
499
500 #region Add/Remove Avatar Methods
501
502 /// <summary>
503 ///
504 /// </summary>
505 /// <param name="remoteClient"></param
506 /// <param name="agentID"></param>
507 /// <param name="child"></param>
508 public override void AddNewClient(IClientAPI remoteClient, LLUUID agentID, bool child)
509 {
510 remoteClient.OnRegionHandShakeReply += this.SendLayerData;
511 //remoteClient.OnRequestWearables += new GenericCall(this.GetInitialPrims);
512 remoteClient.OnChatFromViewer += this.SimChat;
513 remoteClient.OnRequestWearables += this.InformClientOfNeighbours;
514 remoteClient.OnAddPrim += this.AddNewPrim;
515 remoteClient.OnUpdatePrimPosition += this.UpdatePrimPosition;
516 remoteClient.OnRequestMapBlocks += this.RequestMapBlocks;
517 remoteClient.OnTeleportLocationRequest += this.RequestTeleportLocation;
518 //remoteClient.OnObjectSelect += this.SelectPrim;
519 remoteClient.OnGrapUpdate += this.MoveObject;
520
521 /* remoteClient.OnParcelPropertiesRequest += new ParcelPropertiesRequest(parcelManager.handleParcelPropertiesRequest);
522 remoteClient.OnParcelDivideRequest += new ParcelDivideRequest(parcelManager.handleParcelDivideRequest);
523 remoteClient.OnParcelJoinRequest += new ParcelJoinRequest(parcelManager.handleParcelJoinRequest);
524 remoteClient.OnParcelPropertiesUpdateRequest += new ParcelPropertiesUpdateRequest(parcelManager.handleParcelPropertiesUpdateRequest);
525 remoteClient.OnEstateOwnerMessage += new EstateOwnerMessageRequest(estateManager.handleEstateOwnerMessage);
526 */
527
528 ScenePresence newAvatar = null;
529 try
530 {
531
532 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent");
533 newAvatar = new ScenePresence(remoteClient, this, this.m_regInfo);
534 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs:AddViewerAgent() - Adding new avatar to world");
535 OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs:AddViewerAgent() - Starting RegionHandshake ");
536
537 //newAvatar.SendRegionHandshake();
538 this.estateManager.sendRegionHandshake(remoteClient);
539
540 PhysicsVector pVec = new PhysicsVector(newAvatar.Pos.X, newAvatar.Pos.Y, newAvatar.Pos.Z);
541 lock (this.m_syncRoot)
542 {
543 newAvatar.PhysActor = this.phyScene.AddAvatar(pVec);
544 }
545
546 lock (Entities)
547 {
548 if (!Entities.ContainsKey(agentID))
549 {
550 this.Entities.Add(agentID, newAvatar);
551 }
552 else
553 {
554 Entities[agentID] = newAvatar;
555 }
556 }
557 lock (Avatars)
558 {
559 if (Avatars.ContainsKey(agentID))
560 {
561 Avatars[agentID] = newAvatar;
562 }
563 else
564 {
565 this.Avatars.Add(agentID, newAvatar);
566 }
567 }
568 }
569 catch (Exception e)
570 {
571 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: AddViewerAgent() - Failed with exception " + e.ToString());
572 }
573 return;
574 }
575
576
577
578 /// <summary>
579 ///
580 /// </summary>
581 /// <param name="agentID"></param>
582 public override void RemoveClient(LLUUID agentID)
583 {
584 eventManager.TriggerOnRemovePresence(agentID);
585
586 return;
587 }
588 #endregion
589
590 #region Request Avatars List Methods
591 //The idea is to have a group of method that return a list of avatars meeting some requirement
592 // ie it could be all Avatars within a certain range of the calling prim/avatar.
593
594 /// <summary>
595 /// Request a List of all Avatars in this World
596 /// </summary>
597 /// <returns></returns>
598 public List<ScenePresence> RequestAvatarList()
599 {
600 List<ScenePresence> result = new List<ScenePresence>();
601
602 foreach (ScenePresence avatar in Avatars.Values)
603 {
604 result.Add(avatar);
605 }
606
607 return result;
608 }
609
610 /// <summary>
611 /// Request a filtered list of Avatars in this World
612 /// </summary>
613 /// <returns></returns>
614 public List<ScenePresence> RequestAvatarList(FilterAvatarList filter)
615 {
616 List<ScenePresence> result = new List<ScenePresence>();
617
618 foreach (ScenePresence avatar in Avatars.Values)
619 {
620 if (filter(avatar))
621 {
622 result.Add(avatar);
623 }
624 }
625
626 return result;
627 }
628
629 /// <summary>
630 /// Request a Avatar by UUID
631 /// </summary>
632 /// <param name="avatarID"></param>
633 /// <returns></returns>
634 public ScenePresence RequestAvatar(LLUUID avatarID)
635 {
636 if (this.Avatars.ContainsKey(avatarID))
637 {
638 return Avatars[avatarID];
639 }
640 return null;
641 }
642 #endregion
643
644
645 #region RegionCommsHost
646
647 /// <summary>
648 ///
649 /// </summary>
650 public void RegisterRegionWithComms()
651 {
652 GridInfo gridSettings = new GridInfo();
653 this.regionCommsHost = this.commsManager.GridServer.RegisterRegion(this.m_regInfo,gridSettings);
654 if (this.regionCommsHost != null)
655 {
656 this.regionCommsHost.OnExpectUser += new ExpectUserDelegate(this.NewUserConnection);
657 this.regionCommsHost.OnAvatarCrossingIntoRegion += new AgentCrossing(this.AgentCrossing);
658 }
659 }
660
661 /// <summary>
662 ///
663 /// </summary>
664 /// <param name="regionHandle"></param>
665 /// <param name="agent"></param>
666 public void NewUserConnection(ulong regionHandle, AgentCircuitData agent)
667 {
668 // Console.WriteLine("World.cs - add new user connection");
669 //should just check that its meant for this region
670 if (regionHandle == this.m_regInfo.RegionHandle)
671 {
672 if (agent.CapsPath != "")
673 {
674 //Console.WriteLine("new user, so creating caps handler for it");
675 Caps cap = new Caps(this.assetCache, httpListener, this.m_regInfo.CommsIPListenAddr, 9000, agent.CapsPath, agent.AgentID);
676 cap.RegisterHandlers();
677 this.capsHandlers.Add(agent.AgentID, cap);
678 }
679 this.authenticateHandler.AddNewCircuit(agent.circuitcode, agent);
680 }
681 }
682
683 public void AgentCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position)
684 {
685 if (regionHandle == this.m_regInfo.RegionHandle)
686 {
687 if (this.Avatars.ContainsKey(agentID))
688 {
689 this.Avatars[agentID].MakeAvatar(position);
690 }
691 }
692 }
693
694 /// <summary>
695 ///
696 /// </summary>
697 public void InformClientOfNeighbours(IClientAPI remoteClient)
698 {
699 // Console.WriteLine("informing client of neighbouring regions");
700 List<RegionInfo> neighbours = this.commsManager.GridServer.RequestNeighbours(this.m_regInfo);
701
702 //Console.WriteLine("we have " + neighbours.Count + " neighbouring regions");
703 if (neighbours != null)
704 {
705 for (int i = 0; i < neighbours.Count; i++)
706 {
707 // Console.WriteLine("sending neighbours data");
708 AgentCircuitData agent = remoteClient.RequestClientInfo();
709 agent.BaseFolder = LLUUID.Zero;
710 agent.InventoryFolder = LLUUID.Zero;
711 agent.startpos = new LLVector3(128, 128, 70);
712 agent.child = true;
713 this.commsManager.InterRegion.InformRegionOfChildAgent(neighbours[i].RegionHandle, agent);
714 remoteClient.InformClientOfNeighbour(neighbours[i].RegionHandle, System.Net.IPAddress.Parse(neighbours[i].CommsIPListenAddr), (ushort)neighbours[i].CommsIPListenPort);
715 //this.capsHandlers[remoteClient.AgentId].CreateEstablishAgentComms("", System.Net.IPAddress.Parse(neighbours[i].CommsIPListenAddr) + ":" + neighbours[i].CommsIPListenPort);
716 }
717 }
718 }
719
720 /// <summary>
721 ///
722 /// </summary>
723 /// <param name="regionHandle"></param>
724 /// <returns></returns>
725 public RegionInfo RequestNeighbouringRegionInfo(ulong regionHandle)
726 {
727 return this.commsManager.GridServer.RequestNeighbourInfo(regionHandle);
728 }
729
730 /// <summary>
731 ///
732 /// </summary>
733 /// <param name="minX"></param>
734 /// <param name="minY"></param>
735 /// <param name="maxX"></param>
736 /// <param name="maxY"></param>
737 public void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY)
738 {
739 List<MapBlockData> mapBlocks;
740 mapBlocks = this.commsManager.GridServer.RequestNeighbourMapBlocks(minX, minY, maxX, maxY);
741 remoteClient.SendMapBlock(mapBlocks);
742 }
743
744 /// <summary>
745 ///
746 /// </summary>
747 /// <param name="remoteClient"></param>
748 /// <param name="RegionHandle"></param>
749 /// <param name="position"></param>
750 /// <param name="lookAt"></param>
751 /// <param name="flags"></param>
752 public void RequestTeleportLocation(IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags)
753 {
754 if (regionHandle == this.m_regionHandle)
755 {
756 if (this.Avatars.ContainsKey(remoteClient.AgentId))
757 {
758 remoteClient.SendTeleportLocationStart();
759 remoteClient.SendLocalTeleport(position, lookAt, flags);
760 this.Avatars[remoteClient.AgentId].Teleport(position);
761 }
762 }
763 else
764 {
765 RegionInfo reg = this.RequestNeighbouringRegionInfo(regionHandle);
766 if (reg != null)
767 {
768 remoteClient.SendTeleportLocationStart();
769 AgentCircuitData agent = remoteClient.RequestClientInfo();
770 agent.BaseFolder = LLUUID.Zero;
771 agent.InventoryFolder = LLUUID.Zero;
772 agent.startpos = new LLVector3(128, 128, 70);
773 agent.child = true;
774 this.commsManager.InterRegion.InformRegionOfChildAgent(regionHandle, agent);
775 this.commsManager.InterRegion.ExpectAvatarCrossing(regionHandle, remoteClient.AgentId, position);
776 remoteClient.SendRegionTeleport(regionHandle, 13, reg.CommsIPListenAddr, (ushort)reg.CommsIPListenPort, 4, (1 << 4));
777 }
778 //remoteClient.SendTeleportCancel();
779 }
780 }
781
782 /// <summary>
783 ///
784 /// </summary>
785 /// <param name="regionhandle"></param>
786 /// <param name="agentID"></param>
787 /// <param name="position"></param>
788 public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position)
789 {
790 return this.commsManager.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position);
791 }
792
793 #endregion
794 }
795}
diff --git a/OpenSim/Region/Simulation/Scenes/SceneBase.cs b/OpenSim/Region/Simulation/Scenes/SceneBase.cs
new file mode 100644
index 0000000..4dbd374
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/SceneBase.cs
@@ -0,0 +1,201 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using libsecondlife;
30using libsecondlife.Packets;
31using System.Collections.Generic;
32using System.Text;
33using System.Reflection;
34using System.IO;
35using System.Threading;
36using OpenSim.Physics.Manager;
37using OpenSim.Framework.Interfaces;
38using OpenSim.Framework.Types;
39using OpenSim.Framework.Inventory;
40using OpenSim.Region.Scripting;
41using OpenSim.Terrain;
42using OpenSim.Caches;
43
44namespace OpenSim.Region.Scenes
45{
46 public abstract class SceneBase : IWorld
47 {
48 public Dictionary<libsecondlife.LLUUID, Entity> Entities;
49 protected Dictionary<uint, IClientAPI> m_clientThreads;
50 protected ulong m_regionHandle;
51 protected string m_regionName;
52 protected RegionInfo m_regInfo;
53
54 public TerrainEngine Terrain;
55
56 public string m_datastore;
57 public ILocalStorage localStorage;
58
59 protected object m_syncRoot = new object();
60 private uint m_nextLocalId = 8880000;
61 protected AssetCache assetCache;
62
63 #region Update Methods
64 /// <summary>
65 /// Normally called once every frame/tick to let the world preform anything required (like running the physics simulation)
66 /// </summary>
67 public abstract void Update();
68
69 #endregion
70
71 #region Terrain Methods
72
73 /// <summary>
74 /// Loads the World heightmap
75 /// </summary>
76 public abstract void LoadWorldMap();
77
78 /// <summary>
79 /// Loads a new storage subsystem from a named library
80 /// </summary>
81 /// <param name="dllName">Storage Library</param>
82 /// <returns>Successful or not</returns>
83 public bool LoadStorageDLL(string dllName)
84 {
85 try
86 {
87 Assembly pluginAssembly = Assembly.LoadFrom(dllName);
88 ILocalStorage store = null;
89
90 foreach (Type pluginType in pluginAssembly.GetTypes())
91 {
92 if (pluginType.IsPublic)
93 {
94 if (!pluginType.IsAbstract)
95 {
96 Type typeInterface = pluginType.GetInterface("ILocalStorage", true);
97
98 if (typeInterface != null)
99 {
100 ILocalStorage plug = (ILocalStorage)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
101 store = plug;
102
103 store.Initialise(this.m_datastore);
104 break;
105 }
106
107 typeInterface = null;
108 }
109 }
110 }
111 pluginAssembly = null;
112 this.localStorage = store;
113 return (store == null);
114 }
115 catch (Exception e)
116 {
117 OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: LoadStorageDLL() - Failed with exception " + e.ToString());
118 return false;
119 }
120 }
121
122
123 /// <summary>
124 /// Send the region heightmap to the client
125 /// </summary>
126 /// <param name="RemoteClient">Client to send to</param>
127 public virtual void SendLayerData(IClientAPI RemoteClient)
128 {
129 RemoteClient.SendLayerData(Terrain.getHeights1D());
130 }
131
132 /// <summary>
133 /// Sends a specified patch to a client
134 /// </summary>
135 /// <param name="px">Patch coordinate (x) 0..16</param>
136 /// <param name="py">Patch coordinate (y) 0..16</param>
137 /// <param name="RemoteClient">The client to send to</param>
138 public virtual void SendLayerData(int px, int py, IClientAPI RemoteClient)
139 {
140 RemoteClient.SendLayerData(px, py, Terrain.getHeights1D());
141 }
142
143 #endregion
144
145 #region Add/Remove Agent/Avatar
146 /// <summary>
147 ///
148 /// </summary>
149 /// <param name="remoteClient"></param>
150 /// <param name="agentID"></param>
151 /// <param name="child"></param>
152 public abstract void AddNewClient(IClientAPI remoteClient, LLUUID agentID, bool child);
153
154 /// <summary>
155 ///
156 /// </summary>
157 /// <param name="agentID"></param>
158 public abstract void RemoveClient(LLUUID agentID);
159
160 #endregion
161
162 /// <summary>
163 ///
164 /// </summary>
165 /// <returns></returns>
166 public virtual RegionInfo RegionInfo
167 {
168 get { return this.m_regInfo; }
169 }
170
171 public object SyncRoot
172 {
173 get { return m_syncRoot; }
174 }
175
176 public uint NextLocalId
177 {
178 get { return m_nextLocalId++; }
179 }
180
181 #region Shutdown
182 /// <summary>
183 /// Tidy before shutdown
184 /// </summary>
185 public virtual void Close()
186 {
187 try
188 {
189 this.localStorage.ShutDown();
190 }
191 catch (Exception e)
192 {
193 OpenSim.Framework.Console.MainLog.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "World.cs: Close() - Failed with exception " + e.ToString());
194 }
195 }
196
197 #endregion
198
199
200 }
201}
diff --git a/OpenSim/Region/Simulation/Scenes/SceneEvents.cs b/OpenSim/Region/Simulation/Scenes/SceneEvents.cs
new file mode 100644
index 0000000..2898578
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/SceneEvents.cs
@@ -0,0 +1,52 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace OpenSim.Region.Scenes
6{
7 /// <summary>
8 /// A class for triggering remote scene events.
9 /// </summary>
10 public class EventManager
11 {
12 public delegate void OnFrameDelegate();
13 public event OnFrameDelegate OnFrame;
14
15 public delegate void OnNewPresenceDelegate(ScenePresence presence);
16 public event OnNewPresenceDelegate OnNewPresence;
17
18 public delegate void OnNewPrimitiveDelegate(Primitive prim);
19 public event OnNewPrimitiveDelegate OnNewPrimitive;
20
21 public delegate void OnRemovePresenceDelegate(libsecondlife.LLUUID uuid);
22 public event OnRemovePresenceDelegate OnRemovePresence;
23
24 public void TriggerOnFrame()
25 {
26 if (OnFrame != null)
27 {
28 OnFrame();
29 }
30 }
31
32 public void TriggerOnNewPrimitive(Primitive prim)
33 {
34 if (OnNewPrimitive != null)
35 OnNewPrimitive(prim);
36 }
37
38 public void TriggerOnNewPresence(ScenePresence presence)
39 {
40 if (OnNewPresence != null)
41 OnNewPresence(presence);
42 }
43
44 public void TriggerOnRemovePresence(libsecondlife.LLUUID uuid)
45 {
46 if (OnRemovePresence != null)
47 {
48 OnRemovePresence(uuid);
49 }
50 }
51 }
52}
diff --git a/OpenSim/Region/Simulation/Scenes/SceneObject.cs b/OpenSim/Region/Simulation/Scenes/SceneObject.cs
new file mode 100644
index 0000000..5df87bf
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/SceneObject.cs
@@ -0,0 +1,128 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using libsecondlife.Packets;
33using OpenSim.Framework.Interfaces;
34using OpenSim.Physics.Manager;
35using OpenSim.Framework.Types;
36using OpenSim.Framework.Inventory;
37
38namespace OpenSim.Region.Scenes
39{
40 public class SceneObject : Entity
41 {
42 private LLUUID rootUUID;
43 //private Dictionary<LLUUID, Primitive> ChildPrimitives = new Dictionary<LLUUID, Primitive>();
44 protected Primitive rootPrimitive;
45 private Scene m_world;
46 protected ulong regionHandle;
47
48 /// <summary>
49 ///
50 /// </summary>
51 public SceneObject()
52 {
53
54 }
55
56 /// <summary>
57 ///
58 /// </summary>
59 /// <param name="addPacket"></param>
60 /// <param name="agentID"></param>
61 /// <param name="localID"></param>
62 public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID)
63 {
64 this.rootPrimitive = new Primitive( this.regionHandle, this.m_world, addPacket, agentID, localID);
65 }
66
67 /// <summary>
68 ///
69 /// </summary>
70 /// <param name="data"></param>
71 public void CreateFromBytes(byte[] data)
72 {
73
74 }
75
76 /// <summary>
77 ///
78 /// </summary>
79 public override void update()
80 {
81
82 }
83
84 /// <summary>
85 ///
86 /// </summary>
87 public override void BackUp()
88 {
89
90 }
91
92 /// <summary>
93 ///
94 /// </summary>
95 /// <param name="client"></param>
96 public void GetProperites(IClientAPI client)
97 {
98 //needs changing
99 ObjectPropertiesPacket proper = new ObjectPropertiesPacket();
100 proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1];
101 proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock();
102 proper.ObjectData[0].ItemID = LLUUID.Zero;
103 proper.ObjectData[0].CreationDate = (ulong)this.rootPrimitive.primData.CreationDate;
104 proper.ObjectData[0].CreatorID = this.rootPrimitive.primData.OwnerID;
105 proper.ObjectData[0].FolderID = LLUUID.Zero;
106 proper.ObjectData[0].FromTaskID = LLUUID.Zero;
107 proper.ObjectData[0].GroupID = LLUUID.Zero;
108 proper.ObjectData[0].InventorySerial = 0;
109 proper.ObjectData[0].LastOwnerID = LLUUID.Zero;
110 proper.ObjectData[0].ObjectID = this.uuid;
111 proper.ObjectData[0].OwnerID = this.rootPrimitive.primData.OwnerID;
112 proper.ObjectData[0].TouchName = new byte[0];
113 proper.ObjectData[0].TextureID = new byte[0];
114 proper.ObjectData[0].SitName = new byte[0];
115 proper.ObjectData[0].Name = new byte[0];
116 proper.ObjectData[0].Description = new byte[0];
117 proper.ObjectData[0].OwnerMask = this.rootPrimitive.primData.OwnerMask;
118 proper.ObjectData[0].NextOwnerMask = this.rootPrimitive.primData.NextOwnerMask;
119 proper.ObjectData[0].GroupMask = this.rootPrimitive.primData.GroupMask;
120 proper.ObjectData[0].EveryoneMask = this.rootPrimitive.primData.EveryoneMask;
121 proper.ObjectData[0].BaseMask = this.rootPrimitive.primData.BaseMask;
122
123 client.OutPacket(proper);
124
125 }
126
127 }
128}
diff --git a/OpenSim/Region/Simulation/Scenes/ScenePresence.Animations.cs b/OpenSim/Region/Simulation/Scenes/ScenePresence.Animations.cs
new file mode 100644
index 0000000..f0a8721
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/ScenePresence.Animations.cs
@@ -0,0 +1,76 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using System.Xml;
33
34namespace OpenSim.Region.Scenes
35{
36 partial class ScenePresence
37 {
38 public class AvatarAnimations
39 {
40
41 public Dictionary<string, LLUUID> AnimsLLUUID = new Dictionary<string, LLUUID>();
42 public Dictionary<LLUUID, string> AnimsNames = new Dictionary<LLUUID, string>();
43
44 public AvatarAnimations()
45 {
46 }
47
48 public void LoadAnims()
49 {
50 //OpenSim.Framework.Console.MainLog.Instance.Verbose("Avatar.cs:LoadAnims() - Loading avatar animations");
51 XmlTextReader reader = new XmlTextReader("data/avataranimations.xml");
52
53 XmlDocument doc = new XmlDocument();
54 doc.Load(reader);
55 foreach (XmlNode nod in doc.DocumentElement.ChildNodes)
56 {
57
58 if (nod.Attributes["name"] != null)
59 {
60 AnimsLLUUID.Add(nod.Attributes["name"].Value, nod.InnerText);
61 }
62
63 }
64
65 reader.Close();
66
67 // OpenSim.Framework.Console.MainLog.Instance.Verbose("Loaded " + AnimsLLUUID.Count.ToString() + " animation(s)");
68
69 foreach (KeyValuePair<string, LLUUID> kp in OpenSim.Region.Scenes.ScenePresence.Animations.AnimsLLUUID)
70 {
71 AnimsNames.Add(kp.Value, kp.Key);
72 }
73 }
74 }
75 }
76}
diff --git a/OpenSim/Region/Simulation/Scenes/ScenePresence.Body.cs b/OpenSim/Region/Simulation/Scenes/ScenePresence.Body.cs
new file mode 100644
index 0000000..d21b11f
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/ScenePresence.Body.cs
@@ -0,0 +1,90 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using libsecondlife.Packets;
33using OpenSim.Physics.Manager;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36
37namespace OpenSim.Region.Scenes
38{
39 partial class ScenePresence
40 {
41 public class Avatar : IScenePresenceBody
42 {
43 public Avatar()
44 {
45
46 }
47
48 public void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation)
49 {
50 }
51
52 public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
53 {
54 }
55
56 public void SendOurAppearance(IClientAPI OurClient)
57 {
58 }
59
60 public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
61 {
62 }
63 }
64
65 public class ChildAgent : IScenePresenceBody //is a ghost
66 {
67 public ChildAgent()
68 {
69
70 }
71
72 public void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation)
73 {
74 }
75
76 public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
77 {
78 }
79
80 public void SendOurAppearance(IClientAPI OurClient)
81 {
82 }
83
84 public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
85 {
86 }
87 }
88 }
89
90}
diff --git a/OpenSim/Region/Simulation/Scenes/ScenePresence.cs b/OpenSim/Region/Simulation/Scenes/ScenePresence.cs
new file mode 100644
index 0000000..45d3fed
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/ScenePresence.cs
@@ -0,0 +1,525 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.IO;
31using System.Text;
32using libsecondlife;
33using libsecondlife.Packets;
34using OpenSim.Physics.Manager;
35using OpenSim.Framework.Inventory;
36using OpenSim.Framework.Interfaces;
37using OpenSim.Framework.Types;
38using Axiom.MathLib;
39
40namespace OpenSim.Region.Scenes
41{
42 public partial class ScenePresence : Entity
43 {
44 public static bool PhysicsEngineFlying = false;
45 public static AvatarAnimations Animations;
46 public static byte[] DefaultTexture;
47 public string firstname;
48 public string lastname;
49 public IClientAPI ControllingClient;
50 public LLUUID current_anim;
51 public int anim_seq;
52 private bool updateflag = false;
53 private byte movementflag = 0;
54 private List<NewForce> forcesList = new List<NewForce>();
55 private short _updateCount = 0;
56 private Axiom.MathLib.Quaternion bodyRot;
57 private LLObject.TextureEntry avatarAppearanceTexture = null;
58 private byte[] visualParams;
59 private AvatarWearable[] Wearables;
60 private LLVector3 positionLastFrame = new LLVector3(0, 0, 0);
61 private ulong m_regionHandle;
62 private bool childAgent = false;
63 private bool newForce = false;
64 private bool newAvatar = false;
65 private IScenePresenceBody m_body;
66
67 protected RegionInfo m_regionInfo;
68
69 #region Properties
70 /// <summary>
71 ///
72 /// </summary>
73 public PhysicsActor PhysActor
74 {
75 set
76 {
77 this._physActor = value;
78 }
79 get
80 {
81 return _physActor;
82 }
83 }
84 #endregion
85
86 #region Constructor(s)
87 /// <summary>
88 ///
89 /// </summary>
90 /// <param name="theClient"></param>
91 /// <param name="world"></param>
92 /// <param name="clientThreads"></param>
93 /// <param name="regionDat"></param>
94 public ScenePresence(IClientAPI theClient, Scene world, RegionInfo reginfo)
95 {
96
97 m_world = world;
98 this.uuid = theClient.AgentId;
99
100 m_regionInfo = reginfo;
101 m_regionHandle = reginfo.RegionHandle;
102 OpenSim.Framework.Console.MainLog.Instance.Verbose("Avatar.cs ");
103 ControllingClient = theClient;
104 this.firstname = ControllingClient.FirstName;
105 this.lastname = ControllingClient.LastName;
106 m_localId = m_world.NextLocalId;
107 Pos = ControllingClient.StartPos;
108 visualParams = new byte[218];
109 for (int i = 0; i < 218; i++)
110 {
111 visualParams[i] = 100;
112 }
113
114 Wearables = AvatarWearable.DefaultWearables;
115
116 this.avatarAppearanceTexture = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
117
118 //register for events
119 ControllingClient.OnRequestWearables += this.SendOurAppearance;
120 //ControllingClient.OnSetAppearance += new SetAppearance(this.SetAppearance);
121 ControllingClient.OnCompleteMovementToRegion += this.CompleteMovement;
122 ControllingClient.OnCompleteMovementToRegion += this.SendInitialData;
123 ControllingClient.OnAgentUpdate += this.HandleAgentUpdate;
124 // ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack);
125 // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
126 //ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
127
128 }
129 #endregion
130
131 #region Status Methods
132 /// <summary>
133 /// Not Used, most likely can be deleted
134 /// </summary>
135 /// <param name="status"></param>
136 public void ChildStatusChange(bool status)
137 {
138 this.childAgent = status;
139
140 if (this.childAgent == true)
141 {
142 this.Velocity = new LLVector3(0, 0, 0);
143 this.Pos = new LLVector3(128, 128, 70);
144
145 }
146 }
147
148 /// <summary>
149 ///
150 /// </summary>
151 /// <param name="pos"></param>
152 public void MakeAvatar(LLVector3 pos)
153 {
154 //this.childAvatar = false;
155 this.Pos = pos;
156 this.newAvatar = true;
157 this.childAgent = false;
158 }
159
160 protected void MakeChildAgent()
161 {
162 this.Velocity = new LLVector3(0, 0, 0);
163 this.Pos = new LLVector3(128, 128, 70);
164 this.childAgent = true;
165 }
166
167 /// <summary>
168 ///
169 /// </summary>
170 /// <param name="pos"></param>
171 public void Teleport(LLVector3 pos)
172 {
173 this.Pos = pos;
174 this.SendTerseUpdateToALLClients();
175 }
176
177 /// <summary>
178 ///
179 /// </summary>
180 public void StopMovement()
181 {
182
183 }
184 #endregion
185
186 #region Event Handlers
187 /// <summary>
188 ///
189 /// </summary>
190 /// <param name="texture"></param>
191 /// <param name="visualParam"></param>
192 public void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam)
193 {
194
195 }
196
197 /// <summary>
198 /// Complete Avatar's movement into the region
199 /// </summary>
200 public void CompleteMovement()
201 {
202 LLVector3 look = this.Velocity;
203 if ((look.X == 0) && (look.Y == 0) && (look.Z == 0))
204 {
205 look = new LLVector3(0.99f, 0.042f, 0);
206 }
207 this.ControllingClient.MoveAgentIntoRegion(m_regionInfo, Pos, look);
208 if (this.childAgent)
209 {
210 this.childAgent = false;
211 }
212 }
213
214 /// <summary>
215 ///
216 /// </summary>
217 /// <param name="pack"></param>
218 public void HandleAgentUpdate(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation)
219 {
220 if ((flags & (uint)MainAvatar.ControlFlags.AGENT_CONTROL_AT_POS) != 0)
221 {
222 Axiom.MathLib.Quaternion q = new Axiom.MathLib.Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z);
223 if (((movementflag & 1) == 0) || (q != this.bodyRot))
224 {
225 Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3(1, 0, 0);
226 this.AddNewMovement(v3, q);
227 movementflag = 1;
228 this.bodyRot = q;
229 }
230 }
231 else if ((flags & (uint)MainAvatar.ControlFlags.AGENT_CONTROL_AT_NEG) != 0)
232 {
233 Axiom.MathLib.Quaternion q = new Axiom.MathLib.Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z);
234 if (((movementflag & 2) == 0) || (q != this.bodyRot))
235 {
236 Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3(-1, 0, 0);
237 this.AddNewMovement(v3, q);
238 movementflag = 2;
239 this.bodyRot = q;
240 }
241 }
242 else
243 {
244 if ((movementflag) != 0)
245 {
246 NewForce newVelocity = new NewForce();
247 newVelocity.X = 0;
248 newVelocity.Y = 0;
249 newVelocity.Z = 0;
250 this.forcesList.Add(newVelocity);
251 movementflag = 0;
252 }
253 }
254
255 }
256
257 protected void AddNewMovement(Axiom.MathLib.Vector3 vec, Axiom.MathLib.Quaternion rotation)
258 {
259 NewForce newVelocity = new NewForce();
260 Axiom.MathLib.Vector3 direc = rotation * vec;
261 direc.Normalize();
262
263 direc = direc * ((0.03f) * 128f);
264 if (this._physActor.Flying)
265 direc *= 4;
266
267 newVelocity.X = direc.x;
268 newVelocity.Y = direc.y;
269 newVelocity.Z = direc.z;
270 this.forcesList.Add(newVelocity);
271 }
272
273 #endregion
274
275 #region Overridden Methods
276 /// <summary>
277 ///
278 /// </summary>
279 public override void LandRenegerated()
280 {
281
282 }
283
284 /// <summary>
285 ///
286 /// </summary>
287 public override void update()
288 {
289 if (this.childAgent == false)
290 {
291 if (this.newForce)
292 {
293 this.SendTerseUpdateToALLClients();
294 _updateCount = 0;
295 }
296 else if (movementflag != 0)
297 {
298 _updateCount++;
299 if (_updateCount > 3)
300 {
301 this.SendTerseUpdateToALLClients();
302 _updateCount = 0;
303 }
304 }
305
306 this.CheckForBorderCrossing();
307 }
308 }
309 #endregion
310
311 #region Update Client(s)
312 /// <summary>
313 ///
314 /// </summary>
315 /// <param name="RemoteClient"></param>
316 public void SendTerseUpdateToClient(IClientAPI RemoteClient)
317 {
318 LLVector3 pos = this.Pos;
319 LLVector3 vel = this.Velocity;
320 RemoteClient.SendAvatarTerseUpdate(this.m_regionHandle, 64096, this.LocalId, new LLVector3(pos.X, pos.Y, pos.Z), new LLVector3(vel.X, vel.Y, vel.Z));
321 }
322
323 /// <summary>
324 ///
325 /// </summary>
326 public void SendTerseUpdateToALLClients()
327 {
328 List<ScenePresence> avatars = this.m_world.RequestAvatarList();
329 for (int i = 0; i < avatars.Count; i++)
330 {
331 this.SendTerseUpdateToClient(avatars[i].ControllingClient);
332 }
333 }
334
335 /// <summary>
336 ///
337 /// </summary>
338 /// <param name="remoteAvatar"></param>
339 public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar)
340 {
341 remoteAvatar.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos, DefaultTexture);
342 }
343
344 /// <summary>
345 ///
346 /// </summary>
347 public void SendInitialData()
348 {
349 this.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos, DefaultTexture);
350 if (this.newAvatar)
351 {
352 this.m_world.InformClientOfNeighbours(this.ControllingClient);
353 this.newAvatar = false;
354 }
355 }
356
357 /// <summary>
358 ///
359 /// </summary>
360 /// <param name="OurClient"></param>
361 public void SendOurAppearance(IClientAPI OurClient)
362 {
363 this.ControllingClient.SendWearables(this.Wearables);
364 }
365
366 /// <summary>
367 ///
368 /// </summary>
369 /// <param name="avatarInfo"></param>
370 public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
371 {
372
373 }
374
375 /// <summary>
376 ///
377 /// </summary>
378 /// <param name="animID"></param>
379 /// <param name="seq"></param>
380 public void SendAnimPack(LLUUID animID, int seq)
381 {
382
383
384 }
385
386 /// <summary>
387 ///
388 /// </summary>
389 public void SendAnimPack()
390 {
391
392 }
393 #endregion
394
395 #region Border Crossing Methods
396 /// <summary>
397 ///
398 /// </summary>
399 protected void CheckForBorderCrossing()
400 {
401 LLVector3 pos2 = this.Pos;
402 LLVector3 vel = this.Velocity;
403
404 float timeStep = 0.2f;
405 pos2.X = pos2.X + (vel.X * timeStep);
406 pos2.Y = pos2.Y + (vel.Y * timeStep);
407 pos2.Z = pos2.Z + (vel.Z * timeStep);
408
409 if ((pos2.X < 0) || (pos2.X > 256))
410 {
411 this.CrossToNewRegion();
412 }
413
414 if ((pos2.Y < 0) || (pos2.Y > 256))
415 {
416 this.CrossToNewRegion();
417 }
418 }
419
420 /// <summary>
421 ///
422 /// </summary>
423 protected void CrossToNewRegion()
424 {
425 LLVector3 pos = this.Pos;
426 LLVector3 newpos = new LLVector3(pos.X, pos.Y, pos.Z);
427 uint neighbourx = this.m_regionInfo.RegionLocX;
428 uint neighboury = this.m_regionInfo.RegionLocY;
429
430 if (pos.X < 2)
431 {
432 neighbourx -= 1;
433 newpos.X = 254;
434 }
435 if (pos.X > 253)
436 {
437 neighbourx += 1;
438 newpos.X = 1;
439 }
440 if (pos.Y < 2)
441 {
442 neighboury -= 1;
443 newpos.Y = 254;
444 }
445 if (pos.Y > 253)
446 {
447 neighboury += 1;
448 newpos.Y = 1;
449 }
450
451 LLVector3 vel = this.velocity;
452 ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury * 256));
453 RegionInfo neighbourRegion = this.m_world.RequestNeighbouringRegionInfo(neighbourHandle);
454 if (neighbourRegion != null)
455 {
456 bool res = this.m_world.InformNeighbourOfCrossing(neighbourHandle, this.ControllingClient.AgentId, newpos);
457 if (res)
458 {
459 this.MakeChildAgent();
460 this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, System.Net.IPAddress.Parse(neighbourRegion.CommsIPListenAddr), (ushort)neighbourRegion.CommsIPListenPort);
461 }
462 }
463 }
464 #endregion
465
466 /// <summary>
467 ///
468 /// </summary>
469 public static void LoadAnims()
470 {
471
472 }
473
474 /// <summary>
475 ///
476 /// </summary>
477 public override void updateMovement()
478 {
479 newForce = false;
480 lock (this.forcesList)
481 {
482 if (this.forcesList.Count > 0)
483 {
484 for (int i = 0; i < this.forcesList.Count; i++)
485 {
486 NewForce force = this.forcesList[i];
487
488 this.updateflag = true;
489 this.Velocity = new LLVector3(force.X, force.Y, force.Z);
490 this.newForce = true;
491 }
492 for (int i = 0; i < this.forcesList.Count; i++)
493 {
494 this.forcesList.RemoveAt(0);
495 }
496 }
497 }
498 }
499
500 public static void LoadTextureFile(string name)
501 {
502 FileInfo fInfo = new FileInfo(name);
503 long numBytes = fInfo.Length;
504 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read);
505 BinaryReader br = new BinaryReader(fStream);
506 byte[] data1 = br.ReadBytes((int)numBytes);
507 br.Close();
508 fStream.Close();
509 DefaultTexture = data1;
510 }
511
512 public class NewForce
513 {
514 public float X;
515 public float Y;
516 public float Z;
517
518 public NewForce()
519 {
520
521 }
522 }
523 }
524
525}
diff --git a/OpenSim/Region/Simulation/Scenes/scripting/IScriptContext.cs b/OpenSim/Region/Simulation/Scenes/scripting/IScriptContext.cs
new file mode 100644
index 0000000..daa1b92
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/scripting/IScriptContext.cs
@@ -0,0 +1,40 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Region.Scripting
34{
35 public interface IScriptContext
36 {
37 IScriptEntity Entity { get; }
38 bool TryGetRandomAvatar(out IScriptReadonlyEntity avatar);
39 }
40}
diff --git a/OpenSim/Region/Simulation/Scenes/scripting/IScriptEntity.cs b/OpenSim/Region/Simulation/Scenes/scripting/IScriptEntity.cs
new file mode 100644
index 0000000..44b886f
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/scripting/IScriptEntity.cs
@@ -0,0 +1,46 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Region.Scripting
34{
35 public interface IScriptReadonlyEntity
36 {
37 LLVector3 Pos { get; }
38 string Name { get; }
39 }
40
41 public interface IScriptEntity
42 {
43 LLVector3 Pos { get; set; }
44 string Name { get; }
45 }
46}
diff --git a/OpenSim/Region/Simulation/Scenes/scripting/IScriptHandler.cs b/OpenSim/Region/Simulation/Scenes/scripting/IScriptHandler.cs
new file mode 100644
index 0000000..797998d
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/scripting/IScriptHandler.cs
@@ -0,0 +1,126 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using OpenSim.Physics.Manager;
33using OpenSim.Region;
34using OpenSim.Region.Scenes;
35using Avatar=OpenSim.Region.Scenes.ScenePresence;
36using Primitive = OpenSim.Region.Scenes.Primitive;
37
38namespace OpenSim.Region.Scripting
39{
40 public delegate void ScriptEventHandler(IScriptContext context);
41
42 public class ScriptHandler : IScriptContext, IScriptEntity, IScriptReadonlyEntity
43 {
44 private Scene m_world;
45 private Script m_script;
46 private Entity m_entity;
47
48 public LLUUID ScriptId
49 {
50 get
51 {
52 return m_script.ScriptId;
53 }
54 }
55
56 public void OnFrame()
57 {
58 m_script.OnFrame(this);
59 }
60
61 public ScriptHandler(Script script, Entity entity, Scene world)
62 {
63 m_script = script;
64 m_entity = entity;
65 m_world = world;
66 }
67
68 #region IScriptContext Members
69
70 IScriptEntity IScriptContext.Entity
71 {
72 get
73 {
74 return this;
75 }
76 }
77
78 bool IScriptContext.TryGetRandomAvatar(out IScriptReadonlyEntity avatar)
79 {
80 foreach (Entity entity in m_world.Entities.Values )
81 {
82 if( entity is Avatar )
83 {
84 avatar = entity;
85 return true;
86 }
87 }
88
89 avatar = null;
90 return false;
91 }
92
93 #endregion
94
95 #region IScriptEntity and IScriptReadonlyEntity Members
96
97 public string Name
98 {
99 get
100 {
101 return m_entity.Name;
102 }
103 }
104
105 public LLVector3 Pos
106 {
107 get
108 {
109 return m_entity.Pos;
110 }
111
112 set
113 {
114 if (m_entity is Primitive)
115 {
116 Primitive prim = m_entity as Primitive;
117 // Of course, we really should have asked the physEngine if this is possible, and if not, returned false.
118 // prim.UpdatePosition( value );
119 }
120 }
121 }
122
123 #endregion
124 }
125
126}
diff --git a/OpenSim/Region/Simulation/Scenes/scripting/Script.cs b/OpenSim/Region/Simulation/Scenes/scripting/Script.cs
new file mode 100644
index 0000000..1d01f3c
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/scripting/Script.cs
@@ -0,0 +1,53 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Region.Scripting
34{
35 public class Script
36 {
37 private LLUUID m_scriptId;
38 public virtual LLUUID ScriptId
39 {
40 get
41 {
42 return m_scriptId;
43 }
44 }
45
46 public Script( LLUUID scriptId )
47 {
48 m_scriptId = scriptId;
49 }
50
51 public ScriptEventHandler OnFrame;
52 }
53}
diff --git a/OpenSim/Region/Simulation/Scenes/scripting/ScriptFactory.cs b/OpenSim/Region/Simulation/Scenes/scripting/ScriptFactory.cs
new file mode 100644
index 0000000..32ef046
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/scripting/ScriptFactory.cs
@@ -0,0 +1,35 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Region.Scripting
33{
34 public delegate Script ScriptFactory();
35}
diff --git a/OpenSim/Region/Simulation/Scenes/scripting/Scripts/FollowRandomAvatar.cs b/OpenSim/Region/Simulation/Scenes/scripting/Scripts/FollowRandomAvatar.cs
new file mode 100644
index 0000000..21f07a8
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/scripting/Scripts/FollowRandomAvatar.cs
@@ -0,0 +1,64 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32
33namespace OpenSim.Region.Scripting
34{
35 public class FollowRandomAvatar : Script
36 {
37 public FollowRandomAvatar()
38 : base(LLUUID.Random())
39 {
40 OnFrame += MyOnFrame;
41 }
42
43 private void MyOnFrame(IScriptContext context)
44 {
45 LLVector3 pos = context.Entity.Pos;
46
47 IScriptReadonlyEntity avatar;
48
49 if (context.TryGetRandomAvatar(out avatar))
50 {
51 LLVector3 avatarPos = avatar.Pos;
52
53 float x = pos.X + ((float)avatarPos.X.CompareTo(pos.X)) / 2;
54 float y = pos.Y + ((float)avatarPos.Y.CompareTo(pos.Y)) / 2;
55
56 LLVector3 newPos = new LLVector3(x, y, pos.Z);
57
58 context.Entity.Pos = newPos;
59 }
60 }
61 }
62
63
64}
diff --git a/OpenSim/Region/Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs
new file mode 100644
index 0000000..ab3c34c
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs
@@ -0,0 +1,117 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29// BDB Support
30// Apparently broken on Mono
31
32using System;
33using System.Collections.Generic;
34using System.Data;
35using libsecondlife;
36using OpenSim.Framework.Interfaces;
37using OpenSim.Framework.Types;
38using BerkeleyDb;
39using Kds.Serialization;
40using Kds.Serialization.Buffer;
41
42namespace OpenSim.Storage.LocalStorageBDB
43{
44 public class BDBLocalStorage : ILocalStorage
45 {
46 const string simDbName = "localsim.db";
47
48 DbHash sim;
49 Db DB;
50 //BEFormatter formatter;
51
52 public BDBLocalStorage()
53 {
54 DB = new Db(DbCreateFlags.None);
55 sim = (DbHash)DB.Open(null, simDbName, null, BerkeleyDb.DbType.Hash, Db.OpenFlags.Create, 0);
56 //vendorDb = (DbBTree)db.Open(null, VendorDbName, null, DbType.BTree, Db.OpenFlags.Create, 0);
57 }
58
59 public void Initialise(string file)
60 {
61 // Blank
62 }
63
64 public void StorePrim(PrimData prim)
65 {
66 DbEntry key = new DbEntry();
67 DbEntry data = new DbEntry();
68 lock (sim)
69 {
70 sim.PutUnique(null, ref key, ref data, DbFile.WriteFlags.AutoCommit);
71 }
72 }
73 public void RemovePrim(LLUUID primID)
74 {
75
76 }
77 public void LoadPrimitives(ILocalStorageReceiver receiver)
78 {
79
80 }
81 public float[] LoadWorld()
82 {
83 return new float[65536];
84 }
85 public void SaveMap(float[] heightmap)
86 {
87
88 }
89
90 public void SaveParcels(ParcelData[] parcel_data)
91 {
92 }
93
94 public void SaveParcel(ParcelData parcel)
95 {
96 }
97
98 public void RemoveParcel(ParcelData parcel)
99 {
100 }
101
102 public void RemoveAllParcels()
103 {
104 }
105
106 public void LoadParcels(ILocalStorageParcelReceiver recv)
107 {
108 recv.NoParcelDataFromStorage();
109 }
110
111 public void ShutDown()
112 {
113 sim.GetDb().Close();
114 DB.Close();
115 }
116 }
117} \ No newline at end of file
diff --git a/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj
new file mode 100644
index 0000000..b956c9b
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj
@@ -0,0 +1,112 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{A4691E59-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Storage.LocalStorageBerkeleyDB</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Storage.LocalStorageBerkeleyDB</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Kds.Serialization.dll" >
62 <HintPath>..\..\..\..\bin\Kds.Serialization.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libdb_dotNET43.dll" >
66 <HintPath>..\..\..\..\bin\libdb_dotNET43.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="libsecondlife.dll" >
70 <HintPath>..\..\..\..\bin\libsecondlife.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System" >
74 <HintPath>System.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Data" >
78 <HintPath>System.Data.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="System.Xml" >
82 <HintPath>System.Xml.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 </ItemGroup>
86 <ItemGroup>
87 <ProjectReference Include="..\..\..\Framework\General\OpenSim.Framework.csproj">
88 <Name>OpenSim.Framework</Name>
89 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
90 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
91 <Private>False</Private>
92 </ProjectReference>
93 <ProjectReference Include="..\..\..\Framework\Console\OpenSim.Framework.Console.csproj">
94 <Name>OpenSim.Framework.Console</Name>
95 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
96 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
97 <Private>False</Private>
98 </ProjectReference>
99 </ItemGroup>
100 <ItemGroup>
101 <Compile Include="BDBLocalStorage.cs">
102 <SubType>Code</SubType>
103 </Compile>
104 </ItemGroup>
105 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
106 <PropertyGroup>
107 <PreBuildEvent>
108 </PreBuildEvent>
109 <PostBuildEvent>
110 </PostBuildEvent>
111 </PropertyGroup>
112</Project>
diff --git a/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj.user b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Region.Storage.LocalStorageBerkeleyDB.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Storage.LocalStorageBerkeleyDB.dll.build b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Storage.LocalStorageBerkeleyDB.dll.build
new file mode 100644
index 0000000..bc2d8ec
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageBerkeleyDB/OpenSim.Storage.LocalStorageBerkeleyDB.dll.build
@@ -0,0 +1,46 @@
1<?xml version="1.0" ?>
2<project name="OpenSim.Storage.LocalStorageBerkeleyDB" default="build">
3 <target name="build">
4 <echo message="Build Directory is ${project::get-base-directory()}/${build.dir}" />
5 <mkdir dir="${project::get-base-directory()}/${build.dir}" />
6 <copy todir="${project::get-base-directory()}/${build.dir}">
7 <fileset basedir="${project::get-base-directory()}">
8 </fileset>
9 </copy>
10 <csc target="library" debug="${build.debug}" unsafe="False" define="TRACE;DEBUG" output="${project::get-base-directory()}/${build.dir}/${project::get-name()}.dll">
11 <resources prefix="OpenSim.Storage.LocalStorageBerkeleyDB" dynamicprefix="true" >
12 </resources>
13 <sources failonempty="true">
14 <include name="BDBLocalStorage.cs" />
15 </sources>
16 <references basedir="${project::get-base-directory()}">
17 <lib>
18 <include name="${project::get-base-directory()}" />
19 <include name="${project::get-base-directory()}/${build.dir}" />
20 </lib>
21 <include name="../../../bin/Kds.Serialization.dll" />
22 <include name="../../../bin/libdb_dotNET43.dll" />
23 <include name="../../../bin/libsecondlife.dll" />
24 <include name="../../../bin/OpenSim.Framework.dll" />
25 <include name="../../../bin/OpenSim.Framework.Console.dll" />
26 <include name="System.dll" />
27 <include name="System.Data.dll" />
28 <include name="System.Xml.dll" />
29 </references>
30 </csc>
31 <echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../../../bin/" />
32 <mkdir dir="${project::get-base-directory()}/../../../bin/"/>
33 <copy todir="${project::get-base-directory()}/../../../bin/">
34 <fileset basedir="${project::get-base-directory()}/${build.dir}/" >
35 <include name="*.dll"/>
36 <include name="*.exe"/>
37 </fileset>
38 </copy>
39 </target>
40 <target name="clean">
41 <delete dir="${bin.dir}" failonerror="false" />
42 <delete dir="${obj.dir}" failonerror="false" />
43 </target>
44 <target name="doc" description="Creates documentation.">
45 </target>
46</project>
diff --git a/OpenSim/Region/Storage/LocalStorageDb4o/AssemblyInfo.cs b/OpenSim/Region/Storage/LocalStorageDb4o/AssemblyInfo.cs
new file mode 100644
index 0000000..ea2b62e
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageDb4o/AssemblyInfo.cs
@@ -0,0 +1,58 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// Information about this assembly is defined by the following
33// attributes.
34//
35// change them to the information which is associated with the assembly
36// you compile.
37
38[assembly: AssemblyTitle("Db4LocalStorage")]
39[assembly: AssemblyDescription("")]
40[assembly: AssemblyConfiguration("")]
41[assembly: AssemblyCompany("")]
42[assembly: AssemblyProduct("Db4LocalStorage")]
43[assembly: AssemblyCopyright("")]
44[assembly: AssemblyTrademark("")]
45[assembly: AssemblyCulture("")]
46
47// This sets the default COM visibility of types in the assembly to invisible.
48// If you need to expose a type to COM, use [ComVisible(true)] on that type.
49[assembly: ComVisible(false)]
50
51// The assembly version has following format :
52//
53// Major.Minor.Build.Revision
54//
55// You can specify all values by your own or you can build default build and revision
56// numbers with the '*' character (the default):
57
58[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim/Region/Storage/LocalStorageDb4o/Db4LocalStorage.cs b/OpenSim/Region/Storage/LocalStorageDb4o/Db4LocalStorage.cs
new file mode 100644
index 0000000..8e6b04d
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageDb4o/Db4LocalStorage.cs
@@ -0,0 +1,271 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using Db4objects.Db4o;
31using Db4objects.Db4o.Query;
32
33using libsecondlife;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36using OpenSim.Framework.Console;
37
38
39namespace OpenSim.Storage.LocalStorageDb4o
40{
41 /// <summary>
42 ///
43 /// </summary>
44 public class Db4LocalStorage : ILocalStorage
45 {
46 private IObjectContainer db;
47 private string datastore;
48
49 public Db4LocalStorage()
50 {
51
52 }
53
54 public void Initialise(string dfile)
55 {
56 OpenSim.Framework.Console.MainLog.Instance.Warn("Db4LocalStorage Opening " + dfile);
57 datastore = dfile;
58 try
59 {
60 db = Db4oFactory.OpenFile(datastore);
61 OpenSim.Framework.Console.MainLog.Instance.Verbose("Db4LocalStorage creation");
62 }
63 catch (Exception e)
64 {
65 db.Close();
66 OpenSim.Framework.Console.MainLog.Instance.Warn("Db4LocalStorage :Constructor - Exception occured");
67 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
68 }
69 }
70
71 public void StorePrim(PrimData prim)
72 {
73 IObjectSet result = db.Query(new UUIDPrimQuery(prim.FullID));
74 if (result.Count > 0)
75 {
76 //prim already in storage
77 //so update it
78 PrimData found = (PrimData)result.Next();
79 found.PathBegin = prim.PathBegin;
80 found.PathCurve = prim.PathCurve;
81 found.PathEnd = prim.PathEnd;
82 found.PathRadiusOffset = prim.PathRadiusOffset;
83 found.PathRevolutions = prim.PathRevolutions;
84 found.PathScaleX = prim.PathScaleX;
85 found.PathScaleY = prim.PathScaleY;
86 found.PathShearX = prim.PathShearX;
87 found.PathShearY = prim.PathShearY;
88 found.PathSkew = prim.PathSkew;
89 found.PathTaperX = prim.PathTaperX;
90 found.PathTaperY = prim.PathTaperY;
91 found.PathTwist = prim.PathTwist;
92 found.PathTwistBegin = prim.PathTwistBegin;
93 found.PCode = prim.PCode;
94 found.ProfileBegin = prim.ProfileBegin;
95 found.ProfileCurve = prim.ProfileCurve;
96 found.ProfileEnd = prim.ProfileEnd;
97 found.ProfileHollow = prim.ProfileHollow;
98 found.Position = prim.Position;
99 found.Rotation = prim.Rotation;
100 found.TextureEntry = prim.TextureEntry;
101 db.Set(found);
102 db.Commit();
103 }
104 else
105 {
106 //not in storage
107 db.Set(prim);
108 db.Commit();
109 }
110 }
111
112 public void RemovePrim(LLUUID primID)
113 {
114 IObjectSet result = db.Query(new UUIDPrimQuery(primID));
115 if (result.Count > 0)
116 {
117 PrimData found = (PrimData)result.Next();
118 db.Delete(found);
119 }
120 }
121
122
123 public void LoadPrimitives(ILocalStorageReceiver receiver)
124 {
125 IObjectSet result = db.Get(typeof(PrimData));
126 OpenSim.Framework.Console.MainLog.Instance.Verbose("Db4LocalStorage.cs: LoadPrimitives() - number of prims in storages is " + result.Count);
127 foreach (PrimData prim in result)
128 {
129 receiver.PrimFromStorage(prim);
130 }
131 }
132
133 public float[] LoadWorld()
134 {
135 OpenSim.Framework.Console.MainLog.Instance.Verbose("LoadWorld() - Loading world....");
136 float[] heightmap = null;
137 OpenSim.Framework.Console.MainLog.Instance.Verbose("LoadWorld() - Looking for a heightmap in local DB");
138 IObjectSet world_result = db.Get(typeof(MapStorage));
139 if (world_result.Count > 0)
140 {
141 OpenSim.Framework.Console.MainLog.Instance.Verbose("LoadWorld() - Found a heightmap in local database, loading");
142 MapStorage map = (MapStorage)world_result.Next();
143 //blank.LandMap = map.Map;
144 heightmap = map.Map;
145 }
146 return heightmap;
147 }
148
149 public void SaveMap(float[] heightmap)
150 {
151 IObjectSet world_result = db.Get(typeof(MapStorage));
152 if (world_result.Count > 0)
153 {
154 OpenSim.Framework.Console.MainLog.Instance.Verbose("SaveWorld() - updating saved copy of heightmap in local database");
155 MapStorage map = (MapStorage)world_result.Next();
156 db.Delete(map);
157 }
158 MapStorage map1 = new MapStorage();
159 map1.Map = heightmap; //OpenSim_Main.local_world.LandMap;
160 db.Set(map1);
161 db.Commit();
162 }
163
164 public void SaveParcel(ParcelData parcel)
165 {
166 IObjectSet result = db.Query(new UUIDParcelQuery(parcel.globalID));
167 if (result.Count > 0)
168 {
169 //Old Parcel
170 ParcelData updateParcel = (ParcelData)result.Next();
171 updateParcel.AABBMax = parcel.AABBMax;
172 updateParcel.AABBMin = parcel.AABBMin;
173 updateParcel.area = parcel.area;
174 updateParcel.auctionID = parcel.auctionID;
175 updateParcel.authBuyerID = parcel.authBuyerID;
176 updateParcel.category = parcel.category;
177 updateParcel.claimDate = parcel.claimDate;
178 updateParcel.claimPrice = parcel.claimPrice;
179 updateParcel.groupID = parcel.groupID;
180 updateParcel.groupPrims = parcel.groupPrims;
181 updateParcel.isGroupOwned = parcel.isGroupOwned;
182 updateParcel.landingType = parcel.landingType;
183 updateParcel.mediaAutoScale = parcel.mediaAutoScale;
184 updateParcel.mediaID = parcel.mediaID;
185 updateParcel.mediaURL = parcel.mediaURL;
186 updateParcel.musicURL = parcel.musicURL;
187 updateParcel.localID = parcel.localID;
188 updateParcel.ownerID = parcel.ownerID;
189 updateParcel.passHours = parcel.passHours;
190 updateParcel.passPrice = parcel.passPrice;
191 updateParcel.parcelBitmapByteArray = (byte[])parcel.parcelBitmapByteArray.Clone();
192 updateParcel.parcelDesc = parcel.parcelDesc;
193 updateParcel.parcelFlags = parcel.parcelFlags;
194 updateParcel.parcelName = parcel.parcelName;
195 updateParcel.parcelStatus = parcel.parcelStatus;
196 updateParcel.salePrice = parcel.salePrice;
197 updateParcel.snapshotID = parcel.snapshotID;
198 updateParcel.userLocation = parcel.userLocation;
199 updateParcel.userLookAt = parcel.userLookAt;
200
201 db.Set(updateParcel);
202 }
203 else
204 {
205 db.Set(parcel);
206 }
207 db.Commit();
208 }
209
210 public void SaveParcels(ParcelData[] parcel_data)
211 {
212 MainLog.Instance.Notice("Parcel Backup: Saving Parcels...");
213 int i;
214 for (i = 0; i < parcel_data.GetLength(0); i++)
215 {
216
217 SaveParcel(parcel_data[i]);
218
219 }
220 MainLog.Instance.Notice("Parcel Backup: Parcel Save Complete");
221 }
222
223 public void RemoveParcel(ParcelData parcel)
224 {
225 IObjectSet result = db.Query(new UUIDParcelQuery(parcel.globalID));
226 if (result.Count > 0)
227 {
228 db.Delete(result[0]);
229 }
230 db.Commit();
231 }
232 public void RemoveAllParcels()
233 {
234 MainLog.Instance.Notice("Parcel Backup: Removing all parcels...");
235 IObjectSet result = db.Get(typeof(ParcelData));
236 if (result.Count > 0)
237 {
238 foreach (ParcelData parcelData in result)
239 {
240 RemoveParcel(parcelData);
241 }
242 }
243 }
244
245 public void LoadParcels(ILocalStorageParcelReceiver recv)
246 {
247 MainLog.Instance.Notice("Parcel Backup: Loading Parcels...");
248 IObjectSet result = db.Get(typeof(ParcelData));
249 if (result.Count > 0)
250 {
251 MainLog.Instance.Notice("Parcel Backup: Parcels exist in database.");
252 foreach (ParcelData parcelData in result)
253 {
254
255 recv.ParcelFromStorage(parcelData);
256 }
257 }
258 else
259 {
260 MainLog.Instance.Notice("Parcel Backup: No parcels exist. Creating basic parcel.");
261 recv.NoParcelDataFromStorage();
262 }
263 MainLog.Instance.Notice("Parcel Backup: Parcels Restored");
264 }
265 public void ShutDown()
266 {
267 db.Commit();
268 db.Close();
269 }
270 }
271} \ No newline at end of file
diff --git a/OpenSim/Region/Storage/LocalStorageDb4o/MapStorage.cs b/OpenSim/Region/Storage/LocalStorageDb4o/MapStorage.cs
new file mode 100644
index 0000000..56387ac
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageDb4o/MapStorage.cs
@@ -0,0 +1,43 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31
32namespace OpenSim.Storage.LocalStorageDb4o
33{
34 public class MapStorage
35 {
36 public float[] Map;
37
38 public MapStorage()
39 {
40
41 }
42 }
43} \ No newline at end of file
diff --git a/OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj b/OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj
new file mode 100644
index 0000000..147158c
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj
@@ -0,0 +1,116 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{43DB702D-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Storage.LocalStorageDb4o</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Storage.LocalStorageDb4o</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="Db4objects.Db4o.dll" >
62 <HintPath>..\..\..\..\bin\Db4objects.Db4o.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="libsecondlife.dll" >
66 <HintPath>..\..\..\..\bin\libsecondlife.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System" >
70 <HintPath>System.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Xml" >
74 <HintPath>System.Xml.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 </ItemGroup>
78 <ItemGroup>
79 <ProjectReference Include="..\..\..\Framework\General\OpenSim.Framework.csproj">
80 <Name>OpenSim.Framework</Name>
81 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
82 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
83 <Private>False</Private>
84 </ProjectReference>
85 <ProjectReference Include="..\..\..\Framework\Console\OpenSim.Framework.Console.csproj">
86 <Name>OpenSim.Framework.Console</Name>
87 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
88 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
89 <Private>False</Private>
90 </ProjectReference>
91 </ItemGroup>
92 <ItemGroup>
93 <Compile Include="AssemblyInfo.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="Db4LocalStorage.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 <Compile Include="MapStorage.cs">
100 <SubType>Code</SubType>
101 </Compile>
102 <Compile Include="UUIDParcelQuery.cs">
103 <SubType>Code</SubType>
104 </Compile>
105 <Compile Include="UUIDPrimQuery.cs">
106 <SubType>Code</SubType>
107 </Compile>
108 </ItemGroup>
109 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
110 <PropertyGroup>
111 <PreBuildEvent>
112 </PreBuildEvent>
113 <PostBuildEvent>
114 </PostBuildEvent>
115 </PropertyGroup>
116</Project>
diff --git a/OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj.user b/OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageDb4o/OpenSim.Region.Storage.LocalStorageDb4o.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Storage/LocalStorageDb4o/UUIDParcelQuery.cs b/OpenSim/Region/Storage/LocalStorageDb4o/UUIDParcelQuery.cs
new file mode 100644
index 0000000..d24fb5f
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageDb4o/UUIDParcelQuery.cs
@@ -0,0 +1,52 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using Db4objects.Db4o;
32using Db4objects.Db4o.Query;
33using libsecondlife;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36
37namespace OpenSim.Storage.LocalStorageDb4o
38{
39 public class UUIDParcelQuery : Predicate
40 {
41 private LLUUID globalIDSearch;
42
43 public UUIDParcelQuery(LLUUID find)
44 {
45 globalIDSearch = find;
46 }
47 public bool Match(ParcelData parcel)
48 {
49 return (parcel.globalID == globalIDSearch);
50 }
51 }
52}
diff --git a/OpenSim/Region/Storage/LocalStorageDb4o/UUIDPrimQuery.cs b/OpenSim/Region/Storage/LocalStorageDb4o/UUIDPrimQuery.cs
new file mode 100644
index 0000000..b2e8a91
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageDb4o/UUIDPrimQuery.cs
@@ -0,0 +1,52 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using Db4objects.Db4o;
32using Db4objects.Db4o.Query;
33using libsecondlife;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36
37namespace OpenSim.Storage.LocalStorageDb4o
38{
39 public class UUIDPrimQuery : Predicate
40 {
41 private LLUUID _findID;
42
43 public UUIDPrimQuery(LLUUID find)
44 {
45 _findID = find;
46 }
47 public bool Match(PrimData prim)
48 {
49 return (prim.FullID == _findID);
50 }
51 }
52}
diff --git a/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj b/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj
new file mode 100644
index 0000000..d1353a5
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj
@@ -0,0 +1,111 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{477B9270-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Storage.LocalStorageSQLite</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Storage.LocalStorageSQLite</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\..\..\..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="System" >
66 <HintPath>System.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="System.Data" >
70 <HintPath>System.Data.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System.Data.SQLite.dll" >
74 <HintPath>..\..\..\..\bin\System.Data.SQLite.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Xml" >
78 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 </ItemGroup>
82 <ItemGroup>
83 <ProjectReference Include="..\..\..\Framework\General\OpenSim.Framework.csproj">
84 <Name>OpenSim.Framework</Name>
85 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
86 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
87 <Private>False</Private>
88 </ProjectReference>
89 <ProjectReference Include="..\..\..\Framework\Console\OpenSim.Framework.Console.csproj">
90 <Name>OpenSim.Framework.Console</Name>
91 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
92 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
93 <Private>False</Private>
94 </ProjectReference>
95 </ItemGroup>
96 <ItemGroup>
97 <Compile Include="SQLiteLocalStorage.cs">
98 <SubType>Code</SubType>
99 </Compile>
100 <Compile Include="Properties\AssemblyInfo.cs">
101 <SubType>Code</SubType>
102 </Compile>
103 </ItemGroup>
104 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
105 <PropertyGroup>
106 <PreBuildEvent>
107 </PreBuildEvent>
108 <PostBuildEvent>
109 </PostBuildEvent>
110 </PropertyGroup>
111</Project>
diff --git a/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj.user b/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Region.Storage.LocalStorageSQLite.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Storage.LocalStorageSQLite.dll.build b/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Storage.LocalStorageSQLite.dll.build
new file mode 100644
index 0000000..bd4c731
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageSQLite/OpenSim.Storage.LocalStorageSQLite.dll.build
@@ -0,0 +1,46 @@
1<?xml version="1.0" ?>
2<project name="OpenSim.Storage.LocalStorageSQLite" default="build">
3 <target name="build">
4 <echo message="Build Directory is ${project::get-base-directory()}/${build.dir}" />
5 <mkdir dir="${project::get-base-directory()}/${build.dir}" />
6 <copy todir="${project::get-base-directory()}/${build.dir}">
7 <fileset basedir="${project::get-base-directory()}">
8 </fileset>
9 </copy>
10 <csc target="library" debug="${build.debug}" unsafe="False" define="TRACE;DEBUG" output="${project::get-base-directory()}/${build.dir}/${project::get-name()}.dll">
11 <resources prefix="OpenSim.Storage.LocalStorageSQLite" dynamicprefix="true" >
12 </resources>
13 <sources failonempty="true">
14 <include name="SQLiteLocalStorage.cs" />
15 <include name="Properties/AssemblyInfo.cs" />
16 </sources>
17 <references basedir="${project::get-base-directory()}">
18 <lib>
19 <include name="${project::get-base-directory()}" />
20 <include name="${project::get-base-directory()}/${build.dir}" />
21 </lib>
22 <include name="../../../bin/libsecondlife.dll" />
23 <include name="../../../bin/OpenSim.Framework.dll" />
24 <include name="../../../bin/OpenSim.Framework.Console.dll" />
25 <include name="System.dll" />
26 <include name="System.Data.dll" />
27 <include name="../../../bin/System.Data.SQLite.dll" />
28 <include name="System.Xml.dll" />
29 </references>
30 </csc>
31 <echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../../../bin/" />
32 <mkdir dir="${project::get-base-directory()}/../../../bin/"/>
33 <copy todir="${project::get-base-directory()}/../../../bin/">
34 <fileset basedir="${project::get-base-directory()}/${build.dir}/" >
35 <include name="*.dll"/>
36 <include name="*.exe"/>
37 </fileset>
38 </copy>
39 </target>
40 <target name="clean">
41 <delete dir="${bin.dir}" failonerror="false" />
42 <delete dir="${obj.dir}" failonerror="false" />
43 </target>
44 <target name="doc" description="Creates documentation.">
45 </target>
46</project>
diff --git a/OpenSim/Region/Storage/LocalStorageSQLite/Properties/AssemblyInfo.cs b/OpenSim/Region/Storage/LocalStorageSQLite/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..b45debf
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageSQLite/Properties/AssemblyInfo.cs
@@ -0,0 +1,62 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// General Information about an assembly is controlled through the following
33// set of attributes. Change these attribute values to modify the information
34// associated with an assembly.
35[assembly: AssemblyTitle("OpenSim.Storage.LocalStorageSQLite")]
36[assembly: AssemblyDescription("")]
37[assembly: AssemblyConfiguration("")]
38[assembly: AssemblyCompany("")]
39[assembly: AssemblyProduct("OpenSim.Storage.LocalStorageSQLite")]
40[assembly: AssemblyCopyright("Copyright © 2007")]
41[assembly: AssemblyTrademark("")]
42[assembly: AssemblyCulture("")]
43
44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type.
47[assembly: ComVisible(false)]
48
49// The following GUID is for the ID of the typelib if this project is exposed to COM
50[assembly: Guid("ecd6e0c1-7909-413e-9e3f-659678ac3bc3")]
51
52// Version information for an assembly consists of the following four values:
53//
54// Major Version
55// Minor Version
56// Build Number
57// Revision
58//
59// You can specify all the values or you can default the Revision and Build Numbers
60// by using the '*' as shown below:
61[assembly: AssemblyVersion("1.0.0.*")]
62[assembly: AssemblyFileVersion("1.0.0.*")]
diff --git a/OpenSim/Region/Storage/LocalStorageSQLite/SQLiteLocalStorage.cs b/OpenSim/Region/Storage/LocalStorageSQLite/SQLiteLocalStorage.cs
new file mode 100644
index 0000000..8a7893e
--- /dev/null
+++ b/OpenSim/Region/Storage/LocalStorageSQLite/SQLiteLocalStorage.cs
@@ -0,0 +1,198 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29// SQLite Support
30// A bad idea, but the IRC people told me to!
31
32using System;
33using System.Collections.Generic;
34using System.Data;
35using System.Data.SQLite;
36using libsecondlife;
37using OpenSim.Framework.Interfaces;
38using OpenSim.Framework.Types;
39
40namespace OpenSim.Storage.LocalStorageSQLite
41{
42 public class SQLiteLocalStorage : ILocalStorage
43 {
44 IDbConnection db;
45
46 public SQLiteLocalStorage()
47 {
48 try
49 {
50 string connectionstring = "URI=file:localsim.sdb";
51 db = (IDbConnection)new SQLiteConnection(connectionstring);
52 db.Open();
53 }
54 catch (Exception e)
55 {
56 db.Close();
57 OpenSim.Framework.Console.MainLog.Instance.Warn("SQLiteLocalStorage :Constructor - Exception occured");
58 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
59 }
60 }
61
62 public void Initialise(string file)
63 {
64 // Blank
65 }
66
67 public void StorePrim(PrimData prim)
68 {
69 IDbCommand cmd = db.CreateCommand();
70
71 //SECURITY WARNING:
72 // These parameters wont produce SQL injections since they are all integer based, however.
73 // if inserting strings such as name or description, you will need to use appropriate
74 // measures to prevent SQL injection (although the value of SQL injection in this is limited).
75
76 string sql = "REPLACE INTO prim (OwnerID,PCode,PathBegin,PathEnd,PathScaleX,PathScaleY,PathShearX,PathShearY,PathSkew,ProfileBegin,ProfileEnd,Scale,PathCurve,ProfileCurve,ParentID,ProfileHollow,PathRadiusOffset,PathRevolutions,PathTaperX,PathTaperY,PathTwist,PathTwistBegin,Texture,CreationDate,OwnerMask,NextOwnerMask,GroupMask,EveryoneMask,BaseMask,Position,Rotation,LocalID,FullID) ";
77 sql += "VALUES (";
78 sql += "\"" + prim.OwnerID.ToStringHyphenated() + "\","; // KILL ME NOW!
79 sql += "\"" + prim.PCode.ToString() + "\",";
80 sql += "\"" + prim.PathBegin.ToString() + "\",";
81 sql += "\"" + prim.PathEnd.ToString() + "\",";
82 sql += "\"" + prim.PathScaleX.ToString() + "\",";
83 sql += "\"" + prim.PathScaleY.ToString() + "\",";
84 sql += "\"" + prim.PathShearX.ToString() + "\",";
85 sql += "\"" + prim.PathShearY.ToString() + "\",";
86 sql += "\"" + prim.PathSkew.ToString() + "\",";
87 sql += "\"" + prim.ProfileBegin.ToString() + "\",";
88 sql += "\"" + prim.ProfileEnd.ToString() + "\",";
89 sql += "\"" + prim.Scale.ToString() + "\",";
90 sql += "\"" + prim.PathCurve.ToString() + "\",";
91 sql += "\"" + prim.ProfileCurve.ToString() + "\",";
92 sql += "\"" + prim.ParentID.ToString() + "\",";
93 sql += "\"" + prim.ProfileHollow.ToString() + "\",";
94 sql += "\"" + prim.PathRadiusOffset.ToString() + "\",";
95 sql += "\"" + prim.PathRevolutions.ToString() + "\",";
96 sql += "\"" + prim.PathTaperX.ToString() + "\",";
97 sql += "\"" + prim.PathTaperY.ToString() + "\",";
98 sql += "\"" + prim.PathTwist.ToString() + "\",";
99 sql += "\"" + prim.PathTwistBegin.ToString() + "\",";
100 sql += "\"" + prim.TextureEntry.ToString() + "\",";
101 sql += "\"" + prim.CreationDate.ToString() + "\",";
102 sql += "\"" + prim.OwnerMask.ToString() + "\",";
103 sql += "\"" + prim.NextOwnerMask.ToString() + "\",";
104 sql += "\"" + prim.GroupMask.ToString() + "\",";
105 sql += "\"" + prim.EveryoneMask.ToString() + "\",";
106 sql += "\"" + prim.BaseMask.ToString() + "\",";
107 sql += "\"" + prim.Position.ToString() + "\",";
108 sql += "\"" + prim.Rotation.ToString() + "\",";
109 sql += "\"" + prim.LocalID.ToString() + "\",";
110 sql += "\"" + prim.FullID.ToString() + "\")";
111
112 cmd.CommandText = sql;
113
114 try
115 {
116 cmd.ExecuteNonQuery();
117 }
118 catch (Exception e)
119 {
120 OpenSim.Framework.Console.MainLog.Instance.Warn("SQLiteLocalStorage :StorePrim - Exception occured");
121 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
122 }
123
124 cmd.Dispose();
125 cmd = null;
126 }
127
128 public void RemovePrim(LLUUID primID)
129 {
130 IDbCommand cmd = db.CreateCommand();
131
132 //SECURITY WARNING:
133 // These parameters wont produce SQL injections since they are all integer based, however.
134 // if inserting strings such as name or description, you will need to use appropriate
135 // measures to prevent SQL injection (although the value of SQL injection in this is limited).
136
137 string sql = "DELETE FROM prim WHERE FullID = \"" + primID.ToStringHyphenated() + "\"";
138
139 cmd.CommandText = sql;
140
141 try
142 {
143 cmd.ExecuteNonQuery();
144 }
145 catch (Exception e)
146 {
147 OpenSim.Framework.Console.MainLog.Instance.Warn("SQLiteLocalStorage :RemovePrim - Exception occured");
148 OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
149 }
150
151 cmd.Dispose();
152 cmd = null;
153 }
154
155 public void LoadPrimitives(ILocalStorageReceiver receiver)
156 {
157
158 }
159
160 public float[] LoadWorld()
161 {
162 return new float[65536];
163 }
164
165 public void SaveMap(float[] heightmap)
166 {
167
168 }
169
170 public void SaveParcels(ParcelData[] parcel_manager)
171 {
172
173 }
174
175 public void SaveParcel(ParcelData parcel)
176 {
177 }
178
179 public void RemoveParcel(ParcelData parcel)
180 {
181 }
182
183 public void RemoveAllParcels()
184 {
185 }
186
187 public void LoadParcels(ILocalStorageParcelReceiver recv)
188 {
189 recv.NoParcelDataFromStorage();
190 }
191
192 public void ShutDown()
193 {
194 db.Close();
195 db = null;
196 }
197 }
198} \ No newline at end of file
diff --git a/OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj b/OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj
new file mode 100644
index 0000000..24667e5
--- /dev/null
+++ b/OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj
@@ -0,0 +1,110 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{C9E0F891-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>OpenSim.Region.Terrain.BasicTerrain</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Library</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>OpenSim.Region.Terrain.BasicTerrain</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\..\..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\..\..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libTerrain-BSD.dll" >
62 <HintPath>..\..\..\bin\libTerrain-BSD.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="Microsoft.JScript" >
66 <HintPath>Microsoft.JScript.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="openjpegnet.dll" >
70 <HintPath>..\..\..\bin\openjpegnet.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="System" >
74 <HintPath>System.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System.Data" >
78 <HintPath>System.Data.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 <Reference Include="System.Drawing" >
82 <HintPath>System.Drawing.dll</HintPath>
83 <Private>False</Private>
84 </Reference>
85 <Reference Include="System.Xml" >
86 <HintPath>System.Xml.dll</HintPath>
87 <Private>False</Private>
88 </Reference>
89 </ItemGroup>
90 <ItemGroup>
91 </ItemGroup>
92 <ItemGroup>
93 <Compile Include="TerrainEngine.cs">
94 <SubType>Code</SubType>
95 </Compile>
96 <Compile Include="TerrainFilter.cs">
97 <SubType>Code</SubType>
98 </Compile>
99 <Compile Include="Properties\AssemblyInfo.cs">
100 <SubType>Code</SubType>
101 </Compile>
102 </ItemGroup>
103 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
104 <PropertyGroup>
105 <PreBuildEvent>
106 </PreBuildEvent>
107 <PostBuildEvent>
108 </PostBuildEvent>
109 </PropertyGroup>
110</Project>
diff --git a/OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj.user b/OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Terrain.BasicTerrain/OpenSim.Region.Terrain.BasicTerrain.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs b/OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..827c68f
--- /dev/null
+++ b/OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs
@@ -0,0 +1,62 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System.Reflection;
29using System.Runtime.CompilerServices;
30using System.Runtime.InteropServices;
31
32// General Information about an assembly is controlled through the following
33// set of attributes. Change these attribute values to modify the information
34// associated with an assembly.
35[assembly: AssemblyTitle("OpenSim.Terrain.BasicTerrain")]
36[assembly: AssemblyDescription("")]
37[assembly: AssemblyConfiguration("")]
38[assembly: AssemblyCompany("")]
39[assembly: AssemblyProduct("OpenSim.Terrain.BasicTerrain")]
40[assembly: AssemblyCopyright("Copyright © 2007")]
41[assembly: AssemblyTrademark("")]
42[assembly: AssemblyCulture("")]
43
44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type.
47[assembly: ComVisible(false)]
48
49// The following GUID is for the ID of the typelib if this project is exposed to COM
50[assembly: Guid("3263f5b5-0a41-4ed5-91a2-9baaaeecc849")]
51
52// Version information for an assembly consists of the following four values:
53//
54// Major Version
55// Minor Version
56// Build Number
57// Revision
58//
59// You can specify all the values or you can default the Revision and Build Numbers
60// by using the '*' as shown below:
61[assembly: AssemblyVersion("1.0.0.0")]
62[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs
new file mode 100644
index 0000000..4f989fa
--- /dev/null
+++ b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs
@@ -0,0 +1,786 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Drawing;
32using libTerrain;
33using OpenJPEGNet;
34
35namespace OpenSim.Terrain
36{
37 public class TerrainCommand
38 {
39 public virtual bool run(string[] cmdargs, ref string output)
40 {
41 return false;
42 }
43
44 public string args;
45 public string help;
46 }
47
48 public class TerrainEngine
49 {
50 /// <summary>
51 /// Plugin library for scripts
52 /// </summary>
53 public FilterHost customFilters = new FilterHost();
54
55 /// <summary>
56 /// A [normally] 256x256 heightmap
57 /// </summary>
58 public Channel heightmap;
59
60 /// <summary>
61 /// A copy of heightmap at the last save point (for reverting)
62 /// </summary>
63 public Channel revertmap;
64
65 /// <summary>
66 /// Water heightmap (needs clientside mods to work)
67 /// </summary>
68 public Channel watermap;
69
70 /// <summary>
71 /// Whether or not the terrain has been modified since it was last saved and sent to the Physics engine.
72 /// Counts the number of modifications since the last save. (0 = Untainted)
73 /// </summary>
74 public int tainted;
75
76 int w, h;
77
78 /// <summary>
79 /// Generate a new TerrainEngine instance and creates a new heightmap
80 /// </summary>
81 public TerrainEngine()
82 {
83 w = 256;
84 h = 256;
85 heightmap = new Channel(w, h);
86
87 tainted++;
88 }
89
90 /// <summary>
91 /// Converts the heightmap to a 65536 value 1D floating point array
92 /// </summary>
93 /// <returns>A float[65536] array containing the heightmap</returns>
94 public float[] getHeights1D()
95 {
96 float[] heights = new float[w * h];
97 int i;
98
99 for (i = 0; i < w * h; i++)
100 {
101 heights[i] = (float)heightmap.map[i / w, i % w];
102 }
103
104 return heights;
105 }
106
107 /// <summary>
108 /// Converts the heightmap to a 256x256 value 2D floating point array.
109 /// </summary>
110 /// <returns>An array of 256,256 values containing the heightmap</returns>
111 public float[,] getHeights2D()
112 {
113 float[,] heights = new float[w, h];
114 int x, y;
115 for (x = 0; x < w; x++)
116 {
117 for (y = 0; y < h; y++)
118 {
119 heights[x, y] = (float)heightmap.map[x, y];
120 }
121 }
122 return heights;
123 }
124
125 /// <summary>
126 /// Imports a 1D floating point array into the 2D heightmap array
127 /// </summary>
128 /// <param name="heights">The array to import (must have 65536 members)</param>
129 public void setHeights1D(float[] heights)
130 {
131 int i;
132 for (i = 0; i < w * h; i++)
133 {
134 heightmap.map[i / w, i % w] = heights[i];
135 }
136
137 tainted++;
138 }
139
140 /// <summary>
141 /// Loads a 2D array of values into the heightmap
142 /// </summary>
143 /// <param name="heights">An array of 256,256 float values</param>
144 public void setHeights2D(float[,] heights)
145 {
146 int x, y;
147 for (x = 0; x < w; x++)
148 {
149 for (y = 0; y < h; y++)
150 {
151 heightmap.set(x, y, (double)heights[x, y]);
152 }
153 }
154 tainted++;
155 }
156
157 /// <summary>
158 /// Swaps the two heightmap buffers (the 'revert map' and the heightmap)
159 /// </summary>
160 public void swapRevertMaps()
161 {
162 Channel backup = heightmap.copy();
163 heightmap = revertmap;
164 revertmap = backup;
165 }
166
167 /// <summary>
168 /// Saves the current heightmap into the revertmap
169 /// </summary>
170 public void saveRevertMap()
171 {
172 revertmap = heightmap.copy();
173 }
174
175 /// <summary>
176 /// Processes a terrain-specific command
177 /// </summary>
178 /// <param name="args">Commandline arguments (space seperated)</param>
179 /// <param name="resultText">Reference that returns error or help text if returning false</param>
180 /// <returns>If the operation was successful (if not, the error is placed into resultText)</returns>
181 public bool RunTerrainCmd(string[] args, ref string resultText)
182 {
183 string command = args[0];
184
185 try
186 {
187
188 switch (command)
189 {
190 case "help":
191 resultText += "terrain regenerate - rebuilds the sims terrain using a default algorithm\n";
192 resultText += "terrain voronoi <points> <blocksize> - generates a worley fractal with X points per block";
193 resultText += "terrain seed <seed> - sets the random seed value to <seed>\n";
194 resultText += "terrain load <type> <filename> - loads a terrain from disk, type can be 'F32', 'F64', 'RAW' or 'IMG'\n";
195 resultText += "terrain save <type> <filename> - saves a terrain to disk, type can be 'F32', 'F64' or 'PNG'\n";
196 resultText += "terrain save grdmap <filename> <gradient map> - creates a PNG snapshot of the region using a named gradient map\n";
197 resultText += "terrain rescale <min> <max> - rescales a terrain to be between <min> and <max> meters high\n";
198 resultText += "terrain erode aerobic <windspeed> <pickupmin> <dropmin> <carry> <rounds> <lowest>\n";
199 resultText += "terrain erode thermal <talus> <rounds> <carry>\n";
200 resultText += "terrain multiply <val> - multiplies a terrain by <val>\n";
201 resultText += "terrain revert - reverts the terrain to the stored original\n";
202 resultText += "terrain bake - saves the current terrain into the revert map\n";
203 resultText += "terrain csfilter <filename.cs> - loads a new filter from the specified .cs file\n";
204 resultText += "terrain jsfilter <filename.js> - loads a new filter from the specified .js file\n";
205 foreach (KeyValuePair<string, ITerrainFilter> filter in customFilters.filters)
206 {
207 resultText += filter.Value.Help();
208 }
209
210 return false;
211
212 case "revert":
213 swapRevertMaps();
214 saveRevertMap();
215 break;
216
217 case "bake":
218 saveRevertMap();
219 break;
220
221 case "seed":
222 setSeed(Convert.ToInt32(args[1]));
223 break;
224
225 case "erode":
226 return consoleErosion(args, ref resultText);
227
228 case "voronoi":
229 double[] c = new double[2];
230 c[0] = -1;
231 c[1] = 1;
232 heightmap.voronoiDiagram(Convert.ToInt32(args[1]), Convert.ToInt32(args[2]), c);
233 break;
234
235 case "hills":
236 return consoleHills(args, ref resultText);
237
238 case "regenerate":
239 hills();
240 break;
241
242 case "rescale":
243 setRange(Convert.ToSingle(args[1]), Convert.ToSingle(args[2]));
244 break;
245
246 case "multiply":
247 heightmap *= Convert.ToDouble(args[1]);
248 break;
249
250 case "load":
251 switch (args[1].ToLower())
252 {
253 case "f32":
254 loadFromFileF32(args[2]);
255 break;
256
257 case "f64":
258 loadFromFileF64(args[2]);
259 break;
260
261 case "raw":
262 loadFromFileSLRAW(args[2]);
263 break;
264
265 case "img":
266 heightmap.loadImage(args[2]);
267 return false;
268
269 default:
270 resultText = "Unknown image or data format";
271 return false;
272 }
273 break;
274
275 case "save":
276 switch (args[1].ToLower())
277 {
278 case "f32":
279 writeToFileF32(args[2]);
280 break;
281
282 case "f64":
283 writeToFileF64(args[2]);
284 break;
285
286 case "grdmap":
287 exportImage(args[2], args[3]);
288 break;
289
290 case "png":
291 heightmap.saveImage(args[2]);
292 break;
293
294 default:
295 resultText = "Unknown image or data format";
296 return false;
297 }
298 break;
299
300 case "csfilter":
301 customFilters.LoadFilterCSharp(args[1]);
302 break;
303 case "jsfilter":
304 customFilters.LoadFilterJScript(args[1]);
305 break;
306
307 default:
308 // Run any custom registered filters
309 if (customFilters.filters.ContainsKey(command))
310 {
311 customFilters.filters[command].Filter(heightmap, args);
312 break;
313 }
314 else
315 {
316 resultText = "Unknown terrain command";
317 return false;
318 }
319 }
320 return true;
321 }
322 catch (Exception e)
323 {
324 resultText = "Error running terrain command: " + e.ToString();
325 return false;
326 }
327 }
328
329 private bool consoleErosion(string[] args, ref string resultText)
330 {
331 switch (args[1].ToLower())
332 {
333 case "aerobic":
334 // WindSpeed, PickupMinimum,DropMinimum,Carry,Rounds,Lowest
335 heightmap.AerobicErosion(Convert.ToDouble(args[2]), Convert.ToDouble(args[3]), Convert.ToDouble(args[4]), Convert.ToDouble(args[5]), Convert.ToInt32(args[6]), Convert.ToBoolean(args[7]));
336 break;
337 case "thermal":
338 heightmap.thermalWeathering(Convert.ToDouble(args[2]), Convert.ToInt32(args[3]), Convert.ToDouble(args[4]));
339 break;
340 default:
341 resultText = "Unknown erosion type";
342 return false;
343 }
344 return true;
345 }
346
347 private bool consoleHills(string[] args, ref string resultText)
348 {
349 int count;
350 double sizeMin;
351 double sizeRange;
352 bool island;
353 bool additive;
354 bool noisy;
355
356 if (args.GetLength(0) > 2)
357 {
358 count = Convert.ToInt32(args[2]);
359 sizeMin = Convert.ToDouble(args[3]);
360 sizeRange = Convert.ToDouble(args[4]);
361 island = Convert.ToBoolean(args[5]);
362 additive = Convert.ToBoolean(args[6]);
363 noisy = Convert.ToBoolean(args[7]);
364 }
365 else
366 {
367 count = 200;
368 sizeMin = 20;
369 sizeRange = 40;
370 island = true;
371 additive = true;
372 noisy = false;
373 }
374
375 switch (args[1].ToLower())
376 {
377 case "blocks":
378 heightmap.hillsBlocks(count, sizeMin, sizeRange, island, additive, noisy);
379 break;
380 case "cones":
381 heightmap.hillsCones(count, sizeMin, sizeRange, island, additive, noisy);
382 break;
383 case "spheres":
384 heightmap.hillsSpheres(count, sizeMin, sizeRange, island, additive, noisy);
385 break;
386 case "squared":
387 heightmap.hillsSquared(count, sizeMin, sizeRange, island, additive, noisy);
388 break;
389 default:
390 resultText = "Unknown hills type";
391 return false;
392 }
393 return true;
394 }
395
396 /// <summary>
397 /// Renormalises the array between min and max
398 /// </summary>
399 /// <param name="min">Minimum value of the new array</param>
400 /// <param name="max">Maximum value of the new array</param>
401 public void setRange(float min, float max)
402 {
403 heightmap.normalise((double)min, (double)max);
404 tainted++;
405 }
406
407 /// <summary>
408 /// Loads a file consisting of 256x256 doubles and imports it as an array into the map.
409 /// </summary>
410 /// <remarks>TODO: Move this to libTerrain itself</remarks>
411 /// <param name="filename">The filename of the double array to import</param>
412 public void loadFromFileF64(string filename)
413 {
414 System.IO.FileInfo file = new System.IO.FileInfo(filename);
415 System.IO.FileStream s = file.Open(System.IO.FileMode.Open, System.IO.FileAccess.Read);
416 System.IO.BinaryReader bs = new System.IO.BinaryReader(s);
417 int x, y;
418 for (x = 0; x < w; x++)
419 {
420 for (y = 0; y < h; y++)
421 {
422 heightmap.map[x, y] = bs.ReadDouble();
423 }
424 }
425
426 bs.Close();
427 s.Close();
428
429 tainted++;
430 }
431
432 /// <summary>
433 /// Loads a file consisting of 256x256 floats and imports it as an array into the map.
434 /// </summary>
435 /// <remarks>TODO: Move this to libTerrain itself</remarks>
436 /// <param name="filename">The filename of the float array to import</param>
437 public void loadFromFileF32(string filename)
438 {
439 System.IO.FileInfo file = new System.IO.FileInfo(filename);
440 System.IO.FileStream s = file.Open(System.IO.FileMode.Open, System.IO.FileAccess.Read);
441 System.IO.BinaryReader bs = new System.IO.BinaryReader(s);
442 int x, y;
443 for (x = 0; x < w; x++)
444 {
445 for (y = 0; y < h; y++)
446 {
447 heightmap.map[x, y] = (double)bs.ReadSingle();
448 }
449 }
450
451 bs.Close();
452 s.Close();
453
454 tainted++;
455 }
456
457 /// <summary>
458 /// Loads a file formatted in the SL .RAW Format used on the main grid
459 /// </summary>
460 /// <remarks>This file format stinks and is best avoided.</remarks>
461 /// <param name="filename">A path to the .RAW format</param>
462 public void loadFromFileSLRAW(string filename)
463 {
464 System.IO.FileInfo file = new System.IO.FileInfo(filename);
465 System.IO.FileStream s = file.Open(System.IO.FileMode.Open, System.IO.FileAccess.Read);
466 System.IO.BinaryReader bs = new System.IO.BinaryReader(s);
467 int x, y;
468 for (x = 0; x < w; x++)
469 {
470 for (y = 0; y < h; y++)
471 {
472 heightmap.map[x, y] = (double)bs.ReadByte() * ((double)bs.ReadByte() / 127.0);
473 bs.ReadBytes(11); // Advance the stream to next bytes.
474 }
475 }
476
477 bs.Close();
478 s.Close();
479
480 tainted++;
481 }
482
483 /// <summary>
484 /// Writes the current terrain heightmap to disk, in the format of a 65536 entry double[] array.
485 /// </summary>
486 /// <param name="filename">The desired output filename</param>
487 public void writeToFileF64(string filename)
488 {
489 System.IO.FileInfo file = new System.IO.FileInfo(filename);
490 System.IO.FileStream s = file.Open(System.IO.FileMode.CreateNew, System.IO.FileAccess.Write);
491 System.IO.BinaryWriter bs = new System.IO.BinaryWriter(s);
492
493 int x, y;
494 for (x = 0; x < w; x++)
495 {
496 for (y = 0; y < h; y++)
497 {
498 bs.Write(heightmap.get(x, y));
499 }
500 }
501
502 bs.Close();
503 s.Close();
504 }
505
506 /// <summary>
507 /// Writes the current terrain heightmap to disk, in the format of a 65536 entry float[] array
508 /// </summary>
509 /// <param name="filename">The desired output filename</param>
510 public void writeToFileF32(string filename)
511 {
512 System.IO.FileInfo file = new System.IO.FileInfo(filename);
513 System.IO.FileStream s = file.Open(System.IO.FileMode.CreateNew, System.IO.FileAccess.Write);
514 System.IO.BinaryWriter bs = new System.IO.BinaryWriter(s);
515
516 int x, y;
517 for (x = 0; x < w; x++)
518 {
519 for (y = 0; y < h; y++)
520 {
521 bs.Write((float)heightmap.get(x, y));
522 }
523 }
524
525 bs.Close();
526 s.Close();
527 }
528
529 /// <summary>
530 /// Sets the random seed to be used by procedural functions which involve random numbers.
531 /// </summary>
532 /// <param name="val">The desired seed</param>
533 public void setSeed(int val)
534 {
535 heightmap.seed = val;
536 }
537
538 /// <summary>
539 /// Raises land in a sphere around the specified coordinates
540 /// </summary>
541 /// <param name="rx">Center of the sphere on the X axis</param>
542 /// <param name="ry">Center of the sphere on the Y axis</param>
543 /// <param name="size">The radius of the sphere</param>
544 /// <param name="amount">Scale the height of the sphere by this amount (recommended 0..2)</param>
545 public void raise(double rx, double ry, double size, double amount)
546 {
547 lock (heightmap)
548 {
549 heightmap.raise(rx, ry, size, amount);
550 }
551
552 tainted++;
553 }
554
555 /// <summary>
556 /// Lowers the land in a sphere around the specified coordinates
557 /// </summary>
558 /// <param name="rx">The center of the sphere at the X axis</param>
559 /// <param name="ry">The center of the sphere at the Y axis</param>
560 /// <param name="size">The radius of the sphere in meters</param>
561 /// <param name="amount">Scale the height of the sphere by this amount (recommended 0..2)</param>
562 public void lower(double rx, double ry, double size, double amount)
563 {
564 lock (heightmap)
565 {
566 heightmap.lower(rx, ry, size, amount);
567 }
568
569 tainted++;
570 }
571
572 /// <summary>
573 /// Flattens the land under the brush of specified coordinates (spherical mask)
574 /// </summary>
575 /// <param name="rx">Center of sphere</param>
576 /// <param name="ry">Center of sphere</param>
577 /// <param name="size">Radius of the sphere</param>
578 /// <param name="amount">Thickness of the mask (0..2 recommended)</param>
579 public void flatten(double rx, double ry, double size, double amount)
580 {
581 lock (heightmap)
582 {
583 heightmap.flatten(rx, ry, size, amount);
584 }
585
586 tainted++;
587 }
588
589 /// <summary>
590 /// Creates noise within the specified bounds
591 /// </summary>
592 /// <param name="rx">Center of the bounding sphere</param>
593 /// <param name="ry">Center of the bounding sphere</param>
594 /// <param name="size">The radius of the sphere</param>
595 /// <param name="amount">Strength of the mask (0..2) recommended</param>
596 public void noise(double rx, double ry, double size, double amount)
597 {
598 lock (heightmap)
599 {
600 Channel smoothed = new Channel();
601 smoothed.noise();
602
603 Channel mask = new Channel();
604 mask.raise(rx, ry, size, amount);
605
606 heightmap.blend(smoothed, mask);
607 }
608
609 tainted++;
610 }
611
612 /// <summary>
613 /// Reverts land within the specified bounds
614 /// </summary>
615 /// <param name="rx">Center of the bounding sphere</param>
616 /// <param name="ry">Center of the bounding sphere</param>
617 /// <param name="size">The radius of the sphere</param>
618 /// <param name="amount">Strength of the mask (0..2) recommended</param>
619 public void revert(double rx, double ry, double size, double amount)
620 {
621 lock (heightmap)
622 {
623 Channel mask = new Channel();
624 mask.raise(rx, ry, size, amount);
625
626 heightmap.blend(revertmap, mask);
627 }
628
629 tainted++;
630 }
631
632 /// <summary>
633 /// Smooths land under the brush of specified coordinates (spherical mask)
634 /// </summary>
635 /// <param name="rx">Center of the sphere</param>
636 /// <param name="ry">Center of the sphere</param>
637 /// <param name="size">Radius of the sphere</param>
638 /// <param name="amount">Thickness of the mask (0..2 recommended)</param>
639 public void smooth(double rx, double ry, double size, double amount)
640 {
641 lock (heightmap)
642 {
643 Channel smoothed = heightmap.copy();
644 smoothed.smooth(amount);
645
646 Channel mask = new Channel();
647 mask.raise(rx,ry,size,amount);
648
649 heightmap.blend(smoothed, mask);
650 }
651
652 tainted++;
653 }
654
655 /// <summary>
656 /// Generates a simple set of hills in the shape of an island
657 /// </summary>
658 public void hills()
659 {
660 lock (heightmap)
661 {
662 heightmap.hillsSpheres(200, 20, 40, true, true, false);
663 heightmap.normalise();
664 heightmap *= 60.0; // Raise to 60m
665 }
666
667 tainted++;
668 }
669
670 /// <summary>
671 /// Multiplies the heightfield by val
672 /// </summary>
673 /// <param name="meep">The heightfield</param>
674 /// <param name="val">The multiplier</param>
675 /// <returns></returns>
676 public static TerrainEngine operator *(TerrainEngine meep, Double val)
677 {
678 meep.heightmap *= val;
679 meep.tainted++;
680 return meep;
681 }
682
683 /// <summary>
684 /// Returns the height at the coordinates x,y
685 /// </summary>
686 /// <param name="x">X Coordinate</param>
687 /// <param name="y">Y Coordinate</param>
688 /// <returns></returns>
689 public float this[int x, int y]
690 {
691 get
692 {
693 return (float)heightmap.get(x, y);
694 }
695 set
696 {
697 tainted++;
698 heightmap.set(x, y, (double)value);
699 }
700 }
701
702 /// <summary>
703 /// Exports the current heightmap to a PNG file
704 /// </summary>
705 /// <param name="filename">The destination filename for the image</param>
706 /// <param name="gradientmap">A 1x*height* image which contains the colour gradient to export with. Must be at least 1x2 pixels, 1x256 or more is ideal.</param>
707 public void exportImage(string filename, string gradientmap)
708 {
709 try
710 {
711 Bitmap gradientmapLd = new Bitmap(gradientmap);
712
713 int pallete = gradientmapLd.Height;
714
715 Bitmap bmp = new Bitmap(heightmap.w, heightmap.h);
716 Color[] colours = new Color[pallete];
717
718 for (int i = 0; i < pallete; i++)
719 {
720 colours[i] = gradientmapLd.GetPixel(0, i);
721 }
722
723 Channel copy = heightmap.copy();
724 for (int x = 0; x < copy.w; x++)
725 {
726 for (int y = 0; y < copy.h; y++)
727 {
728 // 512 is the largest possible height before colours clamp
729 int colorindex = (int)(Math.Max(Math.Min(1.0, copy.get(x, y) / 512.0), 0.0) * pallete);
730 bmp.SetPixel(x, y, colours[colorindex]);
731 }
732 }
733
734 bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Png);
735 }
736 catch (Exception e)
737 {
738 Console.WriteLine("Failed generating terrain map: " + e.ToString());
739 }
740 }
741
742 /// <summary>
743 /// Exports the current heightmap in Jpeg2000 format to a byte[]
744 /// </summary>
745 /// <param name="gradientmap">A 1x*height* image which contains the colour gradient to export with. Must be at least 1x2 pixels, 1x256 or more is ideal.</param>
746 public byte[] exportJpegImage(string gradientmap)
747 {
748 byte[] imageData = null;
749 try
750 {
751 Bitmap gradientmapLd = new Bitmap(gradientmap);
752
753 int pallete = gradientmapLd.Height;
754
755 Bitmap bmp = new Bitmap(heightmap.w, heightmap.h);
756 Color[] colours = new Color[pallete];
757
758 for (int i = 0; i < pallete; i++)
759 {
760 colours[i] = gradientmapLd.GetPixel(0, i);
761 }
762
763 Channel copy = heightmap.copy();
764 for (int x = 0; x < copy.w; x++)
765 {
766 for (int y = 0; y < copy.h; y++)
767 {
768 // 512 is the largest possible height before colours clamp
769 int colorindex = (int)(Math.Max(Math.Min(1.0, copy.get(copy.h - y, x) / 512.0), 0.0) * pallete);
770 bmp.SetPixel(x, y, colours[colorindex]);
771 }
772 }
773
774 //bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Png);
775 imageData = OpenJPEGNet.OpenJPEG.EncodeFromImage(bmp, "map");
776
777 }
778 catch (Exception e)
779 {
780 Console.WriteLine("Failed generating terrain map: " + e.ToString());
781 }
782
783 return imageData;
784 }
785 }
786} \ No newline at end of file
diff --git a/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs b/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs
new file mode 100644
index 0000000..689375d
--- /dev/null
+++ b/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs
@@ -0,0 +1,103 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5using System.CodeDom.Compiler;
6using System.CodeDom;
7using Microsoft.CSharp;
8using Microsoft.JScript;
9
10using libTerrain;
11
12namespace OpenSim.Terrain
13{
14 public interface ITerrainFilter
15 {
16 void Filter(Channel heightmap, string[] args);
17 string Register();
18 string Help();
19 }
20
21 public class TestFilter : ITerrainFilter
22 {
23 public void Filter(Channel heightmap, string[] args)
24 {
25 Console.WriteLine("Hello world");
26 }
27
28 public string Register()
29 {
30 return "demofilter";
31 }
32
33 public string Help()
34 {
35 return "demofilter - Does nothing";
36 }
37 }
38
39 public class FilterHost
40 {
41 public Dictionary<string, ITerrainFilter> filters = new Dictionary<string, ITerrainFilter>();
42
43 private void LoadFilter(ICodeCompiler compiler, string filename)
44 {
45 CompilerParameters compilerParams = new CompilerParameters();
46 CompilerResults compilerResults;
47 compilerParams.GenerateExecutable = false;
48 compilerParams.GenerateInMemory = true;
49 compilerParams.IncludeDebugInformation = false;
50 compilerParams.ReferencedAssemblies.Add("libTerrain-BSD.dll");
51 compilerParams.ReferencedAssemblies.Add("OpenSim.Terrain.BasicTerrain.dll");
52 compilerParams.ReferencedAssemblies.Add("System.dll");
53
54 compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename);
55
56 if (compilerResults.Errors.Count > 0)
57 {
58 Console.WriteLine("Compile errors:");
59 foreach (CompilerError error in compilerResults.Errors)
60 {
61 Console.WriteLine(error.Line.ToString() + ": " + error.ErrorText.ToString());
62 }
63 }
64 else
65 {
66 foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes())
67 {
68 Type testInterface = pluginType.GetInterface("ITerrainFilter",true);
69
70 if (testInterface != null)
71 {
72 ITerrainFilter filter = (ITerrainFilter)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString());
73
74 string filterName = filter.Register();
75 Console.WriteLine("Plugin: " + filterName + " loaded.");
76
77 if (!filters.ContainsKey(filterName))
78 {
79 filters.Add(filterName, filter);
80 }
81 else
82 {
83 filters[filterName] = filter;
84 }
85 }
86 }
87 }
88
89 }
90
91 public void LoadFilterCSharp(string filename)
92 {
93 CSharpCodeProvider compiler = new CSharpCodeProvider();
94 LoadFilter(compiler.CreateCompiler(), filename);
95 }
96
97 public void LoadFilterJScript(string filename)
98 {
99 JScriptCodeProvider compiler = new JScriptCodeProvider();
100 LoadFilter(compiler.CreateCompiler(), filename);
101 }
102 }
103}
diff --git a/Prebuild/Prebuild.build b/Prebuild/Prebuild.build
new file mode 100644
index 0000000..395fb31
--- /dev/null
+++ b/Prebuild/Prebuild.build
@@ -0,0 +1,67 @@
1<?xml version="1.0" ?>
2<project name="Prebuild" default="build">
3 <echo message="Using '${nant.settings.currentframework}' Framework"/>
4
5 <property name="bin.dir" value="bin" />
6 <property name="obj.dir" value="obj" />
7 <property name="doc.dir" value="doc" />
8 <property name="project.main.dir" value="${project::get-base-directory()}" />
9
10 <target name="Debug" description="">
11 <property name="project.config" value="Debug" />
12 <property name="build.debug" value="true" />
13 </target>
14
15 <property name="project.config" value="Release" />
16
17 <target name="Release" description="">
18 <property name="project.config" value="Release" />
19 <property name="build.debug" value="false" />
20 </target>
21
22 <target name="net-1.1" description="Sets framework to .NET 1.1">
23 <property name="nant.settings.currentframework" value="net-1.1" />
24 </target>
25
26 <target name="net-2.0" description="Sets framework to .NET 2.0">
27 <property name="nant.settings.currentframework" value="net-2.0" />
28 </target>
29
30 <target name="mono-2.0" description="Sets framework to mono 2.0">
31 <property name="nant.settings.currentframework" value="mono-2.0" />
32 </target>
33
34 <target name="mono-1.0" description="Sets framework to mono 1.0">
35 <property name="nant.settings.currentframework" value="mono-1.0" />
36 </target>
37
38 <target name="init" description="">
39 <call target="${project.config}" />
40 <sysinfo />
41 <echo message="Platform ${sys.os.platform}" />
42 <property name="build.dir" value="${bin.dir}/${project.config}" />
43 </target>
44
45 <target name="clean" description="">
46 <echo message="Deleting all builds from all configurations" />
47 <delete dir="${bin.dir}" failonerror="false" />
48 <delete dir="${obj.dir}" failonerror="false" />
49 <nant buildfile="src/Prebuild.exe.build" target="clean" />
50 </target>
51
52 <target name="build" depends="init" description="">
53 <nant buildfile="src/Prebuild.exe.build" target="build" />
54 </target>
55
56 <target name="build-release" depends="Release, init, build" description="Builds in Release mode" />
57
58 <target name="build-debug" depends="Debug, init, build" description="Builds in Debug mode" />
59
60 <target name="package" depends="clean, doc" description="Builds all" />
61
62 <target name="doc" depends="build-release">
63 <echo message="Generating all documentation from all builds" />
64 <nant buildfile="src/Prebuild.exe.build" target="doc" />
65 </target>
66
67</project>
diff --git a/Prebuild/Prebuild.sln b/Prebuild/Prebuild.sln
new file mode 100644
index 0000000..449896b
--- /dev/null
+++ b/Prebuild/Prebuild.sln
@@ -0,0 +1,19 @@
1Microsoft Visual Studio Solution File, Format Version 9.00
2# Visual Studio 2005
3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prebuild", "src\Prebuild.csproj", "{92E80C1C-0000-0000-0000-000000000000}"
4EndProject
5Global
6 GlobalSection(SolutionConfigurationPlatforms) = preSolution
7 Debug|Any CPU = Debug|Any CPU
8 Release|Any CPU = Release|Any CPU
9 EndGlobalSection
10 GlobalSection(ProjectConfigurationPlatforms) = postSolution
11 {92E80C1C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
12 {92E80C1C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
13 {92E80C1C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
14 {92E80C1C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
15 EndGlobalSection
16 GlobalSection(SolutionProperties) = preSolution
17 HideSolutionNode = FALSE
18 EndGlobalSection
19EndGlobal
diff --git a/Prebuild/Prebuild.suo b/Prebuild/Prebuild.suo
new file mode 100644
index 0000000..3829a4a
--- /dev/null
+++ b/Prebuild/Prebuild.suo
Binary files differ
diff --git a/Prebuild/README b/Prebuild/README
new file mode 100644
index 0000000..eca6be1
--- /dev/null
+++ b/Prebuild/README
@@ -0,0 +1,230 @@
1Prebuild Instructions
2
3Prebuild is an XML-driven pre-build tool allowing developers to easily generate project or make files for major IDE's and .NET development tools including: Visual Studio 2005, Visual Studio 2003, Visual Studio 2002, SharpDevelop, SharpDevelop2, MonoDevelop, and NAnt.
4
5_________________________________________________________________________________
6Overview
7
8Prebuild can be either be run from the command line to generate the project and make files or you can execute the included batch (*.bat) and Unix Shell script (*.sh) files.
9The Prebuild file
10
11_________________________________________________________________________________
12The currently supported developement tools and their associated batch and shell script files.
13
14Visual Studio .NET 2005 (VS2005.bat)
15Visual Studio .NET 2003 (VS2003.bat)
16Visual Studio .NET 2002 (VS2002.bat)
17SharpDevelop (SharpDevelop.bat) - http://www.icsharpcode.net/OpenSource/SD/
18SharpDevelop2 (SharpDevelop.bat) - http://www.icsharpcode.net/OpenSource/SD/
19MonoDevelop (MonoDevelop.sh) - http://www.monodevelop.com/
20NAnt (nant.sh and nant.bat) - http://nant.sourceforge.net/
21Autotools (autotools.bat and autotools.sh) http://www.gnu.org. Only partial support
22
23Notes:
24A Unix Shell script is provided for MonoDevelop, as this is more appropriate than a windows batch file.
25Visual Studio .NET 2005 and the Visual Express IDE's can import solutions from older versions of Visual Studio .NET.
26Makefiles are not currently supported.
27
28_________________________________________________________________________________
29Command Line Syntax:
30
31Example:
32>Prebuild /target vs2003
33
34This will generate the project files for Visual Studio.NET 2003 and place the redirect the log to a file named PrebuildLog.txt in the parent directory
35
36
37The syntax structure is as below, where commandParameter is optional depending on the command and you can provide several option-value pairs.
38Note: The '>' signified the command line, do not actually enter this manually
39
40>Prebuild /<option> <commandParameter>
41
42>Prebuild /target vs2003 /pause
43
44>Prebuild /target vs2003 /log ../Log.txt /pause /ppo /file ProjectConfig.xml
45
46>Prebuild /target sharpdev /log
47
48>Prebuild /removedir obj|bin
49
50>Prebuild /target vs2003 /allowedgroups Group1|Group2
51
52>Prebuild /clean
53
54>Prebuild /clean /yes
55
56>Prebuild /clean vs2003
57
58_________________________________________________________________________________
59Command Line Options:
60
61/usage - Shows the help information on how to use Prebuild and what the different options are and what they do
62
63/clean - The project files generated for the target type specified as a parameter for this option will be deleted. If no value is specified or if 'all' is specified, then project files for all the target types will be deleted.
64
65/target - Specified the name of the development tool for which project or make files will be generated. Possible parameter values include: vs2003, vs2002, sharpdev
66
67/file - Specifies the name of the XML which defines what files are to be referenced by the generated project files as well as configures the options for them. If not specified, prebuild.xml will be used as the default.
68
69/log - Specified the log file that should be written to for build errors. If this option is not specified, no log file is generated, but if just no value is specified, then the defaul filename will be used for the log (Prebuild.log).
70
71/ppo - Preprocesses the xml file to test for syntax errors or problems but doesn't generate the files
72
73/pause - Shows the console until you press a key so that you can view the messages written while performing the specified actions.
74This allows you to check if an errors occurred and - if so - what it was.
75
76/showtargets - Shows a list of all the targets that can be specified as values for the /clean and /target commands.
77
78/allowedgroups - This is followed by a pipe-delimited list of project group filter flags (eg. Group1|Group2) allow optional filtering of all projects that dont have at least one of these flags
79
80/removedir - This is followed by a pipe-delimited list of directory names that will be deleted while recursivly searching the directory of the prebuild application and its child directories (eg. use obj|bin to delete all output and temporary directories before file releases)
81
82/yes - Answer yes to any warnings (e.g. when cleaning all projects).
83
84_________________________________________________________________________________
85Example Batch Files and Shell Scripts
86
87NOTE: Common batch and shell script files are included with Prebuild source and file releases.
88______________________________
89MonoDevelop
90
91#!/bin/sh
92# Generates a combine (.cmbx) and a set of project files (.prjx)
93# for MonoDevelop, a Mono port of SharpDevelop (http://icsharpcode.net/OpenSource/SD/Default.aspx)
94./Prebuild /target sharpdev /pause
95
96______________________________
97Visual Studio .NET 2003
98
99@rem Generates a solution (.sln) and a set of project files (.csproj)
100@rem for Microsoft Visual Studio .NET 2002
101Prebuild /target vs2003 /pause
102
103Notes:
104Text after lines that start with @rem are comments and are not evaluated
105You can also place pause on the last line instead of specifing the /pause command.
106
107________________________________________________________________________________
108Example XML Configuration File
109
110Note:
111XML Comments (<!-- Comment -->) are used to markup the prebuild.xml file with notes
112The below file may be out-of-date, however the RealmForge Prebuild file serves as an up-to-date and extensive example.
113It can be viewed using Tigris.org's WebSVN (http://realmforge.tigris.org/source/browse/realmforge/trunk/src/prebuild.xml) by just clicking on the "view file" link for the latest revision.
114
115_________________________________
116
117<?xml version="1.0" encoding="utf-8"?>
118 <!--The version of the XML schema specified in the version and xmlns attributes should match the one for which the version of Prebuild.exe used was compiled for. In this example it is the version 1.3 schema, you can find the XSD schema file at the url specified in the xmlns attribute. -->
119<Prebuild version="1.6" xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd">
120 <Solution name="RealmForge"> <!--The title and file name for the solution, combine, workspace, or project group (depending on what development tool you are using)-->
121 <!--Configurations found as children of Solution are used as templates for the configurations found in the project, this allows you to avoid writing the same options in each project (and maintaining each of these). You can provide defaults and then override them in the configurations defined for each project. All options are optional.-->
122 <Configuration name="Debug">
123 <Options>
124 <!-- simple logically expressions can be evaluated, if, else, elseif, and endif are valid statements. Note that it is not neccisary to define POSIX or WIN32 -->
125 <?if OS = "Win32" ?>
126 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
127 <?else ?>
128 <CompilerDefines>DEBUG;TRACE;POSIX</CompilerDefines>
129 <?endif ?>
130 <OptimizeCode>false</OptimizeCode>
131 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
132 <AllowUnsafe>false</AllowUnsafe>
133 <WarningLevel>4</WarningLevel>
134 <!-The filter for the number of warnings or errors shown and the tolerance level as to what is an error. This is value from 0 to 4 where 4 is the most strict (least tolerent).-->
135
136 <WarningsAsErrors>false</WarningsAsErrors>
137 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
138 <!-- A semicolon ';' delimited list of the warnings that are filtered and not shown in the output window during compiling a project. Only include the number portion of the warning codes that are shown in output during compilation (eg CS1591, should be entered as 1591)-->
139
140 <OutputPath>..\bin</OutputPath>
141 <DebugInformation>true</DebugInformation>
142 <RegisterComInterop>false</RegisterComInterop>
143 <IncrementalBuild>true</IncrementalBuild>
144 <BaseAddress>285212672</BaseAddress>
145 <FileAlignment>4096</FileAlignment>
146 <NoStdLib>false</NoStdLib>
147 <XmlDocFile>Docs.xml</XmlDocFile>
148 </Options>
149 </Configuration>
150 <Configuration name="Release"> <!-- You can define multple configurations that projects can have, but there is no way to define which one is selected by default as this is a part of the user preferences for a project, not the solution or project files -->
151 <Options>
152 <CompilerDefines>TRACE</CompilerDefines>
153 <OptimizeCode>true</OptimizeCode>
154 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
155 <AllowUnsafe>false</AllowUnsafe>
156 <WarningLevel>4</WarningLevel>
157 <WarningsAsErrors>false</WarningsAsErrors>
158 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
159 <OutputPath>..\bin</OutputPath>
160 <DebugInformation>false</DebugInformation>
161 <RegisterComInterop>false</RegisterComInterop>
162 <IncrementalBuild>true</IncrementalBuild>
163 <BaseAddress>285212672</BaseAddress>
164 <FileAlignment>4096</FileAlignment>
165 <NoStdLib>false</NoStdLib>
166 <GenerateXmlDocFile>true</GenerateXmlDocFile>
167 <XmlDocFile>Docs.xml</XmlDocFile>
168 </Options>
169 </Configuration>
170
171 <!-- One of the projects that is included in the Solution -->
172 <Project name="RealmForge.Utility" Language="VisualBasic" path="Utility" type="Library" assemblyName="RealmForge.Utility" rootNamespace="RealmForge">
173 <Configuration name="Debug">
174 <Options>
175 <OutputPath>..\bin\lib\Utility</OutputPath>
176 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
177 </Options>
178 </Configuration>
179 <Configuration name="Release">
180 <Options>
181 <OutputPath>..\bin\lib\Utility</OutputPath>
182 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
183 </Options>
184 </Configuration>
185 <ReferencePath>../bin</ReferencePath>
186 <Reference name="System"/>
187 <Reference name="System.Data"/>
188 <Reference name="System.Drawing"/>
189 <Reference name="System.Xml"/>
190 <Reference name="System.Runtime.Serialization.Formatters.Soap"/>
191 <Reference name="ICSharpCode.SharpZipLib"/>
192 <Files>
193 <Match path="." pattern="*.vb" recurse="true"/>
194 </Files>
195 </Project>
196
197 <!-- Another projects that is included in the Solution -->
198 <Project name="DemoGame" Language="C#" path="DemoGame" type="WinExe" icon="..\bin\RealmForge.ico" assemblyName="DemoGame" rootNamespace="RealmForge">
199 <!-- icon is used to define the location of the .ico file that is embeeded in the assembly when the project is compiled. This is relative to the project path -->
200 <!--type defines the type of project, valid types are Library (.dll), WinExe (.exe), and Exe (.exe). WinExe is not windows specific, it just defines that it is a GUI application and that no Console or Command window will show when it is started-->
201
202 <Configuration name="Debug">
203 <Options>
204 <OutputPath>..\bin</OutputPath>
205 <XmlDocFile>DemoGame.xml</XmlDocFile>
206 </Options>
207 </Configuration>
208 <Configuration name="Release">
209 <Options>
210 <OutputPath>..\bin</OutputPath>
211 <XmlDocFile>DemoGame.xml</XmlDocFile>
212 </Options>
213 </Configuration>
214 <ReferencePath>../bin</ReferencePath>
215 <Reference name="System"/> <!-- Assemblies that are located in the GAC (installed, global) can be referenced-->
216 <Reference name="ode"/> <!-- Assemblies that are located in the output directory to which the file is built can be referenced -->
217 <Reference name="RealmForge.Utility"/> <!-- When you reference the name of another project, then that project (and it's output) will be referenced instead of looking for a pre-built assembly-->
218 <Files>
219 <Match path="." pattern="*.cs" recurse="true"/>
220 <Match path="." pattern="*.bmp" recurse="true" buildAction="EmbeddedResource"/>
221 <Match path="." pattern="[^a]*\.(png|jpg)" useRegex="true" buildAction="EmbeddedResource"/>
222
223 <!-- Uses a regex or regular expression to find all files that end with .png or .jpg but dont have the letter 'a' in their name and add them to the project as EmbeddedResource's. Because recurse enabled (default is false), only the values in the files in that are directly in the project directory (not child directories) are checked.-->
224 <!--EmbeddedResource, Content, and Compile are valid buildAction's-->
225 </Files>
226 </Project>
227
228 </Solution>
229</Prebuild>
230
diff --git a/Prebuild/TODO b/Prebuild/TODO
new file mode 100644
index 0000000..d01780a
--- /dev/null
+++ b/Prebuild/TODO
@@ -0,0 +1,21 @@
1* monodev target should be able to detect whether the project is 1.x
2 or 2.x runtime
3
4* make an autotools install target for .exe files
5
6* Fix the autotools target so that
7
8if(numProjects == 1){
9 for($projectDir){
10 generate_a_project_configure_dot_ac()
11 }
12}else{
13 generate_a_solution_configure_dot_ac()
14
15 foreach($project in $projectsList){
16 mkdir $project/
17 cd $project/
18 generate_a_project_configure_dot_ac
19 }
20}
21
diff --git a/Prebuild/doc/prebuild-example1.xml b/Prebuild/doc/prebuild-example1.xml
new file mode 100644
index 0000000..ea6f455
--- /dev/null
+++ b/Prebuild/doc/prebuild-example1.xml
@@ -0,0 +1,300 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Prebuild version="1.6" xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd">
3 <Solution name="RealmForge">
4 <Configuration name="Debug">
5 <Options>
6 <CompilerDefines>TRACE;DEBUG</CompilerDefines>
7 <OptimizeCode>false</OptimizeCode>
8 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
9 <AllowUnsafe>false</AllowUnsafe>
10 <WarningLevel>4</WarningLevel>
11 <WarningsAsErrors>false</WarningsAsErrors>
12 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
13 <OutputPath>..\bin</OutputPath>
14 <DebugInformation>true</DebugInformation>
15 <RegisterComInterop>false</RegisterComInterop>
16 <IncrementalBuild>true</IncrementalBuild>
17 <BaseAddress>285212672</BaseAddress>
18 <FileAlignment>4096</FileAlignment>
19 <NoStdLib>false</NoStdLib>
20 <XmlDocFile>Docs.xml</XmlDocFile>
21 </Options>
22 </Configuration>
23 <Configuration name="Release">
24 <Options>
25 <CompilerDefines>TRACE</CompilerDefines>
26 <OptimizeCode>true</OptimizeCode>
27 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
28 <AllowUnsafe>false</AllowUnsafe>
29 <WarningLevel>4</WarningLevel>
30 <WarningsAsErrors>false</WarningsAsErrors>
31 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
32 <OutputPath>..\bin</OutputPath>
33 <DebugInformation>false</DebugInformation>
34 <RegisterComInterop>false</RegisterComInterop>
35 <IncrementalBuild>true</IncrementalBuild>
36 <BaseAddress>285212672</BaseAddress>
37 <FileAlignment>4096</FileAlignment>
38 <NoStdLib>false</NoStdLib>
39 <XmlDocFile>Docs.xml</XmlDocFile>
40 </Options>
41 </Configuration>
42
43 <Project name="RealmForge.Utility" path="Utility" type="Library" assemblyName="RealmForge.Utility" rootNamespace="RealmForge">
44 <Configuration name="Debug">
45 <Options>
46 <OutputPath>..\bin\lib\Utility</OutputPath>
47 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
48 </Options>
49 </Configuration>
50 <Configuration name="Release">
51 <Options>
52 <OutputPath>..\bin\lib\Utility</OutputPath>
53 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
54 </Options>
55 </Configuration>
56 <ReferencePath>../bin</ReferencePath>
57 <Reference name="System"/>
58 <Reference name="System.Data"/>
59 <Reference name="System.Drawing"/>
60 <Reference name="System.Xml"/>
61 <Reference name="System.Runtime.Serialization.Formatters.Soap"/>
62 <Reference name="ICSharpCode.SharpZipLib"/>
63 <Files>
64 <Match pattern="*.cs" recurse="true"/>
65 </Files>
66 </Project>
67
68 <Project name="RealmForge.Framework" path="Framework" type="Library" assemblyName="RealmForge.Framework" rootNamespace="RealmForge">
69 <Configuration name="Debug">
70 <Options>
71 <OutputPath>..\bin\lib\Framework</OutputPath>
72 <XmlDocFile>RealmForge.Framework.xml</XmlDocFile>
73 </Options>
74 </Configuration>
75 <Configuration name="Release">
76 <Options>
77 <OutputPath>..\bin\lib\Framework</OutputPath>
78 <XmlDocFile>RealmForge.Framework.xml</XmlDocFile>
79 </Options>
80 </Configuration>
81 <ReferencePath>../bin</ReferencePath>
82 <Reference name="System"/>
83 <Reference name="System.Data"/>
84 <Reference name="System.Xml"/>
85 <Reference name="System.Windows.Forms"/>
86 <Reference name="System.Drawing"/>
87 <Reference name="Axiom.MathLib"/>
88 <Reference name="RealmForge.Utility"/>
89 <Reference name="Tao.OpenAl"/>
90 <Reference name="ICSharpCode.SharpZipLib"/>
91 <Reference name="csogg"/>
92 <Reference name="csvorbis"/>
93 <Files>
94 <Match pattern="*.cs" recurse="true"/>
95 <Match pattern="*.txt" recurse="true"/>
96 </Files>
97 </Project>
98
99 <Project name="RealmForge.Genres" path="Genres" type="Library" assemblyName="RealmForge.Genres" rootNamespace="RealmForge">
100 <Configuration name="Debug">
101 <Options>
102 <OutputPath>..\bin\lib\Genres</OutputPath>
103 <XmlDocFile>RealmForge.Genres.xml</XmlDocFile>
104 </Options>
105 </Configuration>
106 <Configuration name="Release">
107 <Options>
108 <OutputPath>..\bin\lib\Genres</OutputPath>
109 <XmlDocFile>RealmForge.Genres.xml</XmlDocFile>
110 </Options>
111 </Configuration>
112 <ReferencePath>../bin</ReferencePath>
113 <Reference name="System"/>
114 <Reference name="System.Data"/>
115 <Reference name="System.Xml"/>
116 <Reference name="System.Windows.Forms"/>
117 <Reference name="System.Drawing"/>
118 <Reference name="Axiom.MathLib"/>
119 <Reference name="RealmForge.Utility"/>
120 <Reference name="RealmForge.Framework"/>
121 <Files>
122 <Match pattern="*.cs" recurse="true"/>
123 </Files>
124 </Project>
125
126 <Project name="RealmForge.UI.Forms" path="Forms" type="Library" assemblyName="RealmForge.UI.Forms" rootNamespace="RealmForge">
127 <Configuration name="Debug">
128 <Options>
129 <OutputPath>..\bin\lib\Forms</OutputPath>
130 <XmlDocFile>RealmForge.UI.Forms.xml</XmlDocFile>
131 <AllowUnsafe>true</AllowUnsafe>
132 </Options>
133 </Configuration>
134 <Configuration name="Release">
135 <Options>
136 <OutputPath>..\bin\lib\Forms</OutputPath>
137 <XmlDocFile>RealmForge.UI.Forms.xml</XmlDocFile>
138 <AllowUnsafe>true</AllowUnsafe>
139 </Options>
140 </Configuration>
141 <ReferencePath>../bin</ReferencePath>
142 <Reference name="System"/>
143 <Reference name="System.Drawing"/>
144 <Reference name="System.Data"/>
145 <Reference name="System.Design"/>
146 <Reference name="System.Windows.Forms"/>
147 <Reference name="System.Xml"/>
148 <Reference name="Axiom.MathLib"/>
149 <Reference name="wx.NET"/>
150 <Reference name="RealmForge.Framework"/>
151 <Reference name="RealmForge.Utility"/>
152 <Files>
153 <File buildAction="EmbeddedResource">IDE\Resources\ImagesCaptionIDE.bmp</File>
154 <File buildAction="EmbeddedResource">IDE\Resources\ImagesCaptionPlain.bmp</File>
155 <File buildAction="EmbeddedResource">IDE\Resources\ImagesMenuControl.bmp</File>
156 <File buildAction="EmbeddedResource">IDE\Resources\ImagesPopupMenu.bmp</File>
157 <File buildAction="EmbeddedResource">IDE\Resources\ImagesTabbedGroups.bmp</File>
158 <File buildAction="EmbeddedResource">IDE\Resources\ImagesTabControl.bmp</File>
159 <File buildAction="EmbeddedResource">IDE\Resources\LibraryIcon.ico</File>
160 <File buildAction="EmbeddedResource">IDE\Resources\TabbedInvalid.cur</File>
161 <File buildAction="EmbeddedResource">IDE\Resources\TabbedValid.cur</File>
162 <File buildAction="EmbeddedResource">IDE\Resources\WizardPicture.bmp</File>
163 <File buildAction="EmbeddedResource">Controls\Trees\tv_minus.bmp</File>
164 <File buildAction="EmbeddedResource">Controls\Trees\tv_plus.bmp</File>
165 <File buildAction="EmbeddedResource">Controls\Trees\treeview.bmp</File>
166 <File buildAction="EmbeddedResource">Controls\Trees\listview.bmp</File>
167 <File buildAction="EmbeddedResource">IDE\Menus\MenuControl.bmp</File>
168 <File buildAction="EmbeddedResource">IDE\Controls\InertButton.bmp</File>
169 <File buildAction="EmbeddedResource">IDE\Controls\TabbedGroups.bmp</File>
170 <File buildAction="EmbeddedResource">IDE\Controls\TabCOntrol.bmp</File>
171 <File buildAction="EmbeddedResource">IDE\Controls\WizardControl.bmp</File>
172 <File buildAction="EmbeddedResource">Forms\IDETest.resx</File>
173 <File buildAction="EmbeddedResource">Forms\IDEWindow.resx</File>
174 <File buildAction="EmbeddedResource">Forms\Launcher.resx</File>
175 <File buildAction="EmbeddedResource">Forms\MainRenderFrame.resx</File>
176 <Match pattern="*.cs" recurse="true"/>
177 </Files>
178 </Project>
179
180 <Project name="RealmForge.RAGE" path="RAGE" type="Library" assemblyName="RealmForge.RAGE" rootNamespace="RealmForge">
181 <Configuration name="Debug">
182 <Options>
183 <OutputPath>..\bin\lib\RAGE</OutputPath>
184 <XmlDocFile>RealmForge.RAGE.xml</XmlDocFile>
185 </Options>
186 </Configuration>
187 <Configuration name="Release">
188 <Options>
189 <OutputPath>..\bin\lib\RAGE</OutputPath>
190 <XmlDocFile>RealmForge.RAGE.xml</XmlDocFile>
191 </Options>
192 </Configuration>
193 <ReferencePath>../bin</ReferencePath>
194 <ReferencePath>../bin</ReferencePath>
195 <Reference name="System"/>
196 <Reference name="System.XML"/>
197 <Reference name="System.Windows.Forms"/>
198 <Reference name="System.Drawing"/>
199 <Reference name="Axiom.Plugins.CgProgramManager"/>
200 <Reference name="Axiom.Engine"/>
201 <Reference name="Axiom.MathLib"/>
202 <Reference name="Axiom.Plugins.ParticleFX"/>
203 <Reference name="Axiom.Platforms.Win32"/>
204 <Reference name="Axiom.RenderSystems.DirectX9"/>
205 <Reference localCopy="false" name="Axiom.RenderSystems.OpenGL"/>
206 <Reference name="Axiom.SceneManagers.Octree"/>
207 <Reference name="ICSharpCode.SharpZipLib"/>
208 <Reference name="System.Data"/>
209 <Reference name="RealmForge.Framework"/>
210 <Reference name="RealmForge.Utility"/>
211 <Reference name="ode"/>
212 <Files>
213 <Match pattern="*.cs" recurse="true"/>
214 </Files>
215 </Project>
216
217
218 <Project name="RealmForge.ScriptLibrary" path="ScriptLibrary" type="Library" assemblyName="RealmForge.ScriptLibrary" rootNamespace="RSL">
219 <Configuration name="Debug">
220 <Options>
221 <OutputPath>..\bin\ScriptLibrary</OutputPath>
222 <XmlDocFile>RealmForge.ScriptLibrary.xml</XmlDocFile>
223 </Options>
224 </Configuration>
225 <Configuration name="Release">
226 <Options>
227 <OutputPath>..\bin\ScriptLibrary</OutputPath>
228 <XmlDocFile>RealmForge.ScriptLibrary.xml</XmlDocFile>
229 </Options>
230 </Configuration>
231 <ReferencePath>../bin</ReferencePath>
232 <Reference name="System"/>
233 <Reference name="System.XML"/>
234 <Reference name="System.Windows.Forms"/>
235 <Reference name="System.Drawing"/>
236 <Reference name="Axiom.MathLib"/>
237 <Reference name="wx.NET"/>
238 <Reference name="RealmForge.UI.Forms"/>
239 <Reference name="RealmForge.RAGE"/>
240 <Reference name="RealmForge.Framework"/>
241 <Reference name="RealmForge.Utility"/>
242 <Files>
243 <Match pattern="*.cs" recurse="true"/>
244 </Files>
245 </Project>
246
247
248 <Project name="Updater" path="Updater" type="WinExe" icon="..\bin\Updater.ico" assemblyName="Updater" rootNamespace="RealmForge">
249 <Configuration name="Debug">
250 <Options>
251 <OutputPath>..\bin\lib\Updater</OutputPath>
252 <XmlDocFile>Updater.xml</XmlDocFile>
253 </Options>
254 </Configuration>
255 <Configuration name="Release">
256 <Options>
257 <OutputPath>..\bin\lib\Updater</OutputPath>
258 <XmlDocFile>Updater.xml</XmlDocFile>
259 </Options>
260 </Configuration>
261 <ReferencePath>../bin</ReferencePath>
262 <Reference name="System"/>
263 <Reference name="RealmForge.UI.Forms"/>
264 <Reference name="RealmForge.Framework"/>
265 <Reference name="RealmForge.Utility"/>
266 <Files>
267 <Match pattern="*.cs" recurse="true"/>
268 </Files>
269 </Project>
270
271
272 <Project name="DemoGame" path="DemoGame" type="WinExe" icon="..\bin\RealmForge.ico" assemblyName="DemoGame" rootNamespace="RealmForge">
273 <Configuration name="Debug">
274 <Options>
275 <OutputPath>..\bin</OutputPath>
276 <XmlDocFile>DemoGame.xml</XmlDocFile>
277 </Options>
278 </Configuration>
279 <Configuration name="Release">
280 <Options>
281 <OutputPath>..\bin</OutputPath>
282 <XmlDocFile>DemoGame.xml</XmlDocFile>
283 </Options>
284 </Configuration>
285 <ReferencePath>../bin</ReferencePath>
286 <Reference name="System"/>
287 <Reference name="RealmForge.UI.Forms"/>
288 <Reference name="RealmForge.ScriptLibrary"/>
289 <Reference name="RealmForge.RAGE"/>
290 <Reference name="RealmForge.Framework"/>
291 <Reference name="RealmForge.Utility"/>
292 <Files>
293 <Match pattern="*.cs" recurse="true"/>
294 </Files>
295 </Project>
296
297 </Solution>
298</Prebuild>
299
300
diff --git a/Prebuild/doc/prebuild-example2.xml b/Prebuild/doc/prebuild-example2.xml
new file mode 100644
index 0000000..02276f6
--- /dev/null
+++ b/Prebuild/doc/prebuild-example2.xml
@@ -0,0 +1,72 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<Prebuild xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd">
3 <Solution name="Prebuild">
4 <Configuration name="Debug">
5 <Options>
6 <?if OS = "Win32" ?>
7 <CompilerDefines>DEBUG;TRACE;WIN32;NET</CompilerDefines>
8 <?else ?>
9 <CompilerDefines>DEBUG;TRACE;POSIX</CompilerDefines>
10 <?endif ?>
11 <OptimizeCode>false</OptimizeCode>
12 <OutputPath>bin\Debug</OutputPath>
13 <DebugInformation>true</DebugInformation>
14 <SuppressWarnings>1595</SuppressWarnings>
15 </Options>
16 </Configuration>
17 <Configuration name="Release">
18 <Options>
19 <?if OS = "Win32" ?>
20 <CompilerDefines>TRACE;WIN32;NET</CompilerDefines>
21 <?else ?>
22 <CompilerDefines>TRACE;POSIX</CompilerDefines>
23 <?endif ?>
24 <OutputPath>bin\Release</OutputPath>
25 <OptimizeCode>true</OptimizeCode>
26 <DebugInformation>false</DebugInformation>
27 <SuppressWarnings>1595</SuppressWarnings>
28 </Options>
29 </Configuration>
30 <Files>
31 <File>prebuild.xml</File>
32 <Match path="doc" pattern="*.txt"/>
33 </Files>
34 <Project name="Prebuild" path="src" language="C#" assemblyName="Prebuild" icon="App.ico" type="Exe" rootNamespace="Prebuild" startupObject="Prebuild.Prebuild">
35 <Configuration name="Debug">
36 <Options>
37 <?if OS = "Win32" ?>
38 <CompilerDefines>DEBUG;TRACE;WIN32;NET</CompilerDefines>
39 <?else ?>
40 <CompilerDefines>DEBUG;TRACE;POSIX</CompilerDefines>
41 <?endif ?>
42 <OptimizeCode>false</OptimizeCode>
43 <OutputPath>bin\Debug</OutputPath>
44 <DebugInformation>true</DebugInformation>
45 <XmlDocFile>Prebuild.xml</XmlDocFile>
46 <SuppressWarnings>1595</SuppressWarnings>
47 </Options>
48 </Configuration>
49 <Configuration name="Release">
50 <Options>
51 <?if OS = "Win32" ?>
52 <CompilerDefines>TRACE;WIN32;NET</CompilerDefines>
53 <?else ?>
54 <CompilerDefines>TRACE;POSIX</CompilerDefines>
55 <?endif ?>
56 <OutputPath>bin\Release</OutputPath>
57 <OptimizeCode>true</OptimizeCode>
58 <DebugInformation>false</DebugInformation>
59 <XmlDocFile>Prebuild.xml</XmlDocFile>
60 <SuppressWarnings>1595</SuppressWarnings>
61 </Options>
62 </Configuration>
63 <Reference name="System.Xml" />
64 <Reference name="System" />
65 <Files>
66 <Match pattern="App.ico" buildAction="EmbeddedResource"/>
67 <Match path="data" pattern="prebuild-1.6.xsd" buildAction="EmbeddedResource"/>
68 <Match pattern="*.cs" recurse="true"/>
69 </Files>
70 </Project>
71 </Solution>
72</Prebuild>
diff --git a/Prebuild/doc/prebuild-example3.xml b/Prebuild/doc/prebuild-example3.xml
new file mode 100644
index 0000000..1ba38f7
--- /dev/null
+++ b/Prebuild/doc/prebuild-example3.xml
@@ -0,0 +1,113 @@
1<?xml version="1.0" encoding="utf-8"?>
2 <!--The version of the XML schema specified in the version and xmlns attributes should match the one for which the version of Prebuild.exe used was compiled for. In this example it is the version 1.6 schema, you can find the XSD schema file at the url specified in the xmlns attribute. -->
3 <Prebuild version="1.6" xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd">
4 <Solution name="RealmForge"> <!--The title and file name for the solution, combine, workspace, or project group (depending on what development tool you are using)-->
5 <!--Configurations found as children of Solution are used as templates for the configurations found in the project, this allows you to avoid writing the same options in each project (and maintaining each of these). You can provide defaults and then override them in the configurations defined for each project. All options are optional.-->
6 <Configuration name="Debug">
7 <Options>
8 <!-- simple logically expressions can be evaluated, if, else, elseif, and endif are valid statements. Note that it is not neccisary to define POSIX or WIN32 -->
9 <?if OS = "Win32" ?>
10 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
11 <?else ?>
12 <CompilerDefines>DEBUG;TRACE;POSIX</CompilerDefines>
13 <?endif ?>
14 <OptimizeCode>false</OptimizeCode>
15 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
16 <AllowUnsafe>false</AllowUnsafe>
17 <WarningLevel>4</WarningLevel>
18 <!--The filter for the number of warnings or errors shown and the tolerance level as to what is an error. This is value from 0 to 4 where 4 is the most strict (least tolerent).-->
19
20 <WarningsAsErrors>false</WarningsAsErrors>
21 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
22 <!-- A semicolon ';' delimited list of the warnings that are filtered and not shown in the output window during compiling a project. Only include the number portion of the warning codes that are shown in output during compilation (eg CS1591, should be entered as 1591)-->
23
24 <OutputPath>..\bin</OutputPath>
25 <DebugInformation>true</DebugInformation>
26 <RegisterComInterop>false</RegisterComInterop>
27 <IncrementalBuild>true</IncrementalBuild>
28 <BaseAddress>285212672</BaseAddress>
29 <FileAlignment>4096</FileAlignment>
30 <NoStdLib>false</NoStdLib>
31 <XmlDocFile>Docs.xml</XmlDocFile>
32 </Options>
33 </Configuration>
34 <Configuration name="Release"> <!-- You can define multple configurations that projects can have, but there is no way to define which one is selected by default as this is a part of the user preferences for a project, not the solution or project files -->
35 <Options>
36 <CompilerDefines>TRACE</CompilerDefines>
37 <OptimizeCode>true</OptimizeCode>
38 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
39 <AllowUnsafe>false</AllowUnsafe>
40 <WarningLevel>4</WarningLevel>
41 <WarningsAsErrors>false</WarningsAsErrors>
42 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
43 <OutputPath>..\bin</OutputPath>
44 <DebugInformation>false</DebugInformation>
45 <RegisterComInterop>false</RegisterComInterop>
46 <IncrementalBuild>true</IncrementalBuild>
47 <BaseAddress>285212672</BaseAddress>
48 <FileAlignment>4096</FileAlignment>
49 <NoStdLib>false</NoStdLib>
50 <XmlDocFile>Docs.xml</XmlDocFile>
51 </Options>
52 </Configuration>
53
54 <!-- One of the projects that is included in the Solution -->
55 <Project name="RealmForge.Utility" path="Utility" type="Library" assemblyName="RealmForge.Utility" rootNamespace="RealmForge">
56 <Configuration name="Debug">
57 <Options>
58 <OutputPath>..\bin\lib\Utility</OutputPath>
59 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
60 </Options>
61 </Configuration>
62 <Configuration name="Release">
63 <Options>
64 <OutputPath>..\bin\lib\Utility</OutputPath>
65 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
66 </Options>
67 </Configuration>
68 <ReferencePath>../bin</ReferencePath>
69 <Reference name="System"/>
70 <Reference name="System.Data"/>
71 <Reference name="System.Drawing"/>
72 <Reference name="System.Xml"/>
73 <Reference name="System.Runtime.Serialization.Formatters.Soap"/>
74 <Reference name="ICSharpCode.SharpZipLib"/>
75 <Files>
76 <Match pattern="*.cs" recurse="true"/>
77 </Files>
78 </Project>
79
80 <!-- Another projects that is included in the Solution -->
81 <Project name="DemoGame" path="DemoGame" type="WinExe" icon="..\bin\RealmForge.ico" assemblyName="DemoGame" rootNamespace="RealmForge">
82 <!-- icon is used to define the location of the .ico file that is embeeded in the assembly when the project is compiled. This is relative to the project path -->
83 <!--type defines the type of project, valid types are Library (.dll), WinExe (.exe), and Exe (.exe). WinExe is not windows specific, it just defines that it is a GUI application and that no Console or Command window will show when it is started-->
84
85 <Configuration name="Debug">
86 <Options>
87 <OutputPath>..\bin</OutputPath>
88 <XmlDocFile>DemoGame.xml</XmlDocFile>
89 </Options>
90 </Configuration>
91 <Configuration name="Release">
92 <Options>
93 <OutputPath>..\bin</OutputPath>
94 <XmlDocFile>DemoGame.xml</XmlDocFile>
95 </Options>
96 </Configuration>
97 <ReferencePath>../bin</ReferencePath>
98 <Reference name="System"/> <!-- Assemblies that are located in the GAC (installed, global) can be referenced-->
99 <Reference name="ode"/> <!-- Assemblies that are located in the output directory to which the file is built can be referenced -->
100 <Reference name="RealmForge.Utility"/> <!-- When you reference the name of another project, then that project (and it's output) will be referenced instead of looking for a pre-built assembly-->
101 <Files>
102 <!-- path defaults to . or the directory that prebuild.exe resides in -->
103 <Match path="." pattern="*.cs" recurse="true"/>
104 <Match pattern="*.bmp" recurse="true" buildAction="EmbeddedResource"/>
105 <Match pattern="[^a]*\.(png|jpg)" useRegex="true" buildAction="EmbeddedResource"/>
106
107 <!-- Uses a regex or regular expression to find all files that end with .png or .jpg but dont have the letter 'a' in their name and add them to the project as EmbeddedResource's. Because recurse enabled (default is false), only the values in the files in that are directly in the project directory (not child directories) are checked.-->
108 <!--EmbeddedResource, Content, and Compile are valid buildAction's-->
109 </Files>
110 </Project>
111
112 </Solution>
113</Prebuild>
diff --git a/Prebuild/doc/prebuild-example4.xml b/Prebuild/doc/prebuild-example4.xml
new file mode 100644
index 0000000..c6c223f
--- /dev/null
+++ b/Prebuild/doc/prebuild-example4.xml
@@ -0,0 +1,715 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<Prebuild xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd" version="1.6">
3 <Solution name="SdlDotNet">
4 <Configuration name="Debug">
5 <Options>
6 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
7 <OptimizeCode>false</OptimizeCode>
8 <AllowUnsafe>false</AllowUnsafe>
9 <OutputPath>bin\Debug</OutputPath>
10 <DebugInformation>true</DebugInformation>
11 <WarningLevel>4</WarningLevel>
12 <SuppressWarnings>1595</SuppressWarnings>
13 </Options>
14 </Configuration>
15 <Configuration name="Release">
16 <Options>
17 <CompilerDefines>TRACE</CompilerDefines>
18 <OptimizeCode>true</OptimizeCode>
19 <AllowUnsafe>false</AllowUnsafe>
20 <OutputPath>bin\Release</OutputPath>
21 <DebugInformation>false</DebugInformation>
22 <WarningLevel>1</WarningLevel>
23 <SuppressWarnings>1595</SuppressWarnings>
24 </Options>
25 </Configuration>
26 <Files>
27 <File buildAction="Content">SdlDotNet.build</File>
28 <File buildAction="Content">prebuild.xml</File>
29 </Files>
30 <Project name="SdlDotNet" path="src" language="C#" type="Library" assemblyName="SdlDotNet" rootNamespace="SdlDotNet">
31 <Configuration name="Debug">
32 <Options>
33 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
34 <OptimizeCode>false</OptimizeCode>
35 <AllowUnsafe>false</AllowUnsafe>
36 <OutputPath>bin\Debug</OutputPath>
37 <DebugInformation>true</DebugInformation>
38 <XmlDocFile>SdlDotNet.xml</XmlDocFile>
39 <WarningLevel>4</WarningLevel>
40 <SuppressWarnings>1595</SuppressWarnings>
41 </Options>
42 </Configuration>
43 <Configuration name="Release">
44 <Options>
45 <CompilerDefines>TRACE</CompilerDefines>
46 <OptimizeCode>true</OptimizeCode>
47 <AllowUnsafe>false</AllowUnsafe>
48 <OutputPath>bin\Release</OutputPath>
49 <XmlDocFile>SdlDotNet.xml</XmlDocFile>
50 <DebugInformation>false</DebugInformation>
51 <WarningLevel>1</WarningLevel>
52 <SuppressWarnings>1595</SuppressWarnings>
53 </Options>
54 </Configuration>
55 <Reference name="System" />
56 <Reference name="System.Windows.Forms" />
57 <Reference name="System.Drawing" />
58 <Reference name="Tao.Sdl" localCopy="true" path="..\\lib"/>
59 <Files>
60 <Match path="." pattern="SurfaceControl.cs" subType="Component" recurse="true"/>
61 <Match path="." pattern="*.bmp" buildAction="EmbeddedResource" recurse="true"/>
62 <Match path="." pattern="*.cs" recurse="true">
63 <Exclude name="SurfaceControl.cs"/>
64 </Match>
65 </Files>
66 </Project>
67 <Project name="Rectangles" path="examples\\Rectangles" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.Rectangles.Rectangles" assemblyName="Rectangles" rootNamespace="SdlDotNet.Examples.Rectangles" icon="App.ico">
68 <Configuration name="Debug">
69 <Options>
70 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
71 <OptimizeCode>false</OptimizeCode>
72 <AllowUnsafe>false</AllowUnsafe>
73 <OutputPath>bin\Debug</OutputPath>
74 <DebugInformation>true</DebugInformation>
75 <XmlDocFile>Rectangles.xml</XmlDocFile>
76 <WarningLevel>4</WarningLevel>
77 <SuppressWarnings>1595</SuppressWarnings>
78 </Options>
79 </Configuration>
80 <Configuration name="Release">
81 <Options>
82 <CompilerDefines>TRACE</CompilerDefines>
83 <OptimizeCode>true</OptimizeCode>
84 <AllowUnsafe>false</AllowUnsafe>
85 <OutputPath>bin\Release</OutputPath>
86 <DebugInformation>false</DebugInformation>
87 <XmlDocFile>Rectangles.xml</XmlDocFile>
88 <WarningLevel>1</WarningLevel>
89 <SuppressWarnings>1595</SuppressWarnings>
90 </Options>
91 </Configuration>
92 <Reference name="System" />
93 <Reference name="System.Drawing" />
94 <Reference name="SdlDotNet" localCopy="true"/>
95 <Files>
96 <File buildAction="EmbeddedResource">App.ico</File>
97 <Match path="." pattern="*.cs" recurse="true"/>
98 </Files>
99 </Project>
100 <Project name="Gears" path="examples\\Gears" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.Gears.Gears" assemblyName="Gears" rootNamespace="SdlDotNet.Examples.Gears" icon="App.ico">
101 <Configuration name="Debug">
102 <Options>
103 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
104 <OptimizeCode>false</OptimizeCode>
105 <AllowUnsafe>false</AllowUnsafe>
106 <OutputPath>bin\Debug</OutputPath>
107 <DebugInformation>true</DebugInformation>
108 <XmlDocFile>Gears.xml</XmlDocFile>
109 <WarningLevel>4</WarningLevel>
110 <SuppressWarnings>1595</SuppressWarnings>
111 </Options>
112 </Configuration>
113 <Configuration name="Release">
114 <Options>
115 <CompilerDefines>TRACE</CompilerDefines>
116 <OptimizeCode>true</OptimizeCode>
117 <AllowUnsafe>false</AllowUnsafe>
118 <OutputPath>bin\Release</OutputPath>
119 <DebugInformation>false</DebugInformation>
120 <XmlDocFile>Gears.xml</XmlDocFile>
121 <WarningLevel>1</WarningLevel>
122 <SuppressWarnings>1595</SuppressWarnings>
123 </Options>
124 </Configuration>
125 <Reference name="System" />
126 <Reference name="System.Drawing" />
127 <Reference name="SdlDotNet" localCopy="true"/>
128 <Reference name="Tao.OpenGl" localCopy="true" path="..\\..\\lib"/>
129 <Files>
130 <File buildAction="EmbeddedResource">App.ico</File>
131 <Match path="." pattern="*.cs" recurse="true"/>
132 </Files>
133 </Project>
134 <Project name="CDPlayer" path="examples\\CDPlayer" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.CDPlayer.CDPlayer" assemblyName="CDPlayer" rootNamespace="SdlDotNet.Examples.CDPlayer" icon="App.ico">
135 <Configuration name="Debug">
136 <Options>
137 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
138 <OptimizeCode>false</OptimizeCode>
139 <AllowUnsafe>false</AllowUnsafe>
140 <OutputPath>bin\Debug</OutputPath>
141 <DebugInformation>true</DebugInformation>
142 <XmlDocFile>CDPlayer.xml</XmlDocFile>
143 <WarningLevel>4</WarningLevel>
144 <SuppressWarnings>1595</SuppressWarnings>
145 </Options>
146 </Configuration>
147 <Configuration name="Release">
148 <Options>
149 <CompilerDefines>TRACE</CompilerDefines>
150 <OptimizeCode>true</OptimizeCode>
151 <AllowUnsafe>false</AllowUnsafe>
152 <OutputPath>bin\Release</OutputPath>
153 <DebugInformation>false</DebugInformation>
154 <XmlDocFile>CDPlayer.xml</XmlDocFile>
155 <WarningLevel>1</WarningLevel>
156 <SuppressWarnings>1595</SuppressWarnings>
157 </Options>
158 </Configuration>
159 <Reference name="System" />
160 <Reference name="System.Drawing" />
161 <Reference name="System.Windows.Forms" />
162 <Reference name="SdlDotNet" localCopy="true"/>
163 <Files>
164 <File buildAction="EmbeddedResource">App.ico</File>
165 <File subType="Form">CDPlayer.cs</File>
166 <Match path="." pattern="*.cs" recurse="true">
167 <Exclude name="CDPlayer.cs"/>
168 </Match>
169 </Files>
170 </Project>
171 <Project name="MoviePlayer" path="examples\\MoviePlayer" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.MoviePlayer.MoviePlayer" assemblyName="MoviePlayer" rootNamespace="SdlDotNet.Examples.MoviePlayer" icon="App.ico">
172 <Configuration name="Debug">
173 <Options>
174 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
175 <OptimizeCode>false</OptimizeCode>
176 <AllowUnsafe>false</AllowUnsafe>
177 <OutputPath>bin\Debug</OutputPath>
178 <DebugInformation>true</DebugInformation>
179 <XmlDocFile>MoviePlayer.xml</XmlDocFile>
180 <WarningLevel>4</WarningLevel>
181 <SuppressWarnings>1595</SuppressWarnings>
182 </Options>
183 </Configuration>
184 <Configuration name="Release">
185 <Options>
186 <CompilerDefines>TRACE</CompilerDefines>
187 <OptimizeCode>true</OptimizeCode>
188 <AllowUnsafe>false</AllowUnsafe>
189 <OutputPath>bin\Release</OutputPath>
190 <DebugInformation>false</DebugInformation>
191 <XmlDocFile>MoviePlayer.xml</XmlDocFile>
192 <WarningLevel>1</WarningLevel>
193 <SuppressWarnings>1595</SuppressWarnings>
194 </Options>
195 </Configuration>
196 <Reference name="System" />
197 <Reference name="System.Drawing" />
198 <Reference name="SdlDotNet" localCopy="true"/>
199 <Files>
200 <File buildAction="EmbeddedResource">App.ico</File>
201 <Match path="." pattern="*.cs" recurse="true"/>
202 </Files>
203 </Project>
204 <Project name="SimpleGame" path="examples\\SimpleGame" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.SimpleGame.GameMain" assemblyName="SimpleGame" rootNamespace="SdlDotNet.Examples.SimpleGame" icon="App.ico">
205 <Configuration name="Debug">
206 <Options>
207 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
208 <OptimizeCode>false</OptimizeCode>
209 <AllowUnsafe>false</AllowUnsafe>
210 <OutputPath>bin\Debug</OutputPath>
211 <DebugInformation>true</DebugInformation>
212 <XmlDocFile>SimpleGame.xml</XmlDocFile>
213 <WarningLevel>4</WarningLevel>
214 <SuppressWarnings>1595</SuppressWarnings>
215 </Options>
216 </Configuration>
217 <Configuration name="Release">
218 <Options>
219 <CompilerDefines>TRACE</CompilerDefines>
220 <OptimizeCode>true</OptimizeCode>
221 <AllowUnsafe>false</AllowUnsafe>
222 <OutputPath>bin\Release</OutputPath>
223 <DebugInformation>false</DebugInformation>
224 <XmlDocFile>SimpleGame.xml</XmlDocFile>
225 <WarningLevel>1</WarningLevel>
226 <SuppressWarnings>1595</SuppressWarnings>
227 </Options>
228 </Configuration>
229 <Reference name="System" />
230 <Reference name="System.Drawing" />
231 <Reference name="SdlDotNet" localCopy="true"/>
232 <Files>
233 <File buildAction="EmbeddedResource">App.ico</File>
234 <Match path="." pattern="*.cs" recurse="true"/>
235 </Files>
236 </Project>
237 <Project name="BombRun" path="examples\\BombRun" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.BombRun.BombRun" assemblyName="BombRun" rootNamespace="SdlDotNet.Examples.BombRun" icon="App.ico">
238 <Configuration name="Debug">
239 <Options>
240 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
241 <OptimizeCode>false</OptimizeCode>
242 <AllowUnsafe>false</AllowUnsafe>
243 <OutputPath>bin\Debug</OutputPath>
244 <DebugInformation>true</DebugInformation>
245 <XmlDocFile>BombRun.xml</XmlDocFile>
246 <WarningLevel>4</WarningLevel>
247 <SuppressWarnings>1595</SuppressWarnings>
248 </Options>
249 </Configuration>
250 <Configuration name="Release">
251 <Options>
252 <CompilerDefines>TRACE</CompilerDefines>
253 <OptimizeCode>true</OptimizeCode>
254 <AllowUnsafe>false</AllowUnsafe>
255 <OutputPath>bin\Release</OutputPath>
256 <DebugInformation>false</DebugInformation>
257 <XmlDocFile>BombRun.xml</XmlDocFile>
258 <WarningLevel>1</WarningLevel>
259 <SuppressWarnings>1595</SuppressWarnings>
260 </Options>
261 </Configuration>
262 <Reference name="System" />
263 <Reference name="System.Drawing" />
264 <Reference name="SdlDotNet" localCopy="true"/>
265 <Files>
266 <File buildAction="EmbeddedResource">App.ico</File>
267 <Match path="." pattern="*.cs" recurse="true"/>
268 </Files>
269 </Project>
270 <Project name="SnowDemo" path="examples\\SnowDemo" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.SnowDemo.SnowDemo" assemblyName="SnowDemo" rootNamespace="SdlDotNet.Examples.SnowDemo" icon="App.ico">
271 <Configuration name="Debug">
272 <Options>
273 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
274 <OptimizeCode>false</OptimizeCode>
275 <AllowUnsafe>false</AllowUnsafe>
276 <OutputPath>bin\Debug</OutputPath>
277 <DebugInformation>true</DebugInformation>
278 <XmlDocFile>SnowDemo.xml</XmlDocFile>
279 <WarningLevel>4</WarningLevel>
280 <SuppressWarnings>1595</SuppressWarnings>
281 </Options>
282 </Configuration>
283 <Configuration name="Release">
284 <Options>
285 <CompilerDefines>TRACE</CompilerDefines>
286 <OptimizeCode>true</OptimizeCode>
287 <AllowUnsafe>false</AllowUnsafe>
288 <OutputPath>bin\Release</OutputPath>
289 <DebugInformation>false</DebugInformation>
290 <XmlDocFile>SnowDemo.xml</XmlDocFile>
291 <WarningLevel>1</WarningLevel>
292 <SuppressWarnings>1595</SuppressWarnings>
293 </Options>
294 </Configuration>
295 <Reference name="System" />
296 <Reference name="System.Drawing" />
297 <Reference name="SdlDotNet" localCopy="true"/>
298 <Files>
299 <File buildAction="EmbeddedResource">App.ico</File>
300 <Match path="." pattern="*.cs" recurse="true"/>
301 </Files>
302 </Project>
303 <Project name="BounceSprites" path="examples\\BounceSprites" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.BounceSprites.BounceSprites" assemblyName="BounceSprites" rootNamespace="SdlDotNet.Examples.BounceSprites" icon="App.ico">
304 <Configuration name="Debug">
305 <Options>
306 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
307 <OptimizeCode>false</OptimizeCode>
308 <AllowUnsafe>false</AllowUnsafe>
309 <OutputPath>bin\Debug</OutputPath>
310 <DebugInformation>true</DebugInformation>
311 <XmlDocFile>BounceSprites.xml</XmlDocFile>
312 <WarningLevel>4</WarningLevel>
313 <SuppressWarnings>1595</SuppressWarnings>
314 </Options>
315 </Configuration>
316 <Configuration name="Release">
317 <Options>
318 <CompilerDefines>TRACE</CompilerDefines>
319 <OptimizeCode>true</OptimizeCode>
320 <AllowUnsafe>false</AllowUnsafe>
321 <OutputPath>bin\Release</OutputPath>
322 <DebugInformation>false</DebugInformation>
323 <XmlDocFile>BounceSprites.xml</XmlDocFile>
324 <WarningLevel>1</WarningLevel>
325 <SuppressWarnings>1595</SuppressWarnings>
326 </Options>
327 </Configuration>
328 <Reference name="System" />
329 <Reference name="System.Drawing" />
330 <Reference name="SdlDotNet" localCopy="true"/>
331 <Files>
332 <File buildAction="EmbeddedResource">App.ico</File>
333 <Match path="." pattern="*.cs" recurse="true"/>
334 </Files>
335 </Project>
336 <Project name="Triad" path="examples\\Triad" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.Triad.MainObject" assemblyName="Triad" rootNamespace="SdlDotNet.Examples.Triad" icon="App.ico">
337 <Configuration name="Debug">
338 <Options>
339 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
340 <OptimizeCode>false</OptimizeCode>
341 <AllowUnsafe>false</AllowUnsafe>
342 <OutputPath>bin\Debug</OutputPath>
343 <DebugInformation>true</DebugInformation>
344 <XmlDocFile>Triad.xml</XmlDocFile>
345 <WarningLevel>4</WarningLevel>
346 <SuppressWarnings>1595</SuppressWarnings>
347 </Options>
348 </Configuration>
349 <Configuration name="Release">
350 <Options>
351 <CompilerDefines>TRACE</CompilerDefines>
352 <OptimizeCode>true</OptimizeCode>
353 <AllowUnsafe>false</AllowUnsafe>
354 <OutputPath>bin\Release</OutputPath>
355 <DebugInformation>false</DebugInformation>
356 <XmlDocFile>Triad.xml</XmlDocFile>
357 <WarningLevel>1</WarningLevel>
358 <SuppressWarnings>1595</SuppressWarnings>
359 </Options>
360 </Configuration>
361 <Reference name="System" />
362 <Reference name="System.Drawing" />
363 <Reference name="SdlDotNet" localCopy="true"/>
364 <Reference name="nunit.framework" localCopy="true" path="..\\..\\lib"/>
365 <Files>
366 <File buildAction="EmbeddedResource">App.ico</File>
367 <Match path="." pattern="*.cs" recurse="true"/>
368 </Files>
369 </Project>
370 <Project name="GuiExample" path="examples\\GuiExample" language="C#" type="Library" assemblyName="GuiExample" rootNamespace="SdlDotNet.Examples.GuiExample">
371 <Configuration name="Debug">
372 <Options>
373 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
374 <OptimizeCode>false</OptimizeCode>
375 <AllowUnsafe>false</AllowUnsafe>
376 <OutputPath>bin\Debug</OutputPath>
377 <DebugInformation>true</DebugInformation>
378 <XmlDocFile>GuiExample.xml</XmlDocFile>
379 <WarningLevel>4</WarningLevel>
380 <SuppressWarnings>1595</SuppressWarnings>
381 </Options>
382 </Configuration>
383 <Configuration name="Release">
384 <Options>
385 <CompilerDefines>TRACE</CompilerDefines>
386 <OptimizeCode>true</OptimizeCode>
387 <AllowUnsafe>false</AllowUnsafe>
388 <OutputPath>bin\Release</OutputPath>
389 <DebugInformation>false</DebugInformation>
390 <XmlDocFile>GuiExample.xml</XmlDocFile>
391 <WarningLevel>1</WarningLevel>
392 <SuppressWarnings>1595</SuppressWarnings>
393 </Options>
394 </Configuration>
395 <Reference name="System" />
396 <Reference name="System.Drawing" />
397 <Reference name="SdlDotNet" localCopy="true"/>
398 <Files>
399 <Match path="." pattern="*.cs" recurse="true"/>
400 </Files>
401 </Project>
402 <Project name="SpriteGuiDemos" path="examples\\SpriteGuiDemos" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.SpriteGuiDemos.SdlDemo" assemblyName="SpriteGuiDemo" rootNamespace="SdlDotNet.Examples.SpriteGuiDemos" icon="App.ico">
403 <Configuration name="Debug">
404 <Options>
405 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
406 <OptimizeCode>false</OptimizeCode>
407 <AllowUnsafe>false</AllowUnsafe>
408 <OutputPath>bin\Debug</OutputPath>
409 <DebugInformation>true</DebugInformation>
410 <XmlDocFile>SpriteGuiDemos.xml</XmlDocFile>
411 <WarningLevel>4</WarningLevel>
412 <SuppressWarnings>1595</SuppressWarnings>
413 </Options>
414 </Configuration>
415 <Configuration name="Release">
416 <Options>
417 <CompilerDefines>TRACE</CompilerDefines>
418 <OptimizeCode>true</OptimizeCode>
419 <AllowUnsafe>false</AllowUnsafe>
420 <OutputPath>bin\Release</OutputPath>
421 <DebugInformation>false</DebugInformation>
422 <XmlDocFile>SpriteGuiDemos.xml</XmlDocFile>
423 <WarningLevel>1</WarningLevel>
424 <SuppressWarnings>1595</SuppressWarnings>
425 </Options>
426 </Configuration>
427 <Reference name="System" />
428 <Reference name="System.Drawing" />
429 <Reference name="SdlDotNet" localCopy="true"/>
430 <Reference name="GuiExample" localCopy="true"/>
431 <Files>
432 <File buildAction="EmbeddedResource">App.ico</File>
433 <Match path="." pattern="*.cs" recurse="true"/>
434 </Files>
435 </Project>
436 <Project name="Tests" path="tests" language="C#" type="Library" assemblyName="SdlDotNet.Tests" rootNamespace="SdlDotNet.Tests">
437 <Configuration name="Debug">
438 <Options>
439 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
440 <OptimizeCode>false</OptimizeCode>
441 <AllowUnsafe>false</AllowUnsafe>
442 <OutputPath>bin\Debug</OutputPath>
443 <DebugInformation>true</DebugInformation>
444 <XmlDocFile>SdlDotNet.Tests.xml</XmlDocFile>
445 <WarningLevel>4</WarningLevel>
446 <SuppressWarnings>1595</SuppressWarnings>
447 </Options>
448 </Configuration>
449 <Configuration name="Release">
450 <Options>
451 <CompilerDefines>TRACE</CompilerDefines>
452 <OptimizeCode>true</OptimizeCode>
453 <AllowUnsafe>false</AllowUnsafe>
454 <OutputPath>bin\Release</OutputPath>
455 <DebugInformation>false</DebugInformation>
456 <XmlDocFile>SdlDotNet.Tests.xml</XmlDocFile>
457 <WarningLevel>1</WarningLevel>
458 <SuppressWarnings>1595</SuppressWarnings>
459 </Options>
460 </Configuration>
461 <Reference name="System" />
462 <Reference name="System.Drawing" />
463 <Reference name="SdlDotNet" localCopy="true"/>
464 <Reference name="Tao.Sdl" localCopy="true" path="..\\lib"/>
465 <Reference name="GuiExample" localCopy="true"/>
466 <Reference name="nunit.framework" localCopy="true" path="..\\lib"/>
467 <Files>
468 <Match path="." pattern="*.cs" recurse="true"/>
469 </Files>
470 </Project>
471 <Project name="AudioExample" path="examples\\AudioExample" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.AudioExample.AudioExample" assemblyName="AudioExample" rootNamespace="SdlDotNet.Examples.AudioExample" icon="App.ico">
472 <Configuration name="Debug">
473 <Options>
474 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
475 <OptimizeCode>false</OptimizeCode>
476 <AllowUnsafe>false</AllowUnsafe>
477 <OutputPath>bin\Debug</OutputPath>
478 <DebugInformation>true</DebugInformation>
479 <XmlDocFile>AudioExample.xml</XmlDocFile>
480 <WarningLevel>4</WarningLevel>
481 <SuppressWarnings>1595</SuppressWarnings>
482 </Options>
483 </Configuration>
484 <Configuration name="Release">
485 <Options>
486 <CompilerDefines>TRACE</CompilerDefines>
487 <OptimizeCode>true</OptimizeCode>
488 <AllowUnsafe>false</AllowUnsafe>
489 <OutputPath>bin\Release</OutputPath>
490 <DebugInformation>false</DebugInformation>
491 <XmlDocFile>AudioExample.xml</XmlDocFile>
492 <WarningLevel>1</WarningLevel>
493 <SuppressWarnings>1595</SuppressWarnings>
494 </Options>
495 </Configuration>
496 <Reference name="System" />
497 <Reference name="System.Drawing" />
498 <Reference name="SdlDotNet" localCopy="true"/>
499 <Files>
500 <File buildAction="EmbeddedResource">App.ico</File>
501 <Match path="." pattern="*.cs" recurse="true"/>
502 </Files>
503 </Project>
504 <Project name="SdlDotNet.Particles" path="extras\\Particles" language="C#" type="Library" assemblyName="SdlDotNet.Particles" rootNamespace="SdlDotNet.Particles">
505 <Configuration name="Debug">
506 <Options>
507 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
508 <OptimizeCode>false</OptimizeCode>
509 <AllowUnsafe>false</AllowUnsafe>
510 <OutputPath>bin\Debug</OutputPath>
511 <DebugInformation>true</DebugInformation>
512 <XmlDocFile>SdlDotNet.Particles.xml</XmlDocFile>
513 <WarningLevel>4</WarningLevel>
514 <SuppressWarnings>1595</SuppressWarnings>
515 </Options>
516 </Configuration>
517 <Configuration name="Release">
518 <Options>
519 <CompilerDefines>TRACE</CompilerDefines>
520 <OptimizeCode>true</OptimizeCode>
521 <AllowUnsafe>false</AllowUnsafe>
522 <OutputPath>bin\Release</OutputPath>
523 <DebugInformation>false</DebugInformation>
524 <XmlDocFile>SdlDotNet.Particles.xml</XmlDocFile>
525 <WarningLevel>1</WarningLevel>
526 <SuppressWarnings>1595</SuppressWarnings>
527 </Options>
528 </Configuration>
529 <Reference name="System" />
530 <Reference name="System.Drawing" />
531 <Reference name="SdlDotNet" localCopy="true"/>
532 <Files>
533 <Match path="." pattern="*.cs" recurse="true"/>
534 </Files>
535 </Project>
536 <Project name="ParticlesExample" path="examples\\ParticlesExample" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.ParticlesExample.ParticlesExample" assemblyName="ParticlesExample" rootNamespace="SdlDotNet.Examples.ParticlesExample" icon="App.ico">
537 <Configuration name="Debug">
538 <Options>
539 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
540 <OptimizeCode>false</OptimizeCode>
541 <AllowUnsafe>false</AllowUnsafe>
542 <OutputPath>bin\Debug</OutputPath>
543 <DebugInformation>true</DebugInformation>
544 <XmlDocFile>ParticlesExample.xml</XmlDocFile>
545 <WarningLevel>4</WarningLevel>
546 <SuppressWarnings>1595</SuppressWarnings>
547 </Options>
548 </Configuration>
549 <Configuration name="Release">
550 <Options>
551 <CompilerDefines>TRACE</CompilerDefines>
552 <OptimizeCode>true</OptimizeCode>
553 <AllowUnsafe>false</AllowUnsafe>
554 <OutputPath>bin\Release</OutputPath>
555 <DebugInformation>false</DebugInformation>
556 <XmlDocFile>ParticlesExample.xml</XmlDocFile>
557 <WarningLevel>1</WarningLevel>
558 <SuppressWarnings>1595</SuppressWarnings>
559 </Options>
560 </Configuration>
561 <Reference name="System" />
562 <Reference name="System.Drawing" />
563 <Reference name="SdlDotNet" localCopy="true"/>
564 <Reference name="SdlDotNet.Particles" localCopy="true"/>
565 <Files>
566 <File buildAction="EmbeddedResource">App.ico</File>
567 <Match path="." pattern="*.cs" recurse="true"/>
568 </Files>
569 </Project>
570 <!--<Project name="SdlDotNet.Gui" path="extras\\Gui" language="C#" type="Library" assemblyName="SdlDotNet.Gui" rootNamespace="SdlDotNet.Gui">
571 <Configuration name="Debug">
572 <Options>
573 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
574 <OptimizeCode>false</OptimizeCode>
575 <AllowUnsafe>false</AllowUnsafe>
576 <OutputPath>bin\Debug</OutputPath>
577 <DebugInformation>true</DebugInformation>
578 <XmlDocFile>SdlDotNet.Gui.xml</XmlDocFile>
579 <WarningLevel>4</WarningLevel>
580 </Options>
581 </Configuration>
582 <Configuration name="Release">
583 <Options>
584 <CompilerDefines>TRACE</CompilerDefines>
585 <OptimizeCode>true</OptimizeCode>
586 <AllowUnsafe>false</AllowUnsafe>
587 <OutputPath>bin\Release</OutputPath>
588 <DebugInformation>false</DebugInformation>
589 <XmlDocFile>SdlDotNet.Gui.xml</XmlDocFile>
590 <WarningLevel>1</WarningLevel>
591 </Options>
592 </Configuration>
593 <Reference name="System" />
594 <Reference name="System.Drawing" />
595 <Reference name="SdlDotNet" localCopy="true"/>
596 <Files>
597 <Match path="." pattern="*.cs" recurse="true"/>
598 </Files>
599 </Project>-->
600 <Project name="NeHe" path="examples\\NeHe" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.NeHe.NeHe" assemblyName="NeHe" rootNamespace="SdlDotNet.Examples.NeHe" icon="App.ico">
601 <Configuration name="Debug">
602 <Options>
603 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
604 <OptimizeCode>false</OptimizeCode>
605 <AllowUnsafe>false</AllowUnsafe>
606 <OutputPath>bin\Debug</OutputPath>
607 <DebugInformation>true</DebugInformation>
608 <XmlDocFile>NeHe.xml</XmlDocFile>
609 <WarningLevel>4</WarningLevel>
610 <SuppressWarnings>1595</SuppressWarnings>
611 </Options>
612 </Configuration>
613 <Configuration name="Release">
614 <Options>
615 <CompilerDefines>TRACE</CompilerDefines>
616 <OptimizeCode>true</OptimizeCode>
617 <AllowUnsafe>false</AllowUnsafe>
618 <OutputPath>bin\Release</OutputPath>
619 <DebugInformation>false</DebugInformation>
620 <XmlDocFile>NeHe.xml</XmlDocFile>
621 <WarningLevel>1</WarningLevel>
622 <SuppressWarnings>1595</SuppressWarnings>
623 </Options>
624 </Configuration>
625 <Reference name="System" />
626 <Reference name="System.Drawing" />
627 <Reference name="System.Windows.Forms" />
628 <Reference name="SdlDotNet" localCopy="true"/>
629 <Reference name="Tao.OpenGl" localCopy="true" path="..\\..\\lib"/>
630 <Reference name="Tao.OpenGl.Glu" localCopy="true" path="..\\..\\lib"/>
631 <Reference name="Tao.Platform.Windows" localCopy="true" path="..\\..\\lib"/>
632 <Files>
633 <File buildAction="EmbeddedResource">App.ico</File>
634 <File subType="Form">NeHe.cs</File>
635 <Match path="." pattern="*.cs" recurse="true">
636 <Exclude name="NeHe.cs"/>
637 </Match>
638 </Files>
639 </Project>
640 <Project name="RedBook" path="examples\\RedBook" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.RedBook.RedBook" assemblyName="RedBook" rootNamespace="SdlDotNet.Examples.RedBook" icon="App.ico">
641 <Configuration name="Debug">
642 <Options>
643 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
644 <OptimizeCode>false</OptimizeCode>
645 <AllowUnsafe>false</AllowUnsafe>
646 <OutputPath>bin\Debug</OutputPath>
647 <DebugInformation>true</DebugInformation>
648 <XmlDocFile>RedBook.xml</XmlDocFile>
649 <WarningLevel>4</WarningLevel>
650 <SuppressWarnings>1595</SuppressWarnings>
651 </Options>
652 </Configuration>
653 <Configuration name="Release">
654 <Options>
655 <CompilerDefines>TRACE</CompilerDefines>
656 <OptimizeCode>true</OptimizeCode>
657 <AllowUnsafe>false</AllowUnsafe>
658 <OutputPath>bin\Release</OutputPath>
659 <DebugInformation>false</DebugInformation>
660 <XmlDocFile>RedBook.xml</XmlDocFile>
661 <WarningLevel>1</WarningLevel>
662 <SuppressWarnings>1595</SuppressWarnings>
663 </Options>
664 </Configuration>
665 <Reference name="System" />
666 <Reference name="System.Drawing" />
667 <Reference name="System.Windows.Forms" />
668 <Reference name="SdlDotNet" localCopy="true"/>
669 <Reference name="Tao.OpenGl" localCopy="true" path="..\\..\\lib"/>
670 <Reference name="Tao.OpenGl.Glu" localCopy="true" path="..\\..\\lib"/>
671 <Reference name="Tao.FreeGlut" localCopy="true" path="..\\..\\lib"/>
672 <Files>
673 <File buildAction="EmbeddedResource">App.ico</File>
674 <File subType="Form">RedBook.cs</File>
675 <Match path="." pattern="*.cs" recurse="true">
676 <Exclude name="RedBook.cs" />
677 </Match>
678 </Files>
679 </Project>
680 <Project name="PhysFsTest" path="examples\\PhysFsTest" language="C#" type="WinExe" startupObject="SdlDotNet.Examples.PhysFsTest.PhysFsTest" assemblyName="PhysFsTest" rootNamespace="SdlDotNet.Examples.PhysFsTest" icon="App.ico">
681 <Configuration name="Debug">
682 <Options>
683 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
684 <OptimizeCode>false</OptimizeCode>
685 <AllowUnsafe>false</AllowUnsafe>
686 <OutputPath>bin\Debug</OutputPath>
687 <DebugInformation>true</DebugInformation>
688 <XmlDocFile>PhysFsTest.xml</XmlDocFile>
689 <WarningLevel>4</WarningLevel>
690 <SuppressWarnings>1595</SuppressWarnings>
691 </Options>
692 </Configuration>
693 <Configuration name="Release">
694 <Options>
695 <CompilerDefines>TRACE</CompilerDefines>
696 <OptimizeCode>true</OptimizeCode>
697 <AllowUnsafe>false</AllowUnsafe>
698 <OutputPath>bin\Release</OutputPath>
699 <DebugInformation>false</DebugInformation>
700 <XmlDocFile>PhysFsTest.xml</XmlDocFile>
701 <WarningLevel>1</WarningLevel>
702 <SuppressWarnings>1595</SuppressWarnings>
703 </Options>
704 </Configuration>
705 <Reference name="System" />
706 <Reference name="System.Drawing" />
707 <Reference name="SdlDotNet" localCopy="true"/>
708 <Reference name="Tao.PhysFs" localCopy="true" path="..\\..\\lib"/>
709 <Files>
710 <File buildAction="EmbeddedResource">App.ico</File>
711 <Match path="." pattern="*.cs" recurse="true"/>
712 </Files>
713 </Project>
714 </Solution>
715</Prebuild>
diff --git a/Prebuild/doc/prebuild-example5.xml b/Prebuild/doc/prebuild-example5.xml
new file mode 100644
index 0000000..5221547
--- /dev/null
+++ b/Prebuild/doc/prebuild-example5.xml
@@ -0,0 +1,187 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<Prebuild xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd" version="1.6">
3 <Solution name="Tao.Sdl">
4 <Configuration name="Debug">
5 <Options>
6 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
7 <OptimizeCode>false</OptimizeCode>
8 <AllowUnsafe>true</AllowUnsafe>
9 <OutputPath>bin\Debug</OutputPath>
10 <XmlDocFile>Tao.Sdl.xml</XmlDocFile>
11 <DebugInformation>true</DebugInformation>
12 </Options>
13 </Configuration>
14 <Configuration name="Release">
15 <Options>
16 <CompilerDefines>TRACE;WIN32</CompilerDefines>
17 <OptimizeCode>true</OptimizeCode>
18 <AllowUnsafe>true</AllowUnsafe>
19 <OutputPath>bin\Release</OutputPath>
20 <XmlDocFile>Tao.Sdl.xml</XmlDocFile>
21 <DebugInformation>false</DebugInformation>
22 </Options>
23 </Configuration>
24 <Files>
25 <File>Tao.Sdl.License.txt</File>
26 <File>Tao.Sdl.Readme.txt</File>
27 <File>Tao.Sdl.snk</File>
28 <File>Tao.Sdl.dll.config</File>
29 </Files>
30 <Project name="Tao.Sdl" path="." language="C#" type="Library">
31 <Reference name="System" />
32 <Files>
33 <File>AssemblyInfo.cs</File>
34 <File>Sdl.cs</File>
35 <File>SdlImage.cs</File>
36 <File>SdlMixer.cs</File>
37 <File>SdlTtf.cs</File>
38 <File>SdlNet.cs</File>
39 <File>SdlGfx.cs</File>
40 <File>Smpeg.cs</File>
41 <File>DelegateCallingConventionCdeclAttribute.cs</File>
42 </Files>
43 </Project>
44 <Project name="Tao.Sdl.Tests" path="..\\..\\tests\\Sdl\\" language="C#" type="Library">
45 <Configuration name="Debug">
46 <Options>
47 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
48 <OptimizeCode>false</OptimizeCode>
49 <AllowUnsafe>false</AllowUnsafe>
50 <OutputPath>bin\Debug</OutputPath>
51 <XmlDocFile>Tao.Sdl.Tests.xml</XmlDocFile>
52 <DebugInformation>true</DebugInformation>
53 </Options>
54 </Configuration>
55 <Configuration name="Release">
56 <Options>
57 <CompilerDefines>TRACE;WIN32</CompilerDefines>
58 <OptimizeCode>true</OptimizeCode>
59 <AllowUnsafe>false</AllowUnsafe>
60 <OutputPath>bin\Release</OutputPath>
61 <XmlDocFile>Tao.Sdl.Tests.xml</XmlDocFile>
62 <DebugInformation>false</DebugInformation>
63 </Options>
64 </Configuration>
65 <Reference name="System" />
66 <Reference name="nunit.framework.dll"/>
67 <Reference name="Tao.Sdl" />
68 <Files>
69 <File>AssemblyInfo.cs</File>
70 <File>SdlTest.cs</File>
71 <File>SdlTestVideo.cs</File>
72 <File>SdlTestImage.cs</File>
73 <File>SdlTestTtf.cs</File>
74 <File>SdlTestMixer.cs</File>
75 <File>SdlTestGfx.cs</File>
76 <File>SmpegTest.cs</File>
77 </Files>
78 </Project>
79 <Project name="SdlExamples.Rectangles" path="..\\..\\examples\\SdlExamples\\Rectangles" language="C#" type="WinExe" startupObject="SdlExamples.Rectangles">
80 <Configuration name="Debug">
81 <Options>
82 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
83 <OptimizeCode>false</OptimizeCode>
84 <AllowUnsafe>false</AllowUnsafe>
85 <OutputPath>bin\Debug</OutputPath>
86 <DebugInformation>true</DebugInformation>
87 </Options>
88 </Configuration>
89 <Configuration name="Release">
90 <Options>
91 <CompilerDefines>TRACE;WIN32</CompilerDefines>
92 <OptimizeCode>true</OptimizeCode>
93 <AllowUnsafe>false</AllowUnsafe>
94 <OutputPath>bin\Release</OutputPath>
95 <DebugInformation>false</DebugInformation>
96 </Options>
97 </Configuration>
98 <Reference name="System" />
99 <Reference name="Tao.Sdl" />
100 <Files>
101 <File>AssemblyInfo.cs</File>
102 <File>Rectangles.cs</File>
103 </Files>
104 </Project>
105 <Project name="SdlExamples.SmpegPlayer" path="..\\..\\examples\\SdlExamples\\SmpegPlayer" language="C#" type="WinExe" startupObject="SdlExamples.SmpegPlayer">
106 <Configuration name="Debug">
107 <Options>
108 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
109 <OptimizeCode>false</OptimizeCode>
110 <AllowUnsafe>false</AllowUnsafe>
111 <OutputPath>bin\Debug</OutputPath>
112 <DebugInformation>true</DebugInformation>
113 </Options>
114 </Configuration>
115 <Configuration name="Release">
116 <Options>
117 <CompilerDefines>TRACE;WIN32</CompilerDefines>
118 <OptimizeCode>true</OptimizeCode>
119 <AllowUnsafe>false</AllowUnsafe>
120 <OutputPath>bin\Release</OutputPath>
121 <DebugInformation>false</DebugInformation>
122 </Options>
123 </Configuration>
124 <Reference name="System" />
125 <Reference name="Tao.Sdl" />
126 <Files>
127 <File>AssemblyInfo.cs</File>
128 <File>SmpegPlayer.cs</File>
129 </Files>
130 </Project>
131 <Project name="SdlExamples.GfxPrimitives" path="..\\..\\examples\\SdlExamples\\GfxPrimitives" language="C#" type="WinExe" startupObject="SdlExamples.GfxPrimitives">
132 <Configuration name="Debug">
133 <Options>
134 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
135 <OptimizeCode>false</OptimizeCode>
136 <AllowUnsafe>false</AllowUnsafe>
137 <OutputPath>bin\Debug</OutputPath>
138 <DebugInformation>true</DebugInformation>
139 </Options>
140 </Configuration>
141 <Configuration name="Release">
142 <Options>
143 <CompilerDefines>TRACE;WIN32</CompilerDefines>
144 <OptimizeCode>true</OptimizeCode>
145 <AllowUnsafe>false</AllowUnsafe>
146 <OutputPath>bin\Release</OutputPath>
147 <DebugInformation>false</DebugInformation>
148 </Options>
149 </Configuration>
150 <Reference name="System" />
151 <Reference name="Tao.Sdl" />
152 <Files>
153 <File>AssemblyInfo.cs</File>
154 <File>GfxPrimitives.cs</File>
155 </Files>
156 </Project>
157 <Project name="Tao.PostProcess" path="..\\Tao.PostProcess\\" language="C#" type="Exe">
158 <Configuration name="Debug">
159 <Options>
160 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
161 <OptimizeCode>false</OptimizeCode>
162 <AllowUnsafe>false</AllowUnsafe>
163 <OutputPath>bin\Debug</OutputPath>
164 <DebugInformation>true</DebugInformation>
165 </Options>
166 </Configuration>
167 <Configuration name="Release">
168 <Options>
169 <CompilerDefines>TRACE;WIN32</CompilerDefines>
170 <OptimizeCode>true</OptimizeCode>
171 <AllowUnsafe>false</AllowUnsafe>
172 <OutputPath>bin\Release</OutputPath>
173 <DebugInformation>false</DebugInformation>
174 </Options>
175 </Configuration>
176 <Reference name="System" />
177 <Files>
178 <File>AssemblyInfo.cs</File>
179 <File>AppMain.cs</File>
180 <File>BuildProcessor.cs</File>
181 <File>Options.cs</File>
182 <File>ReleaseBuildProcessor.cs</File>
183 <File>UsageHelp.cs</File>
184 </Files>
185 </Project>
186 </Solution>
187</Prebuild>
diff --git a/Prebuild/prebuild b/Prebuild/prebuild
new file mode 100644
index 0000000..0dc648d
--- /dev/null
+++ b/Prebuild/prebuild
@@ -0,0 +1,2 @@
1#!/bin/sh
2exec mono [PREFIX]/prebuild.exe "$@"
diff --git a/Prebuild/scripts/Clean.bat b/Prebuild/scripts/Clean.bat
new file mode 100644
index 0000000..39fa685
--- /dev/null
+++ b/Prebuild/scripts/Clean.bat
@@ -0,0 +1,2 @@
1cd ..
2Prebuild.exe /clean /yes /removedir obj /file prebuild.xml /build NET_2_0 /pause
diff --git a/Prebuild/scripts/Help.bat b/Prebuild/scripts/Help.bat
new file mode 100644
index 0000000..a7d3db4
--- /dev/null
+++ b/Prebuild/scripts/Help.bat
@@ -0,0 +1,2 @@
1cd ..
2Prebuild.exe /usage /pause \ No newline at end of file
diff --git a/Prebuild/scripts/MonoDevelop.sh b/Prebuild/scripts/MonoDevelop.sh
new file mode 100644
index 0000000..dae3cf4
--- /dev/null
+++ b/Prebuild/scripts/MonoDevelop.sh
@@ -0,0 +1,2 @@
1#!/bin/sh
2prebuild /target monodev /file ../prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/Prebuild.nsi b/Prebuild/scripts/Prebuild.nsi
new file mode 100644
index 0000000..0c6e2bc
--- /dev/null
+++ b/Prebuild/scripts/Prebuild.nsi
@@ -0,0 +1,231 @@
1!verbose 3
2
3!define PRODUCT_NAME "Prebuild"
4!define PRODUCT_VERSION "1.3.1"
5!define PRODUCT_PUBLISHER "Prebuild"
6!define PRODUCT_PACKAGE "prebuild"
7!define PRODUCT_WEB_SITE "http://dnpb.sourceforge.net"
8!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Prebuild"
9!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Prebuild"
10!define PRODUCT_UNINST_ROOT_KEY "HKLM"
11!define PRODUCT_PATH ".."
12
13;!define MUI_WELCOMEFINISHPAGE_BITMAP "PrebuildLogo.bmp"
14;!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
15;!define MUI_UNWELCOMEFINISHPAGE_BITMAP "PrebuildLogo.bmp"
16;!define MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
17
18BrandingText "© 2003-2006 David Hudson, http://dnpb.sourceforge.net/"
19SetCompressor lzma
20CRCCheck on
21
22; File Association defines
23;!include "fileassoc.nsh"
24
25; MUI 1.67 compatible ------
26!include "MUI.nsh"
27
28; MUI Settings
29!define MUI_ABORTWARNING
30!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
31!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
32
33;--------------------------------
34;Variables
35
36;--------------------------------
37;Installer Pages
38
39; Welcome page
40!insertmacro MUI_PAGE_WELCOME
41; License page
42!insertmacro MUI_PAGE_LICENSE "..\doc\license.txt"
43; Directory page
44!insertmacro MUI_PAGE_DIRECTORY
45
46; Instfiles page
47!insertmacro MUI_PAGE_INSTFILES
48
49; Finish page
50!insertmacro MUI_PAGE_FINISH
51
52;------------------------------------
53; Uninstaller pages
54!insertmacro MUI_UNPAGE_CONFIRM
55!insertmacro MUI_UNPAGE_INSTFILES
56!insertmacro MUI_UNPAGE_FINISH
57;------------------------------------
58
59; Language files
60!insertmacro MUI_LANGUAGE "English"
61
62; Reserve files
63!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
64
65; MUI end ------
66
67Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
68OutFile "..\${PRODUCT_PACKAGE}-${PRODUCT_VERSION}-setup.exe"
69InstallDir "$PROGRAMFILES\Prebuild"
70InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
71ShowInstDetails show
72ShowUnInstDetails show
73
74; .NET Framework check
75; http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dnnetdep/html/redistdeploy1_1.asp
76; Section "Detecting that the .NET Framework 1.1 is installed"
77Function .onInit
78 ReadRegDWORD $R0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" Install
79 StrCmp $R0 "" 0 CheckPreviousVersion
80 MessageBox MB_OK "Microsoft .NET Framework 1.1 was not found on this system.$\r$\n$\r$\nUnable to continue this installation."
81 Abort
82
83 CheckPreviousVersion:
84 ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName"
85 StrCmp $R0 "" CheckOSVersion 0
86 MessageBox MB_OK "An old version of Prebuild is installed on this computer, please uninstall first.$\r$\n$\r$\nUnable to continue this installation."
87 Abort
88
89 CheckOSVersion:
90 Call IsSupportedWindowsVersion
91 Pop $R0
92 StrCmp $R0 "False" NoAbort 0
93 MessageBox MB_OK "The operating system you are using is not supported by Prebuild (95/98/ME/NT3.x/NT4.x)."
94 Abort
95
96 NoAbort:
97FunctionEnd
98
99Section "Source" SecSource
100 SetOverwrite ifnewer
101 SetOutPath "$INSTDIR\src"
102 File /r /x *.swp /x .svn /x *.xml /x *.csproj /x *.user /x *.build /x *.prjx /x *.mdp /x bin /x obj /x *.nsi ${PRODUCT_PATH}\src\*.*
103
104 ;Store installation folder
105 WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
106
107SectionEnd
108
109Section "Runtime" SecRuntime
110 SetOverwrite ifnewer
111 SetOutPath "$INSTDIR"
112 File /r /x *.swp /x .svn /x *.nsi /x src /x *.sln /x *.cmbx /x *.mds ${PRODUCT_PATH}\Prebuild.exe ${PRODUCT_PATH}\prebuild.xml
113
114 ;Store installation folder
115 WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
116
117SectionEnd
118
119Section "Documentation" SecDocs
120 SetOverwrite ifnewer
121 SetOutPath "$INSTDIR\doc"
122 File /r /x *.swp /x .svn /x *.exe ${PRODUCT_PATH}\doc\*.*
123
124 ;Store installation folder
125 WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
126SectionEnd
127
128Section "Scripts" SecScripts
129 SetOverwrite ifnewer
130 SetOutPath "$INSTDIR\scripts"
131 File /r /x *.swp /x .svn /x *.nsi /x *.exe ${PRODUCT_PATH}\scripts\*.*
132
133 ;Store installation folder
134 WriteRegStr HKCU "Software\Prebuild" "" $INSTDIR
135SectionEnd
136
137;Language strings
138
139Section -AdditionalIcons
140 WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
141SectionEnd
142
143Section -Post
144 WriteUninstaller "$INSTDIR\uninst.exe"
145 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
146 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
147 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
148 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
149 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
150SectionEnd
151
152Section Uninstall
153
154 DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
155 DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
156 RMDir /r "$INSTDIR"
157
158SectionEnd
159
160; GetWindowsVersion, taken from NSIS help, modified for our purposes
161Function IsSupportedWindowsVersion
162
163 Push $R0
164 Push $R1
165
166 ReadRegStr $R0 HKLM \
167 "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
168
169 IfErrors 0 lbl_winnt
170
171 ; we are not NT
172 ReadRegStr $R0 HKLM \
173 "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
174
175 StrCpy $R1 $R0 1
176 StrCmp $R1 '4' 0 lbl_error
177
178 StrCpy $R1 $R0 3
179
180 StrCmp $R1 '4.0' lbl_win32_95
181 StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
182
183 lbl_win32_95:
184 StrCpy $R0 'False'
185 Goto lbl_done
186
187 lbl_win32_98:
188 StrCpy $R0 'False'
189 Goto lbl_done
190
191 lbl_win32_ME:
192 StrCpy $R0 'False'
193 Goto lbl_done
194
195 lbl_winnt:
196
197 StrCpy $R1 $R0 1
198
199 StrCmp $R1 '3' lbl_winnt_x
200 StrCmp $R1 '4' lbl_winnt_x
201
202 StrCpy $R1 $R0 3
203
204 StrCmp $R1 '5.0' lbl_winnt_2000
205 StrCmp $R1 '5.1' lbl_winnt_XP
206 StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
207
208 lbl_winnt_x:
209 StrCpy $R0 'False'
210 Goto lbl_done
211
212 lbl_winnt_2000:
213 Strcpy $R0 'True'
214 Goto lbl_done
215
216 lbl_winnt_XP:
217 Strcpy $R0 'True'
218 Goto lbl_done
219
220 lbl_winnt_2003:
221 Strcpy $R0 'True'
222 Goto lbl_done
223
224 lbl_error:
225 Strcpy $R0 'False'
226 lbl_done:
227
228 Pop $R1
229 Exch $R0
230
231FunctionEnd
diff --git a/Prebuild/scripts/SharpDevelop.bat b/Prebuild/scripts/SharpDevelop.bat
new file mode 100644
index 0000000..483d9c9
--- /dev/null
+++ b/Prebuild/scripts/SharpDevelop.bat
@@ -0,0 +1,4 @@
1@rem Generates a combine (.cmbx) and a set of project files (.prjx)
2@rem for SharpDevelop (http://icsharpcode.net/OpenSource/SD/Default.aspx)
3cd ..
4Prebuild.exe /target sharpdev /file prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/SharpDevelop2.bat b/Prebuild/scripts/SharpDevelop2.bat
new file mode 100644
index 0000000..4ca0272
--- /dev/null
+++ b/Prebuild/scripts/SharpDevelop2.bat
@@ -0,0 +1,4 @@
1@rem Generates a combine (.cmbx) and a set of project files (.prjx)
2@rem for SharpDevelop (http://icsharpcode.net/OpenSource/SD/Default.aspx)
3cd ..
4Prebuild.exe /target sharpdev2 /file prebuild.xml /pause
diff --git a/Prebuild/scripts/VS2002.bat b/Prebuild/scripts/VS2002.bat
new file mode 100644
index 0000000..a11740e
--- /dev/null
+++ b/Prebuild/scripts/VS2002.bat
@@ -0,0 +1,4 @@
1@rem Generates a solution (.sln) and a set of project files (.csproj)
2@rem for Microsoft Visual Studio .NET 2002
3cd ..
4Prebuild.exe /target vs2002 /file prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/VS2003.bat b/Prebuild/scripts/VS2003.bat
new file mode 100644
index 0000000..1be57f8
--- /dev/null
+++ b/Prebuild/scripts/VS2003.bat
@@ -0,0 +1,4 @@
1@rem Generates a solution (.sln) and a set of project files (.csproj)
2@rem for Microsoft Visual Studio .NET 2002
3cd ..
4Prebuild.exe /target vs2003 /file prebuild.xml /build NET_1_1 /pause
diff --git a/Prebuild/scripts/VS2005.bat b/Prebuild/scripts/VS2005.bat
new file mode 100644
index 0000000..86ad3fc
--- /dev/null
+++ b/Prebuild/scripts/VS2005.bat
@@ -0,0 +1,4 @@
1@rem Generates a solution (.sln) and a set of project files (.csproj, .vbproj, etc.)
2@rem for Microsoft Visual Studio .NET 2005
3cd ..
4Prebuild.exe /target vs2005 /file prebuild.xml /build NET_2_0 /pause
diff --git a/Prebuild/scripts/autotools.bat b/Prebuild/scripts/autotools.bat
new file mode 100644
index 0000000..1fd3469
--- /dev/null
+++ b/Prebuild/scripts/autotools.bat
@@ -0,0 +1,4 @@
1@rem Generates Makefiles
2@rem for autotools
3cd ..
4Prebuild.exe /target autotools /file prebuild.xml /pause
diff --git a/Prebuild/scripts/autotools.sh b/Prebuild/scripts/autotools.sh
new file mode 100644
index 0000000..18cd46f
--- /dev/null
+++ b/Prebuild/scripts/autotools.sh
@@ -0,0 +1,2 @@
1#!/bin/sh
2prebuild /target autotools /file ../prebuild.xml /build NET_2_0 /pause
diff --git a/Prebuild/scripts/nant.bat b/Prebuild/scripts/nant.bat
new file mode 100644
index 0000000..2a6ae60
--- /dev/null
+++ b/Prebuild/scripts/nant.bat
@@ -0,0 +1,4 @@
1@rem Generates a .build files
2@rem for NAnt
3cd ..
4Prebuild.exe /target nant /file prebuild.xml /pause
diff --git a/Prebuild/scripts/nant.sh b/Prebuild/scripts/nant.sh
new file mode 100644
index 0000000..54a8254
--- /dev/null
+++ b/Prebuild/scripts/nant.sh
@@ -0,0 +1,2 @@
1#!/bin/sh
2prebuild /target nant /file ../prebuild.xml /pause
diff --git a/Prebuild/src/App.ico b/Prebuild/src/App.ico
new file mode 100644
index 0000000..ac4ea6f
--- /dev/null
+++ b/Prebuild/src/App.ico
Binary files differ
diff --git a/Prebuild/src/Core/Attributes/DataNodeAttribute.cs b/Prebuild/src/Core/Attributes/DataNodeAttribute.cs
new file mode 100644
index 0000000..dbdaf0b
--- /dev/null
+++ b/Prebuild/src/Core/Attributes/DataNodeAttribute.cs
@@ -0,0 +1,81 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Collections.Specialized;
37
38namespace Prebuild.Core.Attributes
39{
40 /// <summary>
41 ///
42 /// </summary>
43 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
44 public sealed class DataNodeAttribute : Attribute
45 {
46 #region Fields
47
48 private string m_Name = "unknown";
49
50 #endregion
51
52 #region Constructors
53
54 /// <summary>
55 /// Initializes a new instance of the <see cref="DataNodeAttribute"/> class.
56 /// </summary>
57 /// <param name="name">The name.</param>
58 public DataNodeAttribute(string name)
59 {
60 m_Name = name;
61 }
62
63 #endregion
64
65 #region Properties
66
67 /// <summary>
68 /// Gets the name.
69 /// </summary>
70 /// <value>The name.</value>
71 public string Name
72 {
73 get
74 {
75 return m_Name;
76 }
77 }
78
79 #endregion
80 }
81}
diff --git a/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs b/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs
new file mode 100644
index 0000000..edda56d
--- /dev/null
+++ b/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs
@@ -0,0 +1,80 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36
37namespace Prebuild.Core.Attributes
38{
39 /// <summary>
40 ///
41 /// </summary>
42 [AttributeUsage(AttributeTargets.Field)]
43 public sealed class OptionNodeAttribute : Attribute
44 {
45 #region Fields
46
47 private string m_NodeName;
48
49 #endregion
50
51 #region Constructors
52
53 /// <summary>
54 /// Initializes a new instance of the <see cref="OptionNodeAttribute"/> class.
55 /// </summary>
56 /// <param name="nodeName">Name of the node.</param>
57 public OptionNodeAttribute(string nodeName)
58 {
59 m_NodeName = nodeName;
60 }
61
62 #endregion
63
64 #region Properties
65
66 /// <summary>
67 /// Gets the name of the node.
68 /// </summary>
69 /// <value>The name of the node.</value>
70 public string NodeName
71 {
72 get
73 {
74 return m_NodeName;
75 }
76 }
77
78 #endregion
79 }
80}
diff --git a/Prebuild/src/Core/Attributes/TargetAttribute.cs b/Prebuild/src/Core/Attributes/TargetAttribute.cs
new file mode 100644
index 0000000..985f180
--- /dev/null
+++ b/Prebuild/src/Core/Attributes/TargetAttribute.cs
@@ -0,0 +1,80 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36
37namespace Prebuild.Core.Attributes
38{
39 /// <summary>
40 ///
41 /// </summary>
42 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
43 public sealed class TargetAttribute : Attribute
44 {
45 #region Fields
46
47 private string m_Name;
48
49 #endregion
50
51 #region Constructors
52
53 /// <summary>
54 /// Initializes a new instance of the <see cref="TargetAttribute"/> class.
55 /// </summary>
56 /// <param name="name">The name.</param>
57 public TargetAttribute(string name)
58 {
59 m_Name = name;
60 }
61
62 #endregion
63
64 #region Properties
65
66 /// <summary>
67 /// Gets the name.
68 /// </summary>
69 /// <value>The name.</value>
70 public string Name
71 {
72 get
73 {
74 return m_Name;
75 }
76 }
77
78 #endregion
79 }
80}
diff --git a/Prebuild/src/Core/FatalException.cs b/Prebuild/src/Core/FatalException.cs
new file mode 100644
index 0000000..92aad3d
--- /dev/null
+++ b/Prebuild/src/Core/FatalException.cs
@@ -0,0 +1,94 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Runtime.Serialization;
37
38namespace Prebuild.Core
39{
40 /// <summary>
41 ///
42 /// </summary>
43 [Serializable()]
44 public class FatalException : Exception
45 {
46 #region Constructors
47
48
49 /// <summary>
50 /// Initializes a new instance of the <see cref="FatalException"/> class.
51 /// </summary>
52 public FatalException()
53 {
54 }
55
56 /// <summary>
57 /// Initializes a new instance of the <see cref="FatalException"/> class.
58 /// </summary>
59 /// <param name="format">The format.</param>
60 /// <param name="args">The args.</param>
61 public FatalException(string format, params object[] args)
62 : base(String.Format(format, args))
63 {
64 }
65
66 /// <summary>
67 /// Exception with specified string
68 /// </summary>
69 /// <param name="message">Exception message</param>
70 public FatalException(string message): base(message)
71 {
72 }
73
74 /// <summary>
75 ///
76 /// </summary>
77 /// <param name="message"></param>
78 /// <param name="exception"></param>
79 public FatalException(string message, Exception exception) : base(message, exception)
80 {
81 }
82
83 /// <summary>
84 ///
85 /// </summary>
86 /// <param name="info"></param>
87 /// <param name="context"></param>
88 protected FatalException(SerializationInfo info, StreamingContext context) : base( info, context )
89 {
90 }
91
92 #endregion
93 }
94}
diff --git a/Prebuild/src/Core/Interfaces/IDataNode.cs b/Prebuild/src/Core/Interfaces/IDataNode.cs
new file mode 100644
index 0000000..0bad97c
--- /dev/null
+++ b/Prebuild/src/Core/Interfaces/IDataNode.cs
@@ -0,0 +1,56 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Xml;
37
38namespace Prebuild.Core.Interfaces
39{
40 /// <summary>
41 ///
42 /// </summary>
43 public interface IDataNode
44 {
45 /// <summary>
46 /// Gets or sets the parent.
47 /// </summary>
48 /// <value>The parent.</value>
49 IDataNode Parent { get; set; }
50 /// <summary>
51 /// Parses the specified node.
52 /// </summary>
53 /// <param name="node">The node.</param>
54 void Parse(XmlNode node);
55 }
56}
diff --git a/Prebuild/src/Core/Interfaces/ITarget.cs b/Prebuild/src/Core/Interfaces/ITarget.cs
new file mode 100644
index 0000000..dac6cd6
--- /dev/null
+++ b/Prebuild/src/Core/Interfaces/ITarget.cs
@@ -0,0 +1,60 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36
37namespace Prebuild.Core.Interfaces
38{
39 /// <summary>
40 ///
41 /// </summary>
42 public interface ITarget
43 {
44 /// <summary>
45 /// Writes the specified kern.
46 /// </summary>
47 /// <param name="kern">The kern.</param>
48 void Write(Kernel kern);
49 /// <summary>
50 /// Cleans the specified kern.
51 /// </summary>
52 /// <param name="kern">The kern.</param>
53 void Clean(Kernel kern);
54 /// <summary>
55 /// Gets the name.
56 /// </summary>
57 /// <value>The name.</value>
58 string Name { get; }
59 }
60} \ No newline at end of file
diff --git a/Prebuild/src/Core/Kernel.cs b/Prebuild/src/Core/Kernel.cs
new file mode 100644
index 0000000..3117e7c
--- /dev/null
+++ b/Prebuild/src/Core/Kernel.cs
@@ -0,0 +1,758 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: robloach $
30 * $Date: 2006-09-26 00:30:53 +0200 (ti, 26 sep 2006) $
31 * $Revision: 165 $
32 */
33#endregion
34
35using System;
36using System.Diagnostics;
37using System.Collections;
38using System.Collections.Specialized;
39using System.IO;
40using System.Reflection;
41using System.Xml;
42using System.Xml.Schema;
43using System.Text;
44
45using Prebuild.Core.Attributes;
46using Prebuild.Core.Interfaces;
47using Prebuild.Core.Nodes;
48using Prebuild.Core.Parse;
49using Prebuild.Core.Utilities;
50
51namespace Prebuild.Core
52{
53 /// <summary>
54 ///
55 /// </summary>
56 public class Kernel : IDisposable
57 {
58 #region Inner Classes
59
60 private struct NodeEntry
61 {
62 public Type Type;
63 public DataNodeAttribute Attribute;
64 }
65
66 #endregion
67
68 #region Fields
69
70 private static Kernel m_Instance = new Kernel();
71
72 /// <summary>
73 /// This must match the version of the schema that is embeeded
74 /// </summary>
75 private static string m_SchemaVersion = "1.7";
76 private static string m_Schema = "prebuild-" + m_SchemaVersion + ".xsd";
77 private static string m_SchemaURI = "http://dnpb.sourceforge.net/schemas/" + m_Schema;
78 bool disposed;
79 private Version m_Version;
80 private string m_Revision = "";
81 private CommandLineCollection m_CommandLine;
82 private Log m_Log;
83 private CurrentDirectory m_CurrentWorkingDirectory;
84 private XmlSchemaCollection m_Schemas;
85
86 private Hashtable m_Targets;
87 private Hashtable m_Nodes;
88
89 ArrayList m_Solutions;
90 string m_Target;
91 string m_Clean;
92 string[] m_RemoveDirectories;
93 string m_CurrentFile;
94 bool m_PauseAfterFinish;
95 string[] m_ProjectGroups;
96 StringCollection m_Refs;
97
98
99 #endregion
100
101 #region Constructors
102
103 private Kernel()
104 {
105 }
106
107 #endregion
108
109 #region Properties
110
111 /// <summary>
112 /// Gets a value indicating whether [pause after finish].
113 /// </summary>
114 /// <value><c>true</c> if [pause after finish]; otherwise, <c>false</c>.</value>
115 public bool PauseAfterFinish
116 {
117 get
118 {
119 return m_PauseAfterFinish;
120 }
121 }
122
123 /// <summary>
124 /// Gets the instance.
125 /// </summary>
126 /// <value>The instance.</value>
127 public static Kernel Instance
128 {
129 get
130 {
131 return m_Instance;
132 }
133 }
134
135 /// <summary>
136 /// Gets the version.
137 /// </summary>
138 /// <value>The version.</value>
139 public string Version
140 {
141 get
142 {
143 return String.Format("{0}.{1}.{2}{3}", m_Version.Major, m_Version.Minor, m_Version.Build, m_Revision);
144 }
145 }
146
147 /// <summary>
148 /// Gets the command line.
149 /// </summary>
150 /// <value>The command line.</value>
151 public CommandLineCollection CommandLine
152 {
153 get
154 {
155 return m_CommandLine;
156 }
157 }
158
159 /// <summary>
160 /// Gets the targets.
161 /// </summary>
162 /// <value>The targets.</value>
163 public Hashtable Targets
164 {
165 get
166 {
167 return m_Targets;
168 }
169 }
170
171 /// <summary>
172 /// Gets the log.
173 /// </summary>
174 /// <value>The log.</value>
175 public Log Log
176 {
177 get
178 {
179 return m_Log;
180 }
181 }
182
183 /// <summary>
184 /// Gets the current working directory.
185 /// </summary>
186 /// <value>The current working directory.</value>
187 public CurrentDirectory CurrentWorkingDirectory
188 {
189 get
190 {
191 return m_CurrentWorkingDirectory;
192 }
193 }
194
195 /// <summary>
196 /// Gets the solutions.
197 /// </summary>
198 /// <value>The solutions.</value>
199 public ArrayList Solutions
200 {
201 get
202 {
203 return m_Solutions;
204 }
205 }
206
207 #endregion
208
209 #region Private Methods
210
211 private void RemoveDirectories(string rootDir, string[] dirNames)
212 {
213 foreach(string dir in Directory.GetDirectories(rootDir))
214 {
215 string simpleName = Path.GetFileName(dir);
216
217 if(Array.IndexOf(dirNames, simpleName) != -1)
218 {
219 //delete if the name matches one of the directory names to delete
220 string fullDirPath = Path.GetFullPath(dir);
221 Directory.Delete(fullDirPath,true);
222 }
223 else//not a match, so check children
224 {
225 RemoveDirectories(dir,dirNames);
226 //recurse, checking children for them
227 }
228 }
229 }
230
231// private void RemoveDirectoryMatches(string rootDir, string dirPattern)
232// {
233// foreach(string dir in Directory.GetDirectories(rootDir))
234// {
235// foreach(string match in Directory.GetDirectories(dir))
236// {//delete all child directories that match
237// Directory.Delete(Path.GetFullPath(match),true);
238// }
239// //recure through the rest checking for nested matches to delete
240// RemoveDirectoryMatches(dir,dirPattern);
241// }
242// }
243
244 private void LoadSchema()
245 {
246 Assembly assembly = this.GetType().Assembly;
247 Stream stream = assembly.GetManifestResourceStream("Prebuild.data." + m_Schema);
248 if(stream == null)
249 {
250 //try without the default namespace prepending to it in case was compiled with SharpDevelop or MonoDevelop instead of Visual Studio .NET
251 stream = assembly.GetManifestResourceStream(m_Schema);
252 if(stream == null)
253 {
254 throw new System.Reflection.TargetException(string.Format("Could not find the scheme embedded resource file '{0}'.", m_Schema));
255 }
256 }
257 XmlReader schema = new XmlTextReader(stream);
258
259 m_Schemas = new XmlSchemaCollection();
260 m_Schemas.Add(m_SchemaURI, schema);
261 }
262
263 private void CacheVersion()
264 {
265 m_Version = Assembly.GetEntryAssembly().GetName().Version;
266 }
267
268 private void CacheTargets(Assembly assm)
269 {
270 foreach(Type t in assm.GetTypes())
271 {
272 TargetAttribute ta = (TargetAttribute)Helper.CheckType(t, typeof(TargetAttribute), typeof(ITarget));
273 if(ta == null)
274 {
275 continue;
276 }
277
278 ITarget target = (ITarget)assm.CreateInstance(t.FullName);
279 if(target == null)
280 {
281 throw new MissingMethodException("Could not create ITarget instance");
282 }
283
284 m_Targets[ta.Name] = target;
285 }
286 }
287
288 private void CacheNodeTypes(Assembly assm)
289 {
290 foreach(Type t in assm.GetTypes())
291 {
292 DataNodeAttribute dna = (DataNodeAttribute)Helper.CheckType(t, typeof(DataNodeAttribute), typeof(IDataNode));
293 if(dna == null)
294 {
295 continue;
296 }
297
298 NodeEntry ne = new NodeEntry();
299 ne.Type = t;
300 ne.Attribute = dna;
301 m_Nodes[dna.Name] = ne;
302 }
303 }
304
305 private void LogBanner()
306 {
307 m_Log.Write("Prebuild v" + this.Version);
308 m_Log.Write("Copyright (c) Matthew Holmes, Dan Moorehead and David Hudson");
309 m_Log.Write("See 'prebuild /usage' for help");
310 m_Log.Write();
311 }
312
313 private void ProcessFile(string file)
314 {
315 m_CurrentWorkingDirectory.Push();
316
317 string path = file;
318 try
319 {
320 try
321 {
322 path = Helper.ResolvePath(path);
323 }
324 catch(ArgumentException)
325 {
326 m_Log.Write("Could not open Prebuild file: " + path);
327 m_CurrentWorkingDirectory.Pop();
328 return;
329 }
330
331 m_CurrentFile = path;
332 Helper.SetCurrentDir(Path.GetDirectoryName(path));
333
334
335 XmlTextReader reader = new XmlTextReader(path);
336
337 Core.Parse.Preprocessor pre = new Core.Parse.Preprocessor();
338
339 //register command line arguments as XML variables
340 IDictionaryEnumerator dict = m_CommandLine.GetEnumerator();
341 while (dict.MoveNext())
342 {
343 string name = dict.Key.ToString().Trim();
344 if (name.Length > 0)
345 pre.RegisterVariable(name, dict.Value.ToString());
346 }
347
348 string xml = pre.Process(reader);//remove script and evaulate pre-proccessing to get schema-conforming XML
349
350
351 XmlDocument doc = new XmlDocument();
352 try
353 {
354 XmlValidatingReader validator = new XmlValidatingReader(new XmlTextReader(new StringReader(xml)));
355
356 //validate while reading from string into XmlDocument DOM structure in memory
357 foreach(XmlSchema schema in m_Schemas)
358 {
359 validator.Schemas.Add(schema);
360 }
361 doc.Load(validator);
362 }
363 catch(XmlException e)
364 {
365 throw new XmlException(e.ToString());
366 }
367
368 //is there a purpose to writing it? An syntax/schema problem would have been found during pre.Process() and reported with details
369 if(m_CommandLine.WasPassed("ppo"))
370 {
371 string ppoFile = m_CommandLine["ppo"];
372 if(ppoFile == null || ppoFile.Trim().Length < 1)
373 {
374 ppoFile = "preprocessed.xml";
375 }
376
377 StreamWriter writer = null;
378 try
379 {
380 writer = new StreamWriter(ppoFile);
381 writer.Write(xml);
382 }
383 catch(IOException ex)
384 {
385 Console.WriteLine("Could not write PPO file '{0}': {1}", ppoFile, ex.Message);
386 }
387 finally
388 {
389 if(writer != null)
390 {
391 writer.Close();
392 }
393 }
394 return;
395 }
396 //start reading the xml config file
397 XmlElement rootNode = doc.DocumentElement;
398 //string suggestedVersion = Helper.AttributeValue(rootNode,"version","1.0");
399 Helper.CheckForOSVariables = Helper.ParseBoolean(rootNode,"checkOsVars",false);
400
401 foreach(XmlNode node in rootNode.ChildNodes)//solutions or if pre-proc instructions
402 {
403 IDataNode dataNode = ParseNode(node, null);
404 if(dataNode is ProcessNode)
405 {
406 ProcessNode proc = (ProcessNode)dataNode;
407 if(proc.IsValid)
408 {
409 ProcessFile(proc.Path);
410 }
411 }
412 else if(dataNode is SolutionNode)
413 {
414 m_Solutions.Add(dataNode);
415 }
416 }
417 }
418 catch(XmlSchemaException xse)
419 {
420 m_Log.Write("XML validation error at line {0} in {1}:\n\n{2}",
421 xse.LineNumber, path, xse.Message);
422 }
423 finally
424 {
425 m_CurrentWorkingDirectory.Pop();
426 }
427 }
428
429 #endregion
430
431 #region Public Methods
432
433 /// <summary>
434 /// Allows the project.
435 /// </summary>
436 /// <param name="projectGroupsFlags">The project groups flags.</param>
437 /// <returns></returns>
438 public bool AllowProject(string projectGroupsFlags)
439 {
440 if(m_ProjectGroups != null && m_ProjectGroups.Length > 0)
441 {
442 if(projectGroupsFlags != null && projectGroupsFlags.Length == 0)
443 {
444 foreach(string group in projectGroupsFlags.Split('|'))
445 {
446 if(Array.IndexOf(m_ProjectGroups, group) != -1) //if included in the filter list
447 {
448 return true;
449 }
450 }
451 }
452 return false;//not included in the list or no groups specified for the project
453 }
454 return true;//no filter specified in the command line args
455 }
456
457 /// <summary>
458 /// Gets the type of the node.
459 /// </summary>
460 /// <param name="node">The node.</param>
461 /// <returns></returns>
462 public Type GetNodeType(XmlNode node)
463 {
464 if( node == null )
465 {
466 throw new ArgumentNullException("node");
467 }
468 if(!m_Nodes.ContainsKey(node.Name))
469 {
470 return null;
471 }
472
473 NodeEntry ne = (NodeEntry)m_Nodes[node.Name];
474 return ne.Type;
475 }
476
477 /// <summary>
478 ///
479 /// </summary>
480 /// <param name="node"></param>
481 /// <param name="parent"></param>
482 /// <returns></returns>
483 public IDataNode ParseNode(XmlNode node, IDataNode parent)
484 {
485 return ParseNode(node, parent, null);
486 }
487
488 //Create an instance of the data node type that is mapped to the name of the xml DOM node
489 /// <summary>
490 /// Parses the node.
491 /// </summary>
492 /// <param name="node">The node.</param>
493 /// <param name="parent">The parent.</param>
494 /// <param name="preNode">The pre node.</param>
495 /// <returns></returns>
496 public IDataNode ParseNode(XmlNode node, IDataNode parent, IDataNode preNode)
497 {
498 IDataNode dataNode = null;
499
500 try
501 {
502 if( node == null )
503 {
504 throw new ArgumentNullException("node");
505 }
506 if(preNode == null)
507 {
508 if(!m_Nodes.ContainsKey(node.Name))
509 {
510 //throw new XmlException("Unknown XML node: " + node.Name);
511 return null;
512 }
513
514 NodeEntry ne = (NodeEntry)m_Nodes[node.Name];
515 Type type = ne.Type;
516 //DataNodeAttribute dna = ne.Attribute;
517
518 dataNode = (IDataNode)type.Assembly.CreateInstance(type.FullName);
519 if(dataNode == null)
520 {
521 throw new System.Reflection.TargetException("Could not create new parser instance: " + type.FullName);
522 }
523 }
524 else
525 dataNode = preNode;
526
527 dataNode.Parent = parent;
528 dataNode.Parse(node);
529 }
530 catch(WarningException wex)
531 {
532 m_Log.Write(LogType.Warning, wex.Message);
533 return null;
534 }
535 catch(FatalException fex)
536 {
537 m_Log.WriteException(LogType.Error, fex);
538 throw;
539 }
540 catch(Exception ex)
541 {
542 m_Log.WriteException(LogType.Error, ex);
543 throw;
544 }
545
546 return dataNode;
547 }
548
549 /// <summary>
550 /// Initializes the specified target.
551 /// </summary>
552 /// <param name="target">The target.</param>
553 /// <param name="args">The args.</param>
554 public void Initialize(LogTargets target, string[] args)
555 {
556 m_Targets = new Hashtable();
557 CacheTargets(this.GetType().Assembly);
558 m_Nodes = new Hashtable();
559 CacheNodeTypes(this.GetType().Assembly);
560 CacheVersion();
561
562 m_CommandLine = new CommandLineCollection(args);
563
564 string logFile = null;
565 if(m_CommandLine.WasPassed("log"))
566 {
567 logFile = m_CommandLine["log"];
568
569 if(logFile != null && logFile.Length == 0)
570 {
571 logFile = "Prebuild.log";
572 }
573 }
574 else
575 {
576 target = target & ~LogTargets.File; //dont output to a file
577 }
578
579 m_Log = new Log(target, logFile);
580 LogBanner();
581
582 m_CurrentWorkingDirectory = new CurrentDirectory();
583
584 m_Target = m_CommandLine["target"];
585 m_Clean = m_CommandLine["clean"];
586 string removeDirs = m_CommandLine["removedir"];
587 if(removeDirs != null && removeDirs.Length == 0)
588 {
589 m_RemoveDirectories = removeDirs.Split('|');
590 }
591
592 string flags = m_CommandLine["allowedgroups"];//allows filtering by specifying a pipe-delimited list of groups to include
593 if(flags != null && flags.Length == 0)
594 {
595 m_ProjectGroups = flags.Split('|');
596 }
597 m_PauseAfterFinish = m_CommandLine.WasPassed("pause");
598
599 LoadSchema();
600
601 m_Solutions = new ArrayList();
602 m_Refs = new StringCollection();
603 }
604
605 /// <summary>
606 /// Processes this instance.
607 /// </summary>
608 public void Process()
609 {
610 bool perfomedOtherTask = false;
611 if(m_RemoveDirectories != null && m_RemoveDirectories.Length > 0)
612 {
613 try
614 {
615 RemoveDirectories(".",m_RemoveDirectories);
616 }
617 catch(IOException e)
618 {
619 m_Log.Write("Failed to remove directories named {0}",m_RemoveDirectories);
620 m_Log.WriteException(LogType.Error,e);
621 }
622 catch(UnauthorizedAccessException e)
623 {
624 m_Log.Write("Failed to remove directories named {0}",m_RemoveDirectories);
625 m_Log.WriteException(LogType.Error,e);
626 }
627 perfomedOtherTask = true;
628 }
629
630 if(m_Target != null && m_Clean != null)
631 {
632 m_Log.Write(LogType.Error, "The options /target and /clean cannot be passed together");
633 return;
634 }
635 else if(m_Target == null && m_Clean == null)
636 {
637 if(perfomedOtherTask) //finished
638 {
639 return;
640 }
641 m_Log.Write(LogType.Error, "Must pass either /target or /clean to process a Prebuild file");
642 return;
643 }
644
645 string file = "./prebuild.xml";
646 if(m_CommandLine.WasPassed("file"))
647 {
648 file = m_CommandLine["file"];
649 }
650
651 ProcessFile(file);
652
653 string target = (m_Target != null ? m_Target.ToLower() : m_Clean.ToLower());
654 bool clean = (m_Target == null);
655 if(clean && target != null && target.Length == 0)
656 {
657 target = "all";
658 }
659 if(clean && target == "all")//default to all if no target was specified for clean
660 {
661 //check if they passed yes
662 if (!m_CommandLine.WasPassed("yes"))
663 {
664 Console.WriteLine("WARNING: This operation will clean ALL project files for all targets, are you sure? (y/n):");
665 string ret = Console.ReadLine();
666 if(ret == null)
667 {
668 return;
669 }
670 ret = ret.Trim().ToLower();
671 if((ret.ToLower() != "y" && ret.ToLower() != "yes"))
672 {
673 return;
674 }
675 }
676 //clean all targets (just cleaning vs2002 target didn't clean nant)
677 foreach(ITarget targ in m_Targets.Values)
678 {
679 targ.Clean(this);
680 }
681 }
682 else
683 {
684 ITarget targ = (ITarget)m_Targets[target];
685
686 if(clean)
687 {
688 targ.Clean(this);
689 }
690 else
691 {
692 targ.Write(this);
693 }
694 }
695
696 m_Log.Flush();
697 }
698
699 #endregion
700
701 #region IDisposable Members
702
703 /// <summary>
704 ///
705 /// </summary>
706 public void Dispose()
707 {
708 Dispose(true);
709 GC.SuppressFinalize(this);
710 }
711
712 /// <summary>
713 /// Dispose objects
714 /// </summary>
715 /// <param name="disposing">
716 /// If true, it will dispose close the handle
717 /// </param>
718 /// <remarks>
719 /// Will dispose managed and unmanaged resources.
720 /// </remarks>
721 protected virtual void Dispose(bool disposing)
722 {
723 if (!this.disposed)
724 {
725 if (disposing)
726 {
727 if (this.m_Log != null)
728 {
729 this.m_Log.Close();
730 this.m_Log = null;
731 }
732 }
733 }
734 this.disposed = true;
735 }
736
737 /// <summary>
738 ///
739 /// </summary>
740 ~Kernel()
741 {
742 this.Dispose(false);
743 }
744
745 /// <summary>
746 /// Closes and destroys this object
747 /// </summary>
748 /// <remarks>
749 /// Same as Dispose(true)
750 /// </remarks>
751 public void Close()
752 {
753 Dispose();
754 }
755
756 #endregion
757 }
758} \ No newline at end of file
diff --git a/Prebuild/src/Core/Nodes/ConfigurationNode.cs b/Prebuild/src/Core/Nodes/ConfigurationNode.cs
new file mode 100644
index 0000000..390794f
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/ConfigurationNode.cs
@@ -0,0 +1,187 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Xml;
37
38using Prebuild.Core.Attributes;
39using Prebuild.Core.Interfaces;
40using Prebuild.Core.Utilities;
41
42namespace Prebuild.Core.Nodes
43{
44 /// <summary>
45 ///
46 /// </summary>
47 [DataNode("Configuration")]
48 public class ConfigurationNode : DataNode, ICloneable, IComparable
49 {
50 #region Fields
51
52 private string m_Name = "unknown";
53 private OptionsNode m_Options;
54
55 #endregion
56
57 #region Constructors
58
59 /// <summary>
60 /// Initializes a new instance of the <see cref="ConfigurationNode"/> class.
61 /// </summary>
62 public ConfigurationNode()
63 {
64 m_Options = new OptionsNode();
65 }
66
67 #endregion
68
69 #region Properties
70
71 /// <summary>
72 /// Gets or sets the parent.
73 /// </summary>
74 /// <value>The parent.</value>
75 public override IDataNode Parent
76 {
77 get
78 {
79 return base.Parent;
80 }
81 set
82 {
83 base.Parent = value;
84 if(base.Parent is SolutionNode)
85 {
86 SolutionNode node = (SolutionNode)base.Parent;
87 if(node != null && node.Options != null)
88 {
89 node.Options.CopyTo(m_Options);
90 }
91 }
92 }
93 }
94
95 /// <summary>
96 /// Gets the name.
97 /// </summary>
98 /// <value>The name.</value>
99 public string Name
100 {
101 get
102 {
103 return m_Name;
104 }
105 }
106
107 /// <summary>
108 /// Gets or sets the options.
109 /// </summary>
110 /// <value>The options.</value>
111 public OptionsNode Options
112 {
113 get
114 {
115 return m_Options;
116 }
117 set
118 {
119 m_Options = value;
120 }
121 }
122
123 #endregion
124
125 #region Public Methods
126
127 /// <summary>
128 /// Parses the specified node.
129 /// </summary>
130 /// <param name="node">The node.</param>
131 public override void Parse(XmlNode node)
132 {
133 m_Name = Helper.AttributeValue(node, "name", m_Name);
134 if( node == null )
135 {
136 throw new ArgumentNullException("node");
137 }
138 foreach(XmlNode child in node.ChildNodes)
139 {
140 IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
141 if(dataNode is OptionsNode)
142 {
143 ((OptionsNode)dataNode).CopyTo(m_Options);
144 }
145 }
146 }
147
148 /// <summary>
149 /// Copies to.
150 /// </summary>
151 /// <param name="conf">The conf.</param>
152 public void CopyTo(ConfigurationNode conf)
153 {
154 m_Options.CopyTo(conf.m_Options);
155 }
156
157 #endregion
158
159 #region ICloneable Members
160
161 /// <summary>
162 /// Creates a new object that is a copy of the current instance.
163 /// </summary>
164 /// <returns>
165 /// A new object that is a copy of this instance.
166 /// </returns>
167 public object Clone()
168 {
169 ConfigurationNode ret = new ConfigurationNode();
170 ret.m_Name = m_Name;
171 m_Options.CopyTo(ret.m_Options);
172 return ret;
173 }
174
175 #endregion
176
177 #region IComparable Members
178
179 public int CompareTo(object obj)
180 {
181 ConfigurationNode that = (ConfigurationNode) obj;
182 return this.m_Name.CompareTo(that.m_Name);
183 }
184
185 #endregion
186 }
187}
diff --git a/Prebuild/src/Core/Nodes/DataNode.cs b/Prebuild/src/Core/Nodes/DataNode.cs
new file mode 100644
index 0000000..ef5f7ee
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/DataNode.cs
@@ -0,0 +1,82 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Xml;
37
38using Prebuild.Core.Attributes;
39using Prebuild.Core.Interfaces;
40
41namespace Prebuild.Core.Nodes
42{
43 /// <summary>
44 ///
45 /// </summary>
46 public class DataNode : IDataNode
47 {
48 #region Fields
49
50 private IDataNode parent;
51
52 #endregion
53
54 #region IDataNode Members
55
56 /// <summary>
57 /// Gets or sets the parent.
58 /// </summary>
59 /// <value>The parent.</value>
60 public virtual IDataNode Parent
61 {
62 get
63 {
64 return parent;
65 }
66 set
67 {
68 parent = value;
69 }
70 }
71
72 /// <summary>
73 /// Parses the specified node.
74 /// </summary>
75 /// <param name="node">The node.</param>
76 public virtual void Parse(XmlNode node)
77 {
78 }
79
80 #endregion
81 }
82}
diff --git a/Prebuild/src/Core/Nodes/ExcludeNode.cs b/Prebuild/src/Core/Nodes/ExcludeNode.cs
new file mode 100644
index 0000000..bfcebca
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/ExcludeNode.cs
@@ -0,0 +1,85 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-31 16:35:39 +0100 (ti, 31 jan 2006) $
31 * $Revision: 74 $
32 */
33#endregion
34
35using System;
36using System.Xml;
37
38using Prebuild.Core.Attributes;
39using Prebuild.Core.Interfaces;
40using Prebuild.Core.Utilities;
41
42namespace Prebuild.Core.Nodes
43{
44 /// <summary>
45 ///
46 /// </summary>
47 [DataNode("Exclude")]
48 public class ExcludeNode : DataNode
49 {
50 #region Fields
51
52 private string m_Name = "unknown";
53
54 #endregion
55
56 #region Properties
57
58 /// <summary>
59 /// Gets the name.
60 /// </summary>
61 /// <value>The name.</value>
62 public string Name
63 {
64 get
65 {
66 return m_Name;
67 }
68 }
69
70 #endregion
71
72 #region Public Methods
73
74 /// <summary>
75 /// Parses the specified node.
76 /// </summary>
77 /// <param name="node">The node.</param>
78 public override void Parse(XmlNode node)
79 {
80 m_Name = Helper.AttributeValue(node, "name", m_Name);
81 }
82
83 #endregion
84 }
85}
diff --git a/Prebuild/src/Core/Nodes/FileNode.cs b/Prebuild/src/Core/Nodes/FileNode.cs
new file mode 100644
index 0000000..de3b69e
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/FileNode.cs
@@ -0,0 +1,238 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2007-01-08 17:55:40 +0100 (må, 08 jan 2007) $
31 * $Revision: 197 $
32 */
33#endregion
34
35using System;
36using System.IO;
37using System.Xml;
38
39using Prebuild.Core.Attributes;
40using Prebuild.Core.Interfaces;
41using Prebuild.Core.Utilities;
42
43namespace Prebuild.Core.Nodes
44{
45 /// <summary>
46 ///
47 /// </summary>
48 public enum BuildAction
49 {
50 /// <summary>
51 ///
52 /// </summary>
53 None,
54 /// <summary>
55 ///
56 /// </summary>
57 Compile,
58 /// <summary>
59 ///
60 /// </summary>
61 Content,
62 /// <summary>
63 ///
64 /// </summary>
65 EmbeddedResource
66 }
67
68 /// <summary>
69 ///
70 /// </summary>
71 public enum SubType
72 {
73 /// <summary>
74 ///
75 /// </summary>
76 Code,
77 /// <summary>
78 ///
79 /// </summary>
80 Component,
81 /// <summary>
82 ///
83 /// </summary>
84 Designer,
85 /// <summary>
86 ///
87 /// </summary>
88 Form,
89 /// <summary>
90 ///
91 /// </summary>
92 Settings,
93 /// <summary>
94 ///
95 /// </summary>
96 UserControl
97 }
98
99 public enum CopyToOutput
100 {
101 Never,
102 Always,
103 PreserveNewest
104 }
105
106 /// <summary>
107 ///
108 /// </summary>
109 [DataNode("File")]
110 public class FileNode : DataNode
111 {
112 #region Fields
113
114 private string m_Path;
115 private string m_ResourceName = "";
116 private BuildAction m_BuildAction = BuildAction.Compile;
117 private bool m_Valid;
118 private SubType m_SubType = SubType.Code;
119 private CopyToOutput m_CopyToOutput = CopyToOutput.Never;
120 private bool m_Link = false;
121
122
123 #endregion
124
125 #region Properties
126
127 /// <summary>
128 ///
129 /// </summary>
130 public string Path
131 {
132 get
133 {
134 return m_Path;
135 }
136 }
137
138 /// <summary>
139 ///
140 /// </summary>
141 public string ResourceName
142 {
143 get
144 {
145 return m_ResourceName;
146 }
147 }
148
149 /// <summary>
150 ///
151 /// </summary>
152 public BuildAction BuildAction
153 {
154 get
155 {
156 return m_BuildAction;
157 }
158 }
159
160 public CopyToOutput CopyToOutput
161 {
162 get
163 {
164 return this.m_CopyToOutput;
165 }
166 }
167
168 public bool IsLink
169 {
170 get
171 {
172 return this.m_Link;
173 }
174 }
175
176 /// <summary>
177 ///
178 /// </summary>
179 public SubType SubType
180 {
181 get
182 {
183 return m_SubType;
184 }
185 }
186
187 /// <summary>
188 ///
189 /// </summary>
190 public bool IsValid
191 {
192 get
193 {
194 return m_Valid;
195 }
196 }
197
198 #endregion
199
200 #region Public Methods
201
202 /// <summary>
203 ///
204 /// </summary>
205 /// <param name="node"></param>
206 public override void Parse(XmlNode node)
207 {
208 m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction),
209 Helper.AttributeValue(node, "buildAction", m_BuildAction.ToString()));
210 m_SubType = (SubType)Enum.Parse(typeof(SubType),
211 Helper.AttributeValue(node, "subType", m_SubType.ToString()));
212 m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName.ToString());
213 this.m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString));
214 this.m_CopyToOutput = (CopyToOutput) Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", this.m_CopyToOutput.ToString()));
215
216 if( node == null )
217 {
218 throw new ArgumentNullException("node");
219 }
220
221 m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText);
222 if(m_Path == null)
223 {
224 m_Path = "";
225 }
226
227 m_Path = m_Path.Trim();
228 m_Valid = true;
229 if(!File.Exists(m_Path))
230 {
231 m_Valid = false;
232 Kernel.Instance.Log.Write(LogType.Warning, "File does not exist: {0}", m_Path);
233 }
234 }
235
236 #endregion
237 }
238}
diff --git a/Prebuild/src/Core/Nodes/FilesNode.cs b/Prebuild/src/Core/Nodes/FilesNode.cs
new file mode 100644
index 0000000..d31307b
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/FilesNode.cs
@@ -0,0 +1,223 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-09-20 09:42:51 +0200 (on, 20 sep 2006) $
31 * $Revision: 164 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.Xml;
39
40using Prebuild.Core.Attributes;
41using Prebuild.Core.Interfaces;
42
43namespace Prebuild.Core.Nodes
44{
45 /// <summary>
46 ///
47 /// </summary>
48 [DataNode("Files")]
49 public class FilesNode : DataNode
50 {
51 #region Fields
52
53 private StringCollection m_Files;
54 private Hashtable m_BuildActions;
55 private Hashtable m_SubTypes;
56 private Hashtable m_ResourceNames;
57 private Hashtable m_CopyToOutputs;
58 private Hashtable m_Links;
59
60
61 #endregion
62
63 #region Constructors
64
65 /// <summary>
66 ///
67 /// </summary>
68 public FilesNode()
69 {
70 m_Files = new StringCollection();
71 m_BuildActions = new Hashtable();
72 m_SubTypes = new Hashtable();
73 m_ResourceNames = new Hashtable();
74 m_CopyToOutputs = new Hashtable();
75 m_Links = new Hashtable();
76 }
77
78 #endregion
79
80 #region Properties
81
82 /// <summary>
83 ///
84 /// </summary>
85 public int Count
86 {
87 get
88 {
89 return m_Files.Count;
90 }
91 }
92
93 #endregion
94
95 #region Public Methods
96
97 /// <summary>
98 ///
99 /// </summary>
100 /// <param name="file"></param>
101 /// <returns></returns>
102 public BuildAction GetBuildAction(string file)
103 {
104 if(!m_BuildActions.ContainsKey(file))
105 {
106 return BuildAction.Compile;
107 }
108
109 return (BuildAction)m_BuildActions[file];
110 }
111
112 public CopyToOutput GetCopyToOutput(string file)
113 {
114 if (!this.m_CopyToOutputs.ContainsKey(file))
115 {
116 return CopyToOutput.Never;
117 }
118 return (CopyToOutput) this.m_CopyToOutputs[file];
119 }
120
121 public bool GetIsLink(string file)
122 {
123 if (!this.m_Links.ContainsKey(file))
124 {
125 return false;
126 }
127 return (bool) this.m_Links[file];
128 }
129
130 /// <summary>
131 ///
132 /// </summary>
133 /// <param name="file"></param>
134 /// <returns></returns>
135 public SubType GetSubType(string file)
136 {
137 if(!m_SubTypes.ContainsKey(file))
138 {
139 return SubType.Code;
140 }
141
142 return (SubType)m_SubTypes[file];
143 }
144
145 /// <summary>
146 ///
147 /// </summary>
148 /// <param name="file"></param>
149 /// <returns></returns>
150 public string GetResourceName(string file)
151 {
152 if(!m_ResourceNames.ContainsKey(file))
153 {
154 return "";
155 }
156
157 return (string)m_ResourceNames[file];
158 }
159
160 /// <summary>
161 ///
162 /// </summary>
163 /// <param name="node"></param>
164 public override void Parse(XmlNode node)
165 {
166 if( node == null )
167 {
168 throw new ArgumentNullException("node");
169 }
170 foreach(XmlNode child in node.ChildNodes)
171 {
172 IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
173 if(dataNode is FileNode)
174 {
175 FileNode fileNode = (FileNode)dataNode;
176 if(fileNode.IsValid)
177 {
178 if (!m_Files.Contains(fileNode.Path))
179 {
180 m_Files.Add(fileNode.Path);
181 m_BuildActions[fileNode.Path] = fileNode.BuildAction;
182 m_SubTypes[fileNode.Path] = fileNode.SubType;
183 m_ResourceNames[fileNode.Path] = fileNode.ResourceName;
184 this.m_Links[fileNode.Path] = fileNode.IsLink;
185 this.m_CopyToOutputs[fileNode.Path] = fileNode.CopyToOutput;
186
187 }
188 }
189 }
190 else if(dataNode is MatchNode)
191 {
192 foreach(string file in ((MatchNode)dataNode).Files)
193 {
194 if (!m_Files.Contains(file))
195 {
196 m_Files.Add(file);
197 m_BuildActions[file] = ((MatchNode)dataNode).BuildAction;
198 m_SubTypes[file] = ((MatchNode)dataNode).SubType;
199 m_ResourceNames[file] = ((MatchNode)dataNode).ResourceName;
200 this.m_Links[file] = ((MatchNode) dataNode).IsLink;
201 this.m_CopyToOutputs[file] = ((MatchNode) dataNode).CopyToOutput;
202
203 }
204 }
205 }
206 }
207 }
208
209 // TODO: Check in to why StringCollection's enumerator doesn't implement
210 // IEnumerator?
211 /// <summary>
212 ///
213 /// </summary>
214 /// <returns></returns>
215 public StringEnumerator GetEnumerator()
216 {
217 return m_Files.GetEnumerator();
218 }
219
220 #endregion
221
222 }
223}
diff --git a/Prebuild/src/Core/Nodes/MatchNode.cs b/Prebuild/src/Core/Nodes/MatchNode.cs
new file mode 100644
index 0000000..e0d2fa8
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/MatchNode.cs
@@ -0,0 +1,299 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-09-20 09:42:51 +0200 (on, 20 sep 2006) $
31 * $Revision: 164 $
32 */
33#endregion
34
35using System;
36using System.Collections.Specialized;
37using System.IO;
38using System.Text.RegularExpressions;
39using System.Xml;
40
41using Prebuild.Core.Attributes;
42using Prebuild.Core.Interfaces;
43using Prebuild.Core.Utilities;
44
45namespace Prebuild.Core.Nodes
46{
47 /// <summary>
48 ///
49 /// </summary>
50 [DataNode("Match")]
51 public class MatchNode : DataNode
52 {
53 #region Fields
54
55 private StringCollection m_Files;
56 private Regex m_Regex;
57 private BuildAction m_BuildAction = BuildAction.Compile;
58 private SubType m_SubType = SubType.Code;
59 string m_ResourceName = "";
60 private CopyToOutput m_CopyToOutput;
61 private bool m_Link;
62
63
64 #endregion
65
66 #region Constructors
67
68 /// <summary>
69 ///
70 /// </summary>
71 public MatchNode()
72 {
73 m_Files = new StringCollection();
74 }
75
76 #endregion
77
78 #region Properties
79
80 /// <summary>
81 ///
82 /// </summary>
83 public StringCollection Files
84 {
85 get
86 {
87 return m_Files;
88 }
89 }
90
91 /// <summary>
92 ///
93 /// </summary>
94 public BuildAction BuildAction
95 {
96 get
97 {
98 return m_BuildAction;
99 }
100 }
101
102 /// <summary>
103 ///
104 /// </summary>
105 public SubType SubType
106 {
107 get
108 {
109 return m_SubType;
110 }
111 }
112
113 public CopyToOutput CopyToOutput
114 {
115 get
116 {
117 return this.m_CopyToOutput;
118 }
119 }
120
121 public bool IsLink
122 {
123 get
124 {
125 return this.m_Link;
126 }
127 }
128
129 /// <summary>
130 ///
131 /// </summary>
132 public string ResourceName
133 {
134 get
135 {
136 return m_ResourceName;
137 }
138 }
139
140
141 #endregion
142
143 #region Private Methods
144
145 /// <summary>
146 /// Recurses the directories.
147 /// </summary>
148 /// <param name="path">The path.</param>
149 /// <param name="pattern">The pattern.</param>
150 /// <param name="recurse">if set to <c>true</c> [recurse].</param>
151 /// <param name="useRegex">if set to <c>true</c> [use regex].</param>
152 private void RecurseDirectories(string path, string pattern, bool recurse, bool useRegex)
153 {
154 try
155 {
156 string[] files;
157
158 if(!useRegex)
159 {
160 files = Directory.GetFiles(path, pattern);
161 if(files != null)
162 {
163 string fileTemp;
164 foreach (string file in files)
165 {
166 if (file.Substring(0,2) == "./" || file.Substring(0,2) == ".\\")
167 {
168 fileTemp = file.Substring(2);
169 }
170 else
171 {
172 fileTemp = file;
173 }
174
175 m_Files.Add(fileTemp);
176 }
177 }
178 else
179 {
180 return;
181 }
182 }
183 else
184 {
185 Match match;
186 files = Directory.GetFiles(path);
187 foreach(string file in files)
188 {
189 match = m_Regex.Match(file);
190 if(match.Success)
191 {
192 m_Files.Add(file);
193 }
194 }
195 }
196
197 if(recurse)
198 {
199 string[] dirs = Directory.GetDirectories(path);
200 if(dirs != null && dirs.Length > 0)
201 {
202 foreach(string str in dirs)
203 {
204 RecurseDirectories(Helper.NormalizePath(str), pattern, recurse, useRegex);
205 }
206 }
207 }
208 }
209 catch(DirectoryNotFoundException)
210 {
211 return;
212 }
213 catch(ArgumentException)
214 {
215 return;
216 }
217 }
218
219 #endregion
220
221 #region Public Methods
222
223 /// <summary>
224 ///
225 /// </summary>
226 /// <param name="node"></param>
227 public override void Parse(XmlNode node)
228 {
229 if( node == null )
230 {
231 throw new ArgumentNullException("node");
232 }
233 string path = Helper.AttributeValue(node, "path", ".");
234 string pattern = Helper.AttributeValue(node, "pattern", "*");
235 bool recurse = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "recurse", "false"));
236 bool useRegex = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "useRegex", "false"));
237 m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction),
238 Helper.AttributeValue(node, "buildAction", m_BuildAction.ToString()));
239 m_SubType = (SubType)Enum.Parse(typeof(SubType),
240 Helper.AttributeValue(node, "subType", m_SubType.ToString()));
241 m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName.ToString());
242 this.m_CopyToOutput = (CopyToOutput) Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", this.m_CopyToOutput.ToString()));
243 this.m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString));
244
245
246 if(path != null && path.Length == 0)
247 {
248 path = ".";//use current directory
249 }
250 //throw new WarningException("Match must have a 'path' attribute");
251
252 if(pattern == null)
253 {
254 throw new WarningException("Match must have a 'pattern' attribute");
255 }
256
257 path = Helper.NormalizePath(path);
258 if(!Directory.Exists(path))
259 {
260 throw new WarningException("Match path does not exist: {0}", path);
261 }
262
263 try
264 {
265 if(useRegex)
266 {
267 m_Regex = new Regex(pattern);
268 }
269 }
270 catch(ArgumentException ex)
271 {
272 throw new WarningException("Could not compile regex pattern: {0}", ex.Message);
273 }
274
275 RecurseDirectories(path, pattern, recurse, useRegex);
276
277 foreach(XmlNode child in node.ChildNodes)
278 {
279 IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
280 if(dataNode is ExcludeNode)
281 {
282 ExcludeNode excludeNode = (ExcludeNode)dataNode;
283 if (m_Files.Contains(Helper.NormalizePath(excludeNode.Name)))
284 {
285 m_Files.Remove(Helper.NormalizePath(excludeNode.Name));
286 }
287 }
288 }
289
290 if(m_Files.Count < 1)
291 {
292 throw new WarningException("Match returned no files: {0}{1}", Helper.EndPath(path), pattern);
293 }
294 m_Regex = null;
295 }
296
297 #endregion
298 }
299}
diff --git a/Prebuild/src/Core/Nodes/OptionsNode.cs b/Prebuild/src/Core/Nodes/OptionsNode.cs
new file mode 100644
index 0000000..b5a2f60
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/OptionsNode.cs
@@ -0,0 +1,655 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2007-01-08 17:55:40 +0100 (må, 08 jan 2007) $
31 * $Revision: 197 $
32 */
33#endregion
34
35
36
37using System;
38using System.Collections;
39using System.Collections.Specialized;
40using System.Reflection;
41using System.Xml;
42
43using Prebuild.Core.Attributes;
44using Prebuild.Core.Interfaces;
45using Prebuild.Core.Utilities;
46
47namespace Prebuild.Core.Nodes
48{
49 /// <summary>
50 ///
51 /// </summary>
52 [DataNode("Options")]
53 public class OptionsNode : DataNode
54 {
55 #region Fields
56
57 private static Hashtable m_OptionFields;
58
59 [OptionNode("CompilerDefines")]
60 private string m_CompilerDefines = "";
61
62 /// <summary>
63 ///
64 /// </summary>
65 public string CompilerDefines
66 {
67 get
68 {
69 return m_CompilerDefines;
70 }
71 set
72 {
73 m_CompilerDefines = value;
74 }
75 }
76
77 [OptionNode("OptimizeCode")]
78 private bool m_OptimizeCode;
79
80 /// <summary>
81 ///
82 /// </summary>
83 public bool OptimizeCode
84 {
85 get
86 {
87 return m_OptimizeCode;
88 }
89 set
90 {
91 m_OptimizeCode = value;
92 }
93 }
94
95 [OptionNode("CheckUnderflowOverflow")]
96 private bool m_CheckUnderflowOverflow;
97
98 /// <summary>
99 ///
100 /// </summary>
101 public bool CheckUnderflowOverflow
102 {
103 get
104 {
105 return m_CheckUnderflowOverflow;
106 }
107 set
108 {
109 m_CheckUnderflowOverflow = value;
110 }
111 }
112
113 [OptionNode("AllowUnsafe")]
114 private bool m_AllowUnsafe;
115
116 /// <summary>
117 ///
118 /// </summary>
119 public bool AllowUnsafe
120 {
121 get
122 {
123 return m_AllowUnsafe;
124 }
125 set
126 {
127 m_AllowUnsafe = value;
128 }
129 }
130
131 [OptionNode("PreBuildEvent")]
132 private string m_PreBuildEvent;
133
134 /// <summary>
135 ///
136 /// </summary>
137 public string PreBuildEvent
138 {
139 get
140 {
141 return m_PreBuildEvent;
142 }
143 set
144 {
145 m_PreBuildEvent = value;
146 }
147 }
148
149 [OptionNode("PostBuildEvent")]
150 private string m_PostBuildEvent;
151
152 /// <summary>
153 ///
154 /// </summary>
155 public string PostBuildEvent
156 {
157 get
158 {
159 return m_PostBuildEvent;
160 }
161 set
162 {
163 m_PostBuildEvent = value;
164 }
165 }
166
167 [OptionNode("PreBuildEventArgs")]
168 private string m_PreBuildEventArgs;
169
170 /// <summary>
171 ///
172 /// </summary>
173 public string PreBuildEventArgs
174 {
175 get
176 {
177 return m_PreBuildEventArgs;
178 }
179 set
180 {
181 m_PreBuildEventArgs = value;
182 }
183 }
184
185 [OptionNode("PostBuildEventArgs")]
186 private string m_PostBuildEventArgs;
187
188 /// <summary>
189 ///
190 /// </summary>
191 public string PostBuildEventArgs
192 {
193 get
194 {
195 return m_PostBuildEventArgs;
196 }
197 set
198 {
199 m_PostBuildEventArgs = value;
200 }
201 }
202
203 [OptionNode("RunPostBuildEvent")]
204 private string m_RunPostBuildEvent;
205
206 /// <summary>
207 ///
208 /// </summary>
209 public string RunPostBuildEvent
210 {
211 get
212 {
213 return m_RunPostBuildEvent;
214 }
215 set
216 {
217 m_RunPostBuildEvent = value;
218 }
219 }
220
221 [OptionNode("RunScript")]
222 private string m_RunScript;
223
224 /// <summary>
225 ///
226 /// </summary>
227 public string RunScript
228 {
229 get
230 {
231 return m_RunScript;
232 }
233 set
234 {
235 m_RunScript = value;
236 }
237 }
238
239 [OptionNode("WarningLevel")]
240 private int m_WarningLevel = 4;
241
242 /// <summary>
243 ///
244 /// </summary>
245 public int WarningLevel
246 {
247 get
248 {
249 return m_WarningLevel;
250 }
251 set
252 {
253 m_WarningLevel = value;
254 }
255 }
256
257 [OptionNode("WarningsAsErrors")]
258 private bool m_WarningsAsErrors;
259
260 /// <summary>
261 ///
262 /// </summary>
263 public bool WarningsAsErrors
264 {
265 get
266 {
267 return m_WarningsAsErrors;
268 }
269 set
270 {
271 m_WarningsAsErrors = value;
272 }
273 }
274
275 [OptionNode("SuppressWarnings")]
276 private string m_SuppressWarnings = "";
277
278 /// <summary>
279 ///
280 /// </summary>
281 public string SuppressWarnings
282 {
283 get
284 {
285 return m_SuppressWarnings;
286 }
287 set
288 {
289 m_SuppressWarnings = value;
290 }
291 }
292
293 [OptionNode("OutputPath")]
294 private string m_OutputPath = "bin/";
295
296 /// <summary>
297 ///
298 /// </summary>
299 public string OutputPath
300 {
301 get
302 {
303 return m_OutputPath;
304 }
305 set
306 {
307 m_OutputPath = value;
308 }
309 }
310
311 [OptionNode("GenerateDocumentation")]
312 private bool m_GenerateDocumentation;
313
314 /// <summary>
315 ///
316 /// </summary>
317 public bool GenerateDocumentation
318 {
319 get
320 {
321 return m_GenerateDocumentation;
322 }
323 set
324 {
325 m_GenerateDocumentation = value;
326 }
327 }
328
329 [OptionNode("GenerateXmlDocFile")]
330 private bool m_GenerateXmlDocFile;
331
332 /// <summary>
333 ///
334 /// </summary>
335 public bool GenerateXmlDocFile
336 {
337 get
338 {
339 return m_GenerateXmlDocFile;
340 }
341 set
342 {
343 m_GenerateXmlDocFile = value;
344 }
345 }
346
347 [OptionNode("XmlDocFile")]
348 private string m_XmlDocFile = "";
349
350 /// <summary>
351 ///
352 /// </summary>
353 public string XmlDocFile
354 {
355 get
356 {
357 return m_XmlDocFile;
358 }
359 set
360 {
361 m_XmlDocFile = value;
362 }
363 }
364
365 [OptionNode("KeyFile")]
366 private string m_KeyFile = "";
367
368 /// <summary>
369 ///
370 /// </summary>
371 public string KeyFile
372 {
373 get
374 {
375 return m_KeyFile;
376 }
377 set
378 {
379 m_KeyFile = value;
380 }
381 }
382
383 [OptionNode("DebugInformation")]
384 private bool m_DebugInformation;
385
386 /// <summary>
387 ///
388 /// </summary>
389 public bool DebugInformation
390 {
391 get
392 {
393 return m_DebugInformation;
394 }
395 set
396 {
397 m_DebugInformation = value;
398 }
399 }
400
401 [OptionNode("RegisterComInterop")]
402 private bool m_RegisterComInterop;
403
404 /// <summary>
405 ///
406 /// </summary>
407 public bool RegisterComInterop
408 {
409 get
410 {
411 return m_RegisterComInterop;
412 }
413 set
414 {
415 m_RegisterComInterop = value;
416 }
417 }
418
419 [OptionNode("RemoveIntegerChecks")]
420 private bool m_RemoveIntegerChecks;
421
422 /// <summary>
423 ///
424 /// </summary>
425 public bool RemoveIntegerChecks
426 {
427 get
428 {
429 return m_RemoveIntegerChecks;
430 }
431 set
432 {
433 m_RemoveIntegerChecks = value;
434 }
435 }
436
437 [OptionNode("IncrementalBuild")]
438 private bool m_IncrementalBuild;
439
440 /// <summary>
441 ///
442 /// </summary>
443 public bool IncrementalBuild
444 {
445 get
446 {
447 return m_IncrementalBuild;
448 }
449 set
450 {
451 m_IncrementalBuild = value;
452 }
453 }
454
455 [OptionNode("BaseAddress")]
456 private string m_BaseAddress = "285212672";
457
458 /// <summary>
459 ///
460 /// </summary>
461 public string BaseAddress
462 {
463 get
464 {
465 return m_BaseAddress;
466 }
467 set
468 {
469 m_BaseAddress = value;
470 }
471 }
472
473 [OptionNode("FileAlignment")]
474 private int m_FileAlignment = 4096;
475
476 /// <summary>
477 ///
478 /// </summary>
479 public int FileAlignment
480 {
481 get
482 {
483 return m_FileAlignment;
484 }
485 set
486 {
487 m_FileAlignment = value;
488 }
489 }
490
491 [OptionNode("NoStdLib")]
492 private bool m_NoStdLib;
493
494 /// <summary>
495 ///
496 /// </summary>
497 public bool NoStdLib
498 {
499 get
500 {
501 return m_NoStdLib;
502 }
503 set
504 {
505 m_NoStdLib = value;
506 }
507 }
508
509 private StringCollection m_FieldsDefined;
510
511 #endregion
512
513 #region Constructors
514
515 /// <summary>
516 /// Initializes the <see cref="OptionsNode"/> class.
517 /// </summary>
518 static OptionsNode()
519 {
520 Type t = typeof(OptionsNode);
521
522 m_OptionFields = new Hashtable();
523 foreach(FieldInfo f in t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance))
524 {
525 object[] attrs = f.GetCustomAttributes(typeof(OptionNodeAttribute), false);
526 if(attrs == null || attrs.Length < 1)
527 {
528 continue;
529 }
530
531 OptionNodeAttribute ona = (OptionNodeAttribute)attrs[0];
532 m_OptionFields[ona.NodeName] = f;
533 }
534 }
535
536 /// <summary>
537 /// Initializes a new instance of the <see cref="OptionsNode"/> class.
538 /// </summary>
539 public OptionsNode()
540 {
541 m_FieldsDefined = new StringCollection();
542 }
543
544 #endregion
545
546 #region Properties
547
548 /// <summary>
549 /// Gets the <see cref="Object"/> at the specified index.
550 /// </summary>
551 /// <value></value>
552 public object this[string index]
553 {
554 get
555 {
556 if(!m_OptionFields.ContainsKey(index))
557 {
558 return null;
559 }
560
561 FieldInfo f = (FieldInfo)m_OptionFields[index];
562 return f.GetValue(this);
563 }
564 }
565
566 /// <summary>
567 /// Gets the <see cref="Object"/> at the specified index.
568 /// </summary>
569 /// <value></value>
570 public object this[string index, object defaultValue]
571 {
572 get
573 {
574 object valueObject = this[index];
575 if(valueObject != null && valueObject is string && ((string)valueObject).Length == 0)
576 {
577 return defaultValue;
578 }
579 return valueObject;
580 }
581 }
582
583
584 #endregion
585
586 #region Private Methods
587
588 private void FlagDefined(string name)
589 {
590 if(!m_FieldsDefined.Contains(name))
591 {
592 m_FieldsDefined.Add(name);
593 }
594 }
595
596 private void SetOption(string nodeName, string val)
597 {
598 lock(m_OptionFields)
599 {
600 if(!m_OptionFields.ContainsKey(nodeName))
601 {
602 return;
603 }
604
605 FieldInfo f = (FieldInfo)m_OptionFields[nodeName];
606 f.SetValue(this, Helper.TranslateValue(f.FieldType, val));
607 FlagDefined(f.Name);
608 }
609 }
610
611 #endregion
612
613 #region Public Methods
614
615 /// <summary>
616 /// Parses the specified node.
617 /// </summary>
618 /// <param name="node">The node.</param>
619 public override void Parse(XmlNode node)
620 {
621 if( node == null )
622 {
623 throw new ArgumentNullException("node");
624 }
625
626 foreach(XmlNode child in node.ChildNodes)
627 {
628 SetOption(child.Name, Helper.InterpolateForEnvironmentVariables(child.InnerText));
629 }
630 }
631
632 /// <summary>
633 /// Copies to.
634 /// </summary>
635 /// <param name="opt">The opt.</param>
636 public void CopyTo(OptionsNode opt)
637 {
638 if(opt == null)
639 {
640 return;
641 }
642
643 foreach(FieldInfo f in m_OptionFields.Values)
644 {
645 if(m_FieldsDefined.Contains(f.Name))
646 {
647 f.SetValue(opt, f.GetValue(this));
648 opt.m_FieldsDefined.Add(f.Name);
649 }
650 }
651 }
652
653 #endregion
654 }
655}
diff --git a/Prebuild/src/Core/Nodes/ProcessNode.cs b/Prebuild/src/Core/Nodes/ProcessNode.cs
new file mode 100644
index 0000000..f546a4b
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/ProcessNode.cs
@@ -0,0 +1,119 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.Xml;
39
40using Prebuild.Core.Attributes;
41using Prebuild.Core.Interfaces;
42using Prebuild.Core.Utilities;
43
44namespace Prebuild.Core.Nodes
45{
46 /// <summary>
47 ///
48 /// </summary>
49 [DataNode("Process")]
50 public class ProcessNode : DataNode
51 {
52 #region Fields
53
54 private string m_Path;
55 private bool m_IsValid = true;
56
57 #endregion
58
59 #region Properties
60
61 /// <summary>
62 /// Gets the path.
63 /// </summary>
64 /// <value>The path.</value>
65 public string Path
66 {
67 get
68 {
69 return m_Path;
70 }
71 }
72
73 /// <summary>
74 /// Gets a value indicating whether this instance is valid.
75 /// </summary>
76 /// <value><c>true</c> if this instance is valid; otherwise, <c>false</c>.</value>
77 public bool IsValid
78 {
79 get
80 {
81 return m_IsValid;
82 }
83 }
84
85 #endregion
86
87 #region Public Methods
88
89 /// <summary>
90 /// Parses the specified node.
91 /// </summary>
92 /// <param name="node">The node.</param>
93 public override void Parse(XmlNode node)
94 {
95 if( node == null )
96 {
97 throw new ArgumentNullException("node");
98 }
99
100 m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText);
101 if(m_Path == null)
102 {
103 m_Path = "";
104 }
105
106 try
107 {
108 m_Path = Helper.ResolvePath(m_Path);
109 }
110 catch(ArgumentException)
111 {
112 Kernel.Instance.Log.Write(LogType.Warning, "Could not find prebuild file for processing: {0}", m_Path);
113 m_IsValid = false;
114 }
115 }
116
117 #endregion
118 }
119}
diff --git a/Prebuild/src/Core/Nodes/ProjectNode.cs b/Prebuild/src/Core/Nodes/ProjectNode.cs
new file mode 100644
index 0000000..c56dacc
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/ProjectNode.cs
@@ -0,0 +1,510 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-11-11 05:43:20 +0100 (lö, 11 nov 2006) $
31 * $Revision: 192 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.IO;
38using System.Xml;
39
40using Prebuild.Core.Attributes;
41using Prebuild.Core.Interfaces;
42using Prebuild.Core.Utilities;
43
44namespace Prebuild.Core.Nodes
45{
46 /// <summary>
47 ///
48 /// </summary>
49 public enum ProjectType
50 {
51 /// <summary>
52 ///
53 /// </summary>
54 Exe,
55 /// <summary>
56 ///
57 /// </summary>
58 WinExe,
59 /// <summary>
60 ///
61 /// </summary>
62 Library
63 }
64
65 /// <summary>
66 ///
67 /// </summary>
68 public enum ClrRuntime
69 {
70 /// <summary>
71 ///
72 /// </summary>
73 Microsoft,
74 /// <summary>
75 ///
76 /// </summary>
77 Mono
78 }
79
80 /// <summary>
81 ///
82 /// </summary>
83 [DataNode("Project")]
84 public class ProjectNode : DataNode, IComparable
85 {
86 #region Fields
87
88 private string m_Name = "unknown";
89 private string m_Path = "";
90 private string m_FullPath = "";
91 private string m_AssemblyName;
92 private string m_AppIcon = "";
93 private string m_DesignerFolder = "";
94 private string m_Language = "C#";
95 private ProjectType m_Type = ProjectType.Exe;
96 private ClrRuntime m_Runtime = ClrRuntime.Microsoft;
97 private string m_StartupObject = "";
98 private string m_RootNamespace;
99 private string m_FilterGroups = "";
100 private Guid m_Guid;
101
102 private Hashtable m_Configurations;
103 private ArrayList m_ReferencePaths;
104 private ArrayList m_References;
105 private FilesNode m_Files;
106
107 #endregion
108
109 #region Constructors
110
111 /// <summary>
112 /// Initializes a new instance of the <see cref="ProjectNode"/> class.
113 /// </summary>
114 public ProjectNode()
115 {
116 m_Configurations = new Hashtable();
117 m_ReferencePaths = new ArrayList();
118 m_References = new ArrayList();
119 }
120
121 #endregion
122
123 #region Properties
124
125 /// <summary>
126 /// Gets the name.
127 /// </summary>
128 /// <value>The name.</value>
129 public string Name
130 {
131 get
132 {
133 return m_Name;
134 }
135 }
136
137 /// <summary>
138 /// Gets the path.
139 /// </summary>
140 /// <value>The path.</value>
141 public string Path
142 {
143 get
144 {
145 return m_Path;
146 }
147 }
148
149 /// <summary>
150 /// Gets the filter groups.
151 /// </summary>
152 /// <value>The filter groups.</value>
153 public string FilterGroups
154 {
155 get
156 {
157 return m_FilterGroups;
158 }
159 }
160
161 /// <summary>
162 /// Gets the full path.
163 /// </summary>
164 /// <value>The full path.</value>
165 public string FullPath
166 {
167 get
168 {
169 return m_FullPath;
170 }
171 }
172
173 /// <summary>
174 /// Gets the name of the assembly.
175 /// </summary>
176 /// <value>The name of the assembly.</value>
177 public string AssemblyName
178 {
179 get
180 {
181 return m_AssemblyName;
182 }
183 }
184
185 /// <summary>
186 /// Gets the app icon.
187 /// </summary>
188 /// <value>The app icon.</value>
189 public string AppIcon
190 {
191 get
192 {
193 return m_AppIcon;
194 }
195 }
196
197 /// <summary>
198 ///
199 /// </summary>
200 public string DesignerFolder
201 {
202 get
203 {
204 return m_DesignerFolder;
205 }
206 }
207
208 /// <summary>
209 /// Gets the language.
210 /// </summary>
211 /// <value>The language.</value>
212 public string Language
213 {
214 get
215 {
216 return m_Language;
217 }
218 }
219
220 /// <summary>
221 /// Gets the type.
222 /// </summary>
223 /// <value>The type.</value>
224 public ProjectType Type
225 {
226 get
227 {
228 return m_Type;
229 }
230 }
231
232 /// <summary>
233 /// Gets the runtime.
234 /// </summary>
235 /// <value>The runtime.</value>
236 public ClrRuntime Runtime
237 {
238 get
239 {
240 return m_Runtime;
241 }
242 }
243
244 private bool m_GenerateAssemblyInfoFile = false;
245
246 /// <summary>
247 ///
248 /// </summary>
249 public bool GenerateAssemblyInfoFile
250 {
251 get
252 {
253 return m_GenerateAssemblyInfoFile;
254 }
255 set
256 {
257 m_GenerateAssemblyInfoFile = value;
258 }
259 }
260
261 /// <summary>
262 /// Gets the startup object.
263 /// </summary>
264 /// <value>The startup object.</value>
265 public string StartupObject
266 {
267 get
268 {
269 return m_StartupObject;
270 }
271 }
272
273 /// <summary>
274 /// Gets the root namespace.
275 /// </summary>
276 /// <value>The root namespace.</value>
277 public string RootNamespace
278 {
279 get
280 {
281 return m_RootNamespace;
282 }
283 }
284
285 /// <summary>
286 /// Gets the configurations.
287 /// </summary>
288 /// <value>The configurations.</value>
289 public ICollection Configurations
290 {
291 get
292 {
293 ArrayList tmp = new ArrayList( ConfigurationsTable.Values);
294 tmp.Sort();
295 return tmp;
296 }
297 }
298
299 /// <summary>
300 /// Gets the configurations table.
301 /// </summary>
302 /// <value>The configurations table.</value>
303 public Hashtable ConfigurationsTable
304 {
305 get
306 {
307 return m_Configurations;
308 }
309 }
310
311 /// <summary>
312 /// Gets the reference paths.
313 /// </summary>
314 /// <value>The reference paths.</value>
315 public ArrayList ReferencePaths
316 {
317 get
318 {
319 ArrayList tmp = new ArrayList(m_ReferencePaths);
320 tmp.Sort();
321 return tmp;
322 }
323 }
324
325 /// <summary>
326 /// Gets the references.
327 /// </summary>
328 /// <value>The references.</value>
329 public ArrayList References
330 {
331 get
332 {
333 ArrayList tmp = new ArrayList(m_References);
334 tmp.Sort();
335 return tmp;
336 }
337 }
338
339 /// <summary>
340 /// Gets the files.
341 /// </summary>
342 /// <value>The files.</value>
343 public FilesNode Files
344 {
345 get
346 {
347 return m_Files;
348 }
349 }
350
351 /// <summary>
352 /// Gets or sets the parent.
353 /// </summary>
354 /// <value>The parent.</value>
355 public override IDataNode Parent
356 {
357 get
358 {
359 return base.Parent;
360 }
361 set
362 {
363 base.Parent = value;
364 if(base.Parent is SolutionNode && m_Configurations.Count < 1)
365 {
366 SolutionNode parent = (SolutionNode)base.Parent;
367 foreach(ConfigurationNode conf in parent.Configurations)
368 {
369 m_Configurations[conf.Name] = conf.Clone();
370 }
371 }
372 }
373 }
374
375 /// <summary>
376 /// Gets the GUID.
377 /// </summary>
378 /// <value>The GUID.</value>
379 public Guid Guid
380 {
381 get
382 {
383 return m_Guid;
384 }
385 }
386
387 #endregion
388
389 #region Private Methods
390
391 private void HandleConfiguration(ConfigurationNode conf)
392 {
393 if(String.Compare(conf.Name, "all", true) == 0) //apply changes to all, this may not always be applied first,
394 //so it *may* override changes to the same properties for configurations defines at the project level
395 {
396 foreach(ConfigurationNode confNode in this.m_Configurations.Values)
397 {
398 conf.CopyTo(confNode);//update the config templates defines at the project level with the overrides
399 }
400 }
401 if(m_Configurations.ContainsKey(conf.Name))
402 {
403 ConfigurationNode parentConf = (ConfigurationNode)m_Configurations[conf.Name];
404 conf.CopyTo(parentConf);//update the config templates defines at the project level with the overrides
405 }
406 else
407 {
408 m_Configurations[conf.Name] = conf;
409 }
410 }
411
412 #endregion
413
414 #region Public Methods
415
416 /// <summary>
417 /// Parses the specified node.
418 /// </summary>
419 /// <param name="node">The node.</param>
420 public override void Parse(XmlNode node)
421 {
422 m_Name = Helper.AttributeValue(node, "name", m_Name);
423 m_Path = Helper.AttributeValue(node, "path", m_Path);
424 m_FilterGroups = Helper.AttributeValue(node, "filterGroups", m_FilterGroups);
425 m_AppIcon = Helper.AttributeValue(node, "icon", m_AppIcon);
426 m_DesignerFolder = Helper.AttributeValue(node, "designerFolder", m_DesignerFolder);
427 m_AssemblyName = Helper.AttributeValue(node, "assemblyName", m_AssemblyName);
428 m_Language = Helper.AttributeValue(node, "language", m_Language);
429 m_Type = (ProjectType)Helper.EnumAttributeValue(node, "type", typeof(ProjectType), m_Type);
430 m_Runtime = (ClrRuntime)Helper.EnumAttributeValue(node, "runtime", typeof(ClrRuntime), m_Runtime);
431 m_StartupObject = Helper.AttributeValue(node, "startupObject", m_StartupObject);
432 m_RootNamespace = Helper.AttributeValue(node, "rootNamespace", m_RootNamespace);
433
434 int hash = m_Name.GetHashCode();
435
436 m_Guid = new Guid( hash, 0, 0, 0, 0, 0, 0,0,0,0,0 );
437
438 m_GenerateAssemblyInfoFile = Helper.ParseBoolean(node, "generateAssemblyInfoFile", false);
439
440 if(m_AssemblyName == null || m_AssemblyName.Length < 1)
441 {
442 m_AssemblyName = m_Name;
443 }
444
445 if(m_RootNamespace == null || m_RootNamespace.Length < 1)
446 {
447 m_RootNamespace = m_Name;
448 }
449
450 m_FullPath = m_Path;
451 try
452 {
453 m_FullPath = Helper.ResolvePath(m_FullPath);
454 }
455 catch
456 {
457 throw new WarningException("Could not resolve Solution path: {0}", m_Path);
458 }
459
460 Kernel.Instance.CurrentWorkingDirectory.Push();
461 try
462 {
463 Helper.SetCurrentDir(m_FullPath);
464
465 if( node == null )
466 {
467 throw new ArgumentNullException("node");
468 }
469
470 foreach(XmlNode child in node.ChildNodes)
471 {
472 IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
473 if(dataNode is ConfigurationNode)
474 {
475 HandleConfiguration((ConfigurationNode)dataNode);
476 }
477 else if(dataNode is ReferencePathNode)
478 {
479 m_ReferencePaths.Add(dataNode);
480 }
481 else if(dataNode is ReferenceNode)
482 {
483 m_References.Add(dataNode);
484 }
485 else if(dataNode is FilesNode)
486 {
487 m_Files = (FilesNode)dataNode;
488 }
489 }
490 }
491 finally
492 {
493 Kernel.Instance.CurrentWorkingDirectory.Pop();
494 }
495 }
496
497
498 #endregion
499
500 #region IComparable Members
501
502 public int CompareTo(object obj)
503 {
504 ProjectNode that = (ProjectNode)obj;
505 return this.m_Name.CompareTo(that.m_Name);
506 }
507
508 #endregion
509 }
510}
diff --git a/Prebuild/src/Core/Nodes/ReferenceNode.cs b/Prebuild/src/Core/Nodes/ReferenceNode.cs
new file mode 100644
index 0000000..a2880c0
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/ReferenceNode.cs
@@ -0,0 +1,153 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-07-25 18:56:49 +0200 (ti, 25 jul 2006) $
31 * $Revision: 132 $
32 */
33#endregion
34
35using System;
36using System.Xml;
37
38using Prebuild.Core.Attributes;
39using Prebuild.Core.Interfaces;
40using Prebuild.Core.Utilities;
41
42namespace Prebuild.Core.Nodes
43{
44 /// <summary>
45 ///
46 /// </summary>
47 [DataNode("Reference")]
48 public class ReferenceNode : DataNode, IComparable
49 {
50 #region Fields
51
52 private string m_Name = "unknown";
53 private string m_Path;
54 private string m_LocalCopy;
55 private string m_Version;
56
57 #endregion
58
59 #region Properties
60
61 /// <summary>
62 /// Gets the name.
63 /// </summary>
64 /// <value>The name.</value>
65 public string Name
66 {
67 get
68 {
69 return m_Name;
70 }
71 }
72
73 /// <summary>
74 /// Gets the path.
75 /// </summary>
76 /// <value>The path.</value>
77 public string Path
78 {
79 get
80 {
81 return m_Path;
82 }
83 }
84
85 /// <summary>
86 /// Gets a value indicating whether [local copy specified].
87 /// </summary>
88 /// <value><c>true</c> if [local copy specified]; otherwise, <c>false</c>.</value>
89 public bool LocalCopySpecified
90 {
91 get
92 {
93 return ( m_LocalCopy != null && m_LocalCopy.Length == 0);
94 }
95 }
96
97 /// <summary>
98 /// Gets a value indicating whether [local copy].
99 /// </summary>
100 /// <value><c>true</c> if [local copy]; otherwise, <c>false</c>.</value>
101 public bool LocalCopy
102 {
103 get
104 {
105 if( m_LocalCopy == null)
106 {
107 return false;
108 }
109 return bool.Parse(m_LocalCopy);
110 }
111 }
112
113 /// <summary>
114 /// Gets the version.
115 /// </summary>
116 /// <value>The version.</value>
117 public string Version
118 {
119 get
120 {
121 return m_Version;
122 }
123 }
124
125 #endregion
126
127 #region Public Methods
128
129 /// <summary>
130 /// Parses the specified node.
131 /// </summary>
132 /// <param name="node">The node.</param>
133 public override void Parse(XmlNode node)
134 {
135 m_Name = Helper.AttributeValue(node, "name", m_Name);
136 m_Path = Helper.AttributeValue(node, "path", m_Path);
137 m_LocalCopy = Helper.AttributeValue(node, "localCopy", m_LocalCopy);
138 m_Version = Helper.AttributeValue(node, "version", m_Version);
139 }
140
141 #endregion
142
143 #region IComparable Members
144
145 public int CompareTo(object obj)
146 {
147 ReferenceNode that = (ReferenceNode)obj;
148 return this.m_Name.CompareTo(that.m_Name);
149 }
150
151 #endregion
152 }
153}
diff --git a/Prebuild/src/Core/Nodes/ReferencePathNode.cs b/Prebuild/src/Core/Nodes/ReferencePathNode.cs
new file mode 100644
index 0000000..0563c1b
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/ReferencePathNode.cs
@@ -0,0 +1,108 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.Xml;
39
40using Prebuild.Core.Attributes;
41using Prebuild.Core.Interfaces;
42using Prebuild.Core.Utilities;
43
44namespace Prebuild.Core.Nodes
45{
46 /// <summary>
47 ///
48 /// </summary>
49 [DataNode("ReferencePath")]
50 public class ReferencePathNode : DataNode, IComparable
51 {
52 #region Fields
53
54 private string m_Path;
55
56 #endregion
57
58 #region Properties
59
60 /// <summary>
61 /// Gets the path.
62 /// </summary>
63 /// <value>The path.</value>
64 public string Path
65 {
66 get
67 {
68 return m_Path;
69 }
70 }
71
72 #endregion
73
74 #region Public Methods
75
76 /// <summary>
77 /// Parses the specified node.
78 /// </summary>
79 /// <param name="node">The node.</param>
80 public override void Parse(XmlNode node)
81 {
82 if( node == null )
83 {
84 throw new ArgumentNullException("node");
85 }
86
87 m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText);
88 if(m_Path == null)
89 {
90 m_Path = "";
91 }
92
93 m_Path = m_Path.Trim();
94 }
95
96 #endregion
97
98 #region IComparable Members
99
100 public int CompareTo(object obj)
101 {
102 ReferencePathNode that = (ReferencePathNode)obj;
103 return this.m_Path.CompareTo(that.m_Path);
104 }
105
106 #endregion
107 }
108}
diff --git a/Prebuild/src/Core/Nodes/SolutionNode.cs b/Prebuild/src/Core/Nodes/SolutionNode.cs
new file mode 100644
index 0000000..c777fa4
--- /dev/null
+++ b/Prebuild/src/Core/Nodes/SolutionNode.cs
@@ -0,0 +1,288 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-02-28 17:15:42 +0100 (ti, 28 feb 2006) $
31 * $Revision: 92 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Diagnostics;
38using System.IO;
39using System.Xml;
40
41using Prebuild.Core.Attributes;
42using Prebuild.Core.Interfaces;
43using Prebuild.Core.Utilities;
44
45namespace Prebuild.Core.Nodes
46{
47 /// <summary>
48 ///
49 /// </summary>
50 [DataNode("Solution")]
51 public class SolutionNode : DataNode
52 {
53 #region Fields
54
55 private string m_Name = "unknown";
56 private string m_Path = "";
57 private string m_FullPath = "";
58 private string m_ActiveConfig = "Debug";
59
60 private OptionsNode m_Options;
61 private FilesNode m_Files;
62 private Hashtable m_Configurations;
63 private Hashtable m_Projects;
64 private ArrayList m_ProjectsOrder;
65
66 #endregion
67
68 #region Constructors
69
70 /// <summary>
71 /// Initializes a new instance of the <see cref="SolutionNode"/> class.
72 /// </summary>
73 public SolutionNode()
74 {
75 m_Configurations = new Hashtable();
76 m_Projects = new Hashtable();
77 m_ProjectsOrder = new ArrayList();
78 }
79
80 #endregion
81
82 #region Properties
83
84 /// <summary>
85 /// Gets or sets the active config.
86 /// </summary>
87 /// <value>The active config.</value>
88 public string ActiveConfig
89 {
90 get
91 {
92 return m_ActiveConfig;
93 }
94 set
95 {
96 m_ActiveConfig = value;
97 }
98 }
99
100 /// <summary>
101 /// Gets the name.
102 /// </summary>
103 /// <value>The name.</value>
104 public string Name
105 {
106 get
107 {
108 return m_Name;
109 }
110 }
111
112 /// <summary>
113 /// Gets the path.
114 /// </summary>
115 /// <value>The path.</value>
116 public string Path
117 {
118 get
119 {
120 return m_Path;
121 }
122 }
123
124 /// <summary>
125 /// Gets the full path.
126 /// </summary>
127 /// <value>The full path.</value>
128 public string FullPath
129 {
130 get
131 {
132 return m_FullPath;
133 }
134 }
135
136 /// <summary>
137 /// Gets the options.
138 /// </summary>
139 /// <value>The options.</value>
140 public OptionsNode Options
141 {
142 get
143 {
144 return m_Options;
145 }
146 }
147
148 /// <summary>
149 /// Gets the files.
150 /// </summary>
151 /// <value>The files.</value>
152 public FilesNode Files
153 {
154 get
155 {
156 return m_Files;
157 }
158 }
159
160 /// <summary>
161 /// Gets the configurations.
162 /// </summary>
163 /// <value>The configurations.</value>
164 public ICollection Configurations
165 {
166 get
167 {
168 ArrayList tmp = new ArrayList(ConfigurationsTable.Values);
169 tmp.Sort();
170 return tmp;
171 }
172 }
173
174 /// <summary>
175 /// Gets the configurations table.
176 /// </summary>
177 /// <value>The configurations table.</value>
178 public Hashtable ConfigurationsTable
179 {
180 get
181 {
182 return m_Configurations;
183 }
184 }
185
186 /// <summary>
187 /// Gets the projects.
188 /// </summary>
189 /// <value>The projects.</value>
190 public ICollection Projects
191 {
192 get
193 {
194 ArrayList tmp = new ArrayList(m_Projects.Values);
195 tmp.Sort();
196 return tmp;
197 }
198 }
199
200 /// <summary>
201 /// Gets the projects table.
202 /// </summary>
203 /// <value>The projects table.</value>
204 public Hashtable ProjectsTable
205 {
206 get
207 {
208 return m_Projects;
209 }
210 }
211
212 /// <summary>
213 /// Gets the projects table.
214 /// </summary>
215 /// <value>The projects table.</value>
216 public ArrayList ProjectsTableOrder
217 {
218 get
219 {
220 return m_ProjectsOrder;
221 }
222 }
223
224 #endregion
225
226 #region Public Methods
227
228 /// <summary>
229 /// Parses the specified node.
230 /// </summary>
231 /// <param name="node">The node.</param>
232 public override void Parse(XmlNode node)
233 {
234 m_Name = Helper.AttributeValue(node, "name", m_Name);
235 m_ActiveConfig = Helper.AttributeValue(node, "activeConfig", m_ActiveConfig);
236 m_Path = Helper.AttributeValue(node, "path", m_Path);
237
238 m_FullPath = m_Path;
239 try
240 {
241 m_FullPath = Helper.ResolvePath(m_FullPath);
242 }
243 catch
244 {
245 throw new WarningException("Could not resolve solution path: {0}", m_Path);
246 }
247
248 Kernel.Instance.CurrentWorkingDirectory.Push();
249 try
250 {
251 Helper.SetCurrentDir(m_FullPath);
252
253 if( node == null )
254 {
255 throw new ArgumentNullException("node");
256 }
257
258 foreach(XmlNode child in node.ChildNodes)
259 {
260 IDataNode dataNode = Kernel.Instance.ParseNode(child, this);
261 if(dataNode is OptionsNode)
262 {
263 m_Options = (OptionsNode)dataNode;
264 }
265 else if(dataNode is FilesNode)
266 {
267 m_Files = (FilesNode)dataNode;
268 }
269 else if(dataNode is ConfigurationNode)
270 {
271 m_Configurations[((ConfigurationNode)dataNode).Name] = dataNode;
272 }
273 else if(dataNode is ProjectNode)
274 {
275 m_Projects[((ProjectNode)dataNode).Name] = dataNode;
276 m_ProjectsOrder.Add(dataNode);
277 }
278 }
279 }
280 finally
281 {
282 Kernel.Instance.CurrentWorkingDirectory.Pop();
283 }
284 }
285
286 #endregion
287 }
288}
diff --git a/Prebuild/src/Core/Parse/IfContext.cs b/Prebuild/src/Core/Parse/IfContext.cs
new file mode 100644
index 0000000..383049d
--- /dev/null
+++ b/Prebuild/src/Core/Parse/IfContext.cs
@@ -0,0 +1,163 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36
37namespace Prebuild.Core.Parse
38{
39 /// <summary>
40 ///
41 /// </summary>
42 public enum IfState
43 {
44 /// <summary>
45 ///
46 /// </summary>
47 None,
48 /// <summary>
49 ///
50 /// </summary>
51 If,
52 /// <summary>
53 ///
54 /// </summary>
55 ElseIf,
56 /// <summary>
57 ///
58 /// </summary>
59 Else
60 }
61
62 /// <summary>
63 /// Summary description for IfContext.
64 /// </summary>
65 // Inspired by the equivalent WiX class (see www.sourceforge.net/projects/wix/)
66 public class IfContext
67 {
68 #region Properties
69
70 bool m_Active;
71 bool m_Keep;
72 bool m_EverKept;
73 IfState m_State = IfState.None;
74
75 #endregion
76
77 #region Constructors
78
79 /// <summary>
80 /// Initializes a new instance of the <see cref="IfContext"/> class.
81 /// </summary>
82 /// <param name="active">if set to <c>true</c> [active].</param>
83 /// <param name="keep">if set to <c>true</c> [keep].</param>
84 /// <param name="state">The state.</param>
85 public IfContext(bool active, bool keep, IfState state)
86 {
87 m_Active = active;
88 m_Keep = keep;
89 m_EverKept = keep;
90 m_State = state;
91 }
92
93 #endregion
94
95 #region Properties
96
97 /// <summary>
98 /// Gets or sets a value indicating whether this <see cref="IfContext"/> is active.
99 /// </summary>
100 /// <value><c>true</c> if active; otherwise, <c>false</c>.</value>
101 public bool Active
102 {
103 get
104 {
105 return m_Active;
106 }
107 set
108 {
109 m_Active = value;
110 }
111 }
112
113 /// <summary>
114 /// Gets or sets a value indicating whether this <see cref="IfContext"/> is keep.
115 /// </summary>
116 /// <value><c>true</c> if keep; otherwise, <c>false</c>.</value>
117 public bool Keep
118 {
119 get
120 {
121 return m_Keep;
122 }
123 set
124 {
125 m_Keep = value;
126 if(m_Keep)
127 {
128 m_EverKept = true;
129 }
130 }
131 }
132
133 /// <summary>
134 /// Gets a value indicating whether [ever kept].
135 /// </summary>
136 /// <value><c>true</c> if [ever kept]; otherwise, <c>false</c>.</value>
137 public bool EverKept
138 {
139 get
140 {
141 return m_EverKept;
142 }
143 }
144
145 /// <summary>
146 /// Gets or sets the state.
147 /// </summary>
148 /// <value>The state.</value>
149 public IfState State
150 {
151 get
152 {
153 return m_State;
154 }
155 set
156 {
157 m_State = value;
158 }
159 }
160
161 #endregion
162 }
163}
diff --git a/Prebuild/src/Core/Parse/Preprocessor.cs b/Prebuild/src/Core/Parse/Preprocessor.cs
new file mode 100644
index 0000000..85e92c3
--- /dev/null
+++ b/Prebuild/src/Core/Parse/Preprocessor.cs
@@ -0,0 +1,519 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-09-01 19:55:06 +0200 (fr, 01 sep 2006) $
31 * $Revision: 147 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.IO;
38using System.Xml;
39
40namespace Prebuild.Core.Parse
41{
42 /// <summary>
43 ///
44 /// </summary>
45 public enum OperatorSymbol
46 {
47 /// <summary>
48 ///
49 /// </summary>
50 None,
51 /// <summary>
52 ///
53 /// </summary>
54 Equal,
55 /// <summary>
56 ///
57 /// </summary>
58 NotEqual,
59 /// <summary>
60 ///
61 /// </summary>
62 LessThan,
63 /// <summary>
64 ///
65 /// </summary>
66 GreaterThan,
67 /// <summary>
68 ///
69 /// </summary>
70 LessThanEqual,
71 /// <summary>
72 ///
73 /// </summary>
74 GreaterThanEqual
75 }
76
77 /// <summary>
78 ///
79 /// </summary>
80 public class Preprocessor
81 {
82 #region Fields
83
84 XmlDocument m_OutDoc;
85 Stack m_IfStack;
86 Hashtable m_Variables;
87
88 #endregion
89
90 #region Constructors
91
92 /// <summary>
93 /// Initializes a new instance of the <see cref="Preprocessor"/> class.
94 /// </summary>
95 public Preprocessor()
96 {
97 m_OutDoc = new XmlDocument();
98 m_IfStack = new Stack();
99 m_Variables = new Hashtable();
100
101 RegisterVariable("OS", GetOS());
102 RegisterVariable("RuntimeVersion", Environment.Version.Major);
103 RegisterVariable("RuntimeMajor", Environment.Version.Major);
104 RegisterVariable("RuntimeMinor", Environment.Version.Minor);
105 RegisterVariable("RuntimeRevision", Environment.Version.Revision);
106 }
107
108 #endregion
109
110 #region Properties
111
112 /// <summary>
113 /// Gets the processed doc.
114 /// </summary>
115 /// <value>The processed doc.</value>
116 public XmlDocument ProcessedDoc
117 {
118 get
119 {
120 return m_OutDoc;
121 }
122 }
123
124 #endregion
125
126 #region Private Methods
127
128 /// <summary>
129 /// Parts of this code were taken from NAnt and is subject to the GPL
130 /// as per NAnt's license. Thanks to the NAnt guys for this little gem.
131 /// </summary>
132 /// <returns></returns>
133 public static string GetOS()
134 {
135 PlatformID platId = Environment.OSVersion.Platform;
136 if(platId == PlatformID.Win32NT || platId == PlatformID.Win32Windows)
137 {
138 return "Win32";
139 }
140
141 /*
142 * .NET 1.x, under Mono, the UNIX code is 128. Under
143 * .NET 2.x, Mono or MS, the UNIX code is 4
144 */
145 if(Environment.Version.Major == 1)
146 {
147 if((int)platId == 128)
148 {
149 return "UNIX";
150 }
151 }
152 else if((int)platId == 4)
153 {
154 return "UNIX";
155 }
156
157 return "Unknown";
158 }
159
160 private static bool CompareNum(OperatorSymbol oper, int val1, int val2)
161 {
162 switch(oper)
163 {
164 case OperatorSymbol.Equal:
165 return (val1 == val2);
166 case OperatorSymbol.NotEqual:
167 return (val1 != val2);
168 case OperatorSymbol.LessThan:
169 return (val1 < val2);
170 case OperatorSymbol.LessThanEqual:
171 return (val1 <= val2);
172 case OperatorSymbol.GreaterThan:
173 return (val1 > val2);
174 case OperatorSymbol.GreaterThanEqual:
175 return (val1 >= val2);
176 }
177
178 throw new WarningException("Unknown operator type");
179 }
180
181 private static bool CompareStr(OperatorSymbol oper, string val1, string val2)
182 {
183 switch(oper)
184 {
185 case OperatorSymbol.Equal:
186 return (val1 == val2);
187 case OperatorSymbol.NotEqual:
188 return (val1 != val2);
189 case OperatorSymbol.LessThan:
190 return (val1.CompareTo(val2) < 0);
191 case OperatorSymbol.LessThanEqual:
192 return (val1.CompareTo(val2) <= 0);
193 case OperatorSymbol.GreaterThan:
194 return (val1.CompareTo(val2) > 0);
195 case OperatorSymbol.GreaterThanEqual:
196 return (val1.CompareTo(val2) >= 0);
197 }
198
199 throw new WarningException("Unknown operator type");
200 }
201
202 private static char NextChar(int idx, string str)
203 {
204 if((idx + 1) >= str.Length)
205 {
206 return Char.MaxValue;
207 }
208
209 return str[idx + 1];
210 }
211 // Very very simple expression parser. Can only match expressions of the form
212 // <var> <op> <value>:
213 // OS = Windows
214 // OS != Linux
215 // RuntimeMinor > 0
216 private bool ParseExpression(string exp)
217 {
218 if(exp == null)
219 {
220 throw new ArgumentException("Invalid expression, cannot be null");
221 }
222
223 exp = exp.Trim();
224 if(exp.Length < 1)
225 {
226 throw new ArgumentException("Invalid expression, cannot be 0 length");
227 }
228
229 string id = "";
230 string str = "";
231 OperatorSymbol oper = OperatorSymbol.None;
232 bool inStr = false;
233 char c;
234
235 for(int i = 0; i < exp.Length; i++)
236 {
237 c = exp[i];
238 if(Char.IsWhiteSpace(c))
239 {
240 continue;
241 }
242
243 if(Char.IsLetterOrDigit(c) || c == '_')
244 {
245 if(inStr)
246 {
247 str += c;
248 }
249 else
250 {
251 id += c;
252 }
253 }
254 else if(c == '\"')
255 {
256 inStr = !inStr;
257 if(inStr)
258 {
259 str = "";
260 }
261 }
262 else
263 {
264 if(inStr)
265 {
266 str += c;
267 }
268 else
269 {
270 switch(c)
271 {
272 case '=':
273 oper = OperatorSymbol.Equal;
274 break;
275
276 case '!':
277 if(NextChar(i, exp) == '=')
278 {
279 oper = OperatorSymbol.NotEqual;
280 }
281
282 break;
283
284 case '<':
285 if(NextChar(i, exp) == '=')
286 {
287 oper = OperatorSymbol.LessThanEqual;
288 }
289 else
290 {
291 oper = OperatorSymbol.LessThan;
292 }
293
294 break;
295
296 case '>':
297 if(NextChar(i, exp) == '=')
298 {
299 oper = OperatorSymbol.GreaterThanEqual;
300 }
301 else
302 {
303 oper = OperatorSymbol.GreaterThan;
304 }
305
306 break;
307 }
308 }
309 }
310 }
311
312
313 if(inStr)
314 {
315 throw new WarningException("Expected end of string in expression");
316 }
317
318 if(oper == OperatorSymbol.None)
319 {
320 throw new WarningException("Expected operator in expression");
321 }
322 else if(id.Length < 1)
323 {
324 throw new WarningException("Expected identifier in expression");
325 }
326 else if(str.Length < 1)
327 {
328 throw new WarningException("Expected value in expression");
329 }
330
331 bool ret = false;
332 try
333 {
334 object val = m_Variables[id.ToLower()];
335 if(val == null)
336 {
337 throw new WarningException("Unknown identifier '{0}'", id);
338 }
339
340 int numVal, numVal2;
341 string strVal, strVal2;
342 Type t = val.GetType();
343 if(t.IsAssignableFrom(typeof(int)))
344 {
345 numVal = (int)val;
346 numVal2 = Int32.Parse(str);
347 ret = CompareNum(oper, numVal, numVal2);
348 }
349 else
350 {
351 strVal = val.ToString();
352 strVal2 = str;
353 ret = CompareStr(oper, strVal, strVal2);
354 }
355 }
356 catch(ArgumentException ex)
357 {
358 ex.ToString();
359 throw new WarningException("Invalid value type for system variable '{0}', expected int", id);
360 }
361
362 return ret;
363 }
364
365 #endregion
366
367 #region Public Methods
368
369 /// <summary>
370 ///
371 /// </summary>
372 /// <param name="name"></param>
373 /// <param name="variableValue"></param>
374 public void RegisterVariable(string name, object variableValue)
375 {
376 if(name == null || variableValue == null)
377 {
378 return;
379 }
380
381 m_Variables[name.ToLower()] = variableValue;
382 }
383
384 /// <summary>
385 /// Performs validation on the xml source as well as evaluates conditional and flow expresions
386 /// </summary>
387 /// <exception cref="ArgumentException">For invalid use of conditional expressions or for invalid XML syntax. If a XmlValidatingReader is passed, then will also throw exceptions for non-schema-conforming xml</exception>
388 /// <param name="reader"></param>
389 /// <returns>the output xml </returns>
390 public string Process(XmlReader reader)
391 {
392 if(reader == null)
393 {
394 throw new ArgumentException("Invalid XML reader to pre-process");
395 }
396
397 IfContext context = new IfContext(true, true, IfState.None);
398 StringWriter xmlText = new StringWriter();
399 XmlTextWriter writer = new XmlTextWriter(xmlText);
400 writer.Formatting = Formatting.Indented;
401 while(reader.Read())
402 {
403 if(reader.NodeType == XmlNodeType.ProcessingInstruction)
404 {
405 bool ignore = false;
406 switch(reader.LocalName)
407 {
408 case "if":
409 m_IfStack.Push(context);
410 context = new IfContext(context.Keep & context.Active, ParseExpression(reader.Value), IfState.If);
411 ignore = true;
412 break;
413
414 case "elseif":
415 if(m_IfStack.Count == 0)
416 {
417 throw new WarningException("Unexpected 'elseif' outside of 'if'");
418 }
419 else if(context.State != IfState.If && context.State != IfState.ElseIf)
420 {
421 throw new WarningException("Unexpected 'elseif' outside of 'if'");
422 }
423
424 context.State = IfState.ElseIf;
425 if(!context.EverKept)
426 {
427 context.Keep = ParseExpression(reader.Value);
428 }
429 else
430 {
431 context.Keep = false;
432 }
433
434 ignore = true;
435 break;
436
437 case "else":
438 if(m_IfStack.Count == 0)
439 {
440 throw new WarningException("Unexpected 'else' outside of 'if'");
441 }
442 else if(context.State != IfState.If && context.State != IfState.ElseIf)
443 {
444 throw new WarningException("Unexpected 'else' outside of 'if'");
445 }
446
447 context.State = IfState.Else;
448 context.Keep = !context.EverKept;
449 ignore = true;
450 break;
451
452 case "endif":
453 if(m_IfStack.Count == 0)
454 {
455 throw new WarningException("Unexpected 'endif' outside of 'if'");
456 }
457
458 context = (IfContext)m_IfStack.Pop();
459 ignore = true;
460 break;
461 }
462
463 if(ignore)
464 {
465 continue;
466 }
467 }//end pre-proc instruction
468
469 if(!context.Active || !context.Keep)
470 {
471 continue;
472 }
473
474 switch(reader.NodeType)
475 {
476 case XmlNodeType.Element:
477 bool empty = reader.IsEmptyElement;
478 writer.WriteStartElement(reader.Name);
479
480 while (reader.MoveToNextAttribute())
481 {
482 writer.WriteAttributeString(reader.Name, reader.Value);
483 }
484
485 if(empty)
486 {
487 writer.WriteEndElement();
488 }
489
490 break;
491
492 case XmlNodeType.EndElement:
493 writer.WriteEndElement();
494 break;
495
496 case XmlNodeType.Text:
497 writer.WriteString(reader.Value);
498 break;
499
500 case XmlNodeType.CDATA:
501 writer.WriteCData(reader.Value);
502 break;
503
504 default:
505 break;
506 }
507 }
508
509 if(m_IfStack.Count != 0)
510 {
511 throw new WarningException("Mismatched 'if', 'endif' pair");
512 }
513
514 return xmlText.ToString();
515 }
516
517 #endregion
518 }
519}
diff --git a/Prebuild/src/Core/Targets/AutotoolsTarget.cs b/Prebuild/src/Core/Targets/AutotoolsTarget.cs
new file mode 100644
index 0000000..2b4a678
--- /dev/null
+++ b/Prebuild/src/Core/Targets/AutotoolsTarget.cs
@@ -0,0 +1,926 @@
1#region BSD License
2/*
3
4Copyright (c) 2004 - 2006
5Matthew Holmes (matthew@wildfiregames.com),
6Dan Moorehead (dan05a@gmail.com),
7Dave Hudson (jendave@yahoo.com),
8C.J. Adams-Collier (cjcollier@colliertech.org),
9
10Redistribution and use in source and binary forms, with or without
11modification, are permitted provided that the following conditions are
12met:
13
14* Redistributions of source code must retain the above copyright
15notice, this list of conditions and the following disclaimer.
16
17* Redistributions in binary form must reproduce the above copyright
18notice, this list of conditions and the following disclaimer in the
19documentation and/or other materials provided with the distribution.
20
21* The name of the author may not be used to endorse or promote
22products derived from this software without specific prior written
23permission.
24
25THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
26IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
29INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
33STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
34IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35POSSIBILITY OF SUCH DAMAGE.
36
37*/
38#endregion
39
40#region CVS Information
41/*
42 * $Source$
43 * $Author: jendave $
44 * $Date: 2006-07-28 22:43:24 -0700 (Fri, 28 Jul 2006) $
45 * $Revision: 136 $
46 */
47#endregion
48
49using System;
50using System.Collections;
51using System.Collections.Specialized;
52using System.IO;
53using System.Reflection;
54using System.Text;
55using System.Text.RegularExpressions;
56
57using Prebuild.Core.Attributes;
58using Prebuild.Core.Interfaces;
59using Prebuild.Core.Nodes;
60using Prebuild.Core.Parse;
61using Prebuild.Core.Utilities;
62
63namespace Prebuild.Core.Targets
64{
65 /// <summary>
66 ///
67 /// </summary>
68 [Target("autotools")]
69 public class AutotoolsTarget : ITarget
70 {
71 #region Fields
72
73 private Kernel m_Kernel;
74
75 #endregion
76
77 #region Private Methods
78
79 private static string PrependPath(string path)
80 {
81 string tmpPath = Helper.NormalizePath(path, '/');
82 Regex regex = new Regex(@"(\w):/(\w+)");
83 Match match = regex.Match(tmpPath);
84 if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
85 {
86 tmpPath = Helper.NormalizePath(tmpPath);
87 }
88 else
89 {
90 tmpPath = Helper.NormalizePath("./" + tmpPath);
91 }
92
93 return tmpPath;
94 }
95
96 private static string BuildReference(SolutionNode solution, ReferenceNode refr)
97 {
98 string ret = "";
99 if(solution.ProjectsTable.ContainsKey(refr.Name))
100 {
101 ProjectNode project = (ProjectNode)solution.ProjectsTable[refr.Name];
102 string fileRef = FindFileReference(refr.Name, project);
103 string finalPath = Helper.NormalizePath(Helper.MakeFilePath(project.FullPath + "/$(BUILD_DIR)/$(CONFIG)/", refr.Name, "dll"), '/');
104 ret += finalPath;
105 return ret;
106 }
107 else
108 {
109 ProjectNode project = (ProjectNode)refr.Parent;
110 string fileRef = FindFileReference(refr.Name, project);
111
112 if(refr.Path != null || fileRef != null)
113 {
114 string finalPath = (refr.Path != null) ? Helper.NormalizePath(refr.Path + "/" + refr.Name + ".dll", '/') : fileRef;
115 ret += Path.Combine(project.Path, finalPath);
116 return ret;
117 }
118
119 try
120 {
121 //Assembly assem = Assembly.Load(refr.Name);
122 //if (assem != null)
123 //{
124 // int index = refr.Name.IndexOf(",");
125 // if ( index > 0)
126 // {
127 // ret += assem.Location;
128 // //Console.WriteLine("Location1: " + assem.Location);
129 // }
130 // else
131 // {
132 // ret += (refr.Name + ".dll");
133 // //Console.WriteLine("Location2: " + assem.Location);
134 // }
135 //}
136 //else
137 //{
138 int index = refr.Name.IndexOf(",");
139 if ( index > 0)
140 {
141 ret += refr.Name.Substring(0, index) + ".dll";
142 //Console.WriteLine("Location3: " + assem.Location);
143 }
144 else
145 {
146 ret += (refr.Name + ".dll");
147 //Console.WriteLine("Location4: " + assem.Location);
148 }
149 //}
150 }
151 catch (System.NullReferenceException e)
152 {
153 e.ToString();
154 int index = refr.Name.IndexOf(",");
155 if ( index > 0)
156 {
157 ret += refr.Name.Substring(0, index) + ".dll";
158 //Console.WriteLine("Location5: " + assem.Location);
159 }
160 else
161 {
162 ret += (refr.Name + ".dll");
163 //Console.WriteLine("Location6: " + assem.Location);
164 }
165 }
166 }
167 return ret;
168 }
169
170 private static string BuildReferencePath(SolutionNode solution, ReferenceNode refr)
171 {
172 string ret = "";
173 if(solution.ProjectsTable.ContainsKey(refr.Name))
174 {
175 ProjectNode project = (ProjectNode)solution.ProjectsTable[refr.Name];
176 string finalPath = Helper.NormalizePath(Helper.MakeReferencePath(project.FullPath + "/${build.dir}/"), '/');
177 ret += finalPath;
178 return ret;
179 }
180 else
181 {
182 ProjectNode project = (ProjectNode)refr.Parent;
183 string fileRef = FindFileReference(refr.Name, project);
184
185
186 if(refr.Path != null || fileRef != null)
187 {
188 string finalPath = (refr.Path != null) ? Helper.NormalizePath(refr.Path, '/') : fileRef;
189 ret += finalPath;
190 return ret;
191 }
192
193 try
194 {
195 Assembly assem = Assembly.Load(refr.Name);
196 if (assem != null)
197 {
198 ret += "";
199 }
200 else
201 {
202 ret += "";
203 }
204 }
205 catch (System.NullReferenceException e)
206 {
207 e.ToString();
208 ret += "";
209 }
210 }
211 return ret;
212 }
213
214 private static string FindFileReference(string refName, ProjectNode project)
215 {
216 foreach(ReferencePathNode refPath in project.ReferencePaths)
217 {
218 string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
219
220 if(File.Exists(fullPath))
221 {
222 return fullPath;
223 }
224 }
225
226 return null;
227 }
228
229 /// <summary>
230 /// Gets the XML doc file.
231 /// </summary>
232 /// <param name="project">The project.</param>
233 /// <param name="conf">The conf.</param>
234 /// <returns></returns>
235 public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf)
236 {
237 if( conf == null )
238 {
239 throw new ArgumentNullException("conf");
240 }
241 if( project == null )
242 {
243 throw new ArgumentNullException("project");
244 }
245 string docFile = (string)conf.Options["XmlDocFile"];
246 // if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
247 // {
248 // return Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml";
249 // }
250 return docFile;
251 }
252
253 /// <summary>
254 /// Normalizes the path.
255 /// </summary>
256 /// <param name="path">The path.</param>
257 /// <returns></returns>
258 public static string NormalizePath(string path)
259 {
260 if(path == null)
261 {
262 return "";
263 }
264
265 StringBuilder tmpPath;
266
267 if (Core.Parse.Preprocessor.GetOS() == "Win32")
268 {
269 tmpPath = new StringBuilder(path.Replace('\\', '/'));
270 tmpPath.Replace("/", @"\\");
271 }
272 else
273 {
274 tmpPath = new StringBuilder(path.Replace('\\', '/'));
275 tmpPath = tmpPath.Replace('/', Path.DirectorySeparatorChar);
276 }
277 return tmpPath.ToString();
278 }
279
280 private void WriteProject(SolutionNode solution, ProjectNode project)
281 {
282 string projFile = Helper.MakeFilePath(project.FullPath, "Include", "am");
283 StreamWriter ss = new StreamWriter(projFile);
284 ss.NewLine = "\n";
285
286 m_Kernel.CurrentWorkingDirectory.Push();
287 Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
288
289 using(ss)
290 {
291 ss.WriteLine(Helper.AssemblyFullName(project.AssemblyName, project.Type) + ":");
292 ss.WriteLine("\tmkdir -p " + Helper.MakePathRelativeTo(solution.FullPath, project.Path) + "/$(BUILD_DIR)/$(CONFIG)/");
293 foreach(string file in project.Files)
294 {
295 if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
296 {
297 ss.Write("\tresgen ");
298 ss.Write(Helper.NormalizePath(Path.Combine(project.Path, file.Substring(0, file.LastIndexOf('.')) + ".resx "), '/'));
299 if (project.Files.GetResourceName(file) != "")
300 {
301 ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + project.Files.GetResourceName(file) + ".resources"), '/'));
302 }
303 else
304 {
305 ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + file.Substring(0, file.LastIndexOf('.')) + ".resources"), '/'));
306 }
307 }
308 }
309 ss.WriteLine("\t$(CSC)\t/out:" + Helper.MakePathRelativeTo(solution.FullPath, project.Path) + "/$(BUILD_DIR)/$(CONFIG)/" + Helper.AssemblyFullName(project.AssemblyName, project.Type) + " \\");
310 ss.WriteLine("\t\t/target:" + project.Type.ToString().ToLower() + " \\");
311 if (project.References.Count > 0)
312 {
313 ss.Write("\t\t/reference:");
314 bool firstref = true;
315 foreach(ReferenceNode refr in project.References)
316 {
317 if (firstref)
318 {
319 firstref = false;
320 }
321 else
322 {
323 ss.Write(",");
324 }
325 ss.Write("{0}", Helper.NormalizePath(Helper.MakePathRelativeTo(solution.FullPath, BuildReference(solution, refr)), '/'));
326 }
327 ss.WriteLine(" \\");
328 }
329 //ss.WriteLine("\t\tProperties/AssemblyInfo.cs \\");
330
331 foreach(string file in project.Files)
332 {
333 switch(project.Files.GetBuildAction(file))
334 {
335 case BuildAction.EmbeddedResource:
336 ss.Write("\t\t/resource:");
337 ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, file), '/') + " \\");
338 break;
339 default:
340 if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
341 {
342 ss.Write("\t\t/resource:");
343 if (project.Files.GetResourceName(file) != "")
344 {
345 ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + project.Files.GetResourceName(file) + ".resources"), '/') + "," + project.RootNamespace + "." + project.Files.GetResourceName(file) + ".resources" + " \\");
346 }
347 else
348 {
349 ss.WriteLine(Helper.NormalizePath(Path.Combine(project.Path, project.RootNamespace + "." + file.Substring(0, file.LastIndexOf('.')) + ".resources"), '/') + "," + project.RootNamespace + "." + file.Substring(0, file.LastIndexOf('.')) + ".resources" + " \\");
350 }
351 }
352 break;
353 }
354 }
355
356 foreach(ConfigurationNode conf in project.Configurations)
357 {
358 if (conf.Options.KeyFile !="")
359 {
360 ss.WriteLine("\t\t/keyfile:" + Helper.NormalizePath(Path.Combine(project.Path, conf.Options.KeyFile), '/') + " \\");
361 break;
362 }
363 }
364 foreach(ConfigurationNode conf in project.Configurations)
365 {
366 if (conf.Options.AllowUnsafe)
367 {
368 ss.WriteLine("\t\t/unsafe \\");
369 break;
370 }
371 }
372 if (project.AppIcon != "")
373 {
374 ss.WriteLine("\t\t/win32icon:" + Helper.NormalizePath(Path.Combine(project.Path, project.AppIcon), '/') + " \\");
375 }
376
377 foreach(ConfigurationNode conf in project.Configurations)
378 {
379 ss.WriteLine("\t\t/define:{0}", conf.Options.CompilerDefines.Replace(';', ',') + " \\");
380 break;
381 }
382
383 foreach(ConfigurationNode conf in project.Configurations)
384 {
385 if (GetXmlDocFile(project, conf) !="")
386 {
387 ss.WriteLine("\t\t/doc:" + Helper.MakePathRelativeTo(solution.FullPath, project.Path) + "/$(BUILD_DIR)/$(CONFIG)/" + project.Name + ".xml \\");
388 break;
389 }
390 }
391 foreach(string file in project.Files)
392 {
393 switch(project.Files.GetBuildAction(file))
394 {
395 case BuildAction.Compile:
396 ss.WriteLine("\t\t\\");
397 ss.Write("\t\t" + NormalizePath(Path.Combine(Helper.MakePathRelativeTo(solution.FullPath, project.Path), file)));
398 break;
399 default:
400 break;
401 }
402 }
403 ss.WriteLine();
404 ss.WriteLine();
405
406 if (project.Type == ProjectType.Library)
407 {
408 ss.WriteLine("install-data-local:");
409 ss.WriteLine(" echo \"$(GACUTIL) /i bin/Release/" + project.Name + ".dll /f $(GACUTIL_FLAGS)\"; \\");
410 ss.WriteLine(" $(GACUTIL) /i bin/Release/" + project.Name + ".dll /f $(GACUTIL_FLAGS) || exit 1;");
411 ss.WriteLine();
412 ss.WriteLine("uninstall-local:");
413 ss.WriteLine(" echo \"$(GACUTIL) /u " + project.Name + " $(GACUTIL_FLAGS)\"; \\");
414 ss.WriteLine(" $(GACUTIL) /u " + project.Name + " $(GACUTIL_FLAGS) || exit 1;");
415 ss.WriteLine();
416 }
417 ss.WriteLine("CLEANFILES = $(BUILD_DIR)/$(CONFIG)/" + Helper.AssemblyFullName(project.AssemblyName, project.Type) + " $(BUILD_DIR)/$(CONFIG)/" + project.AssemblyName + ".mdb $(BUILD_DIR)/$(CONFIG)/" + project.AssemblyName + ".pdb " + project.AssemblyName + ".xml");
418 ss.WriteLine("EXTRA_DIST = \\");
419 ss.Write(" $(FILES)");
420 foreach(ConfigurationNode conf in project.Configurations)
421 {
422 if (conf.Options.KeyFile != "")
423 {
424 ss.Write(" \\");
425 ss.WriteLine("\t" + conf.Options.KeyFile);
426 }
427 break;
428 }
429 }
430 m_Kernel.CurrentWorkingDirectory.Pop();
431 }
432 bool hasLibrary = false;
433
434 private void WriteCombine(SolutionNode solution)
435 {
436
437 /* TODO: These vars should be pulled from the prebuild.xml file */
438 string releaseVersion = "2.0.0";
439 string assemblyVersion = "2.1.0.0";
440 string description =
441 "Tao Framework " + solution.Name + " Binding For .NET";
442
443 hasLibrary = false;
444 m_Kernel.Log.Write("Creating Autotools make files");
445 foreach(ProjectNode project in solution.Projects)
446 {
447 if(m_Kernel.AllowProject(project.FilterGroups))
448 {
449 m_Kernel.Log.Write("...Creating makefile: {0}", project.Name);
450 WriteProject(solution, project);
451 }
452 }
453
454 m_Kernel.Log.Write("");
455 string combFile = Helper.MakeFilePath(solution.FullPath, "Makefile", "am");
456 StreamWriter ss = new StreamWriter(combFile);
457 ss.NewLine = "\n";
458
459 m_Kernel.CurrentWorkingDirectory.Push();
460 Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
461
462 using(ss)
463 {
464 foreach(ProjectNode project in solution.ProjectsTableOrder)
465 {
466 if (project.Type == ProjectType.Library)
467 {
468 hasLibrary = true;
469 break;
470 }
471 }
472
473 if (hasLibrary)
474 {
475 ss.Write("pkgconfig_in_files = ");
476 foreach(ProjectNode project in solution.ProjectsTableOrder)
477 {
478 if (project.Type == ProjectType.Library)
479 {
480 string combFilepc = Helper.MakeFilePath(solution.FullPath, project.Name, "pc.in");
481 ss.Write(" " + project.Name + ".pc.in ");
482 StreamWriter sspc = new StreamWriter(combFilepc);
483 sspc.NewLine = "\n";
484 using(sspc)
485 {
486 sspc.WriteLine("prefix=@prefix@");
487 sspc.WriteLine("exec_prefix=${prefix}");
488 sspc.WriteLine("libdir=${exec_prefix}/lib");
489 sspc.WriteLine();
490 sspc.WriteLine("Name: @PACKAGE_NAME@");
491 sspc.WriteLine("Description: @DESCRIPTION@");
492 sspc.WriteLine("Version: @ASSEMBLY_VERSION@");
493 sspc.WriteLine("Libs: -r:${libdir}/mono/gac/@PACKAGE_NAME@/@ASSEMBLY_VERSION@__@PUBKEY@/@PACKAGE_NAME@.dll");
494 }
495 }
496 }
497
498 ss.WriteLine();
499 ss.WriteLine("pkgconfigdir=$(prefix)/lib/pkgconfig");
500 ss.WriteLine("pkgconfig_DATA=$(pkgconfig_in_files:.pc.in=.pc)");
501 }
502 ss.WriteLine();
503 foreach(ProjectNode project in solution.ProjectsTableOrder)
504 {
505 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
506 ss.WriteLine("-include x {0}",
507 Helper.NormalizePath(Helper.MakeFilePath(path, "Include", "am"),'/'));
508 }
509 ss.WriteLine();
510 ss.WriteLine("all: \\");
511 ss.Write("\t");
512 foreach(ProjectNode project in solution.ProjectsTableOrder)
513 {
514 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
515 ss.Write(Helper.AssemblyFullName(project.AssemblyName, project.Type) + " ");
516
517 }
518 ss.WriteLine();
519 if (hasLibrary)
520 {
521 ss.WriteLine("EXTRA_DIST = \\");
522 ss.WriteLine("\t$(pkgconfig_in_files)");
523 }
524 else
525 {
526 ss.WriteLine("EXTRA_DIST = ");
527 }
528 ss.WriteLine();
529 ss.WriteLine("DISTCLEANFILES = \\");
530 ss.WriteLine("\tconfigure \\");
531 ss.WriteLine("\tMakefile.in \\");
532 ss.WriteLine("\taclocal.m4");
533 }
534 combFile = Helper.MakeFilePath(solution.FullPath, "configure", "ac");
535 StreamWriter ts = new StreamWriter(combFile);
536 ts.NewLine = "\n";
537 using(ts)
538 {
539 if (this.hasLibrary)
540 {
541 foreach(ProjectNode project in solution.ProjectsTableOrder)
542 {
543 if (project.Type == ProjectType.Library)
544 {
545 ts.WriteLine("AC_INIT(" + project.Name + ".pc.in)");
546 break;
547 }
548 }
549 }
550 else
551 {
552 ts.WriteLine("AC_INIT(Makefile.am)");
553 }
554 ts.WriteLine("AC_PREREQ(2.53)");
555 ts.WriteLine("AC_CANONICAL_SYSTEM");
556
557 ts.WriteLine("PACKAGE_NAME={0}", solution.Name);
558 ts.WriteLine("PACKAGE_VERSION={0}", releaseVersion);
559 ts.WriteLine("DESCRIPTION=\"{0}\"", description);
560 ts.WriteLine("AC_SUBST(DESCRIPTION)");
561 ts.WriteLine("AM_INIT_AUTOMAKE([$PACKAGE_NAME],[$PACKAGE_VERSION],[$DESCRIPTION])");
562
563 ts.WriteLine("ASSEMBLY_VERSION={0}", assemblyVersion);
564 ts.WriteLine("AC_SUBST(ASSEMBLY_VERSION)");
565
566 ts.WriteLine("PUBKEY=`sn -t $PACKAGE_NAME.snk | grep 'Public Key Token' | awk -F: '{print $2}' | sed -e 's/^ //'`");
567 ts.WriteLine("AC_SUBST(PUBKEY)");
568
569 ts.WriteLine();
570 ts.WriteLine("AM_MAINTAINER_MODE");
571 ts.WriteLine();
572 ts.WriteLine("dnl AC_PROG_INTLTOOL([0.25])");
573 ts.WriteLine();
574 ts.WriteLine("AC_PROG_INSTALL");
575 ts.WriteLine();
576 ts.WriteLine("MONO_REQUIRED_VERSION=1.1");
577 ts.WriteLine();
578 ts.WriteLine("AC_MSG_CHECKING([whether we're compiling from CVS])");
579 ts.WriteLine("if test -f \"$srcdir/.cvs_version\" ; then");
580 ts.WriteLine(" from_cvs=yes");
581 ts.WriteLine("else");
582 ts.WriteLine(" if test -f \"$srcdir/.svn\" ; then");
583 ts.WriteLine(" from_cvs=yes");
584 ts.WriteLine(" else");
585 ts.WriteLine(" from_cvs=no");
586 ts.WriteLine(" fi");
587 ts.WriteLine("fi");
588 ts.WriteLine();
589 ts.WriteLine("AC_MSG_RESULT($from_cvs)");
590 ts.WriteLine();
591 ts.WriteLine("AC_PATH_PROG(MONO, mono)");
592 ts.WriteLine("AC_PATH_PROG(GMCS, gmcs)");
593 ts.WriteLine("AC_PATH_PROG(GACUTIL, gacutil)");
594 ts.WriteLine();
595 ts.WriteLine("AC_MSG_CHECKING([for mono])");
596 ts.WriteLine("dnl if test \"x$MONO\" = \"x\" ; then");
597 ts.WriteLine("dnl AC_MSG_ERROR([Can't find \"mono\" in your PATH])");
598 ts.WriteLine("dnl else");
599 ts.WriteLine(" AC_MSG_RESULT([found])");
600 ts.WriteLine("dnl fi");
601 ts.WriteLine();
602 ts.WriteLine("AC_MSG_CHECKING([for gmcs])");
603 ts.WriteLine("dnl if test \"x$GMCS\" = \"x\" ; then");
604 ts.WriteLine("dnl AC_MSG_ERROR([Can't find \"gmcs\" in your PATH])");
605 ts.WriteLine("dnl else");
606 ts.WriteLine(" AC_MSG_RESULT([found])");
607 ts.WriteLine("dnl fi");
608 ts.WriteLine();
609 //ts.WriteLine("AC_MSG_CHECKING([for gacutil])");
610 //ts.WriteLine("if test \"x$GACUTIL\" = \"x\" ; then");
611 //ts.WriteLine(" AC_MSG_ERROR([Can't find \"gacutil\" in your PATH])");
612 //ts.WriteLine("else");
613 //ts.WriteLine(" AC_MSG_RESULT([found])");
614 //ts.WriteLine("fi");
615 ts.WriteLine();
616 ts.WriteLine("AC_SUBST(PATH)");
617 ts.WriteLine("AC_SUBST(LD_LIBRARY_PATH)");
618 ts.WriteLine();
619 ts.WriteLine("dnl CSFLAGS=\"-debug -nowarn:1574\"");
620 ts.WriteLine("CSFLAGS=\"\"");
621 ts.WriteLine("AC_SUBST(CSFLAGS)");
622 ts.WriteLine();
623 // ts.WriteLine("AC_MSG_CHECKING(--disable-sdl argument)");
624 // ts.WriteLine("AC_ARG_ENABLE(sdl,");
625 // ts.WriteLine(" [ --disable-sdl Disable Sdl interface.],");
626 // ts.WriteLine(" [disable_sdl=$disableval],");
627 // ts.WriteLine(" [disable_sdl=\"no\"])");
628 // ts.WriteLine("AC_MSG_RESULT($disable_sdl)");
629 // ts.WriteLine("if test \"$disable_sdl\" = \"yes\"; then");
630 // ts.WriteLine(" AC_DEFINE(FEAT_SDL)");
631 // ts.WriteLine("fi");
632 ts.WriteLine();
633 ts.WriteLine("dnl Find pkg-config");
634 ts.WriteLine("AC_PATH_PROG(PKGCONFIG, pkg-config, no)");
635 ts.WriteLine("if test \"x$PKG_CONFIG\" = \"xno\"; then");
636 ts.WriteLine(" AC_MSG_ERROR([You need to install pkg-config])");
637 ts.WriteLine("fi");
638 ts.WriteLine();
639 ts.WriteLine("PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)");
640 ts.WriteLine("BUILD_DIR=\"bin\"");
641 ts.WriteLine("AC_SUBST(BUILD_DIR)");
642 ts.WriteLine("CONFIG=\"Release\"");
643 ts.WriteLine("AC_SUBST(CONFIG)");
644 ts.WriteLine();
645 ts.WriteLine("if test \"x$has_mono\" = \"xtrue\"; then");
646 ts.WriteLine(" AC_PATH_PROG(RUNTIME, mono, no)");
647 ts.WriteLine(" AC_PATH_PROG(CSC, gmcs, no)");
648 ts.WriteLine(" if test `uname -s` = \"Darwin\"; then");
649 ts.WriteLine(" LIB_PREFIX=");
650 ts.WriteLine(" LIB_SUFFIX=.dylib");
651 ts.WriteLine(" else");
652 ts.WriteLine(" LIB_PREFIX=.so");
653 ts.WriteLine(" LIB_SUFFIX=");
654 ts.WriteLine(" fi");
655 ts.WriteLine("else");
656 ts.WriteLine(" AC_PATH_PROG(CSC, csc.exe, no)");
657 ts.WriteLine(" if test x$CSC = \"xno\"; then");
658 ts.WriteLine(" AC_MSG_ERROR([You need to install either mono or .Net])");
659 ts.WriteLine(" else");
660 ts.WriteLine(" RUNTIME=");
661 ts.WriteLine(" LIB_PREFIX=");
662 ts.WriteLine(" LIB_SUFFIX=.dylib");
663 ts.WriteLine(" fi");
664 ts.WriteLine("fi");
665 ts.WriteLine();
666 ts.WriteLine("AC_SUBST(LIB_PREFIX)");
667 ts.WriteLine("AC_SUBST(LIB_SUFFIX)");
668 ts.WriteLine();
669 ts.WriteLine("AC_SUBST(BASE_DEPENDENCIES_CFLAGS)");
670 ts.WriteLine("AC_SUBST(BASE_DEPENDENCIES_LIBS)");
671 ts.WriteLine();
672 ts.WriteLine("dnl Find monodoc");
673 ts.WriteLine("MONODOC_REQUIRED_VERSION=1.0");
674 ts.WriteLine("AC_SUBST(MONODOC_REQUIRED_VERSION)");
675 ts.WriteLine("PKG_CHECK_MODULES(MONODOC_DEPENDENCY, monodoc >= $MONODOC_REQUIRED_VERSION, enable_monodoc=yes, enable_monodoc=no)");
676 ts.WriteLine();
677 ts.WriteLine("if test \"x$enable_monodoc\" = \"xyes\"; then");
678 ts.WriteLine(" AC_PATH_PROG(MONODOC, monodoc, no)");
679 ts.WriteLine(" if test x$MONODOC = xno; then");
680 ts.WriteLine(" enable_monodoc=no");
681 ts.WriteLine(" fi");
682 ts.WriteLine("else");
683 ts.WriteLine(" MONODOC=");
684 ts.WriteLine("fi");
685 ts.WriteLine();
686 ts.WriteLine("AC_SUBST(MONODOC)");
687 ts.WriteLine("AM_CONDITIONAL(ENABLE_MONODOC, test \"x$enable_monodoc\" = \"xyes\")");
688 ts.WriteLine();
689 ts.WriteLine("AC_PATH_PROG(GACUTIL, gacutil, no)");
690 ts.WriteLine("if test \"x$GACUTIL\" = \"xno\" ; then");
691 ts.WriteLine(" AC_MSG_ERROR([No gacutil tool found])");
692 ts.WriteLine("fi");
693 ts.WriteLine();
694 // foreach(ProjectNode project in solution.ProjectsTableOrder)
695 // {
696 // if (project.Type == ProjectType.Library)
697 // {
698 // }
699 // }
700 ts.WriteLine("GACUTIL_FLAGS='/package $(PACKAGE_NAME) /gacdir $(DESTDIR)$(prefix)'");
701 ts.WriteLine("AC_SUBST(GACUTIL_FLAGS)");
702 ts.WriteLine();
703 ts.WriteLine("winbuild=no");
704 ts.WriteLine("case \"$host\" in");
705 ts.WriteLine(" *-*-mingw*|*-*-cygwin*)");
706 ts.WriteLine(" winbuild=yes");
707 ts.WriteLine(" ;;");
708 ts.WriteLine("esac");
709 ts.WriteLine("AM_CONDITIONAL(WINBUILD, test x$winbuild = xyes)");
710 ts.WriteLine();
711 // ts.WriteLine("dnl Check for SDL");
712 // ts.WriteLine();
713 // ts.WriteLine("AC_PATH_PROG([SDL_CONFIG], [sdl-config])");
714 // ts.WriteLine("have_sdl=no");
715 // ts.WriteLine("if test -n \"${SDL_CONFIG}\"; then");
716 // ts.WriteLine(" have_sdl=yes");
717 // ts.WriteLine(" SDL_CFLAGS=`$SDL_CONFIG --cflags`");
718 // ts.WriteLine(" SDL_LIBS=`$SDL_CONFIG --libs`");
719 // ts.WriteLine(" #");
720 // ts.WriteLine(" # sdl-config sometimes emits an rpath flag pointing at its library");
721 // ts.WriteLine(" # installation directory. We don't want this, as it prevents users from");
722 // ts.WriteLine(" # linking sdl-viewer against, for example, a locally compiled libGL when a");
723 // ts.WriteLine(" # version of the library also exists in SDL's library installation");
724 // ts.WriteLine(" # directory, typically /usr/lib.");
725 // ts.WriteLine(" #");
726 // ts.WriteLine(" SDL_LIBS=`echo $SDL_LIBS | sed 's/-Wl,-rpath,[[^ ]]* //'`");
727 // ts.WriteLine("fi");
728 // ts.WriteLine("AC_SUBST([SDL_CFLAGS])");
729 // ts.WriteLine("AC_SUBST([SDL_LIBS])");
730 ts.WriteLine();
731 ts.WriteLine("AC_OUTPUT([");
732 ts.WriteLine("Makefile");
733 // TODO: this does not work quite right.
734 //ts.WriteLine("Properties/AssemblyInfo.cs");
735 foreach(ProjectNode project in solution.ProjectsTableOrder)
736 {
737 if (project.Type == ProjectType.Library)
738 {
739 ts.WriteLine(project.Name + ".pc");
740 }
741 // string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
742 // ts.WriteLine(Helper.NormalizePath(Helper.MakeFilePath(path, "Include"),'/'));
743 }
744 ts.WriteLine("])");
745 ts.WriteLine();
746 ts.WriteLine("#po/Makefile.in");
747 ts.WriteLine();
748 ts.WriteLine("echo \"---\"");
749 ts.WriteLine("echo \"Configuration summary\"");
750 ts.WriteLine("echo \"\"");
751 ts.WriteLine("echo \" * Installation prefix: $prefix\"");
752 ts.WriteLine("echo \" * compiler: $CSC\"");
753 ts.WriteLine("echo \" * Documentation: $enable_monodoc ($MONODOC)\"");
754 ts.WriteLine("echo \" * Package Name: $PACKAGE_NAME\"");
755 ts.WriteLine("echo \" * Version: $PACKAGE_VERSION\"");
756 ts.WriteLine("echo \" * Public Key: $PUBKEY\"");
757 ts.WriteLine("echo \"\"");
758 ts.WriteLine("echo \"---\"");
759 ts.WriteLine();
760 }
761
762 ts.NewLine = "\n";
763 foreach (ProjectNode project in solution.ProjectsTableOrder)
764 {
765 if (project.GenerateAssemblyInfoFile)
766 {
767 GenerateAssemblyInfoFile(solution, combFile);
768 }
769 }
770 }
771
772 private static void GenerateAssemblyInfoFile(SolutionNode solution, string combFile)
773 {
774 System.IO.Directory.CreateDirectory(Helper.MakePathRelativeTo(solution.FullPath, "Properties"));
775 combFile = Helper.MakeFilePath(solution.FullPath + "/Properties/", "AssemblyInfo.cs", "in");
776 StreamWriter ai = new StreamWriter(combFile);
777
778 using (ai)
779 {
780 ai.WriteLine("#region License");
781 ai.WriteLine("/*");
782 ai.WriteLine("MIT License");
783 ai.WriteLine("Copyright (c)2003-2006 Tao Framework Team");
784 ai.WriteLine("http://www.taoframework.com");
785 ai.WriteLine("All rights reserved.");
786 ai.WriteLine("");
787 ai.WriteLine("Permission is hereby granted, free of charge, to any person obtaining a copy");
788 ai.WriteLine("of this software and associated documentation files (the \"Software\"), to deal");
789 ai.WriteLine("in the Software without restriction, including without limitation the rights");
790 ai.WriteLine("to use, copy, modify, merge, publish, distribute, sublicense, and/or sell");
791 ai.WriteLine("copies of the Software, and to permit persons to whom the Software is");
792 ai.WriteLine("furnished to do so, subject to the following conditions:");
793 ai.WriteLine("");
794 ai.WriteLine("The above copyright notice and this permission notice shall be included in all");
795 ai.WriteLine("copies or substantial portions of the Software.");
796 ai.WriteLine("");
797 ai.WriteLine("THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR");
798 ai.WriteLine("IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,");
799 ai.WriteLine("FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE");
800 ai.WriteLine("AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER");
801 ai.WriteLine("LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,");
802 ai.WriteLine("OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE");
803 ai.WriteLine("SOFTWARE.");
804 ai.WriteLine("*/");
805 ai.WriteLine("#endregion License");
806 ai.WriteLine("");
807 ai.WriteLine("using System;");
808 ai.WriteLine("using System.Reflection;");
809 ai.WriteLine("using System.Runtime.InteropServices;");
810 ai.WriteLine("using System.Security;");
811 ai.WriteLine("using System.Security.Permissions;");
812 ai.WriteLine("");
813 ai.WriteLine("[assembly: AllowPartiallyTrustedCallers]");
814 ai.WriteLine("[assembly: AssemblyCompany(\"Tao Framework -- http://www.taoframework.com\")]");
815 ai.WriteLine("[assembly: AssemblyConfiguration(\"Retail\")]");
816 ai.WriteLine("[assembly: AssemblyCopyright(\"Copyright (c)2003-2006 Tao Framework Team. All rights reserved.\")]");
817 ai.WriteLine("[assembly: AssemblyCulture(\"\")]");
818 ai.WriteLine("[assembly: AssemblyDefaultAlias(\"@PACKAGE_NAME@\")]");
819 ai.WriteLine("[assembly: AssemblyDelaySign(false)]");
820 ai.WriteLine("[assembly: AssemblyDescription(\"@DESCRIPTION@\")]");
821 ai.WriteLine("[assembly: AssemblyFileVersion(\"@ASSEMBLY_VERSION@\")]");
822 ai.WriteLine("[assembly: AssemblyInformationalVersion(\"@ASSEMBLY_VERSION@\")]");
823 ai.WriteLine("[assembly: AssemblyKeyName(\"\")]");
824 ai.WriteLine("[assembly: AssemblyProduct(\"@PACKAGE_NAME@.dll\")]");
825 ai.WriteLine("[assembly: AssemblyTitle(\"@DESCRIPTION@\")]");
826 ai.WriteLine("[assembly: AssemblyTrademark(\"Tao Framework -- http://www.taoframework.com\")]");
827 ai.WriteLine("[assembly: AssemblyVersion(\"@ASSEMBLY_VERSION@\")]");
828 ai.WriteLine("[assembly: CLSCompliant(true)]");
829 ai.WriteLine("[assembly: ComVisible(false)]");
830 ai.WriteLine("[assembly: SecurityPermission(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.Execution)]");
831 ai.WriteLine("[assembly: SecurityPermission(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.SkipVerification)]");
832 ai.WriteLine("[assembly: SecurityPermission(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.UnmanagedCode)]");
833
834 }
835 //return combFile;
836 }
837
838 private void CleanProject(ProjectNode project)
839 {
840 m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
841 string projectFile = Helper.MakeFilePath(project.FullPath, "Include", "am");
842 Helper.DeleteIfExists(projectFile);
843 }
844
845 private void CleanSolution(SolutionNode solution)
846 {
847 m_Kernel.Log.Write("Cleaning Autotools make files for", solution.Name);
848
849 string slnFile = Helper.MakeFilePath(solution.FullPath, "Makefile", "am");
850 Helper.DeleteIfExists(slnFile);
851
852 slnFile = Helper.MakeFilePath(solution.FullPath, "Makefile", "in");
853 Helper.DeleteIfExists(slnFile);
854
855 slnFile = Helper.MakeFilePath(solution.FullPath, "configure", "ac");
856 Helper.DeleteIfExists(slnFile);
857
858 slnFile = Helper.MakeFilePath(solution.FullPath, "configure");
859 Helper.DeleteIfExists(slnFile);
860
861 slnFile = Helper.MakeFilePath(solution.FullPath, "Makefile");
862 Helper.DeleteIfExists(slnFile);
863
864 foreach(ProjectNode project in solution.Projects)
865 {
866 CleanProject(project);
867 }
868
869 m_Kernel.Log.Write("");
870 }
871
872 #endregion
873
874 #region ITarget Members
875
876 /// <summary>
877 /// Writes the specified kern.
878 /// </summary>
879 /// <param name="kern">The kern.</param>
880 public void Write(Kernel kern)
881 {
882 if( kern == null )
883 {
884 throw new ArgumentNullException("kern");
885 }
886 m_Kernel = kern;
887 foreach(SolutionNode solution in kern.Solutions)
888 {
889 WriteCombine(solution);
890 }
891 m_Kernel = null;
892 }
893
894 /// <summary>
895 /// Cleans the specified kern.
896 /// </summary>
897 /// <param name="kern">The kern.</param>
898 public virtual void Clean(Kernel kern)
899 {
900 if( kern == null )
901 {
902 throw new ArgumentNullException("kern");
903 }
904 m_Kernel = kern;
905 foreach(SolutionNode sol in kern.Solutions)
906 {
907 CleanSolution(sol);
908 }
909 m_Kernel = null;
910 }
911
912 /// <summary>
913 /// Gets the name.
914 /// </summary>
915 /// <value>The name.</value>
916 public string Name
917 {
918 get
919 {
920 return "autotools";
921 }
922 }
923
924 #endregion
925 }
926}
diff --git a/Prebuild/src/Core/Targets/DebugTarget.cs b/Prebuild/src/Core/Targets/DebugTarget.cs
new file mode 100644
index 0000000..6baa623
--- /dev/null
+++ b/Prebuild/src/Core/Targets/DebugTarget.cs
@@ -0,0 +1,102 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-09-20 09:42:51 +0200 (on, 20 sep 2006) $
31 * $Revision: 164 $
32 */
33#endregion
34
35using System;
36
37using Prebuild.Core.Attributes;
38using Prebuild.Core.Interfaces;
39using Prebuild.Core.Nodes;
40
41#if (DEBUG && _DEBUG_TARGET)
42namespace Prebuild.Core.Targets
43{
44 [Target("debug")]
45 public class DebugTarget : ITarget
46 {
47#region Fields
48
49 private Kernel m_Kernel = null;
50
51#endregion
52
53#region ITarget Members
54
55 public void Write()
56 {
57 foreach(SolutionNode s in m_Kernel.Solutions)
58 {
59 Console.WriteLine("Solution [ {0}, {1} ]", s.Name, s.Path);
60 foreach(string file in s.Files)
61{
62 Console.WriteLine("\tFile [ {0} ]", file);
63}
64
65 foreach(ProjectNode proj in s.Projects)
66 {
67 Console.WriteLine("\tProject [ {0}, {1}. {2} ]", proj.Name, proj.Path, proj.Language);
68 foreach(string file in proj.Files)
69 Console.WriteLine("\t\tFile [ {0} ]", file);
70 }
71 }
72 }
73
74 public void Clean()
75 {
76 Console.WriteLine("Not implemented");
77 }
78
79 public string Name
80 {
81 get
82 {
83 return "debug";
84 }
85 }
86
87 public Kernel Kernel
88 {
89 get
90 {
91 return m_Kernel;
92 }
93 set
94 {
95 m_Kernel = value;
96 }
97 }
98
99#endregion
100 }
101}
102#endif
diff --git a/Prebuild/src/Core/Targets/MonoDevelopTarget.cs b/Prebuild/src/Core/Targets/MonoDevelopTarget.cs
new file mode 100644
index 0000000..8620e4b
--- /dev/null
+++ b/Prebuild/src/Core/Targets/MonoDevelopTarget.cs
@@ -0,0 +1,458 @@
1#region BSD License
2/*
3Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2007-02-13 22:07:07 +0100 (ti, 13 feb 2007) $
31 * $Revision: 206 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.IO;
39using System.Reflection;
40using System.Text.RegularExpressions;
41
42using Prebuild.Core.Attributes;
43using Prebuild.Core.Interfaces;
44using Prebuild.Core.Nodes;
45using Prebuild.Core.Utilities;
46
47namespace Prebuild.Core.Targets
48{
49 /// <summary>
50 ///
51 /// </summary>
52 [Target("monodev")]
53 public class MonoDevelopTarget : ITarget
54 {
55 #region Fields
56
57 private Kernel m_Kernel;
58
59 #endregion
60
61 #region Private Methods
62
63 private static string PrependPath(string path)
64 {
65 string tmpPath = Helper.NormalizePath(path, '/');
66 Regex regex = new Regex(@"(\w):/(\w+)");
67 Match match = regex.Match(tmpPath);
68 if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
69 {
70 tmpPath = Helper.NormalizePath(tmpPath);
71 }
72 else
73 {
74 tmpPath = Helper.NormalizePath("./" + tmpPath);
75 }
76
77 return tmpPath;
78 }
79
80 private static string BuildReference(SolutionNode solution, ReferenceNode refr)
81 {
82 string ret = "<ProjectReference type=\"";
83 if(solution.ProjectsTable.ContainsKey(refr.Name))
84 {
85 ret += "Project\"";
86 ret += " localcopy=\"" + refr.LocalCopy.ToString() + "\" refto=\"" + refr.Name + "\" />";
87 }
88 else
89 {
90 ProjectNode project = (ProjectNode)refr.Parent;
91 string fileRef = FindFileReference(refr.Name, project);
92
93 if(refr.Path != null || fileRef != null)
94 {
95 ret += "Assembly\" refto=\"";
96
97 string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef;
98
99 ret += finalPath;
100 ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />";
101 return ret;
102 }
103
104 ret += "Gac\"";
105 ret += " localcopy=\"" + refr.LocalCopy.ToString() + "\"";
106 ret += " refto=\"";
107 try
108 {
109 //Assembly assem = Assembly.Load(refr.Name);
110 //ret += assem.FullName;
111 ret += refr.Name;
112 }
113 catch (System.NullReferenceException e)
114 {
115 e.ToString();
116 ret += refr.Name;
117 }
118 ret += "\" />";
119 }
120
121 return ret;
122 }
123
124 private static string FindFileReference(string refName, ProjectNode project)
125 {
126 foreach(ReferencePathNode refPath in project.ReferencePaths)
127 {
128 string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
129
130 if(File.Exists(fullPath))
131 {
132 return fullPath;
133 }
134 }
135
136 return null;
137 }
138
139 /// <summary>
140 /// Gets the XML doc file.
141 /// </summary>
142 /// <param name="project">The project.</param>
143 /// <param name="conf">The conf.</param>
144 /// <returns></returns>
145 public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf)
146 {
147 if( conf == null )
148 {
149 throw new ArgumentNullException("conf");
150 }
151 if( project == null )
152 {
153 throw new ArgumentNullException("project");
154 }
155 string docFile = (string)conf.Options["XmlDocFile"];
156 if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
157 {
158 return "False";
159 }
160 return "True";
161 }
162
163 private void WriteProject(SolutionNode solution, ProjectNode project)
164 {
165 string csComp = "Mcs";
166 string netRuntime = "Mono";
167 if(project.Runtime == ClrRuntime.Microsoft)
168 {
169 csComp = "Csc";
170 netRuntime = "MsNet";
171 }
172
173 string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp");
174 StreamWriter ss = new StreamWriter(projFile);
175
176 m_Kernel.CurrentWorkingDirectory.Push();
177 Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
178
179 using(ss)
180 {
181 ss.WriteLine(
182 "<Project name=\"{0}\" description=\"\" standardNamespace=\"{1}\" newfilesearch=\"None\" enableviewstate=\"True\" fileversion=\"2.0\" language=\"C#\" clr-version=\"Net_2_0\" ctype=\"DotNetProject\">",
183 project.Name,
184 project.RootNamespace
185 );
186
187 int count = 0;
188
189 ss.WriteLine(" <Configurations active=\"{0}\">", solution.ActiveConfig);
190
191 foreach(ConfigurationNode conf in project.Configurations)
192 {
193 ss.WriteLine(" <Configuration name=\"{0}\" ctype=\"DotNetProjectConfiguration\">", conf.Name);
194 ss.Write(" <Output");
195 ss.Write(" directory=\"{0}\"", Helper.EndPath(Helper.NormalizePath(".\\" + conf.Options["OutputPath"].ToString())));
196 ss.Write(" assembly=\"{0}\"", project.AssemblyName);
197 ss.Write(" executeScript=\"{0}\"", conf.Options["RunScript"]);
198 //ss.Write(" executeBeforeBuild=\"{0}\"", conf.Options["PreBuildEvent"]);
199 //ss.Write(" executeAfterBuild=\"{0}\"", conf.Options["PostBuildEvent"]);
200 if (conf.Options["PreBuildEvent"] != null && conf.Options["PreBuildEvent"].ToString().Length != 0)
201 {
202 ss.Write(" executeBeforeBuild=\"{0}\"", Helper.NormalizePath(conf.Options["PreBuildEvent"].ToString()));
203 }
204 else
205 {
206 ss.Write(" executeBeforeBuild=\"{0}\"", conf.Options["PreBuildEvent"]);
207 }
208 if (conf.Options["PostBuildEvent"] != null && conf.Options["PostBuildEvent"].ToString().Length != 0)
209 {
210 ss.Write(" executeAfterBuild=\"{0}\"", Helper.NormalizePath(conf.Options["PostBuildEvent"].ToString()));
211 }
212 else
213 {
214 ss.Write(" executeAfterBuild=\"{0}\"", conf.Options["PostBuildEvent"]);
215 }
216 ss.Write(" executeBeforeBuildArguments=\"{0}\"", conf.Options["PreBuildEventArgs"]);
217 ss.Write(" executeAfterBuildArguments=\"{0}\"", conf.Options["PreBuildEventArgs"]);
218 ss.WriteLine(" />");
219
220 ss.Write(" <Build");
221 ss.Write(" debugmode=\"True\"");
222 if (project.Type == ProjectType.WinExe)
223 {
224 ss.Write(" target=\"{0}\"", ProjectType.Exe.ToString());
225 }
226 else
227 {
228 ss.Write(" target=\"{0}\"", project.Type);
229 }
230 ss.WriteLine(" />");
231
232 ss.Write(" <Execution");
233 ss.Write(" runwithwarnings=\"True\"");
234 ss.Write(" consolepause=\"True\"");
235 ss.Write(" runtime=\"{0}\"", netRuntime);
236 ss.Write(" clr-version=\"Net_2_0\"");
237 ss.WriteLine(" />");
238
239 ss.Write(" <CodeGeneration");
240 ss.Write(" compiler=\"{0}\"", csComp);
241 ss.Write(" warninglevel=\"{0}\"", conf.Options["WarningLevel"]);
242 ss.Write(" nowarn=\"{0}\"", conf.Options["SuppressWarnings"]);
243 ss.Write(" includedebuginformation=\"{0}\"", conf.Options["DebugInformation"]);
244 ss.Write(" optimize=\"{0}\"", conf.Options["OptimizeCode"]);
245 ss.Write(" unsafecodeallowed=\"{0}\"", conf.Options["AllowUnsafe"]);
246 ss.Write(" generateoverflowchecks=\"{0}\"", conf.Options["CheckUnderflowOverflow"]);
247 ss.Write(" mainclass=\"{0}\"", project.StartupObject);
248 ss.Write(" target=\"{0}\"", project.Type);
249 ss.Write(" definesymbols=\"{0}\"", conf.Options["CompilerDefines"]);
250 ss.Write(" generatexmldocumentation=\"{0}\"", GenerateXmlDocFile(project, conf));
251 ss.Write(" win32Icon=\"{0}\"", project.AppIcon);
252 ss.Write(" ctype=\"CSharpCompilerParameters\"");
253 ss.WriteLine(" />");
254 ss.WriteLine(" </Configuration>");
255
256 count++;
257 }
258 ss.WriteLine(" </Configurations>");
259
260 ss.Write(" <DeploymentInformation");
261 ss.Write(" target=\"\"");
262 ss.Write(" script=\"\"");
263 ss.Write(" strategy=\"File\"");
264 ss.WriteLine(">");
265 ss.WriteLine(" <excludeFiles />");
266 ss.WriteLine(" </DeploymentInformation>");
267
268 ss.WriteLine(" <Contents>");
269 foreach(string file in project.Files)
270 {
271 string buildAction = "Compile";
272 switch(project.Files.GetBuildAction(file))
273 {
274 case BuildAction.None:
275 buildAction = "Nothing";
276 break;
277
278 case BuildAction.Content:
279 buildAction = "Exclude";
280 break;
281
282 case BuildAction.EmbeddedResource:
283 buildAction = "EmbedAsResource";
284 break;
285
286 default:
287 buildAction = "Compile";
288 break;
289 }
290
291 // Sort of a hack, we try and resolve the path and make it relative, if we can.
292 string filePath = PrependPath(file);
293 ss.WriteLine(" <File name=\"{0}\" subtype=\"Code\" buildaction=\"{1}\" dependson=\"\" data=\"\" />", filePath, buildAction);
294 }
295 ss.WriteLine(" </Contents>");
296
297 ss.WriteLine(" <References>");
298 foreach(ReferenceNode refr in project.References)
299 {
300 ss.WriteLine(" {0}", BuildReference(solution, refr));
301 }
302 ss.WriteLine(" </References>");
303
304
305 ss.WriteLine("</Project>");
306 }
307
308 m_Kernel.CurrentWorkingDirectory.Pop();
309 }
310
311 private void WriteCombine(SolutionNode solution)
312 {
313 m_Kernel.Log.Write("Creating MonoDevelop combine and project files");
314 foreach(ProjectNode project in solution.Projects)
315 {
316 if(m_Kernel.AllowProject(project.FilterGroups))
317 {
318 m_Kernel.Log.Write("...Creating project: {0}", project.Name);
319 WriteProject(solution, project);
320 }
321 }
322
323 m_Kernel.Log.Write("");
324 string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds");
325 StreamWriter ss = new StreamWriter(combFile);
326
327 m_Kernel.CurrentWorkingDirectory.Push();
328 Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
329
330 int count = 0;
331
332 using(ss)
333 {
334 ss.WriteLine("<Combine name=\"{0}\" fileversion=\"2.0\" description=\"\">", solution.Name);
335
336 count = 0;
337 foreach(ConfigurationNode conf in solution.Configurations)
338 {
339 if(count == 0)
340 {
341 ss.WriteLine(" <Configurations active=\"{0}\">", conf.Name);
342 }
343
344 ss.WriteLine(" <Configuration name=\"{0}\" ctype=\"CombineConfiguration\">", conf.Name);
345 foreach(ProjectNode project in solution.Projects)
346 {
347 ss.WriteLine(" <Entry configuration=\"{1}\" build=\"True\" name=\"{0}\" />", project.Name, conf.Name);
348 }
349 ss.WriteLine(" </Configuration>");
350
351 count++;
352 }
353 ss.WriteLine(" </Configurations>");
354
355 count = 0;
356
357 foreach(ProjectNode project in solution.Projects)
358 {
359 if(count == 0)
360 ss.WriteLine(" <StartMode startupentry=\"{0}\" single=\"True\">", project.Name);
361
362 ss.WriteLine(" <Execute type=\"None\" entry=\"{0}\" />", project.Name);
363 count++;
364 }
365 ss.WriteLine(" </StartMode>");
366
367 ss.WriteLine(" <Entries>");
368 foreach(ProjectNode project in solution.Projects)
369 {
370 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
371 ss.WriteLine(" <Entry filename=\"{0}\" />",
372 Helper.MakeFilePath(path, project.Name, "mdp"));
373 }
374 ss.WriteLine(" </Entries>");
375
376 ss.WriteLine("</Combine>");
377 }
378
379 m_Kernel.CurrentWorkingDirectory.Pop();
380 }
381
382 private void CleanProject(ProjectNode project)
383 {
384 m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
385 string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp");
386 Helper.DeleteIfExists(projectFile);
387 }
388
389 private void CleanSolution(SolutionNode solution)
390 {
391 m_Kernel.Log.Write("Cleaning MonoDevelop combine and project files for", solution.Name);
392
393 string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds");
394 Helper.DeleteIfExists(slnFile);
395
396 foreach(ProjectNode project in solution.Projects)
397 {
398 CleanProject(project);
399 }
400
401 m_Kernel.Log.Write("");
402 }
403
404 #endregion
405
406 #region ITarget Members
407
408 /// <summary>
409 /// Writes the specified kern.
410 /// </summary>
411 /// <param name="kern">The kern.</param>
412 public void Write(Kernel kern)
413 {
414 if( kern == null )
415 {
416 throw new ArgumentNullException("kern");
417 }
418 m_Kernel = kern;
419 foreach(SolutionNode solution in kern.Solutions)
420 {
421 WriteCombine(solution);
422 }
423 m_Kernel = null;
424 }
425
426 /// <summary>
427 /// Cleans the specified kern.
428 /// </summary>
429 /// <param name="kern">The kern.</param>
430 public virtual void Clean(Kernel kern)
431 {
432 if( kern == null )
433 {
434 throw new ArgumentNullException("kern");
435 }
436 m_Kernel = kern;
437 foreach(SolutionNode sol in kern.Solutions)
438 {
439 CleanSolution(sol);
440 }
441 m_Kernel = null;
442 }
443
444 /// <summary>
445 /// Gets the name.
446 /// </summary>
447 /// <value>The name.</value>
448 public string Name
449 {
450 get
451 {
452 return "sharpdev";
453 }
454 }
455
456 #endregion
457 }
458}
diff --git a/Prebuild/src/Core/Targets/NAntTarget.cs b/Prebuild/src/Core/Targets/NAntTarget.cs
new file mode 100644
index 0000000..0f0deb2
--- /dev/null
+++ b/Prebuild/src/Core/Targets/NAntTarget.cs
@@ -0,0 +1,621 @@
1#region BSD License
2/*
3Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2007-02-13 21:58:03 +0100 (ti, 13 feb 2007) $
31 * $Revision: 205 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.IO;
39using System.Reflection;
40using System.Text.RegularExpressions;
41
42using Prebuild.Core.Attributes;
43using Prebuild.Core.Interfaces;
44using Prebuild.Core.Nodes;
45using Prebuild.Core.Utilities;
46
47namespace Prebuild.Core.Targets
48{
49 /// <summary>
50 ///
51 /// </summary>
52 [Target("nant")]
53 public class NAntTarget : ITarget
54 {
55 #region Fields
56
57 private Kernel m_Kernel;
58
59 #endregion
60
61 #region Private Methods
62
63 private static string PrependPath(string path)
64 {
65 string tmpPath = Helper.NormalizePath(path, '/');
66 Regex regex = new Regex(@"(\w):/(\w+)");
67 Match match = regex.Match(tmpPath);
68 //if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
69 //{
70 tmpPath = Helper.NormalizePath(tmpPath);
71 //}
72// else
73// {
74// tmpPath = Helper.NormalizePath("./" + tmpPath);
75// }
76
77 return tmpPath;
78 }
79
80 private static string BuildReference(SolutionNode solution, ProjectNode currentProject, ReferenceNode refr)
81 {
82 string ret = "";
83 if(solution.ProjectsTable.ContainsKey(refr.Name))
84 {
85 ProjectNode project = (ProjectNode)solution.ProjectsTable[refr.Name];
86
87 string finalPath = Helper.NormalizePath(((ReferencePathNode)currentProject.ReferencePaths[0]).Path + refr.Name + ".dll", '/');
88
89 return finalPath;
90 }
91 else
92 {
93 ProjectNode project = (ProjectNode)refr.Parent;
94 string fileRef = FindFileReference(refr.Name, project);
95
96 if(refr.Path != null || fileRef != null)
97 {
98 string finalPath = (refr.Path != null) ? Helper.NormalizePath(refr.Path + "/" + refr.Name + ".dll", '/') : fileRef;
99 ret += finalPath;
100 return ret;
101 }
102
103 try
104 {
105 //Assembly assem = Assembly.Load(refr.Name);
106 //if (assem != null)
107 //{
108 //ret += (refr.Name + ".dll");
109 //}
110 //else
111 //{
112 ret += (refr.Name + ".dll");
113 //}
114 }
115 catch (System.NullReferenceException e)
116 {
117 e.ToString();
118 ret += refr.Name + ".dll";
119 }
120 }
121 return ret;
122 }
123
124 private static string BuildReferencePath(SolutionNode solution, ReferenceNode refr)
125 {
126 string ret = "";
127 if(solution.ProjectsTable.ContainsKey(refr.Name))
128 {
129 ProjectNode project = (ProjectNode)solution.ProjectsTable[refr.Name];
130 string finalPath = Helper.NormalizePath(((ReferencePathNode)project.ReferencePaths[0]).Path, '/');
131
132 return finalPath;
133 }
134 else
135 {
136 ProjectNode project = (ProjectNode)refr.Parent;
137 string fileRef = FindFileReference(refr.Name, project);
138
139 if(refr.Path != null || fileRef != null)
140 {
141 string finalPath = (refr.Path != null) ? Helper.NormalizePath(refr.Path, '/') : fileRef;
142 ret += finalPath;
143 return ret;
144 }
145
146 try
147 {
148 Assembly assem = Assembly.Load(refr.Name);
149 if (assem != null)
150 {
151 ret += "";
152 }
153 else
154 {
155 ret += "";
156 }
157 }
158 catch (System.NullReferenceException e)
159 {
160 e.ToString();
161 ret += "";
162 }
163 }
164 return ret;
165 }
166
167 private static string FindFileReference(string refName, ProjectNode project)
168 {
169 foreach(ReferencePathNode refPath in project.ReferencePaths)
170 {
171 string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
172
173 if(File.Exists(fullPath))
174 {
175 return fullPath;
176 }
177 }
178
179 return null;
180 }
181
182 /// <summary>
183 /// Gets the XML doc file.
184 /// </summary>
185 /// <param name="project">The project.</param>
186 /// <param name="conf">The conf.</param>
187 /// <returns></returns>
188 public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf)
189 {
190 if( conf == null )
191 {
192 throw new ArgumentNullException("conf");
193 }
194 if( project == null )
195 {
196 throw new ArgumentNullException("project");
197 }
198 string docFile = (string)conf.Options["XmlDocFile"];
199 // if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
200 // {
201 // return Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml";
202 // }
203 return docFile;
204 }
205
206 private void WriteProject(SolutionNode solution, ProjectNode project)
207 {
208 string projFile = Helper.MakeFilePath(project.FullPath, project.Name + (project.Type == ProjectType.Library ? ".dll" : ".exe"), "build");
209 StreamWriter ss = new StreamWriter(projFile);
210
211 m_Kernel.CurrentWorkingDirectory.Push();
212 Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
213 bool hasDoc = false;
214
215 using(ss)
216 {
217 ss.WriteLine("<?xml version=\"1.0\" ?>");
218 ss.WriteLine("<project name=\"{0}\" default=\"build\">", project.Name);
219 ss.WriteLine(" <target name=\"{0}\">", "build");
220 ss.WriteLine(" <echo message=\"Build Directory is ${project::get-base-directory()}/${build.dir}\" />");
221 ss.WriteLine(" <mkdir dir=\"${project::get-base-directory()}/${build.dir}\" />");
222 ss.WriteLine(" <copy todir=\"${project::get-base-directory()}/${build.dir}\">");
223 ss.WriteLine(" <fileset basedir=\"${project::get-base-directory()}\">");
224 foreach(ReferenceNode refr in project.References)
225 {
226 if (refr.LocalCopy)
227 {
228 ss.WriteLine(" <include name=\"{0}", Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReference(solution, project, refr))+"\" />", '/'));
229 }
230 }
231 ss.WriteLine(" </fileset>");
232 ss.WriteLine(" </copy>");
233 ss.Write(" <csc");
234 ss.Write(" target=\"{0}\"", project.Type.ToString().ToLower());
235 ss.Write(" debug=\"{0}\"", "${build.debug}");
236 foreach(ConfigurationNode conf in project.Configurations)
237 {
238 if (conf.Options.KeyFile !="")
239 {
240 ss.Write(" keyfile=\"{0}\"", conf.Options.KeyFile);
241 break;
242 }
243 }
244 foreach(ConfigurationNode conf in project.Configurations)
245 {
246 ss.Write(" unsafe=\"{0}\"", conf.Options.AllowUnsafe);
247 break;
248 }
249 foreach(ConfigurationNode conf in project.Configurations)
250 {
251 ss.Write(" define=\"{0}\"", conf.Options.CompilerDefines);
252 break;
253 }
254 foreach(ConfigurationNode conf in project.Configurations)
255 {
256 if (GetXmlDocFile(project, conf) !="")
257 {
258 ss.Write(" doc=\"{0}\"", "${project::get-base-directory()}/${build.dir}/" + GetXmlDocFile(project, conf));
259 hasDoc = true;
260 }
261 break;
262 }
263 ss.Write(" output=\"{0}", "${project::get-base-directory()}/${build.dir}/${project::get-name()}");
264 if (project.Type == ProjectType.Library)
265 {
266 ss.Write(".dll\"");
267 }
268 else
269 {
270 ss.Write(".exe\"");
271 }
272 if(project.AppIcon != null && project.AppIcon.Length != 0)
273 {
274 ss.Write(" win32icon=\"{0}\"", Helper.NormalizePath(project.AppIcon,'/'));
275 }
276 ss.WriteLine(">");
277 ss.WriteLine(" <resources prefix=\"{0}\" dynamicprefix=\"true\" >", project.RootNamespace);
278 foreach (string file in project.Files)
279 {
280 switch (project.Files.GetBuildAction(file))
281 {
282 case BuildAction.EmbeddedResource:
283 ss.WriteLine(" {0}", "<include name=\"" + Helper.NormalizePath(PrependPath(file), '/') + "\" />");
284 break;
285 default:
286 if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
287 {
288 ss.WriteLine(" <include name=\"{0}\" />", file.Substring(0, file.LastIndexOf('.')) + ".resx");
289 }
290 break;
291 }
292 }
293 //if (project.Files.GetSubType(file).ToString() != "Code")
294 //{
295 // ps.WriteLine(" <EmbeddedResource Include=\"{0}\">", file.Substring(0, file.LastIndexOf('.')) + ".resx");
296
297 ss.WriteLine(" </resources>");
298 ss.WriteLine(" <sources failonempty=\"true\">");
299 foreach(string file in project.Files)
300 {
301 switch(project.Files.GetBuildAction(file))
302 {
303 case BuildAction.Compile:
304 ss.WriteLine(" <include name=\"" + Helper.NormalizePath(PrependPath(file), '/') + "\" />");
305 break;
306 default:
307 break;
308 }
309 }
310 ss.WriteLine(" </sources>");
311 ss.WriteLine(" <references basedir=\"${project::get-base-directory()}\">");
312 ss.WriteLine(" <lib>");
313 ss.WriteLine(" <include name=\"${project::get-base-directory()}\" />");
314 ss.WriteLine(" <include name=\"${project::get-base-directory()}/${build.dir}\" />");
315 ss.WriteLine(" </lib>");
316 foreach(ReferenceNode refr in project.References)
317 {
318 string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReference(solution, project, refr)), '/');
319 ss.WriteLine(" <include name=\""+ path + "\" />" );
320 }
321 ss.WriteLine(" </references>");
322
323 ss.WriteLine(" </csc>");
324
325 foreach (ConfigurationNode conf in project.Configurations)
326 {
327 if (!String.IsNullOrEmpty(conf.Options.OutputPath))
328 {
329 string targetDir = Helper.NormalizePath(conf.Options.OutputPath, '/');
330
331 ss.WriteLine(" <echo message=\"Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/" + targetDir + "\" />");
332
333 ss.WriteLine(" <mkdir dir=\"${project::get-base-directory()}/" + targetDir + "\"/>");
334
335 ss.WriteLine(" <copy todir=\"${project::get-base-directory()}/" + targetDir + "\">");
336 ss.WriteLine(" <fileset basedir=\"${project::get-base-directory()}/${build.dir}/\" >");
337 ss.WriteLine(" <include name=\"*.dll\"/>");
338 ss.WriteLine(" <include name=\"*.exe\"/>");
339 ss.WriteLine(" </fileset>");
340 ss.WriteLine(" </copy>");
341 break;
342 }
343 }
344
345 ss.WriteLine(" </target>");
346
347 ss.WriteLine(" <target name=\"clean\">");
348 ss.WriteLine(" <delete dir=\"${bin.dir}\" failonerror=\"false\" />");
349 ss.WriteLine(" <delete dir=\"${obj.dir}\" failonerror=\"false\" />");
350 ss.WriteLine(" </target>");
351
352 ss.WriteLine(" <target name=\"doc\" description=\"Creates documentation.\">");
353 if (hasDoc)
354 {
355 ss.WriteLine(" <property name=\"doc.target\" value=\"\" />");
356 ss.WriteLine(" <if test=\"${platform::is-unix()}\">");
357 ss.WriteLine(" <property name=\"doc.target\" value=\"Web\" />");
358 ss.WriteLine(" </if>");
359 ss.WriteLine(" <ndoc failonerror=\"false\" verbose=\"true\">");
360 ss.WriteLine(" <assemblies basedir=\"${project::get-base-directory()}\">");
361 ss.Write(" <include name=\"${build.dir}/${project::get-name()}");
362 if (project.Type == ProjectType.Library)
363 {
364 ss.WriteLine(".dll\" />");
365 }
366 else
367 {
368 ss.WriteLine(".exe\" />");
369 }
370
371 ss.WriteLine(" </assemblies>");
372 ss.WriteLine(" <summaries basedir=\"${project::get-base-directory()}\">");
373 ss.WriteLine(" <include name=\"${build.dir}/${project::get-name()}.xml\"/>");
374 ss.WriteLine(" </summaries>");
375 ss.WriteLine(" <referencepaths basedir=\"${project::get-base-directory()}\">");
376 ss.WriteLine(" <include name=\"${build.dir}\" />");
377 // foreach(ReferenceNode refr in project.References)
378 // {
379 // string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReferencePath(solution, refr)), '/');
380 // if (path != "")
381 // {
382 // ss.WriteLine(" <include name=\"{0}\" />", path);
383 // }
384 // }
385 ss.WriteLine(" </referencepaths>");
386 ss.WriteLine(" <documenters>");
387 ss.WriteLine(" <documenter name=\"MSDN\">");
388 ss.WriteLine(" <property name=\"OutputDirectory\" value=\"${project::get-base-directory()}/${build.dir}/doc/${project::get-name()}\" />");
389 ss.WriteLine(" <property name=\"OutputTarget\" value=\"${doc.target}\" />");
390 ss.WriteLine(" <property name=\"HtmlHelpName\" value=\"${project::get-name()}\" />");
391 ss.WriteLine(" <property name=\"IncludeFavorites\" value=\"False\" />");
392 ss.WriteLine(" <property name=\"Title\" value=\"${project::get-name()} SDK Documentation\" />");
393 ss.WriteLine(" <property name=\"SplitTOCs\" value=\"False\" />");
394 ss.WriteLine(" <property name=\"DefaulTOC\" value=\"\" />");
395 ss.WriteLine(" <property name=\"ShowVisualBasic\" value=\"True\" />");
396 ss.WriteLine(" <property name=\"AutoDocumentConstructors\" value=\"True\" />");
397 ss.WriteLine(" <property name=\"ShowMissingSummaries\" value=\"${build.debug}\" />");
398 ss.WriteLine(" <property name=\"ShowMissingRemarks\" value=\"${build.debug}\" />");
399 ss.WriteLine(" <property name=\"ShowMissingParams\" value=\"${build.debug}\" />");
400 ss.WriteLine(" <property name=\"ShowMissingReturns\" value=\"${build.debug}\" />");
401 ss.WriteLine(" <property name=\"ShowMissingValues\" value=\"${build.debug}\" />");
402 ss.WriteLine(" <property name=\"DocumentInternals\" value=\"False\" />");
403 ss.WriteLine(" <property name=\"DocumentPrivates\" value=\"False\" />");
404 ss.WriteLine(" <property name=\"DocumentProtected\" value=\"True\" />");
405 ss.WriteLine(" <property name=\"DocumentEmptyNamespaces\" value=\"${build.debug}\" />");
406 ss.WriteLine(" <property name=\"IncludeAssemblyVersion\" value=\"True\" />");
407 ss.WriteLine(" </documenter>");
408 ss.WriteLine(" </documenters>");
409 ss.WriteLine(" </ndoc>");
410 }
411 ss.WriteLine(" </target>");
412 ss.WriteLine("</project>");
413 }
414 m_Kernel.CurrentWorkingDirectory.Pop();
415 }
416
417 private void WriteCombine(SolutionNode solution)
418 {
419 m_Kernel.Log.Write("Creating NAnt build files");
420 foreach(ProjectNode project in solution.Projects)
421 {
422 if(m_Kernel.AllowProject(project.FilterGroups))
423 {
424 m_Kernel.Log.Write("...Creating project: {0}", project.Name);
425 WriteProject(solution, project);
426 }
427 }
428
429 m_Kernel.Log.Write("");
430 string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "build");
431 StreamWriter ss = new StreamWriter(combFile);
432
433 m_Kernel.CurrentWorkingDirectory.Push();
434 Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
435
436 using(ss)
437 {
438 ss.WriteLine("<?xml version=\"1.0\" ?>");
439 ss.WriteLine("<project name=\"{0}\" default=\"build\">", solution.Name);
440 ss.WriteLine(" <echo message=\"Using '${nant.settings.currentframework}' Framework\"/>");
441 ss.WriteLine();
442
443 //ss.WriteLine(" <property name=\"dist.dir\" value=\"dist\" />");
444 //ss.WriteLine(" <property name=\"source.dir\" value=\"source\" />");
445 ss.WriteLine(" <property name=\"bin.dir\" value=\"bin\" />");
446 ss.WriteLine(" <property name=\"obj.dir\" value=\"obj\" />");
447 ss.WriteLine(" <property name=\"doc.dir\" value=\"doc\" />");
448 ss.WriteLine(" <property name=\"project.main.dir\" value=\"${project::get-base-directory()}\" />");
449
450 foreach(ConfigurationNode conf in solution.Configurations)
451 {
452 // Set the project.config to a non-debug configuration
453 if( conf.Options["DebugInformation"].ToString().ToLower() != "true" )
454 {
455 ss.WriteLine(" <property name=\"project.config\" value=\"{0}\" />", conf.Name);
456 }
457 ss.WriteLine();
458 ss.WriteLine(" <target name=\"{0}\" description=\"\">", conf.Name);
459 ss.WriteLine(" <property name=\"project.config\" value=\"{0}\" />", conf.Name);
460 ss.WriteLine(" <property name=\"build.debug\" value=\"{0}\" />", conf.Options["DebugInformation"].ToString().ToLower());
461 ss.WriteLine(" </target>");
462 ss.WriteLine();
463 }
464
465 ss.WriteLine(" <target name=\"net-1.1\" description=\"Sets framework to .NET 1.1\">");
466 ss.WriteLine(" <property name=\"nant.settings.currentframework\" value=\"net-1.1\" />");
467 ss.WriteLine(" </target>");
468 ss.WriteLine();
469
470 ss.WriteLine(" <target name=\"net-2.0\" description=\"Sets framework to .NET 2.0\">");
471 ss.WriteLine(" <property name=\"nant.settings.currentframework\" value=\"net-2.0\" />");
472 ss.WriteLine(" </target>");
473 ss.WriteLine();
474
475 ss.WriteLine(" <target name=\"mono-2.0\" description=\"Sets framework to mono 2.0\">");
476 ss.WriteLine(" <property name=\"nant.settings.currentframework\" value=\"mono-2.0\" />");
477 ss.WriteLine(" </target>");
478 ss.WriteLine();
479
480 ss.WriteLine(" <target name=\"mono-1.0\" description=\"Sets framework to mono 1.0\">");
481 ss.WriteLine(" <property name=\"nant.settings.currentframework\" value=\"mono-1.0\" />");
482 ss.WriteLine(" </target>");
483 ss.WriteLine();
484
485 ss.WriteLine(" <target name=\"init\" description=\"\">");
486 ss.WriteLine(" <call target=\"${project.config}\" />");
487 ss.WriteLine(" <sysinfo />");
488 ss.WriteLine(" <echo message=\"Platform ${sys.os.platform}\" />");
489 ss.WriteLine(" <property name=\"build.dir\" value=\"${bin.dir}/${project.config}\" />");
490 ss.WriteLine(" </target>");
491 ss.WriteLine();
492
493 ss.WriteLine(" <target name=\"clean\" description=\"\">");
494 ss.WriteLine(" <echo message=\"Deleting all builds from all configurations\" />");
495 //ss.WriteLine(" <delete dir=\"${dist.dir}\" failonerror=\"false\" />");
496 ss.WriteLine(" <delete dir=\"${bin.dir}\" failonerror=\"false\" />");
497 ss.WriteLine(" <delete dir=\"${obj.dir}\" failonerror=\"false\" />");
498 foreach(ProjectNode project in solution.Projects)
499 {
500 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
501 ss.Write(" <nant buildfile=\"{0}\"",
502 Helper.NormalizePath(Helper.MakeFilePath(path, project.Name + (project.Type == ProjectType.Library ? ".dll" : ".exe"), "build"),'/'));
503 ss.WriteLine(" target=\"clean\" />");
504 }
505 ss.WriteLine(" </target>");
506 ss.WriteLine();
507
508 ss.WriteLine(" <target name=\"build\" depends=\"init\" description=\"\">");
509
510 foreach(ProjectNode project in solution.ProjectsTableOrder)
511 {
512 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
513 ss.Write(" <nant buildfile=\"{0}\"",
514 Helper.NormalizePath(Helper.MakeFilePath(path, project.Name + (project.Type == ProjectType.Library ? ".dll" : ".exe"), "build"),'/'));
515 ss.WriteLine(" target=\"build\" />");
516 }
517 ss.WriteLine(" </target>");
518 ss.WriteLine();
519
520 ss.WriteLine(" <target name=\"build-release\" depends=\"Release, init, build\" description=\"Builds in Release mode\" />");
521 ss.WriteLine();
522 ss.WriteLine(" <target name=\"build-debug\" depends=\"Debug, init, build\" description=\"Builds in Debug mode\" />");
523 ss.WriteLine();
524 //ss.WriteLine(" <target name=\"package\" depends=\"clean, doc, copyfiles, zip\" description=\"Builds in Release mode\" />");
525 ss.WriteLine(" <target name=\"package\" depends=\"clean, doc\" description=\"Builds all\" />");
526 ss.WriteLine();
527
528 ss.WriteLine(" <target name=\"doc\" depends=\"build-release\">");
529 ss.WriteLine(" <echo message=\"Generating all documentation from all builds\" />");
530 foreach (ProjectNode project in solution.Projects)
531 {
532 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
533 ss.Write(" <nant buildfile=\"{0}\"",
534 Helper.NormalizePath(Helper.MakeFilePath(path, project.Name + (project.Type == ProjectType.Library ? ".dll" : ".exe"), "build"), '/'));
535 ss.WriteLine(" target=\"doc\" />");
536 }
537 ss.WriteLine(" </target>");
538 ss.WriteLine();
539 ss.WriteLine("</project>");
540 }
541
542 m_Kernel.CurrentWorkingDirectory.Pop();
543 }
544
545 private void CleanProject(ProjectNode project)
546 {
547 m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
548 string projectFile = Helper.MakeFilePath(project.FullPath, project.Name + (project.Type == ProjectType.Library ? ".dll" : ".exe"), "build");
549 Helper.DeleteIfExists(projectFile);
550 }
551
552 private void CleanSolution(SolutionNode solution)
553 {
554 m_Kernel.Log.Write("Cleaning NAnt build files for", solution.Name);
555
556 string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "build");
557 Helper.DeleteIfExists(slnFile);
558
559 foreach(ProjectNode project in solution.Projects)
560 {
561 CleanProject(project);
562 }
563
564 m_Kernel.Log.Write("");
565 }
566
567 #endregion
568
569 #region ITarget Members
570
571 /// <summary>
572 /// Writes the specified kern.
573 /// </summary>
574 /// <param name="kern">The kern.</param>
575 public void Write(Kernel kern)
576 {
577 if( kern == null )
578 {
579 throw new ArgumentNullException("kern");
580 }
581 m_Kernel = kern;
582 foreach(SolutionNode solution in kern.Solutions)
583 {
584 WriteCombine(solution);
585 }
586 m_Kernel = null;
587 }
588
589 /// <summary>
590 /// Cleans the specified kern.
591 /// </summary>
592 /// <param name="kern">The kern.</param>
593 public virtual void Clean(Kernel kern)
594 {
595 if( kern == null )
596 {
597 throw new ArgumentNullException("kern");
598 }
599 m_Kernel = kern;
600 foreach(SolutionNode sol in kern.Solutions)
601 {
602 CleanSolution(sol);
603 }
604 m_Kernel = null;
605 }
606
607 /// <summary>
608 /// Gets the name.
609 /// </summary>
610 /// <value>The name.</value>
611 public string Name
612 {
613 get
614 {
615 return "nant";
616 }
617 }
618
619 #endregion
620 }
621}
diff --git a/Prebuild/src/Core/Targets/SharpDevelop2Target.cs b/Prebuild/src/Core/Targets/SharpDevelop2Target.cs
new file mode 100644
index 0000000..bc84b96
--- /dev/null
+++ b/Prebuild/src/Core/Targets/SharpDevelop2Target.cs
@@ -0,0 +1,90 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-27 16:49:58 -0800 (Fri, 27 Jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36
37using Prebuild.Core.Attributes;
38
39namespace Prebuild.Core.Targets
40{
41 /// <summary>
42 ///
43 /// </summary>
44 [Target("sharpdev2")]
45 public class SharpDevelop2Target : VS2005Target
46 {
47 #region Private Methods
48 private void SetSharpDevelop2()
49 {
50 this.VersionName = "SharpDevelop2";
51 }
52 #endregion
53
54 #region Public Methods
55
56 /// <summary>
57 /// Writes the specified kern.
58 /// </summary>
59 /// <param name="kern">The kern.</param>
60 public override void Write(Kernel kern)
61 {
62 SetSharpDevelop2();
63 base.Write(kern);
64 }
65
66 /// <summary>
67 /// Cleans the specified kern.
68 /// </summary>
69 /// <param name="kern">The kern.</param>
70 public override void Clean(Kernel kern)
71 {
72 SetSharpDevelop2();
73 base.Clean(kern);
74 }
75
76 /// <summary>
77 /// Gets the name.
78 /// </summary>
79 /// <value>The name.</value>
80 public override string Name
81 {
82 get
83 {
84 return "sharpdev2";
85 }
86 }
87
88 #endregion
89 }
90}
diff --git a/Prebuild/src/Core/Targets/SharpDevelopTarget.cs b/Prebuild/src/Core/Targets/SharpDevelopTarget.cs
new file mode 100644
index 0000000..c725730
--- /dev/null
+++ b/Prebuild/src/Core/Targets/SharpDevelopTarget.cs
@@ -0,0 +1,437 @@
1#region BSD License
2/*
3Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2007-02-13 21:58:03 +0100 (ti, 13 feb 2007) $
31 * $Revision: 205 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.IO;
39using System.Text.RegularExpressions;
40using System.Reflection;
41
42using Prebuild.Core.Attributes;
43using Prebuild.Core.Interfaces;
44using Prebuild.Core.Nodes;
45using Prebuild.Core.Utilities;
46
47namespace Prebuild.Core.Targets
48{
49 /// <summary>
50 ///
51 /// </summary>
52 [Target("sharpdev")]
53 public class SharpDevelopTarget : ITarget
54 {
55 #region Fields
56
57 private Kernel m_Kernel;
58
59 #endregion
60
61 #region Private Methods
62
63 private static string PrependPath(string path)
64 {
65 string tmpPath = Helper.NormalizePath(path, '/');
66 Regex regex = new Regex(@"(\w):/(\w+)");
67 Match match = regex.Match(tmpPath);
68 if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/')
69 {
70 tmpPath = Helper.NormalizePath(tmpPath);
71 }
72 else
73 {
74 tmpPath = Helper.NormalizePath("./" + tmpPath);
75 }
76
77 return tmpPath;
78 }
79
80 private static string BuildReference(SolutionNode solution, ReferenceNode refr)
81 {
82 string ret = "<Reference type=\"";
83 if(solution.ProjectsTable.ContainsKey(refr.Name))
84 {
85 ret += "Project\" refto=\"" + refr.Name;
86 ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />";
87 }
88 else
89 {
90 ProjectNode project = (ProjectNode)refr.Parent;
91 string fileRef = FindFileReference(refr.Name, project);
92
93 if(refr.Path != null || fileRef != null)
94 {
95 ret += "Assembly\" refto=\"";
96
97 string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef;
98
99 ret += finalPath;
100 ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />";
101 return ret;
102 }
103
104 ret += "Gac\" refto=\"";
105 try
106 {
107 //Assembly assem = Assembly.Load(refr.Name);
108 ret += refr.Name;// assem.FullName;
109 }
110 catch (System.NullReferenceException e)
111 {
112 e.ToString();
113 ret += refr.Name;
114 }
115 ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />";
116 }
117
118 return ret;
119 }
120
121 private static string FindFileReference(string refName, ProjectNode project)
122 {
123 foreach(ReferencePathNode refPath in project.ReferencePaths)
124 {
125 string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll");
126
127 if(File.Exists(fullPath))
128 {
129 return fullPath;
130 }
131 }
132
133 return null;
134 }
135
136 /// <summary>
137 /// Gets the XML doc file.
138 /// </summary>
139 /// <param name="project">The project.</param>
140 /// <param name="conf">The conf.</param>
141 /// <returns></returns>
142 public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf)
143 {
144 if( conf == null )
145 {
146 throw new ArgumentNullException("conf");
147 }
148 if( project == null )
149 {
150 throw new ArgumentNullException("project");
151 }
152 string docFile = (string)conf.Options["XmlDocFile"];
153 if(docFile != null && docFile.Length == 0)//default to assembly name if not specified
154 {
155 return "False";
156 }
157 return "True";
158 }
159
160 private void WriteProject(SolutionNode solution, ProjectNode project)
161 {
162 string csComp = "Csc";
163 string netRuntime = "MsNet";
164 if(project.Runtime == ClrRuntime.Mono)
165 {
166 csComp = "Mcs";
167 netRuntime = "Mono";
168 }
169
170 string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx");
171 StreamWriter ss = new StreamWriter(projFile);
172
173 m_Kernel.CurrentWorkingDirectory.Push();
174 Helper.SetCurrentDir(Path.GetDirectoryName(projFile));
175
176 using(ss)
177 {
178 ss.WriteLine(
179 "<Project name=\"{0}\" standardNamespace=\"{1}\" description=\"\" newfilesearch=\"None\" enableviewstate=\"True\" version=\"1.1\" projecttype=\"C#\">",
180 project.Name,
181 project.RootNamespace
182 );
183
184 ss.WriteLine(" <Contents>");
185 foreach(string file in project.Files)
186 {
187 string buildAction = "Compile";
188 switch(project.Files.GetBuildAction(file))
189 {
190 case BuildAction.None:
191 buildAction = "Nothing";
192 break;
193
194 case BuildAction.Content:
195 buildAction = "Exclude";
196 break;
197
198 case BuildAction.EmbeddedResource:
199 buildAction = "EmbedAsResource";
200 break;
201
202 default:
203 buildAction = "Compile";
204 break;
205 }
206
207 // Sort of a hack, we try and resolve the path and make it relative, if we can.
208 string filePath = PrependPath(file);
209 ss.WriteLine(" <File name=\"{0}\" subtype=\"Code\" buildaction=\"{1}\" dependson=\"\" data=\"\" />", filePath, buildAction);
210 }
211 ss.WriteLine(" </Contents>");
212
213 ss.WriteLine(" <References>");
214 foreach(ReferenceNode refr in project.References)
215 {
216 ss.WriteLine(" {0}", BuildReference(solution, refr));
217 }
218 ss.WriteLine(" </References>");
219
220 ss.Write(" <DeploymentInformation");
221 ss.Write(" target=\"\"");
222 ss.Write(" script=\"\"");
223 ss.Write(" strategy=\"File\"");
224 ss.WriteLine(" />");
225
226 int count = 0;
227
228 ss.WriteLine(" <Configurations active=\"{0}\">", solution.ActiveConfig);
229
230 foreach(ConfigurationNode conf in project.Configurations)
231 {
232 ss.Write(" <Configuration");
233 ss.Write(" runwithwarnings=\"True\"");
234 ss.Write(" name=\"{0}\"", conf.Name);
235 ss.WriteLine(">");
236 ss.Write(" <CodeGeneration");
237 ss.Write(" runtime=\"{0}\"", netRuntime);
238 ss.Write(" compiler=\"{0}\"", csComp);
239 ss.Write(" compilerversion=\"\"");
240 ss.Write(" warninglevel=\"{0}\"", conf.Options["WarningLevel"]);
241 ss.Write(" nowarn=\"{0}\"", conf.Options["SuppressWarnings"]);
242 ss.Write(" includedebuginformation=\"{0}\"", conf.Options["DebugInformation"]);
243 ss.Write(" optimize=\"{0}\"", conf.Options["OptimizeCode"]);
244 ss.Write(" unsafecodeallowed=\"{0}\"", conf.Options["AllowUnsafe"]);
245 ss.Write(" generateoverflowchecks=\"{0}\"", conf.Options["CheckUnderflowOverflow"]);
246 ss.Write(" mainclass=\"{0}\"", project.StartupObject);
247 ss.Write(" target=\"{0}\"", project.Type);
248 ss.Write(" definesymbols=\"{0}\"", conf.Options["CompilerDefines"]);
249 ss.Write(" generatexmldocumentation=\"{0}\"", GenerateXmlDocFile(project, conf));
250 ss.Write(" win32Icon=\"{0}\"", Helper.NormalizePath(".\\" + project.AppIcon));
251 ss.Write(" noconfig=\"{0}\"", "False");
252 ss.Write(" nostdlib=\"{0}\"", conf.Options["NoStdLib"]);
253 ss.WriteLine(" />");
254
255 ss.Write(" <Execution");
256 ss.Write(" commandlineparameters=\"\"");
257 ss.Write(" consolepause=\"True\"");
258 ss.WriteLine(" />");
259
260 ss.Write(" <Output");
261 ss.Write(" directory=\".\\{0}\"", Helper.NormalizePath(conf.Options["OutputPath"].ToString()));
262 ss.Write(" assembly=\"{0}\"", project.AssemblyName);
263 ss.Write(" executeScript=\"{0}\"", conf.Options["RunScript"]);
264 if (conf.Options["PreBuildEvent"] != null && conf.Options["PreBuildEvent"].ToString().Length != 0)
265 {
266 ss.Write(" executeBeforeBuild=\"{0}\"", Helper.NormalizePath(conf.Options["PreBuildEvent"].ToString()));
267 }
268 else
269 {
270 ss.Write(" executeBeforeBuild=\"{0}\"", conf.Options["PreBuildEvent"]);
271 }
272 if (conf.Options["PostBuildEvent"] != null && conf.Options["PostBuildEvent"].ToString().Length != 0)
273 {
274 ss.Write(" executeAfterBuild=\"{0}\"", Helper.NormalizePath(conf.Options["PostBuildEvent"].ToString()));
275 }
276 else
277 {
278 ss.Write(" executeAfterBuild=\"{0}\"", conf.Options["PostBuildEvent"]);
279 }
280 ss.Write(" executeBeforeBuildArguments=\"{0}\"", conf.Options["PreBuildEventArgs"]);
281 ss.Write(" executeAfterBuildArguments=\"{0}\"", conf.Options["PreBuildEventArgs"]);
282 ss.WriteLine(" />");
283 ss.WriteLine(" </Configuration>");
284
285 count++;
286 }
287 ss.WriteLine(" </Configurations>");
288 ss.WriteLine("</Project>");
289 }
290
291 m_Kernel.CurrentWorkingDirectory.Pop();
292 }
293
294 private void WriteCombine(SolutionNode solution)
295 {
296 m_Kernel.Log.Write("Creating SharpDevelop combine and project files");
297 foreach(ProjectNode project in solution.Projects)
298 {
299 if(m_Kernel.AllowProject(project.FilterGroups))
300 {
301 m_Kernel.Log.Write("...Creating project: {0}", project.Name);
302 WriteProject(solution, project);
303 }
304 }
305
306 m_Kernel.Log.Write("");
307 string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx");
308 StreamWriter ss = new StreamWriter(combFile);
309
310 m_Kernel.CurrentWorkingDirectory.Push();
311 Helper.SetCurrentDir(Path.GetDirectoryName(combFile));
312
313 using(ss)
314 {
315 ss.WriteLine("<Combine fileversion=\"1.0\" name=\"{0}\" description=\"\">", solution.Name);
316
317 int count = 0;
318 foreach(ProjectNode project in solution.Projects)
319 {
320 if(count == 0)
321 ss.WriteLine(" <StartMode startupentry=\"{0}\" single=\"True\">", project.Name);
322
323 ss.WriteLine(" <Execute entry=\"{0}\" type=\"None\" />", project.Name);
324 count++;
325 }
326 ss.WriteLine(" </StartMode>");
327
328 ss.WriteLine(" <Entries>");
329 foreach(ProjectNode project in solution.Projects)
330 {
331 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
332 ss.WriteLine(" <Entry filename=\"{0}\" />",
333 Helper.MakeFilePath(path, project.Name, "prjx"));
334 }
335 ss.WriteLine(" </Entries>");
336
337 count = 0;
338 foreach(ConfigurationNode conf in solution.Configurations)
339 {
340 if(count == 0)
341 {
342 ss.WriteLine(" <Configurations active=\"{0}\">", conf.Name);
343 }
344
345 ss.WriteLine(" <Configuration name=\"{0}\">", conf.Name);
346 foreach(ProjectNode project in solution.Projects)
347 {
348 ss.WriteLine(" <Entry name=\"{0}\" configurationname=\"{1}\" build=\"True\" />", project.Name, conf.Name);
349 }
350 ss.WriteLine(" </Configuration>");
351
352 count++;
353 }
354 ss.WriteLine(" </Configurations>");
355 ss.WriteLine("</Combine>");
356 }
357
358 m_Kernel.CurrentWorkingDirectory.Pop();
359 }
360
361 private void CleanProject(ProjectNode project)
362 {
363 m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
364 string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx");
365 Helper.DeleteIfExists(projectFile);
366 }
367
368 private void CleanSolution(SolutionNode solution)
369 {
370 m_Kernel.Log.Write("Cleaning SharpDevelop combine and project files for", solution.Name);
371
372 string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx");
373 Helper.DeleteIfExists(slnFile);
374
375 foreach(ProjectNode project in solution.Projects)
376 {
377 CleanProject(project);
378 }
379
380 m_Kernel.Log.Write("");
381 }
382
383 #endregion
384
385 #region ITarget Members
386
387 /// <summary>
388 /// Writes the specified kern.
389 /// </summary>
390 /// <param name="kern">The kern.</param>
391 public void Write(Kernel kern)
392 {
393 if( kern == null )
394 {
395 throw new ArgumentNullException("kern");
396 }
397 m_Kernel = kern;
398 foreach(SolutionNode solution in kern.Solutions)
399 {
400 WriteCombine(solution);
401 }
402 m_Kernel = null;
403 }
404
405 /// <summary>
406 /// Cleans the specified kern.
407 /// </summary>
408 /// <param name="kern">The kern.</param>
409 public virtual void Clean(Kernel kern)
410 {
411 if( kern == null )
412 {
413 throw new ArgumentNullException("kern");
414 }
415 m_Kernel = kern;
416 foreach(SolutionNode sol in kern.Solutions)
417 {
418 CleanSolution(sol);
419 }
420 m_Kernel = null;
421 }
422
423 /// <summary>
424 /// Gets the name.
425 /// </summary>
426 /// <value>The name.</value>
427 public string Name
428 {
429 get
430 {
431 return "sharpdev";
432 }
433 }
434
435 #endregion
436 }
437}
diff --git a/Prebuild/src/Core/Targets/VS2002Target.cs b/Prebuild/src/Core/Targets/VS2002Target.cs
new file mode 100644
index 0000000..66216dc
--- /dev/null
+++ b/Prebuild/src/Core/Targets/VS2002Target.cs
@@ -0,0 +1,96 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36
37using Prebuild.Core.Attributes;
38
39namespace Prebuild.Core.Targets
40{
41 /// <summary>
42 ///
43 /// </summary>
44 [Target("vs2002")]
45 public class VS2002Target : VS2003Target
46 {
47 #region Private Methods
48
49 private void SetVS2002()
50 {
51 this.SolutionVersion = "7.00";
52 this.ProductVersion = "7.0.9254";
53 this.SchemaVersion = "1.0";
54 this.VersionName = "2002";
55 this.Version = VSVersion.VS70;
56 }
57
58 #endregion
59
60 #region Public Methods
61
62 /// <summary>
63 /// Writes the specified kern.
64 /// </summary>
65 /// <param name="kern">The kern.</param>
66 public override void Write(Kernel kern)
67 {
68 SetVS2002();
69 base.Write(kern);
70 }
71
72 /// <summary>
73 /// Cleans the specified kern.
74 /// </summary>
75 /// <param name="kern">The kern.</param>
76 public override void Clean(Kernel kern)
77 {
78 SetVS2002();
79 base.Clean(kern);
80 }
81
82 /// <summary>
83 /// Gets the name.
84 /// </summary>
85 /// <value>The name.</value>
86 public override string Name
87 {
88 get
89 {
90 return "vs2002";
91 }
92 }
93
94 #endregion
95 }
96}
diff --git a/Prebuild/src/Core/Targets/VS2003Target.cs b/Prebuild/src/Core/Targets/VS2003Target.cs
new file mode 100644
index 0000000..b3236a8
--- /dev/null
+++ b/Prebuild/src/Core/Targets/VS2003Target.cs
@@ -0,0 +1,633 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-09-29 21:11:40 +0200 (fr, 29 sep 2006) $
31 * $Revision: 177 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.IO;
39
40using Prebuild.Core.Attributes;
41using Prebuild.Core.Interfaces;
42using Prebuild.Core.Nodes;
43using Prebuild.Core.Utilities;
44
45namespace Prebuild.Core.Targets
46{
47 /// <summary>
48 ///
49 /// </summary>
50 public enum VSVersion
51 {
52 /// <summary>
53 ///
54 /// </summary>
55 VS70,
56 /// <summary>
57 ///
58 /// </summary>
59 VS71,
60 /// <summary>
61 ///
62 /// </summary>
63 VS80
64 }
65
66 /// <summary>
67 ///
68 /// </summary>
69 [Target("vs2003")]
70 public class VS2003Target : ITarget
71 {
72
73 #region Fields
74
75 string solutionVersion = "8.00";
76 string productVersion = "7.10.3077";
77 string schemaVersion = "2.0";
78 string versionName = "2003";
79 VSVersion version = VSVersion.VS71;
80
81 Hashtable m_Tools;
82 Kernel m_Kernel;
83
84 /// <summary>
85 /// Gets or sets the solution version.
86 /// </summary>
87 /// <value>The solution version.</value>
88 protected string SolutionVersion
89 {
90 get
91 {
92 return this.solutionVersion;
93 }
94 set
95 {
96 this.solutionVersion = value;
97 }
98 }
99 /// <summary>
100 /// Gets or sets the product version.
101 /// </summary>
102 /// <value>The product version.</value>
103 protected string ProductVersion
104 {
105 get
106 {
107 return this.productVersion;
108 }
109 set
110 {
111 this.productVersion = value;
112 }
113 }
114 /// <summary>
115 /// Gets or sets the schema version.
116 /// </summary>
117 /// <value>The schema version.</value>
118 protected string SchemaVersion
119 {
120 get
121 {
122 return this.schemaVersion;
123 }
124 set
125 {
126 this.schemaVersion = value;
127 }
128 }
129 /// <summary>
130 /// Gets or sets the name of the version.
131 /// </summary>
132 /// <value>The name of the version.</value>
133 protected string VersionName
134 {
135 get
136 {
137 return this.versionName;
138 }
139 set
140 {
141 this.versionName = value;
142 }
143 }
144 /// <summary>
145 /// Gets or sets the version.
146 /// </summary>
147 /// <value>The version.</value>
148 protected VSVersion Version
149 {
150 get
151 {
152 return this.version;
153 }
154 set
155 {
156 this.version = value;
157 }
158 }
159
160 #endregion
161
162 #region Constructors
163
164 /// <summary>
165 /// Initializes a new instance of the <see cref="VS2003Target"/> class.
166 /// </summary>
167 public VS2003Target()
168 {
169 m_Tools = new Hashtable();
170
171 m_Tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP");
172 m_Tools["VB.NET"] = new ToolInfo("VB.NET", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic");
173 }
174
175 #endregion
176
177 #region Private Methods
178
179 private string MakeRefPath(ProjectNode project)
180 {
181 string ret = "";
182 foreach(ReferencePathNode node in project.ReferencePaths)
183 {
184 try
185 {
186 string fullPath = Helper.ResolvePath(node.Path);
187 if(ret.Length < 1)
188 {
189 ret = fullPath;
190 }
191 else
192 {
193 ret += ";" + fullPath;
194 }
195 }
196 catch(ArgumentException)
197 {
198 m_Kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path);
199 }
200 }
201
202 return ret;
203 }
204
205 private void WriteProject(SolutionNode solution, ProjectNode project)
206 {
207 if(!m_Tools.ContainsKey(project.Language))
208 {
209 throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
210 }
211
212 ToolInfo toolInfo = (ToolInfo)m_Tools[project.Language];
213 string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
214 StreamWriter ps = new StreamWriter(projectFile);
215
216 m_Kernel.CurrentWorkingDirectory.Push();
217 Helper.SetCurrentDir(Path.GetDirectoryName(projectFile));
218
219 IEnumerator enumerator;
220 //ConfigurationNode scripts;
221
222 using(ps)
223 {
224 ps.WriteLine("<VisualStudioProject>");
225 ps.WriteLine(" <{0}", toolInfo.XmlTag);
226 ps.WriteLine("\t\t\t\tProjectType = \"Local\"");
227 ps.WriteLine("\t\t\t\tProductVersion = \"{0}\"", this.ProductVersion);
228 ps.WriteLine("\t\t\t\tSchemaVersion = \"{0}\"", this.SchemaVersion);
229 ps.WriteLine("\t\t\t\tProjectGuid = \"{{{0}}}\"", project.Guid.ToString().ToUpper());
230 ps.WriteLine("\t\t>");
231
232 ps.WriteLine("\t\t\t\t<Build>");
233 ps.WriteLine(" <Settings");
234 ps.WriteLine("\t\t\t\t ApplicationIcon = \"{0}\"",project.AppIcon);
235 ps.WriteLine("\t\t\t\t AssemblyKeyContainerName = \"\"");
236 ps.WriteLine("\t\t\t\t AssemblyName = \"{0}\"", project.AssemblyName);
237 ps.WriteLine("\t\t\t\t AssemblyOriginatorKeyFile = \"\"");
238 ps.WriteLine("\t\t\t\t DefaultClientScript = \"JScript\"");
239 ps.WriteLine("\t\t\t\t DefaultHTMLPageLayout = \"Grid\"");
240 ps.WriteLine("\t\t\t\t DefaultTargetSchema = \"IE50\"");
241 ps.WriteLine("\t\t\t\t DelaySign = \"false\"");
242
243 if(this.Version == VSVersion.VS70)
244 {
245 ps.WriteLine("\t\t\t\t NoStandardLibraries = \"false\"");
246 }
247
248 ps.WriteLine("\t\t\t\t OutputType = \"{0}\"", project.Type.ToString());
249
250 enumerator = project.Configurations.GetEnumerator();
251 enumerator.Reset();
252 enumerator.MoveNext();
253 foreach(ConfigurationNode conf in project.Configurations)
254 {
255 if (conf.Options["PreBuildEvent"] != null && conf.Options["PreBuildEvent"].ToString().Length != 0)
256 {
257 ps.WriteLine("\t\t\t\t PreBuildEvent = \"{0}\"", Helper.NormalizePath(conf.Options["PreBuildEvent"].ToString()));
258 }
259 else
260 {
261 ps.WriteLine("\t\t\t\t PreBuildEvent = \"{0}\"", conf.Options["PreBuildEvent"]);
262 }
263 if (conf.Options["PostBuildEvent"] != null && conf.Options["PostBuildEvent"].ToString().Length != 0)
264 {
265 ps.WriteLine("\t\t\t\t PostBuildEvent = \"{0}\"", Helper.NormalizePath(conf.Options["PostBuildEvent"].ToString()));
266 }
267 else
268 {
269 ps.WriteLine("\t\t\t\t PostBuildEvent = \"{0}\"", conf.Options["PostBuildEvent"]);
270 }
271 if (conf.Options["RunPostBuildEvent"] == null)
272 {
273 ps.WriteLine("\t\t\t\t RunPostBuildEvent = \"{0}\"", "OnBuildSuccess");
274 }
275 else
276 {
277 ps.WriteLine("\t\t\t\t RunPostBuildEvent = \"{0}\"", conf.Options["RunPostBuildEvent"]);
278 }
279 break;
280 }
281
282 ps.WriteLine("\t\t\t\t RootNamespace = \"{0}\"", project.RootNamespace);
283 ps.WriteLine("\t\t\t\t StartupObject = \"{0}\"", project.StartupObject);
284 ps.WriteLine("\t\t >");
285
286 foreach(ConfigurationNode conf in project.Configurations)
287 {
288 ps.WriteLine("\t\t\t\t <Config");
289 ps.WriteLine("\t\t\t\t Name = \"{0}\"", conf.Name);
290 ps.WriteLine("\t\t\t\t AllowUnsafeBlocks = \"{0}\"", conf.Options["AllowUnsafe"].ToString().ToLower());
291 ps.WriteLine("\t\t\t\t BaseAddress = \"{0}\"", conf.Options["BaseAddress"]);
292 ps.WriteLine("\t\t\t\t CheckForOverflowUnderflow = \"{0}\"", conf.Options["CheckUnderflowOverflow"].ToString().ToLower());
293 ps.WriteLine("\t\t\t\t ConfigurationOverrideFile = \"\"");
294 ps.WriteLine("\t\t\t\t DefineConstants = \"{0}\"", conf.Options["CompilerDefines"]);
295 ps.WriteLine("\t\t\t\t DocumentationFile = \"{0}\"", GetXmlDocFile(project, conf));//default to the assembly name
296 ps.WriteLine("\t\t\t\t DebugSymbols = \"{0}\"", conf.Options["DebugInformation"].ToString().ToLower());
297 ps.WriteLine("\t\t\t\t FileAlignment = \"{0}\"", conf.Options["FileAlignment"]);
298 ps.WriteLine("\t\t\t\t IncrementalBuild = \"{0}\"", conf.Options["IncrementalBuild"].ToString().ToLower());
299
300 if(this.Version == VSVersion.VS71)
301 {
302 ps.WriteLine("\t\t\t\t NoStdLib = \"{0}\"", conf.Options["NoStdLib"].ToString().ToLower());
303 ps.WriteLine("\t\t\t\t NoWarn = \"{0}\"", conf.Options["SuppressWarnings"].ToString().ToLower());
304 }
305
306 ps.WriteLine("\t\t\t\t Optimize = \"{0}\"", conf.Options["OptimizeCode"].ToString().ToLower());
307 ps.WriteLine(" OutputPath = \"{0}\"",
308 Helper.EndPath(Helper.NormalizePath(conf.Options["OutputPath"].ToString())));
309 ps.WriteLine(" RegisterForComInterop = \"{0}\"", conf.Options["RegisterComInterop"].ToString().ToLower());
310 ps.WriteLine(" RemoveIntegerChecks = \"{0}\"", conf.Options["RemoveIntegerChecks"].ToString().ToLower());
311 ps.WriteLine(" TreatWarningsAsErrors = \"{0}\"", conf.Options["WarningsAsErrors"].ToString().ToLower());
312 ps.WriteLine(" WarningLevel = \"{0}\"", conf.Options["WarningLevel"]);
313 ps.WriteLine(" />");
314 }
315
316 ps.WriteLine(" </Settings>");
317
318 ps.WriteLine(" <References>");
319 foreach(ReferenceNode refr in project.References)
320 {
321 ps.WriteLine(" <Reference");
322 ps.WriteLine(" Name = \"{0}\"", refr.Name);
323 ps.WriteLine(" AssemblyName = \"{0}\"", refr.Name);
324
325 if(solution.ProjectsTable.ContainsKey(refr.Name))
326 {
327 ProjectNode refProject = (ProjectNode)solution.ProjectsTable[refr.Name];
328 ps.WriteLine(" Project = \"{{{0}}}\"", refProject.Guid.ToString().ToUpper());
329 ps.WriteLine(" Package = \"{0}\"", toolInfo.Guid.ToString().ToUpper());
330 }
331 else
332 {
333 if(refr.Path != null)
334 {
335 ps.WriteLine(" HintPath = \"{0}\"", Helper.MakeFilePath(refr.Path, refr.Name, "dll"));
336 }
337
338 }
339
340 if(refr.LocalCopySpecified)
341 {
342 ps.WriteLine(" Private = \"{0}\"",refr.LocalCopy);
343 }
344
345 ps.WriteLine(" />");
346 }
347 ps.WriteLine(" </References>");
348
349 ps.WriteLine(" </Build>");
350 ps.WriteLine(" <Files>");
351
352 ps.WriteLine(" <Include>");
353
354 foreach(string file in project.Files)
355 {
356 string fileName = file.Replace(".\\", "");
357 ps.WriteLine(" <File");
358 ps.WriteLine(" RelPath = \"{0}\"", fileName);
359 ps.WriteLine(" SubType = \"{0}\"", project.Files.GetSubType(file));
360 ps.WriteLine(" BuildAction = \"{0}\"", project.Files.GetBuildAction(file));
361 ps.WriteLine(" />");
362
363 if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings)
364 {
365 ps.WriteLine(" <File");
366 ps.WriteLine(" RelPath = \"{0}\"", fileName.Substring(0, fileName.LastIndexOf('.')) + ".resx");
367 int slash = fileName.LastIndexOf('\\');
368 if (slash == -1)
369 {
370 ps.WriteLine(" DependentUpon = \"{0}\"", fileName);
371 }
372 else
373 {
374 ps.WriteLine(" DependentUpon = \"{0}\"", fileName.Substring(slash + 1, fileName.Length - slash - 1));
375 }
376 ps.WriteLine(" BuildAction = \"{0}\"", "EmbeddedResource");
377 ps.WriteLine(" />");
378
379 }
380 }
381 ps.WriteLine(" </Include>");
382
383 ps.WriteLine(" </Files>");
384 ps.WriteLine(" </{0}>", toolInfo.XmlTag);
385 ps.WriteLine("</VisualStudioProject>");
386 }
387
388 ps = new StreamWriter(projectFile + ".user");
389 using(ps)
390 {
391 ps.WriteLine("<VisualStudioProject>");
392 ps.WriteLine(" <{0}>", toolInfo.XmlTag);
393 ps.WriteLine(" <Build>");
394
395 ps.WriteLine(" <Settings ReferencePath=\"{0}\">", MakeRefPath(project));
396 foreach(ConfigurationNode conf in project.Configurations)
397 {
398 ps.WriteLine(" <Config");
399 ps.WriteLine(" Name = \"{0}\"", conf.Name);
400 ps.WriteLine(" />");
401 }
402 ps.WriteLine(" </Settings>");
403
404 ps.WriteLine(" </Build>");
405 ps.WriteLine(" </{0}>", toolInfo.XmlTag);
406 ps.WriteLine("</VisualStudioProject>");
407 }
408
409 m_Kernel.CurrentWorkingDirectory.Pop();
410 }
411
412 /// <summary>
413 /// Gets the XML doc file.
414 /// </summary>
415 /// <param name="project">The project.</param>
416 /// <param name="conf">The conf.</param>
417 /// <returns></returns>
418 public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf)
419 {
420 if( conf == null )
421 {
422 throw new ArgumentNullException("conf");
423 }
424 if( project == null )
425 {
426 throw new ArgumentNullException("project");
427 }
428 // if(!(bool)conf.Options["GenerateXmlDocFile"]) //default to none, if the generate option is false
429 // {
430 // return string.Empty;
431 // }
432
433 //default to "AssemblyName.xml"
434 //string defaultValue = Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml";
435 //return (string)conf.Options["XmlDocFile", defaultValue];
436
437 //default to no XmlDocFile file
438 return (string)conf.Options["XmlDocFile", ""];
439 }
440
441 private void WriteSolution(SolutionNode solution)
442 {
443 m_Kernel.Log.Write("Creating Visual Studio {0} solution and project files", this.VersionName);
444
445 foreach(ProjectNode project in solution.Projects)
446 {
447 if(m_Kernel.AllowProject(project.FilterGroups))
448 {
449 m_Kernel.Log.Write("...Creating project: {0}", project.Name);
450 WriteProject(solution, project);
451 }
452 }
453
454 m_Kernel.Log.Write("");
455 string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
456 StreamWriter ss = new StreamWriter(solutionFile);
457
458 m_Kernel.CurrentWorkingDirectory.Push();
459 Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile));
460
461 using(ss)
462 {
463 ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", this.SolutionVersion);
464 foreach(ProjectNode project in solution.Projects)
465 {
466 if(!m_Tools.ContainsKey(project.Language))
467 {
468 throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
469 }
470
471 ToolInfo toolInfo = (ToolInfo)m_Tools[project.Language];
472
473 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
474 ss.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{{{3}}}\"",
475 toolInfo.Guid, project.Name, Helper.MakeFilePath(path, project.Name,
476 toolInfo.FileExtension), project.Guid.ToString().ToUpper());
477
478 ss.WriteLine("\tProjectSection(ProjectDependencies) = postProject");
479 ss.WriteLine("\tEndProjectSection");
480
481 ss.WriteLine("EndProject");
482 }
483
484 ss.WriteLine("Global");
485
486 ss.WriteLine("\tGlobalSection(SolutionConfiguration) = preSolution");
487 foreach(ConfigurationNode conf in solution.Configurations)
488 {
489 ss.WriteLine("\t\t{0} = {0}", conf.Name);
490 }
491 ss.WriteLine("\tEndGlobalSection");
492
493 ss.WriteLine("\tGlobalSection(ProjectDependencies) = postSolution");
494 foreach(ProjectNode project in solution.Projects)
495 {
496 for(int i = 0; i < project.References.Count; i++)
497 {
498 ReferenceNode refr = (ReferenceNode)project.References[i];
499 if(solution.ProjectsTable.ContainsKey(refr.Name))
500 {
501 ProjectNode refProject = (ProjectNode)solution.ProjectsTable[refr.Name];
502 ss.WriteLine("\t\t({{{0}}}).{1} = ({{{2}}})",
503 project.Guid.ToString().ToUpper()
504 , i,
505 refProject.Guid.ToString().ToUpper()
506 );
507 }
508 }
509 }
510 ss.WriteLine("\tEndGlobalSection");
511
512 ss.WriteLine("\tGlobalSection(ProjectConfiguration) = postSolution");
513 foreach(ProjectNode project in solution.Projects)
514 {
515 foreach(ConfigurationNode conf in solution.Configurations)
516 {
517 ss.WriteLine("\t\t{{{0}}}.{1}.ActiveCfg = {1}|.NET",
518 project.Guid.ToString().ToUpper(),
519 conf.Name);
520
521 ss.WriteLine("\t\t{{{0}}}.{1}.Build.0 = {1}|.NET",
522 project.Guid.ToString().ToUpper(),
523 conf.Name);
524 }
525 }
526 ss.WriteLine("\tEndGlobalSection");
527
528 if(solution.Files != null)
529 {
530 ss.WriteLine("\tGlobalSection(SolutionItems) = postSolution");
531 foreach(string file in solution.Files)
532 {
533 ss.WriteLine("\t\t{0} = {0}", file);
534 }
535 ss.WriteLine("\tEndGlobalSection");
536 }
537
538 ss.WriteLine("\tGlobalSection(ExtensibilityGlobals) = postSolution");
539 ss.WriteLine("\tEndGlobalSection");
540 ss.WriteLine("\tGlobalSection(ExtensibilityAddIns) = postSolution");
541 ss.WriteLine("\tEndGlobalSection");
542
543 ss.WriteLine("EndGlobal");
544 }
545
546 m_Kernel.CurrentWorkingDirectory.Pop();
547 }
548
549 private void CleanProject(ProjectNode project)
550 {
551 m_Kernel.Log.Write("...Cleaning project: {0}", project.Name);
552
553 ToolInfo toolInfo = (ToolInfo)m_Tools[project.Language];
554 string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
555 string userFile = projectFile + ".user";
556
557 Helper.DeleteIfExists(projectFile);
558 Helper.DeleteIfExists(userFile);
559 }
560
561 private void CleanSolution(SolutionNode solution)
562 {
563 m_Kernel.Log.Write("Cleaning Visual Studio {0} solution and project files", this.VersionName, solution.Name);
564
565 string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
566 string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo");
567
568 Helper.DeleteIfExists(slnFile);
569 Helper.DeleteIfExists(suoFile);
570
571 foreach(ProjectNode project in solution.Projects)
572 {
573 CleanProject(project);
574 }
575
576 m_Kernel.Log.Write("");
577 }
578
579 #endregion
580
581 #region ITarget Members
582
583 /// <summary>
584 /// Writes the specified kern.
585 /// </summary>
586 /// <param name="kern">The kern.</param>
587 public virtual void Write(Kernel kern)
588 {
589 if( kern == null )
590 {
591 throw new ArgumentNullException("kern");
592 }
593 m_Kernel = kern;
594 foreach(SolutionNode sol in m_Kernel.Solutions)
595 {
596 WriteSolution(sol);
597 }
598 m_Kernel = null;
599 }
600
601 /// <summary>
602 /// Cleans the specified kern.
603 /// </summary>
604 /// <param name="kern">The kern.</param>
605 public virtual void Clean(Kernel kern)
606 {
607 if( kern == null )
608 {
609 throw new ArgumentNullException("kern");
610 }
611 m_Kernel = kern;
612 foreach(SolutionNode sol in m_Kernel.Solutions)
613 {
614 CleanSolution(sol);
615 }
616 m_Kernel = null;
617 }
618
619 /// <summary>
620 /// Gets the name.
621 /// </summary>
622 /// <value>The name.</value>
623 public virtual string Name
624 {
625 get
626 {
627 return "vs2003";
628 }
629 }
630
631 #endregion
632 }
633}
diff --git a/Prebuild/src/Core/Targets/VS2005Target.cs b/Prebuild/src/Core/Targets/VS2005Target.cs
new file mode 100644
index 0000000..23b6116
--- /dev/null
+++ b/Prebuild/src/Core/Targets/VS2005Target.cs
@@ -0,0 +1,883 @@
1#region BSD License
2/*
3Copyright (c) 2004 Matthew Holmes (matthew@wildfiregames.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: robloach $
30 * $Date: 2007-02-27 19:52:34 +0100 (ti, 27 feb 2007) $
31 * $Revision: 207 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.IO;
39
40using Prebuild.Core.Attributes;
41using Prebuild.Core.Interfaces;
42using Prebuild.Core.Nodes;
43using Prebuild.Core.Utilities;
44
45namespace Prebuild.Core.Targets
46{
47 /// <summary>
48 ///
49 /// </summary>
50 public struct ToolInfo
51 {
52 string name;
53 string guid;
54 string fileExtension;
55 string xmlTag;
56 string importProject;
57
58 /// <summary>
59 /// Gets or sets the name.
60 /// </summary>
61 /// <value>The name.</value>
62 public string Name
63 {
64 get
65 {
66 return name;
67 }
68 set
69 {
70 name = value;
71 }
72 }
73
74 /// <summary>
75 /// Gets or sets the GUID.
76 /// </summary>
77 /// <value>The GUID.</value>
78 public string Guid
79 {
80 get
81 {
82 return guid;
83 }
84 set
85 {
86 guid = value;
87 }
88 }
89
90 /// <summary>
91 /// Gets or sets the file extension.
92 /// </summary>
93 /// <value>The file extension.</value>
94 public string FileExtension
95 {
96 get
97 {
98 return fileExtension;
99 }
100 set
101 {
102 fileExtension = value;
103 }
104 }
105 /// <summary>
106 /// Gets or sets the XML tag.
107 /// </summary>
108 /// <value>The XML tag.</value>
109 public string XmlTag
110 {
111 get
112 {
113 return xmlTag;
114 }
115 set
116 {
117 xmlTag = value;
118 }
119 }
120
121 /// <summary>
122 /// Gets or sets the import project property.
123 /// </summary>
124 /// <value>The ImportProject tag.</value>
125 public string ImportProject
126 {
127 get
128 {
129 return importProject;
130 }
131 set
132 {
133 importProject = value;
134 }
135 }
136
137 /// <summary>
138 /// Initializes a new instance of the <see cref="ToolInfo"/> class.
139 /// </summary>
140 /// <param name="name">The name.</param>
141 /// <param name="guid">The GUID.</param>
142 /// <param name="fileExtension">The file extension.</param>
143 /// <param name="xml">The XML.</param>
144 /// <param name="importProject">The import project.</param>
145 public ToolInfo(string name, string guid, string fileExtension, string xml, string importProject)
146 {
147 this.name = name;
148 this.guid = guid;
149 this.fileExtension = fileExtension;
150 this.xmlTag = xml;
151 this.importProject = importProject;
152 }
153
154 /// <summary>
155 /// Initializes a new instance of the <see cref="ToolInfo"/> class.
156 /// </summary>
157 /// <param name="name">The name.</param>
158 /// <param name="guid">The GUID.</param>
159 /// <param name="fileExtension">The file extension.</param>
160 /// <param name="xml">The XML.</param>
161 public ToolInfo(string name, string guid, string fileExtension, string xml)
162 {
163 this.name = name;
164 this.guid = guid;
165 this.fileExtension = fileExtension;
166 this.xmlTag = xml;
167 this.importProject = "$(MSBuildBinPath)\\Microsoft." + xml + ".Targets";
168 }
169
170 /// <summary>
171 /// Equals operator
172 /// </summary>
173 /// <param name="obj">ToolInfo to compare</param>
174 /// <returns>true if toolInfos are equal</returns>
175 public override bool Equals(object obj)
176 {
177 if (obj == null)
178 {
179 throw new ArgumentNullException("obj");
180 }
181 if (obj.GetType() != typeof(ToolInfo))
182 return false;
183
184 ToolInfo c = (ToolInfo)obj;
185 return ((this.name == c.name) && (this.guid == c.guid) && (this.fileExtension == c.fileExtension) && (this.importProject == c.importProject));
186 }
187
188 /// <summary>
189 /// Equals operator
190 /// </summary>
191 /// <param name="c1">ToolInfo to compare</param>
192 /// <param name="c2">ToolInfo to compare</param>
193 /// <returns>True if toolInfos are equal</returns>
194 public static bool operator ==(ToolInfo c1, ToolInfo c2)
195 {
196 return ((c1.name == c2.name) && (c1.guid == c2.guid) && (c1.fileExtension == c2.fileExtension) && (c1.importProject == c2.importProject) && (c1.xmlTag == c2.xmlTag));
197 }
198
199 /// <summary>
200 /// Not equals operator
201 /// </summary>
202 /// <param name="c1">ToolInfo to compare</param>
203 /// <param name="c2">ToolInfo to compare</param>
204 /// <returns>True if toolInfos are not equal</returns>
205 public static bool operator !=(ToolInfo c1, ToolInfo c2)
206 {
207 return !(c1 == c2);
208 }
209
210 /// <summary>
211 /// Hash Code
212 /// </summary>
213 /// <returns>Hash code</returns>
214 public override int GetHashCode()
215 {
216 return name.GetHashCode() ^ guid.GetHashCode() ^ this.fileExtension.GetHashCode() ^ this.importProject.GetHashCode() ^ this.xmlTag.GetHashCode();
217
218 }
219 }
220
221 /// <summary>
222 ///
223 /// </summary>
224 [Target("vs2005")]
225 public class VS2005Target : ITarget
226 {
227 #region Inner Classes
228
229 #endregion
230
231 #region Fields
232
233 string solutionVersion = "9.00";
234 string productVersion = "8.0.50727";
235 string schemaVersion = "2.0";
236 string versionName = "Visual C# 2005";
237 VSVersion version = VSVersion.VS80;
238
239 Hashtable tools;
240 Kernel kernel;
241
242 /// <summary>
243 /// Gets or sets the solution version.
244 /// </summary>
245 /// <value>The solution version.</value>
246 protected string SolutionVersion
247 {
248 get
249 {
250 return this.solutionVersion;
251 }
252 set
253 {
254 this.solutionVersion = value;
255 }
256 }
257 /// <summary>
258 /// Gets or sets the product version.
259 /// </summary>
260 /// <value>The product version.</value>
261 protected string ProductVersion
262 {
263 get
264 {
265 return this.productVersion;
266 }
267 set
268 {
269 this.productVersion = value;
270 }
271 }
272 /// <summary>
273 /// Gets or sets the schema version.
274 /// </summary>
275 /// <value>The schema version.</value>
276 protected string SchemaVersion
277 {
278 get
279 {
280 return this.schemaVersion;
281 }
282 set
283 {
284 this.schemaVersion = value;
285 }
286 }
287 /// <summary>
288 /// Gets or sets the name of the version.
289 /// </summary>
290 /// <value>The name of the version.</value>
291 protected string VersionName
292 {
293 get
294 {
295 return this.versionName;
296 }
297 set
298 {
299 this.versionName = value;
300 }
301 }
302 /// <summary>
303 /// Gets or sets the version.
304 /// </summary>
305 /// <value>The version.</value>
306 protected VSVersion Version
307 {
308 get
309 {
310 return this.version;
311 }
312 set
313 {
314 this.version = value;
315 }
316 }
317
318 #endregion
319
320 #region Constructors
321
322 /// <summary>
323 /// Initializes a new instance of the <see cref="VS2005Target"/> class.
324 /// </summary>
325 public VS2005Target()
326 {
327 this.tools = new Hashtable();
328
329 this.tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP", "$(MSBuildBinPath)\\Microsoft.CSHARP.Targets");
330 this.tools["Boo"] = new ToolInfo("Boo", "{45CEA7DC-C2ED-48A6-ACE0-E16144C02365}", "booproj", "Boo", "$(BooBinPath)\\Boo.Microsoft.Build.targets");
331 this.tools["VisualBasic"] = new ToolInfo("VisualBasic", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic", "$(MSBuildBinPath)\\Microsoft.VisualBasic.Targets");
332 }
333
334 #endregion
335
336 #region Private Methods
337
338 private string MakeRefPath(ProjectNode project)
339 {
340 string ret = "";
341 foreach (ReferencePathNode node in project.ReferencePaths)
342 {
343 try
344 {
345 string fullPath = Helper.ResolvePath(node.Path);
346 if (ret.Length < 1)
347 {
348 ret = fullPath;
349 }
350 else
351 {
352 ret += ";" + fullPath;
353 }
354 }
355 catch (ArgumentException)
356 {
357 this.kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path);
358 }
359 }
360
361 return ret;
362 }
363
364 private void WriteProject(SolutionNode solution, ProjectNode project)
365 {
366 if (!tools.ContainsKey(project.Language))
367 {
368 throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
369 }
370
371 ToolInfo toolInfo = (ToolInfo)tools[project.Language];
372 string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
373 StreamWriter ps = new StreamWriter(projectFile);
374
375 kernel.CurrentWorkingDirectory.Push();
376 Helper.SetCurrentDir(Path.GetDirectoryName(projectFile));
377
378 #region Project File
379 using (ps)
380 {
381 ps.WriteLine("<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">");
382 //ps.WriteLine(" <{0}", toolInfo.XMLTag);
383 ps.WriteLine(" <PropertyGroup>");
384 ps.WriteLine(" <ProjectType>Local</ProjectType>");
385 ps.WriteLine(" <ProductVersion>{0}</ProductVersion>", this.ProductVersion);
386 ps.WriteLine(" <SchemaVersion>{0}</SchemaVersion>", this.SchemaVersion);
387 ps.WriteLine(" <ProjectGuid>{{{0}}}</ProjectGuid>", project.Guid.ToString().ToUpper());
388
389 ps.WriteLine(" <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>");
390 ps.WriteLine(" <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>");
391 //ps.WriteLine(" <Build>");
392
393 //ps.WriteLine(" <Settings");
394 ps.WriteLine(" <ApplicationIcon>{0}</ApplicationIcon>", project.AppIcon);
395 ps.WriteLine(" <AssemblyKeyContainerName>");
396 ps.WriteLine(" </AssemblyKeyContainerName>");
397 ps.WriteLine(" <AssemblyName>{0}</AssemblyName>", project.AssemblyName);
398 foreach (ConfigurationNode conf in project.Configurations)
399 {
400 if (conf.Options.KeyFile != "")
401 {
402 ps.WriteLine(" <AssemblyOriginatorKeyFile>{0}</AssemblyOriginatorKeyFile>", conf.Options.KeyFile);
403 ps.WriteLine(" <SignAssembly>true</SignAssembly>");
404 break;
405 }
406 }
407 ps.WriteLine(" <DefaultClientScript>JScript</DefaultClientScript>");
408 ps.WriteLine(" <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>");
409 ps.WriteLine(" <DefaultTargetSchema>IE50</DefaultTargetSchema>");
410 ps.WriteLine(" <DelaySign>false</DelaySign>");
411
412 //if(m_Version == VSVersion.VS70)
413 // ps.WriteLine(" NoStandardLibraries = \"false\"");
414
415 ps.WriteLine(" <OutputType>{0}</OutputType>", project.Type.ToString());
416 ps.WriteLine(" <AppDesignerFolder>{0}</AppDesignerFolder>", project.DesignerFolder);
417 ps.WriteLine(" <RootNamespace>{0}</RootNamespace>", project.RootNamespace);
418 ps.WriteLine(" <StartupObject>{0}</StartupObject>", project.StartupObject);
419 //ps.WriteLine(" >");
420 ps.WriteLine(" <FileUpgradeFlags>");
421 ps.WriteLine(" </FileUpgradeFlags>");
422
423 ps.WriteLine(" </PropertyGroup>");
424
425 foreach (ConfigurationNode conf in project.Configurations)
426 {
427 ps.Write(" <PropertyGroup ");
428 ps.WriteLine("Condition=\" '$(Configuration)|$(Platform)' == '{0}|AnyCPU' \">", conf.Name);
429 ps.WriteLine(" <AllowUnsafeBlocks>{0}</AllowUnsafeBlocks>", conf.Options["AllowUnsafe"]);
430 ps.WriteLine(" <BaseAddress>{0}</BaseAddress>", conf.Options["BaseAddress"]);
431 ps.WriteLine(" <CheckForOverflowUnderflow>{0}</CheckForOverflowUnderflow>", conf.Options["CheckUnderflowOverflow"]);
432 ps.WriteLine(" <ConfigurationOverrideFile>");
433 ps.WriteLine(" </ConfigurationOverrideFile>");
434 ps.WriteLine(" <DefineConstants>{0}</DefineConstants>", conf.Options["CompilerDefines"]);
435 ps.WriteLine(" <DocumentationFile>{0}</DocumentationFile>", conf.Options["XmlDocFile"]);
436 ps.WriteLine(" <DebugSymbols>{0}</DebugSymbols>", conf.Options["DebugInformation"]);
437 ps.WriteLine(" <FileAlignment>{0}</FileAlignment>", conf.Options["FileAlignment"]);
438 // ps.WriteLine(" <IncrementalBuild = \"{0}\"", conf.Options["IncrementalBuild"]);
439
440 // if(m_Version == VSVersion.VS71)
441 // {
442 // ps.WriteLine(" NoStdLib = \"{0}\"", conf.Options["NoStdLib"]);
443 // ps.WriteLine(" NoWarn = \"{0}\"", conf.Options["SuppressWarnings"]);
444 // }
445
446 ps.WriteLine(" <Optimize>{0}</Optimize>", conf.Options["OptimizeCode"]);
447 ps.WriteLine(" <OutputPath>{0}</OutputPath>",
448 Helper.EndPath(Helper.NormalizePath(conf.Options["OutputPath"].ToString())));
449 ps.WriteLine(" <RegisterForComInterop>{0}</RegisterForComInterop>", conf.Options["RegisterComInterop"]);
450 ps.WriteLine(" <RemoveIntegerChecks>{0}</RemoveIntegerChecks>", conf.Options["RemoveIntegerChecks"]);
451 ps.WriteLine(" <TreatWarningsAsErrors>{0}</TreatWarningsAsErrors>", conf.Options["WarningsAsErrors"]);
452 ps.WriteLine(" <WarningLevel>{0}</WarningLevel>", conf.Options["WarningLevel"]);
453 ps.WriteLine(" <NoWarn>{0}</NoWarn>", conf.Options["SuppressWarnings"]);
454 ps.WriteLine(" </PropertyGroup>");
455 }
456
457 //ps.WriteLine(" </Settings>");
458
459 // Assembly References
460 ps.WriteLine(" <ItemGroup>");
461 string refPath = ((ReferencePathNode) project.ReferencePaths[0]).Path;
462
463 foreach (ReferenceNode refr in project.References)
464 {
465 if (!solution.ProjectsTable.ContainsKey(refr.Name))
466 {
467 ps.Write(" <Reference");
468 ps.Write(" Include=\"");
469 ps.Write(refr.Name);
470
471 ps.WriteLine("\" >");
472
473 string path;
474
475 if( refr.Name.EndsWith(".dll", StringComparison.InvariantCultureIgnoreCase ))
476 {
477 path = Helper.NormalizePath(Path.Combine( refPath, refr.Name), '\\');
478 }
479 else
480 {
481 path = refr.Name + ".dll";
482 }
483
484 // TODO: Allow reference to *.exe files
485 ps.WriteLine(" <HintPath>{0}</HintPath>", path );
486 ps.WriteLine(" <Private>{0}</Private>", refr.LocalCopy);
487 ps.WriteLine(" </Reference>");
488 }
489 }
490 ps.WriteLine(" </ItemGroup>");
491
492 //Project References
493 ps.WriteLine(" <ItemGroup>");
494 foreach (ReferenceNode refr in project.References)
495 {
496 if (solution.ProjectsTable.ContainsKey(refr.Name))
497 {
498 ProjectNode refProject = (ProjectNode)solution.ProjectsTable[refr.Name];
499 // TODO: Allow reference to visual basic projects
500 string path =
501 Helper.MakePathRelativeTo(project.FullPath,
502 Helper.MakeFilePath(refProject.FullPath, refProject.Name, "csproj"));
503 ps.WriteLine(" <ProjectReference Include=\"{0}\">", path );
504 //<ProjectReference Include="..\..\RealmForge\Utility\RealmForge.Utility.csproj">
505 ps.WriteLine(" <Name>{0}</Name>", refProject.Name);
506 // <Name>RealmForge.Utility</Name>
507 ps.WriteLine(" <Project>{{{0}}}</Project>", refProject.Guid.ToString().ToUpper());
508 // <Project>{6880D1D3-69EE-461B-B841-5319845B20D3}</Project>
509 ps.WriteLine(" <Package>{0}</Package>", toolInfo.Guid.ToString().ToUpper());
510 // <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
511 ps.WriteLine("\t\t\t<Private>{0}</Private>", refr.LocalCopy);
512 ps.WriteLine(" </ProjectReference>");
513 //</ProjectReference>
514 }
515 else
516 {
517 }
518 }
519 ps.WriteLine(" </ItemGroup>");
520
521 // ps.WriteLine(" </Build>");
522 ps.WriteLine(" <ItemGroup>");
523
524 // ps.WriteLine(" <Include>");
525 ArrayList list = new ArrayList();
526 foreach (string file in project.Files)
527 {
528 // if (file == "Properties\\Bind.Designer.cs")
529 // {
530 // Console.WriteLine("Wait a minute!");
531 // Console.WriteLine(project.Files.GetSubType(file).ToString());
532 // }
533
534 if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings && project.Files.GetSubType(file) != SubType.Designer)
535 {
536 ps.WriteLine(" <EmbeddedResource Include=\"{0}\">", file.Substring(0, file.LastIndexOf('.')) + ".resx");
537
538 int slash = file.LastIndexOf('\\');
539 if (slash == -1)
540 {
541 ps.WriteLine(" <DependentUpon>{0}</DependentUpon>", file);
542 }
543 else
544 {
545 ps.WriteLine(" <DependentUpon>{0}</DependentUpon>", file.Substring(slash + 1, file.Length - slash - 1));
546 }
547 ps.WriteLine(" <SubType>Designer</SubType>");
548 ps.WriteLine(" </EmbeddedResource>");
549 //
550 }
551
552 if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) == SubType.Designer)
553 {
554 ps.WriteLine(" <EmbeddedResource Include=\"{0}\">", file.Substring(0, file.LastIndexOf('.')) + ".resx");
555 ps.WriteLine(" <SubType>" + project.Files.GetSubType(file) + "</SubType>");
556 ps.WriteLine(" <Generator>ResXFileCodeGenerator</Generator>");
557 ps.WriteLine(" <LastGenOutput>Resources.Designer.cs</LastGenOutput>");
558 ps.WriteLine(" </EmbeddedResource>");
559 ps.WriteLine(" <Compile Include=\"{0}\">", file.Substring(0, file.LastIndexOf('.')) + ".Designer.cs");
560 ps.WriteLine(" <AutoGen>True</AutoGen>");
561 ps.WriteLine(" <DesignTime>True</DesignTime>");
562 ps.WriteLine(" <DependentUpon>Resources.resx</DependentUpon>");
563 ps.WriteLine(" </Compile>");
564 list.Add(file.Substring(0, file.LastIndexOf('.')) + ".Designer.cs");
565 }
566 if (project.Files.GetSubType(file).ToString() == "Settings")
567 {
568 //Console.WriteLine("File: " + file);
569 //Console.WriteLine("Last index: " + file.LastIndexOf('.'));
570 //Console.WriteLine("Length: " + file.Length);
571 ps.Write(" <{0} ", project.Files.GetBuildAction(file));
572 ps.WriteLine("Include=\"{0}\">", file);
573 int slash = file.LastIndexOf('\\');
574 string fileName = file.Substring(slash + 1, file.Length - slash - 1);
575 if (project.Files.GetBuildAction(file) == BuildAction.None)
576 {
577 ps.WriteLine(" <Generator>SettingsSingleFileGenerator</Generator>");
578
579 //Console.WriteLine("FileName: " + fileName);
580 //Console.WriteLine("FileNameMain: " + fileName.Substring(0, fileName.LastIndexOf('.')));
581 //Console.WriteLine("FileNameExt: " + fileName.Substring(fileName.LastIndexOf('.'), fileName.Length - fileName.LastIndexOf('.')));
582 if (slash == -1)
583 {
584 ps.WriteLine(" <LastGenOutput>{0}</LastGenOutput>", fileName.Substring(0, fileName.LastIndexOf('.')) + ".Designer.cs");
585 }
586 else
587 {
588 ps.WriteLine(" <LastGenOutput>{0}</LastGenOutput>", fileName.Substring(0, fileName.LastIndexOf('.')) + ".Designer.cs");
589 }
590 }
591 else
592 {
593 ps.WriteLine(" <SubType>Code</SubType>");
594 ps.WriteLine(" <AutoGen>True</AutoGen>");
595 ps.WriteLine(" <DesignTimeSharedInput>True</DesignTimeSharedInput>");
596 string fileNameShort = fileName.Substring(0, fileName.LastIndexOf('.'));
597 string fileNameShorter = fileNameShort.Substring(0, fileNameShort.LastIndexOf('.'));
598 ps.WriteLine(" <DependentUpon>{0}</DependentUpon>", fileNameShorter + ".settings");
599 }
600 ps.WriteLine(" </{0}>", project.Files.GetBuildAction(file));
601 }
602 else if (project.Files.GetSubType(file) != SubType.Designer)
603 {
604 if (!list.Contains(file))
605 {
606 ps.Write(" <{0} ", project.Files.GetBuildAction(file));
607 ps.WriteLine("Include=\"{0}\">", file);
608
609
610 if (file.Contains("Designer.cs"))
611 {
612 ps.WriteLine(" <DependentUpon>{0}</DependentUpon>", file.Substring(0, file.IndexOf(".Designer.cs")) + ".cs");
613 }
614
615 if (project.Files.GetIsLink(file))
616 {
617 ps.WriteLine(" <Link>{0}</Link>", Path.GetFileName(file));
618 }
619 else if (project.Files.GetBuildAction(file) != BuildAction.None)
620 {
621 if (project.Files.GetBuildAction(file) != BuildAction.EmbeddedResource)
622 {
623 ps.WriteLine(" <SubType>{0}</SubType>", project.Files.GetSubType(file));
624 }
625 }
626 if (project.Files.GetCopyToOutput(file) != CopyToOutput.Never)
627 {
628 ps.WriteLine(" <CopyToOutputDirectory>{0}</CopyToOutputDirectory>", project.Files.GetCopyToOutput(file));
629 }
630
631 ps.WriteLine(" </{0}>", project.Files.GetBuildAction(file));
632 }
633 }
634 }
635 // ps.WriteLine(" </Include>");
636
637 ps.WriteLine(" </ItemGroup>");
638 ps.WriteLine(" <Import Project=\"" + toolInfo.ImportProject + "\" />");
639 ps.WriteLine(" <PropertyGroup>");
640 ps.WriteLine(" <PreBuildEvent>");
641 ps.WriteLine(" </PreBuildEvent>");
642 ps.WriteLine(" <PostBuildEvent>");
643 ps.WriteLine(" </PostBuildEvent>");
644 ps.WriteLine(" </PropertyGroup>");
645 // ps.WriteLine(" </{0}>", toolInfo.XMLTag);
646 ps.WriteLine("</Project>");
647 }
648 #endregion
649
650 #region User File
651
652 ps = new StreamWriter(projectFile + ".user");
653 using (ps)
654 {
655 ps.WriteLine("<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">");
656 //ps.WriteLine( "<VisualStudioProject>" );
657 //ps.WriteLine(" <{0}>", toolInfo.XMLTag);
658 //ps.WriteLine(" <Build>");
659 ps.WriteLine(" <PropertyGroup>");
660 //ps.WriteLine(" <Settings ReferencePath=\"{0}\">", MakeRefPath(project));
661
662
663 ps.WriteLine(" <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>");
664 ps.WriteLine(" <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>");
665
666 if (projectFile.Contains( "OpenSim.csproj" ))
667 {
668 ps.WriteLine(" <StartArguments>-loginserver -sandbox -accounts</StartArguments>");
669 }
670
671 ps.WriteLine(" <ReferencePath>{0}</ReferencePath>", MakeRefPath(project));
672 ps.WriteLine(" <LastOpenVersion>{0}</LastOpenVersion>", this.ProductVersion);
673 ps.WriteLine(" <ProjectView>ProjectFiles</ProjectView>");
674 ps.WriteLine(" <ProjectTrust>0</ProjectTrust>");
675 ps.WriteLine(" </PropertyGroup>");
676 foreach (ConfigurationNode conf in project.Configurations)
677 {
678 ps.Write(" <PropertyGroup");
679 ps.Write(" Condition = \" '$(Configuration)|$(Platform)' == '{0}|AnyCPU' \"", conf.Name);
680 ps.WriteLine(" />");
681 }
682
683 ps.WriteLine("</Project>");
684 }
685 #endregion
686
687 kernel.CurrentWorkingDirectory.Pop();
688 }
689
690 private void WriteSolution(SolutionNode solution)
691 {
692 kernel.Log.Write("Creating {0} solution and project files", this.VersionName);
693
694 foreach (ProjectNode project in solution.Projects)
695 {
696 kernel.Log.Write("...Creating project: {0}", project.Name);
697 WriteProject(solution, project);
698 }
699
700 kernel.Log.Write("");
701 string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
702 StreamWriter ss = new StreamWriter(solutionFile);
703
704 kernel.CurrentWorkingDirectory.Push();
705 Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile));
706
707 using (ss)
708 {
709 ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", this.SolutionVersion);
710 ss.WriteLine("# Visual Studio 2005");
711 foreach (ProjectNode project in solution.Projects)
712 {
713 if (!tools.ContainsKey(project.Language))
714 {
715 throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
716 }
717
718 ToolInfo toolInfo = (ToolInfo)tools[project.Language];
719
720 string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath);
721 ss.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{{{3}}}\"",
722 toolInfo.Guid, project.Name, Helper.MakeFilePath(path, project.Name,
723 toolInfo.FileExtension), project.Guid.ToString().ToUpper());
724
725 //ss.WriteLine(" ProjectSection(ProjectDependencies) = postProject");
726 //ss.WriteLine(" EndProjectSection");
727
728 ss.WriteLine("EndProject");
729 }
730
731 if (solution.Files != null)
732 {
733 ss.WriteLine("Project(\"{0}\") = \"Solution Items\", \"Solution Items\", \"{1}\"", "{2150E333-8FDC-42A3-9474-1A3956D46DE8}", "{468F1D07-AD17-4CC3-ABD0-2CA268E4E1A6}");
734 ss.WriteLine("\tProjectSection(SolutionItems) = preProject");
735 foreach (string file in solution.Files)
736 ss.WriteLine("\t\t{0} = {0}", file);
737 ss.WriteLine("\tEndProjectSection");
738 ss.WriteLine("EndProject");
739 }
740
741 ss.WriteLine("Global");
742
743 ss.WriteLine(" GlobalSection(SolutionConfigurationPlatforms) = preSolution");
744 foreach (ConfigurationNode conf in solution.Configurations)
745 {
746 ss.WriteLine(" {0}|Any CPU = {0}|Any CPU", conf.Name);
747 }
748 ss.WriteLine(" EndGlobalSection");
749
750 if (solution.Projects.Count > 1)
751 {
752 ss.WriteLine(" GlobalSection(ProjectDependencies) = postSolution");
753 }
754 foreach (ProjectNode project in solution.Projects)
755 {
756 for (int i = 0; i < project.References.Count; i++)
757 {
758 ReferenceNode refr = (ReferenceNode)project.References[i];
759 if (solution.ProjectsTable.ContainsKey(refr.Name))
760 {
761 ProjectNode refProject = (ProjectNode)solution.ProjectsTable[refr.Name];
762 ss.WriteLine(" ({{{0}}}).{1} = ({{{2}}})",
763 project.Guid.ToString().ToUpper()
764 , i,
765 refProject.Guid.ToString().ToUpper()
766 );
767 }
768 }
769 }
770 if (solution.Projects.Count > 1)
771 {
772 ss.WriteLine(" EndGlobalSection");
773 }
774 ss.WriteLine(" GlobalSection(ProjectConfigurationPlatforms) = postSolution");
775 foreach (ProjectNode project in solution.Projects)
776 {
777 foreach (ConfigurationNode conf in solution.Configurations)
778 {
779 ss.WriteLine(" {{{0}}}.{1}|Any CPU.ActiveCfg = {1}|Any CPU",
780 project.Guid.ToString().ToUpper(),
781 conf.Name);
782
783 ss.WriteLine(" {{{0}}}.{1}|Any CPU.Build.0 = {1}|Any CPU",
784 project.Guid.ToString().ToUpper(),
785 conf.Name);
786 }
787 }
788 ss.WriteLine(" EndGlobalSection");
789 ss.WriteLine(" GlobalSection(SolutionProperties) = preSolution");
790 ss.WriteLine(" HideSolutionNode = FALSE");
791 ss.WriteLine(" EndGlobalSection");
792
793 ss.WriteLine("EndGlobal");
794 }
795
796 kernel.CurrentWorkingDirectory.Pop();
797 }
798
799 private void CleanProject(ProjectNode project)
800 {
801 kernel.Log.Write("...Cleaning project: {0}", project.Name);
802
803 ToolInfo toolInfo = (ToolInfo)tools[project.Language];
804 string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension);
805 string userFile = projectFile + ".user";
806
807 Helper.DeleteIfExists(projectFile);
808 Helper.DeleteIfExists(userFile);
809 }
810
811 private void CleanSolution(SolutionNode solution)
812 {
813 kernel.Log.Write("Cleaning {0} solution and project files", this.VersionName, solution.Name);
814
815 string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln");
816 string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo");
817
818 Helper.DeleteIfExists(slnFile);
819 Helper.DeleteIfExists(suoFile);
820
821 foreach (ProjectNode project in solution.Projects)
822 {
823 CleanProject(project);
824 }
825
826 kernel.Log.Write("");
827 }
828
829 #endregion
830
831 #region ITarget Members
832
833 /// <summary>
834 /// Writes the specified kern.
835 /// </summary>
836 /// <param name="kern">The kern.</param>
837 public virtual void Write(Kernel kern)
838 {
839 if (kern == null)
840 {
841 throw new ArgumentNullException("kern");
842 }
843 kernel = kern;
844 foreach (SolutionNode sol in kernel.Solutions)
845 {
846 WriteSolution(sol);
847 }
848 kernel = null;
849 }
850
851 /// <summary>
852 /// Cleans the specified kern.
853 /// </summary>
854 /// <param name="kern">The kern.</param>
855 public virtual void Clean(Kernel kern)
856 {
857 if (kern == null)
858 {
859 throw new ArgumentNullException("kern");
860 }
861 kernel = kern;
862 foreach (SolutionNode sol in kernel.Solutions)
863 {
864 CleanSolution(sol);
865 }
866 kernel = null;
867 }
868
869 /// <summary>
870 /// Gets the name.
871 /// </summary>
872 /// <value>The name.</value>
873 public virtual string Name
874 {
875 get
876 {
877 return "vs2005";
878 }
879 }
880
881 #endregion
882 }
883}
diff --git a/Prebuild/src/Core/UnknownLanguageException.cs b/Prebuild/src/Core/UnknownLanguageException.cs
new file mode 100644
index 0000000..cbd1dc1
--- /dev/null
+++ b/Prebuild/src/Core/UnknownLanguageException.cs
@@ -0,0 +1,63 @@
1/*
2 * $RCSfile$
3 * Copyright (C) 2004, 2005 David Hudson (jendave@yahoo.com)
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20using System;
21using System.Runtime.Serialization;
22
23namespace Prebuild.Core
24{
25 /// <summary>
26 /// </summary>
27 [Serializable()]
28 public class UnknownLanguageException : Exception
29 {
30 /// <summary>
31 /// Basic exception.
32 /// </summary>
33 public UnknownLanguageException()
34 {
35 }
36
37 /// <summary>
38 /// Exception with specified string
39 /// </summary>
40 /// <param name="message">Exception message</param>
41 public UnknownLanguageException(string message): base(message)
42 {
43 }
44
45 /// <summary>
46 ///
47 /// </summary>
48 /// <param name="message"></param>
49 /// <param name="exception"></param>
50 public UnknownLanguageException(string message, Exception exception) : base(message, exception)
51 {
52 }
53
54 /// <summary>
55 ///
56 /// </summary>
57 /// <param name="info"></param>
58 /// <param name="context"></param>
59 protected UnknownLanguageException(SerializationInfo info, StreamingContext context) : base( info, context )
60 {
61 }
62 }
63}
diff --git a/Prebuild/src/Core/Utilities/CommandLineCollection.cs b/Prebuild/src/Core/Utilities/CommandLineCollection.cs
new file mode 100644
index 0000000..496731f
--- /dev/null
+++ b/Prebuild/src/Core/Utilities/CommandLineCollection.cs
@@ -0,0 +1,162 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: robloach $
30 * $Date: 2006-09-26 00:30:53 +0200 (ti, 26 sep 2006) $
31 * $Revision: 165 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Collections.Specialized;
38using System.Diagnostics;
39
40namespace Prebuild.Core.Utilities
41{
42 /// <summary>
43 /// The CommandLine class parses and interprets the command-line arguments passed to
44 /// prebuild.
45 /// </summary>
46 public class CommandLineCollection
47 {
48 #region Fields
49
50 // The raw OS arguments
51 private string[] m_RawArgs;
52
53 // Command-line argument storage
54 private Hashtable m_Arguments;
55
56 #endregion
57
58 #region Constructors
59
60 /// <summary>
61 /// Create a new CommandLine instance and set some internal variables.
62 /// </summary>
63 public CommandLineCollection(string[] args)
64 {
65 m_RawArgs = args;
66 m_Arguments = new Hashtable();
67
68 Parse();
69 }
70
71 #endregion
72
73 #region Private Methods
74
75 private void Parse()
76 {
77 if(m_RawArgs.Length < 1)
78 return;
79
80 int idx = 0;
81 string arg = null, lastArg = null;
82
83 while(idx <m_RawArgs.Length)
84 {
85 arg = m_RawArgs[idx];
86
87 if(arg.Length > 2 && arg[0] == '/')
88 {
89 arg = arg.Substring(1);
90 lastArg = arg;
91 m_Arguments[arg] = "";
92 }
93 else
94 {
95 if(lastArg != null)
96 {
97 m_Arguments[lastArg] = arg;
98 lastArg = null;
99 }
100 }
101
102 idx++;
103 }
104 }
105
106 #endregion
107
108 #region Public Methods
109
110 /// <summary>
111 /// Wases the passed.
112 /// </summary>
113 /// <param name="arg">The arg.</param>
114 /// <returns></returns>
115 public bool WasPassed(string arg)
116 {
117 return (m_Arguments.ContainsKey(arg));
118 }
119
120 #endregion
121
122 #region Properties
123
124 /// <summary>
125 /// Gets the parameter associated with the command line option
126 /// </summary>
127 /// <remarks>Returns null if option was not specified,
128 /// null string if no parameter was specified, and the value if a parameter was specified</remarks>
129 public string this[string index]
130 {
131 get
132 {
133 if(m_Arguments.ContainsKey(index))
134 {
135 return (string)(m_Arguments[index]);
136 }
137 else
138 {
139 return null;
140 }
141 }
142 }
143
144 #endregion
145
146 #region IEnumerable Members
147
148 /// <summary>
149 /// Returns an enumerator that can iterate through a collection.
150 /// </summary>
151 /// <returns>
152 /// An <see cref="T:System.Collections.IDictionaryEnumerator"/>
153 /// that can be used to iterate through the collection.
154 /// </returns>
155 public IDictionaryEnumerator GetEnumerator()
156 {
157 return m_Arguments.GetEnumerator();
158 }
159
160 #endregion
161 }
162}
diff --git a/Prebuild/src/Core/Utilities/CurrentDirectory.cs b/Prebuild/src/Core/Utilities/CurrentDirectory.cs
new file mode 100644
index 0000000..a76d844
--- /dev/null
+++ b/Prebuild/src/Core/Utilities/CurrentDirectory.cs
@@ -0,0 +1,89 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37
38namespace Prebuild.Core.Utilities
39{
40 /// <summary>
41 ///
42 /// </summary>
43 public class CurrentDirectory
44 {
45 #region Fields
46
47 private Stack m_Stack;
48
49 #endregion
50
51 #region Constructors
52
53 /// <summary>
54 /// Initializes a new instance of the <see cref="CurrentDirectory"/> class.
55 /// </summary>
56 public CurrentDirectory()
57 {
58 m_Stack = new Stack();
59 }
60
61 #endregion
62
63 #region Public Methods
64
65 /// <summary>
66 /// Pushes this instance.
67 /// </summary>
68 public void Push()
69 {
70 m_Stack.Push(Environment.CurrentDirectory);
71 }
72
73 /// <summary>
74 /// Pops this instance.
75 /// </summary>
76 public void Pop()
77 {
78 if(m_Stack.Count < 1)
79 {
80 return;
81 }
82
83 string cwd = (string)m_Stack.Pop();
84 Helper.SetCurrentDir(cwd);
85 }
86
87 #endregion
88 }
89}
diff --git a/Prebuild/src/Core/Utilities/Helper.cs b/Prebuild/src/Core/Utilities/Helper.cs
new file mode 100644
index 0000000..33c9618
--- /dev/null
+++ b/Prebuild/src/Core/Utilities/Helper.cs
@@ -0,0 +1,661 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2007-02-13 21:58:03 +0100 (ti, 13 feb 2007) $
31 * $Revision: 205 $
32 */
33#endregion
34
35using System;
36using System.Collections;
37using System.Diagnostics;
38using System.IO;
39using System.Runtime.InteropServices;
40using System.Text.RegularExpressions;
41using System.Collections.Specialized;
42using System.Xml;
43using Prebuild.Core.Nodes;
44
45namespace Prebuild.Core.Utilities
46{
47 /// <summary>
48 ///
49 /// </summary>
50 public class Helper
51 {
52 #region Fields
53
54 private static Stack dirStack;
55 private static Regex varRegex;
56 static bool checkForOSVariables;
57
58 /// <summary>
59 ///
60 /// </summary>
61 public static bool CheckForOSVariables
62 {
63 get
64 {
65 return checkForOSVariables;
66 }
67 set
68 {
69 checkForOSVariables = value;
70 }
71 }
72
73 #endregion
74
75 #region Constructors
76
77 /// <summary>
78 /// Initializes the <see cref="Helper"/> class.
79 /// </summary>
80 static Helper()
81 {
82 dirStack = new Stack();
83 //m_VarRegex = new Regex(@"\${(?<var>[\w|_]+)}");
84 }
85
86 #endregion
87
88 #region Properties
89
90 /// <summary>
91 ///
92 /// </summary>
93 public static Stack DirStack
94 {
95 get
96 {
97 return dirStack;
98 }
99 }
100
101 /// <summary>
102 ///
103 /// </summary>
104 public static Regex VarRegex
105 {
106 get
107 {
108 return varRegex;
109 }
110 set
111 {
112 varRegex = value;
113 }
114 }
115
116 #endregion
117
118 #region Public Methods
119
120 #region String Parsing
121 #region Inner Classes and Delegates
122 /// <summary>
123 ///
124 /// </summary>
125 public delegate string StringLookup(string key);
126
127 #endregion
128
129 /// <summary>
130 /// Gets a collection of StringLocationPair objects that represent the matches
131 /// </summary>
132 /// <param name="target">The target.</param>
133 /// <param name="beforeGroup">The before group.</param>
134 /// <param name="afterGroup">The after group.</param>
135 /// <param name="includeDelimitersInSubstrings">if set to <c>true</c> [include delimiters in substrings].</param>
136 /// <returns></returns>
137 public static StringCollection FindGroups(string target, string beforeGroup, string afterGroup, bool includeDelimitersInSubstrings)
138 {
139 if( beforeGroup == null )
140 {
141 throw new ArgumentNullException("beforeGroup");
142 }
143 if( afterGroup == null )
144 {
145 throw new ArgumentNullException("afterGroup");
146 }
147 StringCollection results = new StringCollection();
148 if(target == null || target.Length == 0)
149 {
150 return results;
151 }
152
153 int beforeMod = 0;
154 int afterMod = 0;
155 if(includeDelimitersInSubstrings)
156 {
157 //be sure to not exlude the delims
158 beforeMod = beforeGroup.Length;
159 afterMod = afterGroup.Length;
160 }
161 int startIndex = 0;
162 while((startIndex = target.IndexOf(beforeGroup,startIndex)) != -1) {
163 int endIndex = target.IndexOf(afterGroup,startIndex);//the index of the char after it
164 if(endIndex == -1)
165 {
166 break;
167 }
168 int length = endIndex - startIndex - beforeGroup.Length;//move to the first char in the string
169 string substring = substring = target.Substring(startIndex + beforeGroup.Length - beforeMod,
170 length - afterMod);
171
172 results.Add(substring);
173 //results.Add(new StringLocationPair(substring,startIndex));
174 startIndex = endIndex + 1;
175 //the Interpolate*() methods will not work if expressions are expandded inside expression due to an optimization
176 //so start after endIndex
177
178 }
179 return results;
180 }
181
182 /// <summary>
183 /// Replaces the groups.
184 /// </summary>
185 /// <param name="target">The target.</param>
186 /// <param name="beforeGroup">The before group.</param>
187 /// <param name="afterGroup">The after group.</param>
188 /// <param name="lookup">The lookup.</param>
189 /// <returns></returns>
190 public static string ReplaceGroups(string target, string beforeGroup, string afterGroup, StringLookup lookup) {
191 if( target == null )
192 {
193 throw new ArgumentNullException("target");
194 }
195 //int targetLength = target.Length;
196 StringCollection strings = FindGroups(target,beforeGroup,afterGroup,false);
197 if( lookup == null )
198 {
199 throw new ArgumentNullException("lookup");
200 }
201 foreach(string substring in strings)
202 {
203 target = target.Replace(beforeGroup + substring + afterGroup, lookup(substring) );
204 }
205 return target;
206 }
207
208 /// <summary>
209 /// Replaces ${var} statements in a string with the corresonding values as detirmined by the lookup delegate
210 /// </summary>
211 /// <param name="target">The target.</param>
212 /// <param name="lookup">The lookup.</param>
213 /// <returns></returns>
214 public static string InterpolateForVariables(string target, StringLookup lookup)
215 {
216 return ReplaceGroups(target, "${" , "}" , lookup);
217 }
218
219 /// <summary>
220 /// Replaces ${var} statements in a string with the corresonding environment variable with name var
221 /// </summary>
222 /// <param name="target"></param>
223 /// <returns></returns>
224 public static string InterpolateForEnvironmentVariables(string target)
225 {
226 return InterpolateForVariables(target, new StringLookup(Environment.GetEnvironmentVariable));
227 }
228
229 #endregion
230
231 /// <summary>
232 /// Translates the value.
233 /// </summary>
234 /// <param name="translateType">Type of the translate.</param>
235 /// <param name="translationItem">The translation item.</param>
236 /// <returns></returns>
237 public static object TranslateValue(Type translateType, string translationItem)
238 {
239 if(translationItem == null)
240 {
241 return null;
242 }
243
244 try
245 {
246 string lowerVal = translationItem.ToLower();
247 if(translateType == typeof(bool))
248 {
249 return (lowerVal == "true" || lowerVal == "1" || lowerVal == "y" || lowerVal == "yes" || lowerVal == "on");
250 }
251 else if(translateType == typeof(int))
252 {
253 return (Int32.Parse(translationItem));
254 }
255 else
256 {
257 return translationItem;
258 }
259 }
260 catch(FormatException)
261 {
262 return null;
263 }
264 }
265
266 /// <summary>
267 /// Deletes if exists.
268 /// </summary>
269 /// <param name="file">The file.</param>
270 /// <returns></returns>
271 public static bool DeleteIfExists(string file)
272 {
273 string resFile = null;
274 try
275 {
276 resFile = ResolvePath(file);
277 }
278 catch(ArgumentException)
279 {
280 return false;
281 }
282
283 if(!File.Exists(resFile))
284 {
285 return false;
286 }
287
288 File.Delete(resFile);
289 return true;
290 }
291
292 // This little gem was taken from the NeL source, thanks guys!
293 /// <summary>
294 /// Makes a relative path
295 /// </summary>
296 /// <param name="startPath">Path to start from</param>
297 /// <param name="endPath">Path to end at</param>
298 /// <returns>Path that will get from startPath to endPath</returns>
299 public static string MakePathRelativeTo(string startPath, string endPath)
300 {
301 string tmp = NormalizePath(startPath, '/');
302 string src = NormalizePath(endPath, '/');
303 string prefix = "";
304
305 while(true)
306 {
307 if((String.Compare(tmp, 0, src, 0, tmp.Length) == 0))
308 {
309 string ret;
310 int size = tmp.Length;
311 if(size == src.Length)
312 {
313 return "./";
314 }
315 if ((src.Length > tmp.Length) && src[tmp.Length-1] != '/' && src[tmp.Length-1] != '\\')
316 {
317 }
318 else
319 {
320 ret = prefix + endPath.Substring(size, endPath.Length - size);
321 ret = ret.Trim();
322 if(ret[0] == '/' || ret[0] == '\\')
323 {
324 ret = "." + ret;
325 }
326
327 return NormalizePath(ret);
328 }
329
330 }
331
332 if(tmp.Length < 2)
333 {
334 break;
335 }
336
337 int lastPos = tmp.LastIndexOf('/', tmp.Length - 2);
338 int prevPos = tmp.IndexOf('/');
339
340 if((lastPos == prevPos) || (lastPos == -1))
341 {
342 break;
343 }
344
345 tmp = tmp.Substring(0, lastPos + 1);
346 prefix += "../";
347 }
348
349 return endPath;
350 }
351
352 /// <summary>
353 /// Resolves the path.
354 /// </summary>
355 /// <param name="path">The path.</param>
356 /// <returns></returns>
357 public static string ResolvePath(string path)
358 {
359 string tmpPath = NormalizePath(path);
360 if(tmpPath.Length < 1)
361 {
362 tmpPath = ".";
363 }
364
365 tmpPath = Path.GetFullPath(tmpPath);
366 if(!File.Exists(tmpPath) && !Directory.Exists(tmpPath))
367 {
368 throw new ArgumentException("Path could not be resolved: " + tmpPath);
369 }
370
371 return tmpPath;
372 }
373
374 /// <summary>
375 /// Normalizes the path.
376 /// </summary>
377 /// <param name="path">The path.</param>
378 /// <param name="separatorCharacter">The separator character.</param>
379 /// <returns></returns>
380 public static string NormalizePath(string path, char separatorCharacter)
381 {
382 if(path == null || path == "" || path.Length < 1)
383 {
384 return "";
385 }
386
387 string tmpPath = path.Replace('\\', '/');
388 tmpPath = tmpPath.Replace('/', separatorCharacter);
389 return tmpPath;
390 }
391
392 /// <summary>
393 /// Normalizes the path.
394 /// </summary>
395 /// <param name="path">The path.</param>
396 /// <returns></returns>
397 public static string NormalizePath(string path)
398 {
399 return NormalizePath(path, Path.DirectorySeparatorChar);
400 }
401
402 /// <summary>
403 /// Ends the path.
404 /// </summary>
405 /// <param name="path">The path.</param>
406 /// <param name="separatorCharacter">The separator character.</param>
407 /// <returns></returns>
408 public static string EndPath(string path, char separatorCharacter)
409 {
410 if(path == null || path == "" || path.Length < 1)
411 {
412 return "";
413 }
414
415 if(!path.EndsWith(separatorCharacter.ToString()))
416 {
417 return (path + separatorCharacter);
418 }
419
420 return path;
421 }
422
423 /// <summary>
424 /// Ends the path.
425 /// </summary>
426 /// <param name="path">The path.</param>
427 /// <returns></returns>
428 public static string EndPath(string path)
429 {
430 return EndPath(path, Path.DirectorySeparatorChar);
431 }
432
433 /// <summary>
434 /// Makes the file path.
435 /// </summary>
436 /// <param name="path">The path.</param>
437 /// <param name="name">The name.</param>
438 /// <param name="ext">The ext.</param>
439 /// <returns></returns>
440 public static string MakeFilePath(string path, string name, string ext)
441 {
442 string ret = EndPath(NormalizePath(path));
443
444 if( name == null )
445 {
446 throw new ArgumentNullException("name");
447 }
448
449 ret += name;
450 if(!name.EndsWith("." + ext))
451 {
452 ret += "." + ext;
453 }
454
455 //foreach(char c in Path.GetInvalidPathChars())
456 //{
457 // ret = ret.Replace(c, '_');
458 //}
459
460 return ret;
461 }
462
463 /// <summary>
464 /// Makes the file path.
465 /// </summary>
466 /// <param name="path">The path.</param>
467 /// <param name="name">The name.</param>
468 /// <returns></returns>
469 public static string MakeFilePath(string path, string name)
470 {
471 string ret = EndPath(NormalizePath(path));
472
473 if( name == null )
474 {
475 throw new ArgumentNullException("name");
476 }
477
478 ret += name;
479
480 //foreach (char c in Path.GetInvalidPathChars())
481 //{
482 // ret = ret.Replace(c, '_');
483 //}
484
485 return ret;
486 }
487
488 /// <summary>
489 ///
490 /// </summary>
491 /// <param name="path"></param>
492 /// <returns></returns>
493 public static string MakeReferencePath(string path)
494 {
495 string ret = EndPath(NormalizePath(path));
496
497 //foreach (char c in Path.GetInvalidPathChars())
498 //{
499 // ret = ret.Replace(c, '_');
500 //}
501
502 return ret;
503 }
504
505 /// <summary>
506 /// Sets the current dir.
507 /// </summary>
508 /// <param name="path">The path.</param>
509 public static void SetCurrentDir(string path)
510 {
511 if( path == null )
512 {
513 throw new ArgumentNullException("path");
514 }
515 if(path.Length < 1)
516 {
517 return;
518 }
519
520 Environment.CurrentDirectory = path;
521 }
522
523 /// <summary>
524 /// Checks the type.
525 /// </summary>
526 /// <param name="typeToCheck">The type to check.</param>
527 /// <param name="attr">The attr.</param>
528 /// <param name="inter">The inter.</param>
529 /// <returns></returns>
530 public static object CheckType(Type typeToCheck, Type attr, Type inter)
531 {
532 if(typeToCheck == null || attr == null)
533 {
534 return null;
535 }
536
537 object[] attrs = typeToCheck.GetCustomAttributes(attr, false);
538 if(attrs == null || attrs.Length < 1)
539 {
540 return null;
541 }
542 if( inter == null )
543 {
544 throw new ArgumentNullException("inter");
545 }
546
547 if(typeToCheck.GetInterface(inter.FullName) == null)
548 {
549 return null;
550 }
551
552 return attrs[0];
553 }
554
555 /* A bit of overhead for simple group parsing, there are problems with Regex in Mono
556 public static string ParseValue(string val)
557 {
558 if(val == null || val.Length < 1 || !CheckForOSVariables)
559 return val;
560
561 string tmp = val;
562 Match m = m_VarRegex.Match(val);
563 while(m.Success)
564 {
565 if(m.Groups["var"] == null)
566 continue;
567
568 Capture c = m.Groups["var"].Captures[0];
569 if(c == null)
570 continue;
571
572 string var = c.Value;
573 string envVal = Environment.GetEnvironmentVariable(var);
574 if(envVal == null)
575 envVal = "";
576
577 tmp = tmp.Replace("${" + var + "}", envVal);
578 m = m.NextMatch();
579 }
580
581 return tmp;
582 }*/
583
584 /// <summary>
585 /// Attributes the value.
586 /// </summary>
587 /// <param name="node">The node.</param>
588 /// <param name="attr">The attr.</param>
589 /// <param name="def">The def.</param>
590 /// <returns></returns>
591 public static string AttributeValue(XmlNode node, string attr, string def)
592 {
593 if( node == null )
594 {
595 throw new ArgumentNullException("node");
596 }
597 if(node.Attributes[attr] == null)
598 {
599 return def;
600 }
601 string val = node.Attributes[attr].Value;
602 if(!CheckForOSVariables)
603 {
604 return val;
605 }
606
607 return InterpolateForEnvironmentVariables(val);
608 }
609
610 /// <summary>
611 /// Parses the boolean.
612 /// </summary>
613 /// <param name="node">The node.</param>
614 /// <param name="attr">The attr.</param>
615 /// <param name="defaultValue">if set to <c>true</c> [default value].</param>
616 /// <returns></returns>
617 public static bool ParseBoolean(XmlNode node, string attr, bool defaultValue)
618 {
619 if( node == null )
620 {
621 throw new ArgumentNullException("node");
622 }
623 if(node.Attributes[attr] == null)
624 {
625 return defaultValue;
626 }
627 return bool.Parse(node.Attributes[attr].Value);
628 }
629
630 /// <summary>
631 /// Enums the attribute value.
632 /// </summary>
633 /// <param name="node">The node.</param>
634 /// <param name="attr">The attr.</param>
635 /// <param name="enumType">Type of the enum.</param>
636 /// <param name="def">The def.</param>
637 /// <returns></returns>
638 public static object EnumAttributeValue(XmlNode node, string attr, Type enumType, object def)
639 {
640 if( def == null )
641 {
642 throw new ArgumentNullException("def");
643 }
644 string val = AttributeValue(node, attr, def.ToString());
645 return Enum.Parse(enumType, val, true);
646 }
647
648 /// <summary>
649 ///
650 /// </summary>
651 /// <param name="assemblyName"></param>
652 /// <param name="projectType"></param>
653 /// <returns></returns>
654 public static string AssemblyFullName(string assemblyName, ProjectType projectType)
655 {
656 return assemblyName + (projectType == ProjectType.Library ? ".dll" : ".exe");
657 }
658
659 #endregion
660 }
661}
diff --git a/Prebuild/src/Core/Utilities/Log.cs b/Prebuild/src/Core/Utilities/Log.cs
new file mode 100644
index 0000000..da2cc96
--- /dev/null
+++ b/Prebuild/src/Core/Utilities/Log.cs
@@ -0,0 +1,279 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.IO;
37
38namespace Prebuild.Core.Utilities
39{
40 /// <summary>
41 ///
42 /// </summary>
43 public enum LogType
44 {
45 /// <summary>
46 ///
47 /// </summary>
48 None,
49 /// <summary>
50 ///
51 /// </summary>
52 Info,
53 /// <summary>
54 ///
55 /// </summary>
56 Warning,
57 /// <summary>
58 ///
59 /// </summary>
60 Error
61 }
62
63 /// <summary>
64 ///
65 /// </summary>
66 [Flags]
67 public enum LogTargets
68 {
69 /// <summary>
70 ///
71 /// </summary>
72 None = 0,
73 /// <summary>
74 ///
75 /// </summary>
76 Null = 1,
77 /// <summary>
78 ///
79 /// </summary>
80 File = 2,
81 /// <summary>
82 ///
83 /// </summary>
84 Console = 4
85 }
86
87 /// <summary>
88 /// Summary description for Log.
89 /// </summary>
90 public class Log : IDisposable
91 {
92 #region Fields
93
94 private StreamWriter m_Writer;
95 private LogTargets m_Target = LogTargets.Null;
96 bool disposed;
97
98 #endregion
99
100 #region Constructors
101
102 /// <summary>
103 /// Initializes a new instance of the <see cref="Log"/> class.
104 /// </summary>
105 /// <param name="target">The target.</param>
106 /// <param name="fileName">Name of the file.</param>
107 public Log(LogTargets target, string fileName)
108 {
109 m_Target = target;
110
111 if((m_Target & LogTargets.File) != 0)
112 {
113 m_Writer = new StreamWriter(fileName, false);
114 }
115 }
116
117 #endregion
118
119 #region Public Methods
120
121 /// <summary>
122 /// Writes this instance.
123 /// </summary>
124 public void Write()
125 {
126 Write(string.Empty);
127 }
128
129 /// <summary>
130 /// Writes the specified MSG.
131 /// </summary>
132 /// <param name="msg">The MSG.</param>
133 public void Write(string msg)
134 {
135 if((m_Target & LogTargets.Null) != 0)
136 {
137 return;
138 }
139
140 if((m_Target & LogTargets.Console) != 0)
141 {
142 Console.WriteLine(msg);
143 }
144 if((m_Target & LogTargets.File) != 0 && m_Writer != null)
145 {
146 m_Writer.WriteLine(msg);
147 }
148 }
149
150 /// <summary>
151 /// Writes the specified format.
152 /// </summary>
153 /// <param name="format">The format.</param>
154 /// <param name="args">The args.</param>
155 public void Write(string format, params object[] args)
156 {
157 Write(string.Format(format,args));
158 }
159
160 /// <summary>
161 /// Writes the specified type.
162 /// </summary>
163 /// <param name="type">The type.</param>
164 /// <param name="format">The format.</param>
165 /// <param name="args">The args.</param>
166 public void Write(LogType type, string format, params object[] args)
167 {
168 if((m_Target & LogTargets.Null) != 0)
169 {
170 return;
171 }
172
173 string str = "";
174 switch(type)
175 {
176 case LogType.Info:
177 str = "[I] ";
178 break;
179 case LogType.Warning:
180 str = "[!] ";
181 break;
182 case LogType.Error:
183 str = "[X] ";
184 break;
185 }
186
187 Write(str + format,args);
188 }
189
190 /// <summary>
191 /// Writes the exception.
192 /// </summary>
193 /// <param name="type">The type.</param>
194 /// <param name="ex">The ex.</param>
195 public void WriteException(LogType type, Exception ex)
196 {
197 if(ex != null)
198 {
199 Write(type, ex.Message);
200 //#if DEBUG
201 m_Writer.WriteLine("Exception @{0} stack trace [[", ex.TargetSite.Name);
202 m_Writer.WriteLine(ex.StackTrace);
203 m_Writer.WriteLine("]]");
204 //#endif
205 }
206 }
207
208 /// <summary>
209 /// Flushes this instance.
210 /// </summary>
211 public void Flush()
212 {
213 if(m_Writer != null)
214 {
215 m_Writer.Flush();
216 }
217 }
218
219 #endregion
220
221 #region IDisposable Members
222
223 /// <summary>
224 /// Performs application-defined tasks associated with freeing, releasing, or
225 /// resetting unmanaged resources.
226 /// </summary>
227 public void Dispose()
228 {
229 Dispose(true);
230 GC.SuppressFinalize(this);
231 }
232
233 /// <summary>
234 /// Dispose objects
235 /// </summary>
236 /// <param name="disposing">
237 /// If true, it will dispose close the handle
238 /// </param>
239 /// <remarks>
240 /// Will dispose managed and unmanaged resources.
241 /// </remarks>
242 protected virtual void Dispose(bool disposing)
243 {
244 if (!this.disposed)
245 {
246 if (disposing)
247 {
248 if (m_Writer != null)
249 {
250 m_Writer.Close();
251 m_Writer = null;
252 }
253 }
254 }
255 this.disposed = true;
256 }
257
258 /// <summary>
259 ///
260 /// </summary>
261 ~Log()
262 {
263 this.Dispose(false);
264 }
265
266 /// <summary>
267 /// Closes and destroys this object
268 /// </summary>
269 /// <remarks>
270 /// Same as Dispose(true)
271 /// </remarks>
272 public void Close()
273 {
274 Dispose();
275 }
276
277 #endregion
278 }
279}
diff --git a/Prebuild/src/Core/WarningException.cs b/Prebuild/src/Core/WarningException.cs
new file mode 100644
index 0000000..a200bdc
--- /dev/null
+++ b/Prebuild/src/Core/WarningException.cs
@@ -0,0 +1,93 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-01-28 01:49:58 +0100 (lö, 28 jan 2006) $
31 * $Revision: 71 $
32 */
33#endregion
34
35using System;
36using System.Runtime.Serialization;
37
38namespace Prebuild.Core
39{
40 /// <summary>
41 ///
42 /// </summary>
43 [Serializable()]
44 public class WarningException : Exception
45 {
46 #region Constructors
47
48 /// <summary>
49 ///
50 /// </summary>
51 public WarningException()
52 {
53 }
54
55 /// <summary>
56 ///
57 /// </summary>
58 /// <param name="format"></param>
59 /// <param name="args"></param>
60 public WarningException(string format, params object[] args)
61 : base(String.Format(format, args))
62 {
63 }
64
65 /// <summary>
66 /// Exception with specified string
67 /// </summary>
68 /// <param name="message">Exception message</param>
69 public WarningException(string message): base(message)
70 {
71 }
72
73 /// <summary>
74 ///
75 /// </summary>
76 /// <param name="message"></param>
77 /// <param name="exception"></param>
78 public WarningException(string message, Exception exception) : base(message, exception)
79 {
80 }
81
82 /// <summary>
83 ///
84 /// </summary>
85 /// <param name="info"></param>
86 /// <param name="context"></param>
87 protected WarningException(SerializationInfo info, StreamingContext context) : base( info, context )
88 {
89 }
90
91 #endregion
92 }
93}
diff --git a/Prebuild/src/Prebuild.cs b/Prebuild/src/Prebuild.cs
new file mode 100644
index 0000000..597db68
--- /dev/null
+++ b/Prebuild/src/Prebuild.cs
@@ -0,0 +1,165 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2006-09-26 23:43:35 +0200 (ti, 26 sep 2006) $
31 * $Revision: 168 $
32 */
33#endregion
34
35using System;
36using System.Collections.Specialized;
37using System.IO;
38using System.Reflection;
39using System.Runtime.InteropServices;
40using System.EnterpriseServices.Internal;
41
42using Prebuild.Core;
43using Prebuild.Core.Utilities;
44
45namespace Prebuild
46{
47 /// <summary>
48 ///
49 /// </summary>
50 class Prebuild
51 {
52 #region Main
53
54 [STAThread]
55 static void Main(string[] args)
56 {
57 Kernel kernel = null;
58 try
59 {
60 kernel = Kernel.Instance;
61 kernel.Initialize(LogTargets.File | LogTargets.Console, args);
62 bool exit = false;
63
64 if(kernel.CommandLine.WasPassed("usage"))
65 {
66 exit = true;
67 OutputUsage();
68 }
69 if(kernel.CommandLine.WasPassed("showtargets"))
70 {
71 exit = true;
72 OutputTargets(kernel);
73 }
74 if(kernel.CommandLine.WasPassed("install"))
75 {
76 exit = true;
77 InstallAssembly(kernel);
78 }
79 if(kernel.CommandLine.WasPassed("remove"))
80 {
81 exit = true;
82 RemoveAssembly(kernel);
83 }
84
85 if(!exit)
86 {
87 kernel.Process();
88 }
89 }
90 catch(Exception ex)
91 {
92 Console.WriteLine("Unhandled error: {0}", ex.Message);
93 //#if DEBUG
94 Console.WriteLine("{0}", ex.StackTrace);
95 //#endif
96 }
97 finally
98 {
99 if(kernel.PauseAfterFinish)
100 {
101 Console.WriteLine("\nPress enter to continue...");
102 Console.ReadLine();
103 }
104 }
105 }
106
107 #endregion
108
109 #region Private Methods
110
111 private static void InstallAssembly(Kernel kernel)
112 {
113 Publish publish = new Publish();
114 string file = kernel.CommandLine["install"];
115 //Console.WriteLine(".."+file+"..");
116 publish.GacInstall(file);
117 }
118
119 private static void RemoveAssembly(Kernel kernel)
120 {
121 Publish publish = new Publish();
122 string file = kernel.CommandLine["remove"];
123 publish.GacRemove(file);
124 }
125
126 private static void OutputUsage()
127 {
128 Console.WriteLine("Usage: prebuild /target <target> [options]");
129 Console.WriteLine("Available command-line switches:");
130 Console.WriteLine();
131 Console.WriteLine("/target Target for Prebuild");
132 Console.WriteLine("/clean Clean the build files for the given target");
133 Console.WriteLine("/file XML file to process");
134 Console.WriteLine("/log Log file to write to");
135 Console.WriteLine("/ppo Pre-process the file, but perform no other processing");
136 Console.WriteLine("/pause Pauses the application after execution to view the output");
137 Console.WriteLine("/yes Default to yes to any questions asked");
138 Console.WriteLine("/install Install assembly into the GAC");
139 Console.WriteLine("/remove Remove assembly from the GAC");
140 Console.WriteLine();
141 Console.WriteLine("See 'prebuild /showtargets for a list of available targets");
142 Console.WriteLine("See readme.txt or check out http://dnpb.sourceforge.net for more information");
143 Console.WriteLine();
144 }
145
146 private static void OutputTargets(Kernel kern)
147 {
148 Console.WriteLine("Targets available in Prebuild:");
149 Console.WriteLine("");
150 if(kern.Targets.Keys.Count > 0)
151 {
152 string[] targs = new string[kern.Targets.Keys.Count];
153 kern.Targets.Keys.CopyTo(targs, 0);
154 Array.Sort(targs);
155 foreach(string target in targs)
156 {
157 Console.WriteLine(target);
158 }
159 }
160 Console.WriteLine("");
161 }
162
163 #endregion
164 }
165}
diff --git a/Prebuild/src/Prebuild.csproj b/Prebuild/src/Prebuild.csproj
new file mode 100644
index 0000000..c8b859c
--- /dev/null
+++ b/Prebuild/src/Prebuild.csproj
@@ -0,0 +1,205 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{92E80C1C-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon>App.ico</ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>Prebuild</AssemblyName>
13 <AssemblyOriginatorKeyFile>Prebuild.snk</AssemblyOriginatorKeyFile>
14 <SignAssembly>true</SignAssembly>
15 <DefaultClientScript>JScript</DefaultClientScript>
16 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
17 <DefaultTargetSchema>IE50</DefaultTargetSchema>
18 <DelaySign>false</DelaySign>
19 <OutputType>Exe</OutputType>
20 <AppDesignerFolder></AppDesignerFolder>
21 <RootNamespace>Prebuild</RootNamespace>
22 <StartupObject>Prebuild.Prebuild</StartupObject>
23 <FileUpgradeFlags>
24 </FileUpgradeFlags>
25 </PropertyGroup>
26 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
27 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
28 <BaseAddress>285212672</BaseAddress>
29 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
30 <ConfigurationOverrideFile>
31 </ConfigurationOverrideFile>
32 <DefineConstants>DEBUG;TRACE</DefineConstants>
33 <DocumentationFile></DocumentationFile>
34 <DebugSymbols>True</DebugSymbols>
35 <FileAlignment>4096</FileAlignment>
36 <Optimize>False</Optimize>
37 <OutputPath>..\..\bin\</OutputPath>
38 <RegisterForComInterop>False</RegisterForComInterop>
39 <RemoveIntegerChecks>False</RemoveIntegerChecks>
40 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
41 <WarningLevel>4</WarningLevel>
42 <NoWarn>1595</NoWarn>
43 </PropertyGroup>
44 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
45 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
46 <BaseAddress>285212672</BaseAddress>
47 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
48 <ConfigurationOverrideFile>
49 </ConfigurationOverrideFile>
50 <DefineConstants>TRACE</DefineConstants>
51 <DocumentationFile></DocumentationFile>
52 <DebugSymbols>False</DebugSymbols>
53 <FileAlignment>4096</FileAlignment>
54 <Optimize>True</Optimize>
55 <OutputPath>..\..\bin\</OutputPath>
56 <RegisterForComInterop>False</RegisterForComInterop>
57 <RemoveIntegerChecks>False</RemoveIntegerChecks>
58 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
59 <WarningLevel>4</WarningLevel>
60 <NoWarn>1595</NoWarn>
61 </PropertyGroup>
62 <ItemGroup>
63 <Reference Include="System" >
64 <HintPath>System.dll</HintPath>
65 <Private>False</Private>
66 </Reference>
67 <Reference Include="System.EnterpriseServices" >
68 <HintPath>System.EnterpriseServices.dll</HintPath>
69 <Private>False</Private>
70 </Reference>
71 <Reference Include="System.Xml" >
72 <HintPath>System.Xml.dll</HintPath>
73 <Private>False</Private>
74 </Reference>
75 </ItemGroup>
76 <ItemGroup>
77 </ItemGroup>
78 <ItemGroup>
79 <EmbeddedResource Include="App.ico">
80 </EmbeddedResource>
81 <EmbeddedResource Include="data\prebuild-1.7.xsd">
82 </EmbeddedResource>
83 <Compile Include="Prebuild.cs">
84 <SubType>Code</SubType>
85 </Compile>
86 <Compile Include="Core\FatalException.cs">
87 <SubType>Code</SubType>
88 </Compile>
89 <Compile Include="Core\Kernel.cs">
90 <SubType>Code</SubType>
91 </Compile>
92 <Compile Include="Core\UnknownLanguageException.cs">
93 <SubType>Code</SubType>
94 </Compile>
95 <Compile Include="Core\WarningException.cs">
96 <SubType>Code</SubType>
97 </Compile>
98 <Compile Include="Core\Attributes\DataNodeAttribute.cs">
99 <SubType>Code</SubType>
100 </Compile>
101 <Compile Include="Core\Attributes\OptionNodeAttribute.cs">
102 <SubType>Code</SubType>
103 </Compile>
104 <Compile Include="Core\Attributes\TargetAttribute.cs">
105 <SubType>Code</SubType>
106 </Compile>
107 <Compile Include="Core\Interfaces\IDataNode.cs">
108 <SubType>Code</SubType>
109 </Compile>
110 <Compile Include="Core\Interfaces\ITarget.cs">
111 <SubType>Code</SubType>
112 </Compile>
113 <Compile Include="Core\Nodes\ConfigurationNode.cs">
114 <SubType>Code</SubType>
115 </Compile>
116 <Compile Include="Core\Nodes\DataNode.cs">
117 <SubType>Code</SubType>
118 </Compile>
119 <Compile Include="Core\Nodes\ExcludeNode.cs">
120 <SubType>Code</SubType>
121 </Compile>
122 <Compile Include="Core\Nodes\FileNode.cs">
123 <SubType>Code</SubType>
124 </Compile>
125 <Compile Include="Core\Nodes\FilesNode.cs">
126 <SubType>Code</SubType>
127 </Compile>
128 <Compile Include="Core\Nodes\MatchNode.cs">
129 <SubType>Code</SubType>
130 </Compile>
131 <Compile Include="Core\Nodes\OptionsNode.cs">
132 <SubType>Code</SubType>
133 </Compile>
134 <Compile Include="Core\Nodes\ProcessNode.cs">
135 <SubType>Code</SubType>
136 </Compile>
137 <Compile Include="Core\Nodes\ProjectNode.cs">
138 <SubType>Code</SubType>
139 </Compile>
140 <Compile Include="Core\Nodes\ReferenceNode.cs">
141 <SubType>Code</SubType>
142 </Compile>
143 <Compile Include="Core\Nodes\ReferencePathNode.cs">
144 <SubType>Code</SubType>
145 </Compile>
146 <Compile Include="Core\Nodes\SolutionNode.cs">
147 <SubType>Code</SubType>
148 </Compile>
149 <Compile Include="Core\Parse\IfContext.cs">
150 <SubType>Code</SubType>
151 </Compile>
152 <Compile Include="Core\Parse\Preprocessor.cs">
153 <SubType>Code</SubType>
154 </Compile>
155 <Compile Include="Core\Targets\AutotoolsTarget.cs">
156 <SubType>Code</SubType>
157 </Compile>
158 <Compile Include="Core\Targets\DebugTarget.cs">
159 <SubType>Code</SubType>
160 </Compile>
161 <Compile Include="Core\Targets\MonoDevelopTarget.cs">
162 <SubType>Code</SubType>
163 </Compile>
164 <Compile Include="Core\Targets\NAntTarget.cs">
165 <SubType>Code</SubType>
166 </Compile>
167 <Compile Include="Core\Targets\SharpDevelop2Target.cs">
168 <SubType>Code</SubType>
169 </Compile>
170 <Compile Include="Core\Targets\SharpDevelopTarget.cs">
171 <SubType>Code</SubType>
172 </Compile>
173 <Compile Include="Core\Targets\VS2002Target.cs">
174 <SubType>Code</SubType>
175 </Compile>
176 <Compile Include="Core\Targets\VS2003Target.cs">
177 <SubType>Code</SubType>
178 </Compile>
179 <Compile Include="Core\Targets\VS2005Target.cs">
180 <SubType>Code</SubType>
181 </Compile>
182 <Compile Include="Core\Utilities\CommandLineCollection.cs">
183 <SubType>Code</SubType>
184 </Compile>
185 <Compile Include="Core\Utilities\CurrentDirectory.cs">
186 <SubType>Code</SubType>
187 </Compile>
188 <Compile Include="Core\Utilities\Helper.cs">
189 <SubType>Code</SubType>
190 </Compile>
191 <Compile Include="Core\Utilities\Log.cs">
192 <SubType>Code</SubType>
193 </Compile>
194 <Compile Include="Properties\AssemblyInfo.cs">
195 <SubType>Code</SubType>
196 </Compile>
197 </ItemGroup>
198 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
199 <PropertyGroup>
200 <PreBuildEvent>
201 </PreBuildEvent>
202 <PostBuildEvent>
203 </PostBuildEvent>
204 </PropertyGroup>
205</Project>
diff --git a/Prebuild/src/Prebuild.csproj.user b/Prebuild/src/Prebuild.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/Prebuild/src/Prebuild.csproj.user
@@ -0,0 +1,12 @@
1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
5 <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath>
6 <LastOpenVersion>8.0.50727</LastOpenVersion>
7 <ProjectView>ProjectFiles</ProjectView>
8 <ProjectTrust>0</ProjectTrust>
9 </PropertyGroup>
10 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
11 <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
12</Project>
diff --git a/Prebuild/src/Prebuild.exe.build b/Prebuild/src/Prebuild.exe.build
new file mode 100644
index 0000000..2851125
--- /dev/null
+++ b/Prebuild/src/Prebuild.exe.build
@@ -0,0 +1,80 @@
1<?xml version="1.0" ?>
2<project name="Prebuild" default="build">
3 <target name="build">
4 <echo message="Build Directory is ${project::get-base-directory()}/${build.dir}" />
5 <mkdir dir="${project::get-base-directory()}/${build.dir}" />
6 <copy todir="${project::get-base-directory()}/${build.dir}">
7 <fileset basedir="${project::get-base-directory()}">
8 </fileset>
9 </copy>
10 <csc target="exe" debug="${build.debug}" keyfile="Prebuild.snk" unsafe="False" define="DEBUG;TRACE" output="${project::get-base-directory()}/${build.dir}/${project::get-name()}.exe" win32icon="App.ico">
11 <resources prefix="Prebuild" dynamicprefix="true" >
12 <include name="App.ico" />
13 <include name="data/prebuild-1.7.xsd" />
14 </resources>
15 <sources failonempty="true">
16 <include name="Prebuild.cs" />
17 <include name="Core/FatalException.cs" />
18 <include name="Core/Kernel.cs" />
19 <include name="Core/UnknownLanguageException.cs" />
20 <include name="Core/WarningException.cs" />
21 <include name="Core/Attributes/DataNodeAttribute.cs" />
22 <include name="Core/Attributes/OptionNodeAttribute.cs" />
23 <include name="Core/Attributes/TargetAttribute.cs" />
24 <include name="Core/Interfaces/IDataNode.cs" />
25 <include name="Core/Interfaces/ITarget.cs" />
26 <include name="Core/Nodes/ConfigurationNode.cs" />
27 <include name="Core/Nodes/DataNode.cs" />
28 <include name="Core/Nodes/ExcludeNode.cs" />
29 <include name="Core/Nodes/FileNode.cs" />
30 <include name="Core/Nodes/FilesNode.cs" />
31 <include name="Core/Nodes/MatchNode.cs" />
32 <include name="Core/Nodes/OptionsNode.cs" />
33 <include name="Core/Nodes/ProcessNode.cs" />
34 <include name="Core/Nodes/ProjectNode.cs" />
35 <include name="Core/Nodes/ReferenceNode.cs" />
36 <include name="Core/Nodes/ReferencePathNode.cs" />
37 <include name="Core/Nodes/SolutionNode.cs" />
38 <include name="Core/Parse/IfContext.cs" />
39 <include name="Core/Parse/Preprocessor.cs" />
40 <include name="Core/Targets/AutotoolsTarget.cs" />
41 <include name="Core/Targets/DebugTarget.cs" />
42 <include name="Core/Targets/MonoDevelopTarget.cs" />
43 <include name="Core/Targets/NAntTarget.cs" />
44 <include name="Core/Targets/SharpDevelop2Target.cs" />
45 <include name="Core/Targets/SharpDevelopTarget.cs" />
46 <include name="Core/Targets/VS2002Target.cs" />
47 <include name="Core/Targets/VS2003Target.cs" />
48 <include name="Core/Targets/VS2005Target.cs" />
49 <include name="Core/Utilities/CommandLineCollection.cs" />
50 <include name="Core/Utilities/CurrentDirectory.cs" />
51 <include name="Core/Utilities/Helper.cs" />
52 <include name="Core/Utilities/Log.cs" />
53 <include name="Properties/AssemblyInfo.cs" />
54 </sources>
55 <references basedir="${project::get-base-directory()}">
56 <lib>
57 <include name="${project::get-base-directory()}" />
58 <include name="${project::get-base-directory()}/${build.dir}" />
59 </lib>
60 <include name="System.dll" />
61 <include name="System.EnterpriseServices.dll" />
62 <include name="System.Xml.dll" />
63 </references>
64 </csc>
65 <echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../../bin/" />
66 <mkdir dir="${project::get-base-directory()}/../../bin/"/>
67 <copy todir="${project::get-base-directory()}/../../bin/">
68 <fileset basedir="${project::get-base-directory()}/${build.dir}/" >
69 <include name="*.dll"/>
70 <include name="*.exe"/>
71 </fileset>
72 </copy>
73 </target>
74 <target name="clean">
75 <delete dir="${bin.dir}" failonerror="false" />
76 <delete dir="${obj.dir}" failonerror="false" />
77 </target>
78 <target name="doc" description="Creates documentation.">
79 </target>
80</project>
diff --git a/Prebuild/src/Prebuild.snk b/Prebuild/src/Prebuild.snk
new file mode 100644
index 0000000..f9dce05
--- /dev/null
+++ b/Prebuild/src/Prebuild.snk
Binary files differ
diff --git a/Prebuild/src/Properties/AssemblyInfo.cs b/Prebuild/src/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..bfa9829
--- /dev/null
+++ b/Prebuild/src/Properties/AssemblyInfo.cs
@@ -0,0 +1,101 @@
1#region BSD License
2/*
3Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
4
5Redistribution and use in source and binary forms, with or without modification, are permitted
6provided that the following conditions are met:
7
8* Redistributions of source code must retain the above copyright notice, this list of conditions
9 and the following disclaimer.
10* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11 and the following disclaimer in the documentation and/or other materials provided with the
12 distribution.
13* The name of the author may not be used to endorse or promote products derived from this software
14 without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
17BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
22IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23*/
24#endregion
25
26#region CVS Information
27/*
28 * $Source$
29 * $Author: jendave $
30 * $Date: 2007-01-26 19:31:34 +0100 (fr, 26 jan 2007) $
31 * $Revision: 203 $
32 */
33#endregion
34
35using System;
36using System.Reflection;
37using System.Runtime.CompilerServices;
38using System.Runtime.InteropServices;
39using System.Security.Permissions;
40using System.Resources;
41
42
43// FxCop recommended attributes
44[assembly: ComVisible(false)]
45[assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted=true)]
46[assembly: CLSCompliant(true)]
47
48//
49// General Information about an assembly is controlled through the following
50// set of attributes. Change these attribute values to modify the information
51// associated with an assembly.
52//
53[assembly: AssemblyTitle(".NET Prebuild")]
54[assembly: AssemblyDescription("A .NET project file build tool")]
55[assembly: AssemblyConfiguration(".NET CLR")]
56[assembly: AssemblyCompany("The Prebuild Project")]
57[assembly: AssemblyProduct("")]
58[assembly: AssemblyCopyright("Copyright 2004-2006 Matthew Holmes, Dan Moorehead and David Hudson")]
59[assembly: AssemblyTrademark("")]
60[assembly: AssemblyCulture("")]
61[assembly: NeutralResourcesLanguageAttribute("en-US")]
62[assembly: AssemblyVersion("2.0.0.*")]
63
64//
65// Version information for an assembly consists of the following four values:
66//
67// Major Version
68// Minor Version
69// Build Number
70// Revision
71//
72// You can specify all the values or you can default the Revision and Build Numbers
73// by using the '*' as shown below:
74
75//
76// In order to sign your assembly you must specify a key to use. Refer to the
77// Microsoft .NET Framework documentation for more information on assembly signing.
78//
79// Use the attributes below to control which key is used for signing.
80//
81// Notes:
82// (*) If no key is specified, the assembly is not signed.
83// (*) KeyName refers to a key that has been installed in the Crypto Service
84// Provider (CSP) on your machine. KeyFile refers to a file which contains
85// a key.
86// (*) If the KeyFile and the KeyName values are both specified, the
87// following processing occurs:
88// (1) If the KeyName can be found in the CSP, that key is used.
89// (2) If the KeyName does not exist and the KeyFile does exist, the key
90// in the KeyFile is installed into the CSP and used.
91// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
92// When specifying the KeyFile, the location of the KeyFile should be
93// relative to the project output directory which is
94// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
95// located in the project directory, you would specify the AssemblyKeyFile
96// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
97// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
98// documentation for more information on this.
99//
100[assembly: AssemblyDelaySign(false)]
101[assembly: AssemblyKeyName("")]
diff --git a/Prebuild/src/data/dnpb-1.0.xsd b/Prebuild/src/data/dnpb-1.0.xsd
new file mode 100644
index 0000000..45cab86
--- /dev/null
+++ b/Prebuild/src/data/dnpb-1.0.xsd
@@ -0,0 +1,183 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified"
3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 targetNamespace="http://dnpb.sourceforge.net/schemas/dnpb-1.0.xsd"
5 xmlns="http://dnpb.sourceforge.net/schemas/dnpb-1.0.xsd"
6>
7 <xs:annotation>
8 <xs:documentation>
9 Copyright (c) 2004 Matthew Holmes (kerion@houston.rr.com)
10
11 Redistribution and use in source and binary forms, with or without modification, are permitted
12 provided that the following conditions are met:
13
14 * Redistributions of source code must retain the above copyright notice, this list of conditions
15 and the following disclaimer.
16 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
17 and the following disclaimer in the documentation and/or other materials provided with the
18 distribution.
19 * The name of the author may not be used to endorse or promote products derived from this software
20 without specific prior written permission.
21
22 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
23 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
27 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 </xs:documentation>
30 </xs:annotation>
31
32 <xs:element name="DNPreBuild">
33 <xs:complexType>
34 <xs:sequence>
35 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
36 <xs:element ref="Solution" minOccurs="1" maxOccurs="unbounded" />
37 </xs:sequence>
38
39 <xs:attribute name="version" use="required" />
40 </xs:complexType>
41 </xs:element>
42
43 <xs:element name="Process" type="xs:string" />
44
45 <xs:element name="Solution">
46 <xs:complexType>
47 <xs:sequence>
48 <xs:element ref="Options" minOccurs="0" />
49 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
50 <xs:element ref="Files" minOccurs="0" />
51 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
52 </xs:sequence>
53
54 <xs:attribute name="name" type="xs:string" use="required" />
55 <xs:attribute name="path" type="xs:string" default="" />
56 </xs:complexType>
57 </xs:element>
58
59 <xs:element name="Project">
60 <xs:complexType>
61 <xs:sequence>
62 <xs:element name="Reference" maxOccurs="unbounded">
63 <xs:complexType>
64 <xs:attribute name="name" type="xs:string" use="required" />
65 <xs:attribute name="path" type="xs:string" />
66 <xs:attribute name="localCopy" type="xs:boolean" />
67 <xs:attribute name="version" type="xs:string" />
68 </xs:complexType>
69 </xs:element>
70
71 <xs:element ref="Files" />
72 </xs:sequence>
73
74 <xs:attribute name="name" type="xs:string" use="required" />
75 <xs:attribute name="path" type="xs:string" default="" />
76
77 <xs:attribute name="language" default="C#">
78 <xs:simpleType>
79 <xs:restriction base="xs:string">
80 <xs:enumeration value="C#" />
81 <xs:enumeration value="VB.NET" />
82 </xs:restriction>
83 </xs:simpleType>
84 </xs:attribute>
85
86 <xs:attribute name="type" default="Exe">
87 <xs:simpleType>
88 <xs:restriction base="xs:string">
89 <xs:enumeration value="Exe" />
90 <xs:enumeration value="WinExe" />
91 <xs:enumeration value="Library" />
92 </xs:restriction>
93 </xs:simpleType>
94 </xs:attribute>
95
96 <xs:attribute name="runtime" default="Microsoft">
97 <xs:simpleType>
98 <xs:restriction base="xs:string">
99 <xs:enumeration value="Microsoft" />
100 <xs:enumeration value="Mono" />
101 </xs:restriction>
102 </xs:simpleType>
103 </xs:attribute>
104
105 <xs:attribute name="startupObject" type="xs:string" default="" />
106 </xs:complexType>
107 </xs:element>
108
109 <xs:element name="Configuration">
110 <xs:complexType>
111 <xs:all>
112 <xs:element ref="Options" minOccurs="0" />
113 </xs:all>
114
115 <xs:attribute name="name" type="xs:string" use="required" />
116 </xs:complexType>
117 </xs:element>
118
119 <xs:element name="Options">
120 <xs:complexType>
121 <xs:sequence>
122 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
123 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
124 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
125 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
126 <xs:element name="WarningLevel" minOccurs="0">
127 <xs:simpleType>
128 <xs:restriction base="xs:integer">
129 <xs:minInclusive value="0" />
130 <xs:maxInclusive value="4"/>
131 </xs:restriction>
132 </xs:simpleType>
133 </xs:element>
134 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
135 <xs:element name="SupressWarnings" type="xs:string" minOccurs="0" />
136 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
137 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
138 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
139 <xs:element name="RegisterCOMInterop" type="xs:boolean" minOccurs="0" />
140 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
141 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
142 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
143 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
144 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
145 </xs:sequence>
146 </xs:complexType>
147 </xs:element>
148
149 <xs:element name="Files">
150 <xs:complexType>
151 <xs:sequence>
152 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
153 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
154 </xs:sequence>
155 </xs:complexType>
156 </xs:element>
157
158 <xs:element name="File">
159 <xs:complexType>
160 <xs:simpleContent>
161 <xs:extension base="xs:string">
162 <xs:attribute name="buildAction" default="Compile">
163 <xs:simpleType>
164 <xs:restriction base="xs:string">
165 <xs:enumeration value="Compile" />
166 <xs:enumeration value="Content" />
167 <xs:enumeration value="EmbeddedResource" />
168 </xs:restriction>
169 </xs:simpleType>
170 </xs:attribute>
171 </xs:extension>
172 </xs:simpleContent>
173 </xs:complexType>
174 </xs:element>
175
176 <xs:element name="Match">
177 <xs:complexType>
178 <xs:attribute name="path" type="xs:string" use="required" />
179 <xs:attribute name="pattern" type="xs:string" use="required" />
180 <xs:attribute name="recurse" type="xs:boolean" default="false" />
181 </xs:complexType>
182 </xs:element>
183</xs:schema> \ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.1.xsd b/Prebuild/src/data/dnpb-1.1.xsd
new file mode 100644
index 0000000..c402ceb
--- /dev/null
+++ b/Prebuild/src/data/dnpb-1.1.xsd
@@ -0,0 +1,184 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified"
3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 targetNamespace="http://dnpb.sourceforge.net/schemas/dnpb-1.1.xsd"
5 xmlns="http://dnpb.sourceforge.net/schemas/dnpb-1.1.xsd"
6>
7 <xs:annotation>
8 <xs:documentation>
9 Copyright (c) 2004 Matthew Holmes (kerion@houston.rr.com)
10
11 Redistribution and use in source and binary forms, with or without modification, are permitted
12 provided that the following conditions are met:
13
14 * Redistributions of source code must retain the above copyright notice, this list of conditions
15 and the following disclaimer.
16 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
17 and the following disclaimer in the documentation and/or other materials provided with the
18 distribution.
19 * The name of the author may not be used to endorse or promote products derived from this software
20 without specific prior written permission.
21
22 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
23 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
27 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 </xs:documentation>
30 </xs:annotation>
31
32 <xs:element name="DNPreBuild">
33 <xs:complexType>
34 <xs:sequence>
35 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
36 <xs:element ref="Solution" minOccurs="1" maxOccurs="unbounded" />
37 </xs:sequence>
38
39 <xs:attribute name="version" use="required" />
40 </xs:complexType>
41 </xs:element>
42
43 <xs:element name="Process" type="xs:string" />
44
45 <xs:element name="Solution">
46 <xs:complexType>
47 <xs:sequence>
48 <xs:element ref="Options" minOccurs="0" />
49 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
50 <xs:element ref="Files" minOccurs="0" />
51 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
52 </xs:sequence>
53
54 <xs:attribute name="name" type="xs:string" use="required" />
55 <xs:attribute name="path" type="xs:string" default="" />
56 </xs:complexType>
57 </xs:element>
58
59 <xs:element name="Project">
60 <xs:complexType>
61 <xs:sequence>
62 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
63
64 <xs:element name="Reference" maxOccurs="unbounded">
65 <xs:complexType>
66 <xs:attribute name="name" type="xs:string" use="required" />
67 <xs:attribute name="path" type="xs:string" />
68 <xs:attribute name="localCopy" type="xs:boolean" />
69 <xs:attribute name="version" type="xs:string" />
70 </xs:complexType>
71 </xs:element>
72
73 <xs:element ref="Files" />
74 </xs:sequence>
75
76 <xs:attribute name="name" type="xs:string" use="required" />
77 <xs:attribute name="path" type="xs:string" default="" />
78
79 <xs:attribute name="language" default="C#">
80 <xs:simpleType>
81 <xs:restriction base="xs:string">
82 <xs:enumeration value="C#" />
83 <xs:enumeration value="VB.NET" />
84 </xs:restriction>
85 </xs:simpleType>
86 </xs:attribute>
87
88 <xs:attribute name="type" default="Exe">
89 <xs:simpleType>
90 <xs:restriction base="xs:string">
91 <xs:enumeration value="Exe" />
92 <xs:enumeration value="WinExe" />
93 <xs:enumeration value="Library" />
94 </xs:restriction>
95 </xs:simpleType>
96 </xs:attribute>
97
98 <xs:attribute name="runtime" default="Microsoft">
99 <xs:simpleType>
100 <xs:restriction base="xs:string">
101 <xs:enumeration value="Microsoft" />
102 <xs:enumeration value="Mono" />
103 </xs:restriction>
104 </xs:simpleType>
105 </xs:attribute>
106
107 <xs:attribute name="startupObject" type="xs:string" default="" />
108 </xs:complexType>
109 </xs:element>
110
111 <xs:element name="Configuration">
112 <xs:complexType>
113 <xs:all>
114 <xs:element ref="Options" minOccurs="0" />
115 </xs:all>
116
117 <xs:attribute name="name" type="xs:string" use="required" />
118 </xs:complexType>
119 </xs:element>
120
121 <xs:element name="Options">
122 <xs:complexType>
123 <xs:sequence>
124 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
125 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
126 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
127 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
128 <xs:element name="WarningLevel" minOccurs="0">
129 <xs:simpleType>
130 <xs:restriction base="xs:integer">
131 <xs:minInclusive value="0" />
132 <xs:maxInclusive value="4"/>
133 </xs:restriction>
134 </xs:simpleType>
135 </xs:element>
136 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
137 <xs:element name="SupressWarnings" type="xs:string" minOccurs="0" />
138 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
139 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
140 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
141 <xs:element name="RegisterCOMInterop" type="xs:boolean" minOccurs="0" />
142 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
143 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
144 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
145 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
146 </xs:sequence>
147 </xs:complexType>
148 </xs:element>
149
150 <xs:element name="Files">
151 <xs:complexType>
152 <xs:sequence>
153 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
154 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
155 </xs:sequence>
156 </xs:complexType>
157 </xs:element>
158
159 <xs:element name="File">
160 <xs:complexType>
161 <xs:simpleContent>
162 <xs:extension base="xs:string">
163 <xs:attribute name="buildAction" default="Compile">
164 <xs:simpleType>
165 <xs:restriction base="xs:string">
166 <xs:enumeration value="Compile" />
167 <xs:enumeration value="Content" />
168 <xs:enumeration value="EmbeddedResource" />
169 </xs:restriction>
170 </xs:simpleType>
171 </xs:attribute>
172 </xs:extension>
173 </xs:simpleContent>
174 </xs:complexType>
175 </xs:element>
176
177 <xs:element name="Match">
178 <xs:complexType>
179 <xs:attribute name="path" type="xs:string" use="required" />
180 <xs:attribute name="pattern" type="xs:string" use="required" />
181 <xs:attribute name="recurse" type="xs:boolean" default="false" />
182 </xs:complexType>
183 </xs:element>
184</xs:schema> \ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.2.xsd b/Prebuild/src/data/dnpb-1.2.xsd
new file mode 100644
index 0000000..8004af7
--- /dev/null
+++ b/Prebuild/src/data/dnpb-1.2.xsd
@@ -0,0 +1,198 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified"
3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 targetNamespace="http://dnpb.sourceforge.net/schemas/dnpb-1.2.xsd"
5 xmlns="http://dnpb.sourceforge.net/schemas/dnpb-1.2.xsd"
6>
7 <xs:annotation>
8 <xs:documentation>
9 Copyright (c) 2004 Matthew Holmes (calefaction _at_ houston _._ rr _._ com)
10
11 Redistribution and use in source and binary forms, with or without modification, are permitted
12 provided that the following conditions are met:
13
14 * Redistributions of source code must retain the above copyright notice, this list of conditions
15 and the following disclaimer.
16 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
17 and the following disclaimer in the documentation and/or other materials provided with the
18 distribution.
19 * The name of the author may not be used to endorse or promote products derived from this software
20 without specific prior written permission.
21
22 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
23 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
27 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 </xs:documentation>
30 </xs:annotation>
31
32 <xs:element name="DNPreBuild">
33 <xs:complexType>
34 <xs:sequence>
35 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
36 <xs:element ref="Solution" minOccurs="0" maxOccurs="unbounded" />
37 </xs:sequence>
38
39 <xs:attribute name="version" use="required" />
40 </xs:complexType>
41 </xs:element>
42
43 <xs:element name="Process" type="xs:string" />
44
45 <xs:element name="Solution">
46 <xs:complexType>
47 <xs:sequence>
48 <xs:element ref="Options" minOccurs="0" />
49 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
50 <xs:element ref="Files" minOccurs="0" />
51 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
52 </xs:sequence>
53
54 <xs:attribute name="name" type="xs:string" use="required" />
55 <xs:attribute name="path" type="xs:string" default="" />
56 </xs:complexType>
57 </xs:element>
58
59 <xs:element name="Project">
60 <xs:complexType>
61 <xs:sequence>
62 <xs:element ref="Configuration" minOccurs="0" maxOccurs="unbounded" />
63
64 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
65
66 <xs:element name="Reference" minOccurs="0" maxOccurs="unbounded">
67 <xs:complexType>
68 <xs:attribute name="name" type="xs:string" use="required" />
69 <xs:attribute name="path" type="xs:string" />
70 <xs:attribute name="localCopy" type="xs:boolean" />
71 <xs:attribute name="version" type="xs:string" />
72 </xs:complexType>
73 </xs:element>
74
75 <xs:element ref="Files" />
76 </xs:sequence>
77
78 <xs:attribute name="name" type="xs:string" use="required" />
79 <xs:attribute name="path" type="xs:string" default="" />
80
81 <xs:attribute name="language" default="C#">
82 <xs:simpleType>
83 <xs:restriction base="xs:string">
84 <xs:enumeration value="C#" />
85 <xs:enumeration value="VB.NET" />
86 </xs:restriction>
87 </xs:simpleType>
88 </xs:attribute>
89
90 <xs:attribute name="type" default="Exe">
91 <xs:simpleType>
92 <xs:restriction base="xs:string">
93 <xs:enumeration value="Exe" />
94 <xs:enumeration value="WinExe" />
95 <xs:enumeration value="Library" />
96 </xs:restriction>
97 </xs:simpleType>
98 </xs:attribute>
99
100 <xs:attribute name="runtime" default="Microsoft">
101 <xs:simpleType>
102 <xs:restriction base="xs:string">
103 <xs:enumeration value="Microsoft" />
104 <xs:enumeration value="Mono" />
105 </xs:restriction>
106 </xs:simpleType>
107 </xs:attribute>
108
109 <xs:attribute name="startupObject" type="xs:string" default="" />
110 <xs:attribute name="rootNamespace" type="xs:string" />
111 <xs:attribute name="assemblyName" type="xs:string" />
112 </xs:complexType>
113 </xs:element>
114
115 <xs:element name="Configuration">
116 <xs:complexType>
117 <xs:all>
118 <xs:element ref="Options" minOccurs="0" />
119 </xs:all>
120
121 <xs:attribute name="name" type="xs:string" use="required" />
122 </xs:complexType>
123 </xs:element>
124
125 <xs:element name="Options">
126 <xs:complexType>
127 <xs:all>
128 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
129 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
130 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
131 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
132 <xs:element name="WarningLevel" minOccurs="0">
133 <xs:simpleType>
134 <xs:restriction base="xs:integer">
135 <xs:minInclusive value="0" />
136 <xs:maxInclusive value="4"/>
137 </xs:restriction>
138 </xs:simpleType>
139 </xs:element>
140 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
141 <xs:element name="SupressWarnings" type="xs:string" minOccurs="0" />
142 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
143 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
144 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
145 <xs:element name="RegisterCOMInterop" type="xs:boolean" minOccurs="0" />
146 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
147 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
148 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
149 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
150 </xs:all>
151 </xs:complexType>
152 </xs:element>
153
154 <xs:element name="Files">
155 <xs:complexType>
156 <xs:sequence>
157 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
158 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
159 </xs:sequence>
160 </xs:complexType>
161 </xs:element>
162
163 <xs:element name="File">
164 <xs:complexType>
165 <xs:simpleContent>
166 <xs:extension base="xs:string">
167 <xs:attribute name="buildAction" default="Compile">
168 <xs:simpleType>
169 <xs:restriction base="xs:string">
170 <xs:enumeration value="Compile" />
171 <xs:enumeration value="Content" />
172 <xs:enumeration value="EmbeddedResource" />
173 </xs:restriction>
174 </xs:simpleType>
175 </xs:attribute>
176 </xs:extension>
177 </xs:simpleContent>
178 </xs:complexType>
179 </xs:element>
180
181 <xs:element name="Match">
182 <xs:complexType>
183 <xs:attribute name="path" type="xs:string" use="required" />
184 <xs:attribute name="pattern" type="xs:string" use="required" />
185 <xs:attribute name="recurse" type="xs:boolean" default="false" />
186 <xs:attribute name="useRegex" type="xs:boolean" default="false" />
187 <xs:attribute name="buildAction" default="Compile">
188 <xs:simpleType>
189 <xs:restriction base="xs:string">
190 <xs:enumeration value="Compile" />
191 <xs:enumeration value="Content" />
192 <xs:enumeration value="EmbeddedResource" />
193 </xs:restriction>
194 </xs:simpleType>
195 </xs:attribute>
196 </xs:complexType>
197 </xs:element>
198</xs:schema> \ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.3.xsd b/Prebuild/src/data/dnpb-1.3.xsd
new file mode 100644
index 0000000..5f8ada1
--- /dev/null
+++ b/Prebuild/src/data/dnpb-1.3.xsd
@@ -0,0 +1,206 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified"
3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 targetNamespace="http://dnpb.sourceforge.net/schemas/dnpb-1.3.xsd"
5 xmlns="http://dnpb.sourceforge.net/schemas/dnpb-1.3.xsd"
6>
7 <xs:annotation>
8 <xs:documentation>
9 Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
10
11 .NET Pre-Build is an XML-driven pre-build tool allowing developers to
12 easily generate project or make files for major IDE's and .NET
13 development tools including: Visual Studio 2003, Visual Studio 2002,
14 SharpDevelop, MonoDevelop, and NAnt.
15
16 BSD License:
17
18 Redistribution and use in source and binary forms, with or without modification, are permitted
19 provided that the following conditions are met:
20
21 * Redistributions of source code must retain the above copyright notice, this list of conditions
22 and the following disclaimer.
23 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
24 and the following disclaimer in the documentation and/or other materials provided with the
25 distribution.
26 * The name of the author may not be used to endorse or promote products derived from this software
27 without specific prior written permission.
28
29 THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
30 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
34 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 </xs:documentation>
37 </xs:annotation>
38
39 <xs:element name="DNPreBuild">
40 <xs:complexType>
41 <xs:sequence>
42 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
43 <xs:element ref="Solution" minOccurs="0" maxOccurs="unbounded" />
44 </xs:sequence>
45
46 <xs:attribute name="version" use="required" />
47 </xs:complexType>
48 </xs:element>
49
50 <xs:element name="Process" type="xs:string" />
51
52 <xs:element name="Solution">
53 <xs:complexType>
54 <xs:sequence>
55 <xs:element ref="Options" minOccurs="0" />
56 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
57 <xs:element ref="Files" minOccurs="0" />
58 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
59 </xs:sequence>
60
61 <xs:attribute name="name" type="xs:string" use="required" />
62 <xs:attribute name="path" type="xs:string" default="" />
63 </xs:complexType>
64 </xs:element>
65
66 <xs:element name="Project">
67 <xs:complexType>
68 <xs:sequence>
69 <xs:element ref="Configuration" minOccurs="0" maxOccurs="unbounded" />
70
71 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
72
73 <xs:element name="Reference" minOccurs="0" maxOccurs="unbounded">
74 <xs:complexType>
75 <xs:attribute name="name" type="xs:string" use="required" />
76 <xs:attribute name="path" type="xs:string" />
77 <xs:attribute name="localCopy" type="xs:boolean" />
78 <xs:attribute name="version" type="xs:string" />
79 </xs:complexType>
80 </xs:element>
81
82 <xs:element ref="Files" />
83 </xs:sequence>
84
85 <xs:attribute name="name" type="xs:string" use="required" />
86 <xs:attribute name="path" type="xs:string" default="" />
87 <xs:attribute name="icon" type="xs:string" default="" />
88
89 <xs:attribute name="language" default="C#">
90 <xs:simpleType>
91 <xs:restriction base="xs:string">
92 <xs:enumeration value="C#" />
93 <xs:enumeration value="VB.NET" />
94 </xs:restriction>
95 </xs:simpleType>
96 </xs:attribute>
97
98 <xs:attribute name="type" default="Exe">
99 <xs:simpleType>
100 <xs:restriction base="xs:string">
101 <xs:enumeration value="Exe" />
102 <xs:enumeration value="WinExe" />
103 <xs:enumeration value="Library" />
104 </xs:restriction>
105 </xs:simpleType>
106 </xs:attribute>
107
108 <xs:attribute name="runtime" default="Microsoft">
109 <xs:simpleType>
110 <xs:restriction base="xs:string">
111 <xs:enumeration value="Microsoft" />
112 <xs:enumeration value="Mono" />
113 </xs:restriction>
114 </xs:simpleType>
115 </xs:attribute>
116
117 <xs:attribute name="startupObject" type="xs:string" default="" />
118 <xs:attribute name="rootNamespace" type="xs:string" />
119 <xs:attribute name="assemblyName" type="xs:string" />
120 </xs:complexType>
121 </xs:element>
122
123 <xs:element name="Configuration">
124 <xs:complexType>
125 <xs:all>
126 <xs:element ref="Options" minOccurs="0" />
127 </xs:all>
128
129 <xs:attribute name="name" type="xs:string" use="required" />
130 </xs:complexType>
131 </xs:element>
132
133 <xs:element name="Options">
134 <xs:complexType>
135 <xs:all>
136 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
137 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
138 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
139 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
140 <xs:element name="WarningLevel" minOccurs="0">
141 <xs:simpleType>
142 <xs:restriction base="xs:integer">
143 <xs:minInclusive value="0" />
144 <xs:maxInclusive value="4"/>
145 </xs:restriction>
146 </xs:simpleType>
147 </xs:element>
148 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
149 <xs:element name="SupressWarnings" type="xs:string" minOccurs="0" />
150 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
151 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
152 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
153 <xs:element name="RegisterCOMInterop" type="xs:boolean" minOccurs="0" />
154 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
155 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
156 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
157 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
158 </xs:all>
159 </xs:complexType>
160 </xs:element>
161
162 <xs:element name="Files">
163 <xs:complexType>
164 <xs:sequence>
165 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
166 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
167 </xs:sequence>
168 </xs:complexType>
169 </xs:element>
170
171 <xs:element name="File">
172 <xs:complexType>
173 <xs:simpleContent>
174 <xs:extension base="xs:string">
175 <xs:attribute name="buildAction" default="Compile">
176 <xs:simpleType>
177 <xs:restriction base="xs:string">
178 <xs:enumeration value="Compile" />
179 <xs:enumeration value="Content" />
180 <xs:enumeration value="EmbeddedResource" />
181 </xs:restriction>
182 </xs:simpleType>
183 </xs:attribute>
184 </xs:extension>
185 </xs:simpleContent>
186 </xs:complexType>
187 </xs:element>
188
189 <xs:element name="Match">
190 <xs:complexType>
191 <xs:attribute name="path" type="xs:string" />
192 <xs:attribute name="pattern" type="xs:string" use="required" />
193 <xs:attribute name="recurse" type="xs:boolean" default="false" />
194 <xs:attribute name="useRegex" type="xs:boolean" default="false" />
195 <xs:attribute name="buildAction" default="Compile">
196 <xs:simpleType>
197 <xs:restriction base="xs:string">
198 <xs:enumeration value="Compile" />
199 <xs:enumeration value="Content" />
200 <xs:enumeration value="EmbeddedResource" />
201 </xs:restriction>
202 </xs:simpleType>
203 </xs:attribute>
204 </xs:complexType>
205 </xs:element>
206</xs:schema> \ No newline at end of file
diff --git a/Prebuild/src/data/dnpb-1.4.xsd b/Prebuild/src/data/dnpb-1.4.xsd
new file mode 100644
index 0000000..54f9ac0
--- /dev/null
+++ b/Prebuild/src/data/dnpb-1.4.xsd
@@ -0,0 +1,212 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified"
3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 targetNamespace="http://dnpb.sourceforge.net/schemas/dnpb-1.4.xsd"
5 xmlns="http://dnpb.sourceforge.net/schemas/dnpb-1.4.xsd"
6>
7 <xs:annotation>
8 <xs:documentation>
9 Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
10
11 .NET Prebuild is a cross-platform XML-driven pre-build tool which
12 allows developers to easily generate project or make files for major
13 IDE's and .NET development tools including: Visual Studio .NET 2002 and
14 2003, SharpDevelop, MonoDevelop, and NAnt.
15
16 BSD License:
17
18 Redistribution and use in source and binary forms, with or without modification, are permitted
19 provided that the following conditions are met:
20
21 * Redistributions of source code must retain the above copyright notice, this list of conditions
22 and the following disclaimer.
23 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
24 and the following disclaimer in the documentation and/or other materials provided with the
25 distribution.
26 * The name of the author may not be used to endorse or promote products derived from this software
27 without specific prior written permission.
28
29 THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
30 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
34 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 </xs:documentation>
37 </xs:annotation>
38
39 <xs:element name="DNPreBuild">
40 <xs:complexType>
41 <xs:sequence>
42 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
43 <xs:element ref="Solution" minOccurs="0" maxOccurs="unbounded" />
44 </xs:sequence>
45
46 <xs:attribute name="version" />
47 <xs:attribute name="checkOsVars" />
48 </xs:complexType>
49 </xs:element>
50
51 <xs:element name="Process" type="xs:string" />
52
53 <xs:element name="Solution">
54 <xs:complexType>
55 <xs:sequence>
56 <xs:element ref="Options" minOccurs="0" />
57 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
58 <xs:element ref="Files" minOccurs="0" />
59 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
60 </xs:sequence>
61
62 <xs:attribute name="name" type="xs:string" use="required" />
63 <xs:attribute name="activeConfig" type="xs:string" default="Debug" />
64 <xs:attribute name="path" type="xs:string" default="" />
65 </xs:complexType>
66 </xs:element>
67
68 <xs:element name="Project">
69 <xs:complexType>
70 <xs:sequence>
71 <xs:element ref="Configuration" minOccurs="0" maxOccurs="unbounded" />
72
73 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
74
75 <xs:element name="Reference" minOccurs="0" maxOccurs="unbounded">
76 <xs:complexType>
77 <xs:attribute name="name" type="xs:string" use="required" />
78 <xs:attribute name="path" type="xs:string" />
79 <xs:attribute name="localCopy" type="xs:boolean" />
80 <xs:attribute name="version" type="xs:string" />
81 </xs:complexType>
82 </xs:element>
83
84 <xs:element ref="Files" />
85 </xs:sequence>
86
87 <xs:attribute name="name" type="xs:string" use="required" />
88 <xs:attribute name="path" type="xs:string" default="" />
89 <xs:attribute name="icon" type="xs:string" default="" />
90
91 <xs:attribute name="language" default="C#">
92 <xs:simpleType>
93 <xs:restriction base="xs:string">
94 <xs:enumeration value="C#" />
95 <xs:enumeration value="VB.NET" />
96 </xs:restriction>
97 </xs:simpleType>
98 </xs:attribute>
99
100 <xs:attribute name="type" default="Exe">
101 <xs:simpleType>
102 <xs:restriction base="xs:string">
103 <xs:enumeration value="Exe" />
104 <xs:enumeration value="WinExe" />
105 <xs:enumeration value="Library" />
106 </xs:restriction>
107 </xs:simpleType>
108 </xs:attribute>
109
110 <xs:attribute name="runtime" default="Microsoft">
111 <xs:simpleType>
112 <xs:restriction base="xs:string">
113 <xs:enumeration value="Microsoft" />
114 <xs:enumeration value="Mono" />
115 </xs:restriction>
116 </xs:simpleType>
117 </xs:attribute>
118
119 <xs:attribute name="startupObject" type="xs:string" default="" />
120 <xs:attribute name="rootNamespace" type="xs:string" />
121 <xs:attribute name="assemblyName" type="xs:string" />
122 </xs:complexType>
123 </xs:element>
124
125 <xs:element name="Configuration">
126 <xs:complexType>
127 <xs:sequence>
128 <xs:element ref="Options" minOccurs="0" />
129 </xs:sequence>
130
131 <xs:attribute name="name" type="xs:string" use="required" />
132 </xs:complexType>
133 </xs:element>
134
135 <xs:element name="Options">
136 <xs:complexType>
137 <xs:all>
138 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
139 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
140 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
141 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
142 <xs:element name="WarningLevel" minOccurs="0">
143 <xs:simpleType>
144 <xs:restriction base="xs:integer">
145 <xs:minInclusive value="0" />
146 <xs:maxInclusive value="4"/>
147 </xs:restriction>
148 </xs:simpleType>
149 </xs:element>
150 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
151 <xs:element name="SupressWarnings" type="xs:string" minOccurs="0" />
152 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
153 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
154 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
155 <xs:element name="RegisterCOMInterop" type="xs:boolean" minOccurs="0" />
156 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
157 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
158 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
159 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
160 </xs:all>
161 </xs:complexType>
162 </xs:element>
163
164 <xs:element name="Files">
165 <xs:complexType>
166 <xs:sequence>
167 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
168 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
169 </xs:sequence>
170 </xs:complexType>
171 </xs:element>
172
173 <xs:element name="File">
174 <xs:complexType>
175 <xs:simpleContent>
176 <xs:extension base="xs:string">
177 <xs:attribute name="buildAction" default="Compile">
178 <xs:simpleType>
179 <xs:restriction base="xs:string">
180 <xs:enumeration value="None" />
181 <xs:enumeration value="Compile" />
182 <xs:enumeration value="Content" />
183 <xs:enumeration value="EmbeddedResource" />
184 </xs:restriction>
185 </xs:simpleType>
186 </xs:attribute>
187 </xs:extension>
188 </xs:simpleContent>
189 </xs:complexType>
190 </xs:element>
191
192 <xs:element name="Match">
193 <xs:complexType>
194 <xs:attribute name="path" type="xs:string" />
195 <xs:attribute name="pattern" type="xs:string" use="required" />
196 <xs:attribute name="recurse" type="xs:boolean" default="false" />
197 <xs:attribute name="useRegex" type="xs:boolean" default="false" />
198 <xs:attribute name="buildAction" default="Compile">
199 <xs:simpleType>
200 <xs:restriction base="xs:string">
201 <xs:enumeration value="None" />
202 <xs:enumeration value="Compile" />
203 <xs:enumeration value="Content" />
204 <xs:enumeration value="EmbeddedResource" />
205 </xs:restriction>
206 </xs:simpleType>
207 </xs:attribute>
208 </xs:complexType>
209 </xs:element>
210</xs:schema>
211
212
diff --git a/Prebuild/src/data/dnpb-1.5.xsd b/Prebuild/src/data/dnpb-1.5.xsd
new file mode 100644
index 0000000..2270e83
--- /dev/null
+++ b/Prebuild/src/data/dnpb-1.5.xsd
@@ -0,0 +1,215 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified"
3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 targetNamespace="http://dnpb.sourceforge.net/schemas/dnpb-1.5.xsd"
5 xmlns="http://dnpb.sourceforge.net/schemas/dnpb-1.5.xsd"
6>
7 <xs:annotation>
8 <xs:documentation>
9 Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
10
11 .NET Prebuild is a cross-platform XML-driven pre-build tool which
12 allows developers to easily generate project or make files for major
13 IDE's and .NET development tools including: Visual Studio .NET 2002 and
14 2003, SharpDevelop, MonoDevelop, and NAnt.
15
16 BSD License:
17
18 Redistribution and use in source and binary forms, with or without modification, are permitted
19 provided that the following conditions are met:
20
21 * Redistributions of source code must retain the above copyright notice, this list of conditions
22 and the following disclaimer.
23 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
24 and the following disclaimer in the documentation and/or other materials provided with the
25 distribution.
26 * The name of the author may not be used to endorse or promote products derived from this software
27 without specific prior written permission.
28
29 THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
30 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
34 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 </xs:documentation>
37 </xs:annotation>
38
39 <xs:element name="DNPreBuild">
40 <xs:complexType>
41 <xs:sequence>
42 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
43 <xs:element ref="Solution" minOccurs="0" maxOccurs="unbounded" />
44 </xs:sequence>
45
46 <xs:attribute name="version" />
47 <xs:attribute name="checkOsVars" />
48 </xs:complexType>
49 </xs:element>
50
51 <xs:element name="Process" type="xs:string" />
52
53 <xs:element name="Solution">
54 <xs:complexType>
55 <xs:sequence>
56 <xs:element ref="Options" minOccurs="0" />
57 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
58 <xs:element ref="Files" minOccurs="0" />
59 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
60 </xs:sequence>
61
62 <xs:attribute name="name" type="xs:string" use="required" />
63 <xs:attribute name="activeConfig" type="xs:string" default="Debug" />
64 <xs:attribute name="path" type="xs:string" default="" />
65 </xs:complexType>
66 </xs:element>
67
68 <xs:element name="Project">
69 <xs:complexType>
70 <xs:sequence>
71 <xs:element ref="Configuration" minOccurs="0" maxOccurs="unbounded" />
72
73 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
74
75 <xs:element name="Reference" minOccurs="0" maxOccurs="unbounded">
76 <xs:complexType>
77 <xs:attribute name="name" type="xs:string" use="required" />
78 <xs:attribute name="path" type="xs:string" />
79 <xs:attribute name="localCopy" type="xs:boolean" />
80 <xs:attribute name="version" type="xs:string" />
81 </xs:complexType>
82 </xs:element>
83
84 <xs:element ref="Files" />
85 </xs:sequence>
86
87 <xs:attribute name="name" type="xs:string" use="required" />
88 <xs:attribute name="filterGroups" type="xs:string" default="" />
89 <xs:attribute name="path" type="xs:string" default="" />
90 <xs:attribute name="icon" type="xs:string" default="" />
91
92 <xs:attribute name="language" default="C#">
93 <xs:simpleType>
94 <xs:restriction base="xs:string">
95 <xs:enumeration value="C#" />
96 <xs:enumeration value="VB.NET" />
97 </xs:restriction>
98 </xs:simpleType>
99 </xs:attribute>
100
101 <xs:attribute name="type" default="Exe">
102 <xs:simpleType>
103 <xs:restriction base="xs:string">
104 <xs:enumeration value="Exe" />
105 <xs:enumeration value="WinExe" />
106 <xs:enumeration value="Library" />
107 </xs:restriction>
108 </xs:simpleType>
109 </xs:attribute>
110
111 <xs:attribute name="runtime" default="Microsoft">
112 <xs:simpleType>
113 <xs:restriction base="xs:string">
114 <xs:enumeration value="Microsoft" />
115 <xs:enumeration value="Mono" />
116 </xs:restriction>
117 </xs:simpleType>
118 </xs:attribute>
119
120 <xs:attribute name="startupObject" type="xs:string" default="" />
121 <xs:attribute name="rootNamespace" type="xs:string" />
122 <xs:attribute name="assemblyName" type="xs:string" />
123 </xs:complexType>
124 </xs:element>
125
126 <xs:element name="Configuration">
127 <xs:complexType>
128 <xs:sequence>
129 <xs:element ref="Options" minOccurs="0" />
130 </xs:sequence>
131
132 <xs:attribute name="name" type="xs:string" use="required" />
133 </xs:complexType>
134 </xs:element>
135
136 <xs:element name="Options">
137 <xs:complexType>
138 <xs:all>
139 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
140 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
141 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
142 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
143 <xs:element name="WarningLevel" minOccurs="0">
144 <xs:simpleType>
145 <xs:restriction base="xs:integer">
146 <xs:minInclusive value="0" />
147 <xs:maxInclusive value="4"/>
148 </xs:restriction>
149 </xs:simpleType>
150 </xs:element>
151 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
152 <xs:element name="SupressWarnings" type="xs:string" minOccurs="0" />
153 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
154 <xs:element name="GenerateXmlDocFile" type="xs:boolean" minOccurs="0" />
155 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
156 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
157 <xs:element name="RegisterCOMInterop" type="xs:boolean" minOccurs="0" />
158 <xs:element name="RemoveIntegerChecks" type="xs:boolean" minOccurs="0" />
159 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
160 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
161 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
162 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
163 </xs:all>
164 </xs:complexType>
165 </xs:element>
166
167 <xs:element name="Files">
168 <xs:complexType>
169 <xs:sequence>
170 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
171 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
172 </xs:sequence>
173 </xs:complexType>
174 </xs:element>
175
176 <xs:element name="File">
177 <xs:complexType>
178 <xs:simpleContent>
179 <xs:extension base="xs:string">
180 <xs:attribute name="buildAction" default="Compile">
181 <xs:simpleType>
182 <xs:restriction base="xs:string">
183 <xs:enumeration value="None" />
184 <xs:enumeration value="Compile" />
185 <xs:enumeration value="Content" />
186 <xs:enumeration value="EmbeddedResource" />
187 </xs:restriction>
188 </xs:simpleType>
189 </xs:attribute>
190 </xs:extension>
191 </xs:simpleContent>
192 </xs:complexType>
193 </xs:element>
194
195 <xs:element name="Match">
196 <xs:complexType>
197 <xs:attribute name="path" type="xs:string" />
198 <xs:attribute name="pattern" type="xs:string" use="required" />
199 <xs:attribute name="recurse" type="xs:boolean" default="false" />
200 <xs:attribute name="useRegex" type="xs:boolean" default="false" />
201 <xs:attribute name="buildAction" default="Compile">
202 <xs:simpleType>
203 <xs:restriction base="xs:string">
204 <xs:enumeration value="None" />
205 <xs:enumeration value="Compile" />
206 <xs:enumeration value="Content" />
207 <xs:enumeration value="EmbeddedResource" />
208 </xs:restriction>
209 </xs:simpleType>
210 </xs:attribute>
211 </xs:complexType>
212 </xs:element>
213</xs:schema>
214
215
diff --git a/Prebuild/src/data/prebuild-1.6.xsd b/Prebuild/src/data/prebuild-1.6.xsd
new file mode 100644
index 0000000..f944faf
--- /dev/null
+++ b/Prebuild/src/data/prebuild-1.6.xsd
@@ -0,0 +1,231 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd"
3 xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd">
4 <xs:annotation>
5 <xs:documentation>
6 Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com)
7
8 .NET Prebuild is a cross-platform XML-driven pre-build tool which
9 allows developers to easily generate project or make files for major
10 IDE's and .NET development tools including: Visual Studio .NET 2002 and
11 2003, SharpDevelop, MonoDevelop, and NAnt.
12
13 BSD License:
14
15 Redistribution and use in source and binary forms, with or without modification, are permitted
16 provided that the following conditions are met:
17
18 * Redistributions of source code must retain the above copyright notice, this list of conditions
19 and the following disclaimer.
20 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
21 and the following disclaimer in the documentation and/or other materials provided with the
22 distribution.
23 * The name of the author may not be used to endorse or promote products derived from this software
24 without specific prior written permission.
25
26 THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
27 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
31 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 </xs:documentation>
34 </xs:annotation>
35 <xs:element name="Prebuild">
36 <xs:complexType>
37 <xs:sequence>
38 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
39 <xs:element ref="Solution" minOccurs="0" maxOccurs="unbounded" />
40 </xs:sequence>
41 <xs:attribute name="version" />
42 <xs:attribute name="checkOsVars" />
43 </xs:complexType>
44 </xs:element>
45 <xs:element name="Process" type="xs:string" />
46 <xs:element name="Solution">
47 <xs:complexType>
48 <xs:sequence>
49 <xs:element ref="Options" minOccurs="0" />
50 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
51 <xs:element ref="Files" minOccurs="0" />
52 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
53 </xs:sequence>
54 <xs:attribute name="name" type="xs:string" use="required" />
55 <xs:attribute name="activeConfig" type="xs:string" default="Debug" />
56 <xs:attribute name="path" type="xs:string" default="" />
57 </xs:complexType>
58 </xs:element>
59 <xs:element name="Project">
60 <xs:complexType>
61 <xs:sequence>
62 <xs:element ref="Configuration" minOccurs="0" maxOccurs="unbounded" />
63 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
64 <xs:element name="Reference" minOccurs="0" maxOccurs="unbounded">
65 <xs:complexType>
66 <xs:attribute name="name" type="xs:string" use="required" />
67 <xs:attribute name="path" type="xs:string" />
68 <xs:attribute name="localCopy" type="xs:boolean" />
69 <xs:attribute name="version" type="xs:string" />
70 </xs:complexType>
71 </xs:element>
72 <xs:element ref="Files" />
73 </xs:sequence>
74 <xs:attribute name="name" type="xs:string" use="required" />
75 <xs:attribute name="filterGroups" type="xs:string" default="" />
76 <xs:attribute name="path" type="xs:string" default="" />
77 <xs:attribute name="icon" type="xs:string" default="" />
78 <xs:attribute name="language" default="C#">
79 <xs:simpleType>
80 <xs:restriction base="xs:string">
81 <xs:enumeration value="C#" />
82 <xs:enumeration value="VB.NET" />
83 </xs:restriction>
84 </xs:simpleType>
85 </xs:attribute>
86 <xs:attribute name="type" default="Exe">
87 <xs:simpleType>
88 <xs:restriction base="xs:string">
89 <xs:enumeration value="Exe" />
90 <xs:enumeration value="WinExe" />
91 <xs:enumeration value="Library" />
92 </xs:restriction>
93 </xs:simpleType>
94 </xs:attribute>
95 <xs:attribute name="runtime" default="Microsoft">
96 <xs:simpleType>
97 <xs:restriction base="xs:string">
98 <xs:enumeration value="Microsoft" />
99 <xs:enumeration value="Mono" />
100 </xs:restriction>
101 </xs:simpleType>
102 </xs:attribute>
103 <xs:attribute name="startupObject" type="xs:string" default="" />
104 <xs:attribute name="rootNamespace" type="xs:string" />
105 <xs:attribute name="assemblyName" type="xs:string" />
106 </xs:complexType>
107 </xs:element>
108 <xs:element name="Configuration">
109 <xs:complexType>
110 <xs:sequence>
111 <xs:element ref="Options" minOccurs="0" />
112 </xs:sequence>
113 <xs:attribute name="name" type="xs:string" use="required" />
114 </xs:complexType>
115 </xs:element>
116 <xs:element name="Options">
117 <xs:complexType>
118 <xs:all>
119 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
120 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
121 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
122 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
123 <xs:element name="PreBuildEvent" type="xs:string" minOccurs="0" />
124 <xs:element name="PostBuildEvent" type="xs:string" minOccurs="0" />
125 <xs:element name="RunPostBuildEvent" minOccurs="0" default="OnBuildSuccess">
126 <xs:simpleType>
127 <xs:restriction base="xs:string">
128 <xs:enumeration value="OnBuildSuccess" />
129 <xs:enumeration value="Always" />
130 <xs:enumeration value="OnOutputUpdated" />
131 </xs:restriction>
132 </xs:simpleType>
133 </xs:element>
134 <xs:element name="RunScript" type="xs:string" minOccurs="0" />
135 <xs:element name="PreBuildEventArgs" type="xs:string" minOccurs="0" />
136 <xs:element name="PostBuildEventArgs" type="xs:string" minOccurs="0" />
137 <xs:element name="WarningLevel" minOccurs="0">
138 <xs:simpleType>
139 <xs:restriction base="xs:integer">
140 <xs:minInclusive value="0" />
141 <xs:maxInclusive value="4" />
142 </xs:restriction>
143 </xs:simpleType>
144 </xs:element>
145 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
146 <xs:element name="SuppressWarnings" type="xs:string" minOccurs="0" />
147 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
148 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
149 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
150 <xs:element name="RegisterComInterop" type="xs:boolean" minOccurs="0" />
151 <xs:element name="RemoveIntegerChecks" type="xs:boolean" minOccurs="0" />
152 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
153 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
154 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
155 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
156 </xs:all>
157 </xs:complexType>
158 </xs:element>
159 <xs:element name="Files">
160 <xs:complexType>
161 <xs:sequence>
162 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
163 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
164 </xs:sequence>
165 </xs:complexType>
166 </xs:element>
167 <xs:element name="File">
168 <xs:complexType>
169 <xs:simpleContent>
170 <xs:extension base="xs:string">
171 <xs:attribute name="buildAction" default="Compile">
172 <xs:simpleType>
173 <xs:restriction base="xs:string">
174 <xs:enumeration value="None" />
175 <xs:enumeration value="Compile" />
176 <xs:enumeration value="Content" />
177 <xs:enumeration value="EmbeddedResource" />
178 </xs:restriction>
179 </xs:simpleType>
180 </xs:attribute>
181 <xs:attribute name="subType" default="Code">
182 <xs:simpleType>
183 <xs:restriction base="xs:string">
184 <xs:enumeration value="Code" />
185 <xs:enumeration value="Component" />
186 <xs:enumeration value="Form" />
187 <xs:enumeration value="UserControl" />
188 </xs:restriction>
189 </xs:simpleType>
190 </xs:attribute>
191 </xs:extension>
192 </xs:simpleContent>
193 </xs:complexType>
194 </xs:element>
195 <xs:element name="Match">
196 <xs:complexType>
197 <xs:sequence>
198 <xs:element ref="Exclude" minOccurs="0" />
199 </xs:sequence>
200 <xs:attribute name="path" type="xs:string" />
201 <xs:attribute name="pattern" type="xs:string" use="required" />
202 <xs:attribute name="recurse" type="xs:boolean" default="false" />
203 <xs:attribute name="useRegex" type="xs:boolean" default="false" />
204 <xs:attribute name="buildAction" default="Compile">
205 <xs:simpleType>
206 <xs:restriction base="xs:string">
207 <xs:enumeration value="None" />
208 <xs:enumeration value="Compile" />
209 <xs:enumeration value="Content" />
210 <xs:enumeration value="EmbeddedResource" />
211 </xs:restriction>
212 </xs:simpleType>
213 </xs:attribute>
214 <xs:attribute name="subType" default="Code">
215 <xs:simpleType>
216 <xs:restriction base="xs:string">
217 <xs:enumeration value="Code" />
218 <xs:enumeration value="Component" />
219 <xs:enumeration value="Form" />
220 <xs:enumeration value="UserControl" />
221 </xs:restriction>
222 </xs:simpleType>
223 </xs:attribute>
224 </xs:complexType>
225 </xs:element>
226 <xs:element name="Exclude">
227 <xs:complexType>
228 <xs:attribute name="name" type="xs:string" use="required" />
229 </xs:complexType>
230 </xs:element>
231</xs:schema>
diff --git a/Prebuild/src/data/prebuild-1.7.xsd b/Prebuild/src/data/prebuild-1.7.xsd
new file mode 100644
index 0000000..9d63ce6
--- /dev/null
+++ b/Prebuild/src/data/prebuild-1.7.xsd
@@ -0,0 +1,261 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://dnpb.sourceforge.net/schemas/prebuild-1.7.xsd"
3 xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.7.xsd">
4 <xs:annotation>
5 <xs:documentation>
6 Copyright (c) 2004-2005 Matthew Holmes (calefaction at houston . rr . com), Dan Moorehead (dan05a at gmail . com), David Hudson (jendave at yahoo dot com)
7
8 .NET Prebuild is a cross-platform XML-driven pre-build tool which
9 allows developers to easily generate project or make files for major
10 IDE's and .NET development tools including: Visual Studio .NET 2002 and
11 2003, SharpDevelop, MonoDevelop, and NAnt.
12
13 BSD License:
14
15 Redistribution and use in source and binary forms, with or without modification, are permitted
16 provided that the following conditions are met:
17
18 * Redistributions of source code must retain the above copyright notice, this list of conditions
19 and the following disclaimer.
20 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
21 and the following disclaimer in the documentation and/or other materials provided with the
22 distribution.
23 * The name of the author may not be used to endorse or promote products derived from this software
24 without specific prior written permission.
25
26 THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
27 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
31 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 </xs:documentation>
34 </xs:annotation>
35 <xs:element name="Prebuild">
36 <xs:complexType>
37 <xs:sequence>
38 <xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
39 <xs:element ref="Solution" minOccurs="0" maxOccurs="unbounded" />
40 </xs:sequence>
41 <xs:attribute name="version" />
42 <xs:attribute name="checkOsVars" />
43 </xs:complexType>
44 </xs:element>
45 <xs:element name="Process" type="xs:string" />
46 <xs:element name="Solution">
47 <xs:complexType>
48 <xs:sequence>
49 <xs:element ref="Options" minOccurs="0" />
50 <xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
51 <xs:element ref="Files" minOccurs="0" />
52 <xs:element ref="Project" minOccurs="1" maxOccurs="unbounded" />
53 </xs:sequence>
54 <xs:attribute name="name" type="xs:string" use="required" />
55 <xs:attribute name="activeConfig" type="xs:string" default="Debug" />
56 <xs:attribute name="path" type="xs:string" default="" />
57 <xs:attribute name="version" type="xs:string" default="1.0.0" />
58 </xs:complexType>
59 </xs:element>
60 <xs:element name="Project">
61 <xs:complexType>
62 <xs:sequence>
63 <xs:element ref="Configuration" minOccurs="0" maxOccurs="unbounded" />
64 <xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
65 <xs:element name="Reference" minOccurs="0" maxOccurs="unbounded">
66 <xs:complexType>
67 <xs:attribute name="name" type="xs:string" use="required" />
68 <xs:attribute name="path" type="xs:string" />
69 <xs:attribute name="localCopy" type="xs:boolean" />
70 <xs:attribute name="version" type="xs:string" default="1.0.0"/>
71 </xs:complexType>
72 </xs:element>
73 <xs:element ref="Files" />
74 </xs:sequence>
75 <xs:attribute name="name" type="xs:string" use="required" />
76 <xs:attribute name="designerFolder" type="xs:string" default="" />
77 <xs:attribute name="filterGroups" type="xs:string" default="" />
78 <xs:attribute name="path" type="xs:string" default="" />
79 <xs:attribute name="icon" type="xs:string" default="" />
80 <xs:attribute name="language" default="C#">
81 <xs:simpleType>
82 <xs:restriction base="xs:string">
83 <xs:enumeration value="C#" />
84 <xs:enumeration value="VB.NET" />
85 </xs:restriction>
86 </xs:simpleType>
87 </xs:attribute>
88 <xs:attribute name="type" default="Exe">
89 <xs:simpleType>
90 <xs:restriction base="xs:string">
91 <xs:enumeration value="Exe" />
92 <xs:enumeration value="WinExe" />
93 <xs:enumeration value="Library" />
94 </xs:restriction>
95 </xs:simpleType>
96 </xs:attribute>
97 <xs:attribute name="runtime" default="Microsoft">
98 <xs:simpleType>
99 <xs:restriction base="xs:string">
100 <xs:enumeration value="Microsoft" />
101 <xs:enumeration value="Mono" />
102 </xs:restriction>
103 </xs:simpleType>
104 </xs:attribute>
105 <xs:attribute name="startupObject" type="xs:string" default="" />
106 <xs:attribute name="rootNamespace" type="xs:string" />
107 <xs:attribute name="assemblyName" type="xs:string" />
108 <xs:attribute name="generateAssemblyInfoFile" type="xs:boolean" default="false"/>
109 </xs:complexType>
110 </xs:element>
111 <xs:element name="Configuration">
112 <xs:complexType>
113 <xs:sequence>
114 <xs:element ref="Options" minOccurs="0" />
115 </xs:sequence>
116 <xs:attribute name="name" type="xs:string" use="required" />
117 </xs:complexType>
118 </xs:element>
119 <xs:element name="Options">
120 <xs:complexType>
121 <xs:all>
122 <xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
123 <xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
124 <xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
125 <xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
126 <xs:element name="PreBuildEvent" type="xs:string" minOccurs="0" />
127 <xs:element name="PostBuildEvent" type="xs:string" minOccurs="0" />
128 <xs:element name="RunPostBuildEvent" minOccurs="0" default="OnBuildSuccess">
129 <xs:simpleType>
130 <xs:restriction base="xs:string">
131 <xs:enumeration value="OnBuildSuccess" />
132 <xs:enumeration value="Always" />
133 <xs:enumeration value="OnOutputUpdated" />
134 </xs:restriction>
135 </xs:simpleType>
136 </xs:element>
137 <xs:element name="RunScript" type="xs:string" minOccurs="0" />
138 <xs:element name="PreBuildEventArgs" type="xs:string" minOccurs="0" />
139 <xs:element name="PostBuildEventArgs" type="xs:string" minOccurs="0" />
140 <xs:element name="WarningLevel" minOccurs="0">
141 <xs:simpleType>
142 <xs:restriction base="xs:integer">
143 <xs:minInclusive value="0" />
144 <xs:maxInclusive value="4" />
145 </xs:restriction>
146 </xs:simpleType>
147 </xs:element>
148 <xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
149 <xs:element name="SuppressWarnings" type="xs:string" minOccurs="0" />
150 <xs:element name="OutputPath" type="xs:string" minOccurs="0" />
151 <xs:element name="GenerateDocumentation" type="xs:boolean" minOccurs="0" />
152 <xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
153 <xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
154 <xs:element name="RegisterComInterop" type="xs:boolean" minOccurs="0" />
155 <xs:element name="RemoveIntegerChecks" type="xs:boolean" minOccurs="0" />
156 <xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
157 <xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
158 <xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
159 <xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
160 <xs:element name="KeyFile" type="xs:string" minOccurs="0" />
161 </xs:all>
162 </xs:complexType>
163 </xs:element>
164 <xs:element name="Files">
165 <xs:complexType>
166 <xs:sequence>
167 <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
168 <xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
169 </xs:sequence>
170 </xs:complexType>
171 </xs:element>
172 <xs:element name="File">
173 <xs:complexType>
174 <xs:simpleContent>
175 <xs:extension base="xs:string">
176 <xs:attribute name="resourceName" type="xs:string" default="" />
177 <xs:attribute name="buildAction" default="Compile">
178 <xs:simpleType>
179 <xs:restriction base="xs:string">
180 <xs:enumeration value="None" />
181 <xs:enumeration value="Compile" />
182 <xs:enumeration value="Content" />
183 <xs:enumeration value="EmbeddedResource" />
184 </xs:restriction>
185 </xs:simpleType>
186 </xs:attribute>
187 <xs:attribute name="subType" default="Code">
188 <xs:simpleType>
189 <xs:restriction base="xs:string">
190 <xs:enumeration value="Code" />
191 <xs:enumeration value="Component" />
192 <xs:enumeration value="Form" />
193 <xs:enumeration value="Settings" />
194 <xs:enumeration value="UserControl" />
195 </xs:restriction>
196 </xs:simpleType>
197 </xs:attribute>
198 <xs:attribute name="link" type="xs:boolean" />
199 <xs:attribute name="copyToOutput" default="Never">
200 <xs:simpleType>
201 <xs:restriction base="xs:string">
202 <xs:enumeration value="Never" />
203 <xs:enumeration value="Always" />
204 <xs:enumeration value="PreserveNewest" />
205 </xs:restriction>
206 </xs:simpleType>
207 </xs:attribute>
208 </xs:extension>
209 </xs:simpleContent>
210 </xs:complexType>
211 </xs:element>
212 <xs:element name="Match">
213 <xs:complexType>
214 <xs:sequence>
215 <xs:element ref="Exclude" minOccurs="0" maxOccurs="unbounded" />
216 </xs:sequence>
217 <xs:attribute name="path" type="xs:string" />
218 <xs:attribute name="pattern" type="xs:string" use="required" />
219 <xs:attribute name="recurse" type="xs:boolean" default="false" />
220 <xs:attribute name="useRegex" type="xs:boolean" default="false" />
221 <xs:attribute name="buildAction" default="Compile">
222 <xs:simpleType>
223 <xs:restriction base="xs:string">
224 <xs:enumeration value="None" />
225 <xs:enumeration value="Compile" />
226 <xs:enumeration value="Content" />
227 <xs:enumeration value="EmbeddedResource" />
228 </xs:restriction>
229 </xs:simpleType>
230 </xs:attribute>
231 <xs:attribute name="resourceName" type="xs:string" default="" />
232 <xs:attribute name="subType" default="Code">
233 <xs:simpleType>
234 <xs:restriction base="xs:string">
235 <xs:enumeration value="Code" />
236 <xs:enumeration value="Component" />
237 <xs:enumeration value="Designer" />
238 <xs:enumeration value="Form" />
239 <xs:enumeration value="Settings" />
240 <xs:enumeration value="UserControl" />
241 </xs:restriction>
242 </xs:simpleType>
243 </xs:attribute>
244 <xs:attribute name="link" type="xs:boolean" />
245 <xs:attribute name="copyToOutput" default="Never">
246 <xs:simpleType>
247 <xs:restriction base="xs:string">
248 <xs:enumeration value="Never" />
249 <xs:enumeration value="Always" />
250 <xs:enumeration value="PreserveNewest" />
251 </xs:restriction>
252 </xs:simpleType>
253 </xs:attribute>
254 </xs:complexType>
255 </xs:element>
256 <xs:element name="Exclude">
257 <xs:complexType>
258 <xs:attribute name="name" type="xs:string" use="required" />
259 </xs:complexType>
260 </xs:element>
261</xs:schema>
diff --git a/ThirdPartyLicenses/Axiom.txt b/ThirdPartyLicenses/Axiom.txt
new file mode 100644
index 0000000..af4e9cd
--- /dev/null
+++ b/ThirdPartyLicenses/Axiom.txt
@@ -0,0 +1,141 @@
1GNU LESSER GENERAL PUBLIC LICENSE
2Version 2.1, February 1999
3
4
5Copyright (C) 1991, 1999 Free Software Foundation, Inc.
659 Temple Place, Suite 330, Boston, MA 02111-1307 USA
7Everyone is permitted to copy and distribute verbatim copies
8of this license document, but changing it is not allowed.
9
10[This is the first released version of the Lesser GPL. It also counts
11 as the successor of the GNU Library Public License, version 2, hence
12 the version number 2.1.]
13
14Preamble
15The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
16
17This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.
18
19When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.
20
21To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.
22
23For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
24
25We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.
26
27To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.
28
29Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.
30
31Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.
32
33When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.
34
35We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.
36
37For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.
38
39In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.
40
41Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.
42
43The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.
44
45
46TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
470. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".
48
49A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
50
51The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
52
53"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
54
55Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
56
571. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
58
59You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
60
612. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
62
63
64a) The modified work must itself be a software library.
65b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
66c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
67d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
68(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
69
70These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
71
72Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
73
74In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
75
763. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
77
78Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
79
80This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
81
824. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
83
84If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
85
865. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
87
88However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
89
90When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
91
92If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
93
94Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
95
966. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
97
98You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
99
100
101a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)
102b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
103c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
104d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
105e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
106For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
107
108It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
109
1107. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
111
112
113a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
114b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
1158. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
116
1179. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
118
11910. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.
120
12111. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
122
123If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
124
125It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
126
127This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
128
12912. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
130
13113. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
132
133Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
134
13514. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
136
137NO WARRANTY
138
13915. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
140
14116. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. \ No newline at end of file
diff --git a/ThirdPartyLicenses/MySQL.txt b/ThirdPartyLicenses/MySQL.txt
new file mode 100644
index 0000000..6dfe347
--- /dev/null
+++ b/ThirdPartyLicenses/MySQL.txt
@@ -0,0 +1,78 @@
1Covered under the MySQL FLOSS Exemption ( http://www.mysql.com/company/legal/licensing/foss-exception.html )
2
3--------------------------------------------------------------------
4Legal Terms and Conditions
5
6As a special exception to the terms and conditions of version 2.0 of the GPL:
7
8You are free to distribute a Derivative Work that is formed entirely from the Program and one or more works (each, a "FLOSS Work") licensed under one or more of the licenses listed below in section 1, as long as:
9
10 1. You obey the GPL in all respects for the Program and the Derivative Work, except for identifiable sections of the Derivative Work which are not derived from the Program, and which can reasonably be considered independent and separate works in themselves,
11 2. all identifiable sections of the Derivative Work which are not derived from the Program, and which can reasonably be considered independent and separate works in themselves,
12 1. are distributed subject to one of the FLOSS licenses listed below, and
13 2. the object code or executable form of those sections are accompanied by the complete corresponding machine-readable source code for those sections on the same medium and under the same FLOSS license as the corresponding object code or executable forms of those sections, and
14 3. any works which are aggregated with the Program or with a Derivative Work on a volume of a storage or distribution medium in accordance with the GPL, can reasonably be considered independent and separate works in themselves which are not derivatives of either the Program, a Derivative Work or a FLOSS Work.
15
16If the above conditions are not met, then the Program may only be copied, modified, distributed or used under the terms and conditions of the GPL or another valid licensing option from MySQL AB.
17
18--------------------------------------------------------------------
19
20TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
21
220. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
23
24Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
25
261. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
27
28You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
29
302. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
31
32 a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
33 b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
34 c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
35
36These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
37
38Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
39
40In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
41
423. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
43
44 a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
45 b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
46 c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
47
48The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
49
50If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
51
524. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
53
545. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
55
566. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
57
587. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
59
60If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
61
62It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
63
64This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
65
668. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
67
689. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
69
70Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
71
7210. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
73
74NO WARRANTY
75
7611. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
77
7812. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. \ No newline at end of file
diff --git a/ThirdPartyLicenses/ODE.txt b/ThirdPartyLicenses/ODE.txt
new file mode 100644
index 0000000..312976f
--- /dev/null
+++ b/ThirdPartyLicenses/ODE.txt
@@ -0,0 +1,13 @@
1Open Dynamics Engine
2Copyright (c) 2001-2004, Russell L. Smith.
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6
7Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8
9Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10
11Neither the names of ODE's copyright owner nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12
13THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/ThirdPartyLicenses/OpenJpeg.txt b/ThirdPartyLicenses/OpenJpeg.txt
new file mode 100644
index 0000000..0ad4488
--- /dev/null
+++ b/ThirdPartyLicenses/OpenJpeg.txt
@@ -0,0 +1,30 @@
1/*
2 * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
3 * Copyright (c) 2002-2007, Professor Benoit Macq
4 * Copyright (c) 2001-2003, David Janssens
5 * Copyright (c) 2002-2003, Yannick Verschueren
6 * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
7 * Copyright (c) 2005, Herve Drolon, FreeImage Team
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */ \ No newline at end of file
diff --git a/ThirdPartyLicenses/libsl.txt b/ThirdPartyLicenses/libsl.txt
new file mode 100644
index 0000000..9555905
--- /dev/null
+++ b/ThirdPartyLicenses/libsl.txt
@@ -0,0 +1,23 @@
1Copyright (c) 2006, Second Life Reverse Engineering Team
2All rights reserved.
3
4- Redistribution and use in source and binary forms, with or without
5 modification, are permitted provided that the following conditions are met:
6
7- Redistributions of source code must retain the above copyright notice, this
8 list of conditions and the following disclaimer.
9- Neither the name of the Second Life Reverse Engineering Team nor the names
10 of its contributors may be used to endorse or promote products derived from
11 this software without specific prior written permission.
12
13THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
17LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
23POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/bin/Axiom.MathLib.dll b/bin/Axiom.MathLib.dll
new file mode 100644
index 0000000..21ce3a8
--- /dev/null
+++ b/bin/Axiom.MathLib.dll
Binary files differ
diff --git a/bin/Db4objects.Db4o.dll b/bin/Db4objects.Db4o.dll
new file mode 100644
index 0000000..be976a1
--- /dev/null
+++ b/bin/Db4objects.Db4o.dll
Binary files differ
diff --git a/bin/DotSets.dll b/bin/DotSets.dll
new file mode 100644
index 0000000..5225651
--- /dev/null
+++ b/bin/DotSets.dll
Binary files differ
diff --git a/bin/Kds.Serialization.dll b/bin/Kds.Serialization.dll
new file mode 100644
index 0000000..7f03277
--- /dev/null
+++ b/bin/Kds.Serialization.dll
Binary files differ
diff --git a/bin/Mono.PEToolkit.dll b/bin/Mono.PEToolkit.dll
new file mode 100644
index 0000000..b4c3e70
--- /dev/null
+++ b/bin/Mono.PEToolkit.dll
Binary files differ
diff --git a/bin/MySql.Data.dll b/bin/MySql.Data.dll
new file mode 100644
index 0000000..0467dd6
--- /dev/null
+++ b/bin/MySql.Data.dll
Binary files differ
diff --git a/bin/Ode.NET.dll b/bin/Ode.NET.dll
new file mode 100644
index 0000000..40f15a5
--- /dev/null
+++ b/bin/Ode.NET.dll
Binary files differ
diff --git a/bin/PhysX-wrapper.dll b/bin/PhysX-wrapper.dll
new file mode 100644
index 0000000..5259ffc
--- /dev/null
+++ b/bin/PhysX-wrapper.dll
Binary files differ
diff --git a/bin/PhysX_Wrapper_Dotnet.dll b/bin/PhysX_Wrapper_Dotnet.dll
new file mode 100644
index 0000000..c66bf3a
--- /dev/null
+++ b/bin/PhysX_Wrapper_Dotnet.dll
Binary files differ
diff --git a/bin/Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll b/bin/Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll
new file mode 100644
index 0000000..06cbfdc
--- /dev/null
+++ b/bin/Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll
Binary files differ
diff --git a/bin/Physics/OpenSim.Region.Physics.OdePlugin.dll b/bin/Physics/OpenSim.Region.Physics.OdePlugin.dll
new file mode 100644
index 0000000..07a5958
--- /dev/null
+++ b/bin/Physics/OpenSim.Region.Physics.OdePlugin.dll
Binary files differ
diff --git a/bin/Physics/OpenSim.Region.Physics.PhysXPlugin.dll b/bin/Physics/OpenSim.Region.Physics.PhysXPlugin.dll
new file mode 100644
index 0000000..fd12ea1
--- /dev/null
+++ b/bin/Physics/OpenSim.Region.Physics.PhysXPlugin.dll
Binary files differ
diff --git a/bin/Prebuild.exe b/bin/Prebuild.exe
new file mode 100644
index 0000000..81d532b
--- /dev/null
+++ b/bin/Prebuild.exe
Binary files differ
diff --git a/bin/System.Data.SQLite.dll b/bin/System.Data.SQLite.dll
new file mode 100644
index 0000000..70d84e7
--- /dev/null
+++ b/bin/System.Data.SQLite.dll
Binary files differ
diff --git a/bin/XMLRPC.dll b/bin/XMLRPC.dll
new file mode 100644
index 0000000..adf7297
--- /dev/null
+++ b/bin/XMLRPC.dll
Binary files differ
diff --git a/bin/defaultstripe.png b/bin/defaultstripe.png
new file mode 100644
index 0000000..9db19c8
--- /dev/null
+++ b/bin/defaultstripe.png
Binary files differ
diff --git a/bin/libTerrain-BSD.dll b/bin/libTerrain-BSD.dll
new file mode 100644
index 0000000..d9b95fc
--- /dev/null
+++ b/bin/libTerrain-BSD.dll
Binary files differ
diff --git a/bin/libdb_dotNET43.dll b/bin/libdb_dotNET43.dll
new file mode 100644
index 0000000..16a1cfc
--- /dev/null
+++ b/bin/libdb_dotNET43.dll
Binary files differ
diff --git a/bin/libode.a b/bin/libode.a
new file mode 100644
index 0000000..4df0ad1
--- /dev/null
+++ b/bin/libode.a
Binary files differ
diff --git a/bin/libode.so b/bin/libode.so
new file mode 100644
index 0000000..1c8565f
--- /dev/null
+++ b/bin/libode.so
Binary files differ
diff --git a/bin/libopenjpeg-1.0.0-x86_64.so b/bin/libopenjpeg-1.0.0-x86_64.so
new file mode 100644
index 0000000..84bb5c3
--- /dev/null
+++ b/bin/libopenjpeg-1.0.0-x86_64.so
Binary files differ
diff --git a/bin/libopenjpeg-1.0.0.so b/bin/libopenjpeg-1.0.0.so
new file mode 100644
index 0000000..154fbfe
--- /dev/null
+++ b/bin/libopenjpeg-1.0.0.so
Binary files differ
diff --git a/bin/libopenjpeg-1.1.0.dylib b/bin/libopenjpeg-1.1.0.dylib
new file mode 100644
index 0000000..6375632
--- /dev/null
+++ b/bin/libopenjpeg-1.1.0.dylib
Binary files differ
diff --git a/bin/libsecondlife.dll b/bin/libsecondlife.dll
new file mode 100644
index 0000000..c89788b
--- /dev/null
+++ b/bin/libsecondlife.dll
Binary files differ
diff --git a/bin/log4net.dll b/bin/log4net.dll
new file mode 100644
index 0000000..ffc57e1
--- /dev/null
+++ b/bin/log4net.dll
Binary files differ
diff --git a/bin/ode.dll b/bin/ode.dll
new file mode 100644
index 0000000..b226096
--- /dev/null
+++ b/bin/ode.dll
Binary files differ
diff --git a/bin/openjpeg.dll b/bin/openjpeg.dll
new file mode 100644
index 0000000..c9a7500
--- /dev/null
+++ b/bin/openjpeg.dll
Binary files differ
diff --git a/bin/openjpegnet.dll b/bin/openjpegnet.dll
new file mode 100644
index 0000000..1812fa9
--- /dev/null
+++ b/bin/openjpegnet.dll
Binary files differ
diff --git a/prebuild.xml b/prebuild.xml
new file mode 100644
index 0000000..c20be88
--- /dev/null
+++ b/prebuild.xml
@@ -0,0 +1,1105 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<Prebuild xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.7.xsd" version="1.7">
3 <Solution name="OpenSim" activeConfig="Debug" path="./">
4 <Configuration name="Debug">
5 <Options>
6 <CompilerDefines>TRACE;DEBUG</CompilerDefines>
7 <OptimizeCode>false</OptimizeCode>
8 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
9 <AllowUnsafe>false</AllowUnsafe>
10 <WarningLevel>4</WarningLevel>
11 <WarningsAsErrors>false</WarningsAsErrors>
12 <SuppressWarnings></SuppressWarnings>
13 <OutputPath>bin</OutputPath>
14 <DebugInformation>true</DebugInformation>
15 <IncrementalBuild>true</IncrementalBuild>
16 <NoStdLib>false</NoStdLib>
17 </Options>
18 </Configuration>
19 <Configuration name="Release">
20 <Options>
21 <CompilerDefines>TRACE</CompilerDefines>
22 <OptimizeCode>true</OptimizeCode>
23 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
24 <AllowUnsafe>false</AllowUnsafe>
25 <WarningLevel>4</WarningLevel>
26 <WarningsAsErrors>false</WarningsAsErrors>
27 <SuppressWarnings></SuppressWarnings>
28 <OutputPath>bin</OutputPath>
29 <DebugInformation>false</DebugInformation>
30 <IncrementalBuild>true</IncrementalBuild>
31 <NoStdLib>false</NoStdLib>
32 </Options>
33 </Configuration>
34
35
36 <!-- Core OpenSim Projects -->
37
38 <Project name="OpenSim.Framework.Console" path="OpenSim/Framework/Console" type="Library">
39 <Configuration name="Debug">
40 <Options>
41 <OutputPath>../../../bin/</OutputPath>
42 </Options>
43 </Configuration>
44 <Configuration name="Release">
45 <Options>
46 <OutputPath>../../../bin/</OutputPath>
47 </Options>
48 </Configuration>
49
50 <ReferencePath>../../../bin/</ReferencePath>
51 <Reference name="System" localCopy="false"/>
52 <Files>
53 <Match pattern="*.cs" recurse="true"/>
54 </Files>
55 </Project>
56
57 <Project name="OpenSim.Framework" path="OpenSim/Framework/General" type="Library">
58 <Configuration name="Debug">
59 <Options>
60 <OutputPath>../../../bin/</OutputPath>
61 </Options>
62 </Configuration>
63 <Configuration name="Release">
64 <Options>
65 <OutputPath>../../../bin/</OutputPath>
66 </Options>
67 </Configuration>
68
69 <ReferencePath>../../../bin/</ReferencePath>
70 <Reference name="System"/>
71 <Reference name="System.Xml"/>
72 <Reference name="libsecondlife.dll"/>
73 <Reference name="Db4objects.Db4o.dll"/>
74 <Reference name="XMLRPC.dll"/>
75 <Reference name="OpenSim.Framework.Console"/>
76 <Files>
77 <Match pattern="*.cs" recurse="true"/>
78 </Files>
79 </Project>
80
81 <Project name="OpenSim.Framework.Servers" path="OpenSim/Framework/Servers" type="Library">
82 <Configuration name="Debug">
83 <Options>
84 <OutputPath>../../../bin/</OutputPath>
85 </Options>
86 </Configuration>
87 <Configuration name="Release">
88 <Options>
89 <OutputPath>../../../bin/</OutputPath>
90 </Options>
91 </Configuration>
92
93 <ReferencePath>../../../bin/</ReferencePath>
94 <Reference name="System"/>
95 <Reference name="System.Xml"/>
96 <Reference name="OpenSim.Framework"/>
97 <Reference name="OpenSim.Framework.Console"/>
98 <Reference name="libsecondlife.dll"/>
99 <Reference name="XMLRPC.dll"/>
100
101 <Files>
102 <Match pattern="*.cs" recurse="true"/>
103 </Files>
104 </Project>
105
106 <Project name="OpenSim.Region.Caches" path="OpenSim/Region/Caches" type="Library">
107 <Configuration name="Debug">
108 <Options>
109 <OutputPath>../../../bin/</OutputPath>
110 </Options>
111 </Configuration>
112 <Configuration name="Release">
113 <Options>
114 <OutputPath>../../../bin/</OutputPath>
115 </Options>
116 </Configuration>
117
118 <ReferencePath>../../../bin/</ReferencePath>
119 <Reference name="System"/>
120 <Reference name="System.Xml"/>
121 <Reference name="libsecondlife.dll"/>
122 <Reference name="OpenSim.Framework"/>
123 <Files>
124 <Match pattern="*.cs" recurse="true"/>
125 </Files>
126 </Project>
127
128
129 <!-- Storage Plug-ins -->
130 <Project name="OpenSim.Region.Storage.LocalStorageDb4o" path="OpenSim/Region/Storage/LocalStorageDb4o" type="Library">
131 <Configuration name="Debug">
132 <Options>
133 <OutputPath>../../../../bin/</OutputPath>
134 </Options>
135 </Configuration>
136 <Configuration name="Release">
137 <Options>
138 <OutputPath>../../../../bin/</OutputPath>
139 </Options>
140 </Configuration>
141
142 <ReferencePath>../../../../bin/</ReferencePath>
143 <Reference name="System" localCopy="false"/>
144 <Reference name="System.Xml"/>
145 <Reference name="Db4objects.Db4o.dll"/>
146 <Reference name="libsecondlife.dll"/>
147 <Reference name="OpenSim.Framework"/>
148 <Reference name="OpenSim.Framework.Console"/>
149 <Files>
150 <Match pattern="*.cs" recurse="true"/>
151 </Files>
152 </Project>
153
154 <Project name="OpenSim.Region.Storage.LocalStorageSQLite" path="OpenSim/Region/Storage/LocalStorageSQLite" type="Library">
155 <Configuration name="Debug">
156 <Options>
157 <OutputPath>../../../../bin/</OutputPath>
158 </Options>
159 </Configuration>
160 <Configuration name="Release">
161 <Options>
162 <OutputPath>../../../../bin/</OutputPath>
163 </Options>
164 </Configuration>
165
166 <ReferencePath>../../../../bin/</ReferencePath>
167 <Reference name="System" localCopy="false"/>
168 <Reference name="System.Xml"/>
169 <Reference name="System.Data"/>
170 <Reference name="System.Data.SQLite.dll"/>
171 <Reference name="libsecondlife.dll"/>
172 <Reference name="OpenSim.Framework"/>
173 <Reference name="OpenSim.Framework.Console"/>
174 <Files>
175 <Match pattern="*.cs" recurse="true"/>
176 </Files>
177 </Project>
178
179 <Project name="OpenSim.Region.Storage.LocalStorageBerkeleyDB" path="OpenSim/Region/Storage/LocalStorageBerkeleyDB" type="Library">
180 <Configuration name="Debug">
181 <Options>
182 <OutputPath>../../../../bin/</OutputPath>
183 </Options>
184 </Configuration>
185 <Configuration name="Release">
186 <Options>
187 <OutputPath>../../../../bin/</OutputPath>
188 </Options>
189 </Configuration>
190
191 <ReferencePath>../../../../bin/</ReferencePath>
192 <Reference name="System" localCopy="false"/>
193 <Reference name="System.Xml"/>
194 <Reference name="System.Data"/>
195 <Reference name="Kds.Serialization.dll"/>
196 <Reference name="libdb_dotNET43.dll"/>
197 <Reference name="libsecondlife.dll"/>
198 <Reference name="OpenSim.Framework"/>
199 <Reference name="OpenSim.Framework.Console"/>
200 <Files>
201 <Match pattern="*.cs" recurse="true"/>
202 </Files>
203 </Project>
204
205 <!-- Grid Server Plug-ins -->
206 <Project name="OpenSim.Region.GridInterfaces.Local" path="OpenSim/Region/GridInterfaces/Local" type="Library">
207 <Configuration name="Debug">
208 <Options>
209 <OutputPath>../../../../bin/</OutputPath>
210 </Options>
211 </Configuration>
212 <Configuration name="Release">
213 <Options>
214 <OutputPath>../../../../bin/</OutputPath>
215 </Options>
216 </Configuration>
217
218 <ReferencePath>../../../../bin/</ReferencePath>
219 <Reference name="System" localCopy="false"/>
220 <Reference name="System.Xml"/>
221 <Reference name="Db4objects.Db4o.dll"/>
222 <Reference name="libsecondlife.dll"/>
223 <Reference name="OpenSim.Framework"/>
224 <Reference name="OpenSim.Framework.Console"/>
225 <Files>
226 <Match pattern="*.cs" recurse="true"/>
227 </Files>
228 </Project>
229
230 <Project name="OpenSim.Region.GridInterfaces.Remote" path="OpenSim/Region/GridInterfaces/Remote" type="Library">
231 <Configuration name="Debug">
232 <Options>
233 <OutputPath>../../../../bin/</OutputPath>
234 </Options>
235 </Configuration>
236 <Configuration name="Release">
237 <Options>
238 <OutputPath>../../../../bin/</OutputPath>
239 </Options>
240 </Configuration>
241
242 <ReferencePath>../../../../bin/</ReferencePath>
243 <Reference name="System" localCopy="false"/>
244 <Reference name="System.Xml"/>
245 <Reference name="libsecondlife.dll"/>
246 <Reference name="OpenSim.Framework"/>
247 <Reference name="OpenSim.Framework.Console"/>
248 <Reference name="XMLRPC.dll"/>
249 <Files>
250 <Match pattern="*.cs" recurse="true"/>
251 </Files>
252 </Project>
253
254
255 <Project name="OpenSim.Region.Physics.Manager" path="OpenSim/Region/Physics/Manager" type="Library">
256 <Configuration name="Debug">
257 <Options>
258 <OutputPath>../../../../bin/</OutputPath>
259 </Options>
260 </Configuration>
261 <Configuration name="Release">
262 <Options>
263 <OutputPath>../../../../bin/</OutputPath>
264 </Options>
265 </Configuration>
266
267 <ReferencePath>../../../../bin/</ReferencePath>
268 <Reference name="System" localCopy="false"/>
269 <Reference name="System.Xml" localCopy="false" />
270 <Reference name="Axiom.MathLib.dll" localCopy="false"/>
271 <Reference name="OpenSim.Framework" localCopy="false"/>
272 <Reference name="OpenSim.Framework.Console" localCopy="false"/>
273 <Files>
274 <Match pattern="*.cs" recurse="false"/>
275 </Files>
276 </Project>
277
278
279 <!-- Physics Plug-ins -->
280 <Project name="OpenSim.Region.Physics.BasicPhysicsPlugin" path="OpenSim/Region/Physics/BasicPhysicsPlugin" type="Library">
281 <Configuration name="Debug">
282 <Options>
283 <OutputPath>../../../../bin/Physics/</OutputPath>
284 </Options>
285 </Configuration>
286 <Configuration name="Release">
287 <Options>
288 <OutputPath>../../../../bin/Physics/</OutputPath>
289 </Options>
290 </Configuration>
291
292 <ReferencePath>../../../../bin/</ReferencePath>
293 <Reference name="System" localCopy="false"/>
294 <Reference name="Axiom.MathLib.dll" localCopy="false"/>
295 <Reference name="OpenSim.Region.Physics.Manager" localCopy="false"/>
296 <Files>
297 <Match pattern="*.cs" recurse="true"/>
298 </Files>
299 </Project>
300
301 <Project name="OpenSim.Region.Physics.PhysXPlugin" path="OpenSim/Region/Physics/PhysXPlugin" type="Library">
302 <Configuration name="Debug">
303 <Options>
304 <OutputPath>../../../../bin/Physics/</OutputPath>
305 </Options>
306 </Configuration>
307 <Configuration name="Release">
308 <Options>
309 <OutputPath>../../../../bin/Physics/</OutputPath>
310 </Options>
311 </Configuration>
312
313 <ReferencePath>../../../../bin/</ReferencePath>
314 <Reference name="System" localCopy="false"/>
315 <Reference name="Axiom.MathLib.dll" localCopy="false"/>
316 <Reference name="PhysX_Wrapper_Dotnet.dll" localCopy="false"/>
317 <Reference name="OpenSim.Region.Physics.Manager" localCopy="false"/>
318 <Files>
319 <Match pattern="*.cs" recurse="true"/>
320 </Files>
321 </Project>
322
323 <Project name="OpenSim.Region.Physics.OdePlugin" path="OpenSim/Region/Physics/OdePlugin" type="Library">
324 <Configuration name="Debug">
325 <Options>
326 <OutputPath>../../../../bin/Physics/</OutputPath>
327 </Options>
328 </Configuration>
329 <Configuration name="Release">
330 <Options>
331 <OutputPath>../../../../bin/Physics/</OutputPath>
332 </Options>
333 </Configuration>
334
335 <ReferencePath>../../../../bin/</ReferencePath>
336 <Reference name="System" localCopy="false"/>
337 <Reference name="Axiom.MathLib.dll" localCopy="false"/>
338 <Reference name="OpenSim.Region.Physics.Manager" localCopy="false"/>
339 <Reference name="Ode.NET.dll" localCopy="false" />
340
341 <Files>
342 <Match pattern="*.cs" recurse="true"/>
343 </Files>
344 </Project>
345
346 <!-- Xml Config Dll -->
347 <Project name="OpenSim.Framework.GenericConfig.Xml" path="OpenSim/Framework/GenericConfig/Xml" type="Library">
348 <Configuration name="Debug">
349 <Options>
350 <OutputPath>../../../../bin/</OutputPath>
351 </Options>
352 </Configuration>
353 <Configuration name="Release">
354 <Options>
355 <OutputPath>../../../../bin/</OutputPath>
356 </Options>
357 </Configuration>
358
359 <ReferencePath>../../../../bin/</ReferencePath>
360 <Reference name="System"/>
361 <Reference name="System.Xml"/>
362 <Reference name="OpenSim.Framework"/>
363
364 <Files>
365 <Match pattern="*.cs" recurse="true"/>
366 </Files>
367 </Project>
368
369 <!-- Terrain engine -->
370 <Project name="OpenSim.Region.Terrain.BasicTerrain" path="OpenSim/Region/Terrain.BasicTerrain" type="Library">
371 <Configuration name="Debug">
372 <Options>
373 <OutputPath>../../../bin/</OutputPath>
374 </Options>
375 </Configuration>
376 <Configuration name="Release">
377 <Options>
378 <OutputPath>../../../bin/</OutputPath>
379 </Options>
380 </Configuration>
381
382 <ReferencePath>../../../bin/</ReferencePath>
383 <Reference name="System"/>
384 <Reference name="System.Drawing"/>
385 <Reference name="System.Data"/>
386 <Reference name="System.Xml"/>
387 <Reference name="Microsoft.JScript"/>
388 <Reference name="libTerrain-BSD.dll"/>
389 <Reference name="openjpegnet.dll" />
390
391 <Files>
392 <Match pattern="*.cs" recurse="true"/>
393 </Files>
394 </Project>
395
396 <Project name="OpenSim.Framework.Data" path="OpenSim/Framework/Data" type="Library">
397 <Configuration name="Debug">
398 <Options>
399 <OutputPath>../../../bin/</OutputPath>
400 </Options>
401 </Configuration>
402 <Configuration name="Release">
403 <Options>
404 <OutputPath>../../../bin/</OutputPath>
405 </Options>
406 </Configuration>
407
408 <ReferencePath>../../../bin/</ReferencePath>
409 <Reference name="System" localCopy="false"/>
410 <Reference name="System.Xml"/>
411 <Reference name="System.Data"/>
412 <Reference name="libsecondlife.dll"/>
413 <Files>
414 <Match pattern="*.cs" recurse="true"/>
415 </Files>
416 </Project>
417
418 <Project name="OpenSim.Framework.Data.DB4o" path="OpenSim/Framework/Data.DB4o" type="Library">
419 <Configuration name="Debug">
420 <Options>
421 <OutputPath>../../../bin/</OutputPath>
422 </Options>
423 </Configuration>
424 <Configuration name="Release">
425 <Options>
426 <OutputPath>../../../bin/</OutputPath>
427 </Options>
428 </Configuration>
429
430 <ReferencePath>../../../bin/</ReferencePath>
431 <Reference name="System" localCopy="false"/>
432 <Reference name="System.Xml"/>
433 <Reference name="System.Data"/>
434 <Reference name="OpenSim.Framework.Data"/>
435 <Reference name="libsecondlife.dll"/>
436 <Reference name="Db4objects.Db4o.dll"/>
437 <Files>
438 <Match pattern="*.cs" recurse="true"/>
439 </Files>
440 </Project>
441
442 <Project name="OpenSim.Framework.UserManagement" path="OpenSim/Framework/UserManager" type="Library">
443 <Configuration name="Debug">
444 <Options>
445 <OutputPath>../../../bin/</OutputPath>
446 </Options>
447 </Configuration>
448 <Configuration name="Release">
449 <Options>
450 <OutputPath>../../../bin/</OutputPath>
451 </Options>
452 </Configuration>
453
454 <ReferencePath>../../../bin/</ReferencePath>
455 <Reference name="System" localCopy="false"/>
456 <Reference name="System.Data" localCopy="false"/>
457 <Reference name="System.Xml" localCopy="false"/>
458 <Reference name="XMLRPC.dll"/>
459 <Reference name="OpenSim.Framework"/>
460 <Reference name="OpenSim.Framework.Console"/>
461 <Reference name="OpenSim.Framework.Data"/>
462 <Reference name="OpenSim.Framework.GenericConfig.Xml"/>
463 <Reference name="OpenSim.Framework.Servers"/>
464 <Reference name="libsecondlife.dll"/>
465 <Reference name="Db4objects.Db4o.dll"/>
466
467 <Files>
468 <Match pattern="*.cs" recurse="true"/>
469 </Files>
470 </Project>
471
472 <!-- OpenGridFrameWork.Communications" -->
473 <Project name="OpenSim.Framework.Communications" path="OpenSim/Framework/Communications" type="Library">
474 <Configuration name="Debug">
475 <Options>
476 <OutputPath>../../../bin/</OutputPath>
477 </Options>
478 </Configuration>
479 <Configuration name="Release">
480 <Options>
481 <OutputPath>../../../bin/</OutputPath>
482 </Options>
483 </Configuration>
484
485 <ReferencePath>../../../bin/</ReferencePath>
486 <Reference name="System"/>
487 <Reference name="System.Xml"/>
488 <Reference name="OpenSim.Framework"/>
489 <Reference name="OpenSim.Framework.Data" />
490 <Reference name="libsecondlife.dll"/>
491
492 <Files>
493 <Match pattern="*.cs" recurse="true"/>
494 </Files>
495 </Project>
496
497 <Project name="OpenSim.Framework.Communications.OGS1" path="OpenSim/Framework/Communications.OGS1" type="Library">
498 <Configuration name="Debug">
499 <Options>
500 <OutputPath>../../../bin/</OutputPath>
501 </Options>
502 </Configuration>
503 <Configuration name="Release">
504 <Options>
505 <OutputPath>../../../bin/</OutputPath>
506 </Options>
507 </Configuration>
508
509 <ReferencePath>../../../bin/</ReferencePath>
510 <Reference name="System"/>
511 <Reference name="System.Xml"/>
512 <Reference name="System.Data"/>
513 <Reference name="System.Runtime.Remoting"/>
514 <Reference name="OpenSim.Framework"/>
515 <Reference name="OpenSim.Framework.Console"/>
516 <Reference name="OpenSim.Framework.Servers"/>
517 <Reference name="OpenSim.Framework.Communications" />
518 <Reference name="OpenSim.Framework.Data" />
519 <Reference name="libsecondlife.dll"/>
520 <Reference name="XMLRPC.dll"/>
521
522 <Files>
523 <Match pattern="*.cs" recurse="true"/>
524 </Files>
525 </Project>
526
527 <Project name="OpenSim.Region.LocalCommunications" path="OpenSim/Region/LocalCommunications" type="Library">
528 <Configuration name="Debug">
529 <Options>
530 <OutputPath>../../../bin/</OutputPath>
531 </Options>
532 </Configuration>
533 <Configuration name="Release">
534 <Options>
535 <OutputPath>../../../bin/</OutputPath>
536 </Options>
537 </Configuration>
538
539 <ReferencePath>../../../bin/</ReferencePath>
540 <Reference name="System"/>
541 <Reference name="System.Xml"/>
542 <Reference name="OpenSim.Framework.Communications"/>
543 <Reference name="OpenSim.Framework.UserManagement" />
544 <Reference name="OpenSim.Framework.Data" />
545 <Reference name="libsecondlife.dll"/>
546 <Reference name="OpenSim.Framework"/>
547
548 <Files>
549 <Match pattern="*.cs" recurse="true"/>
550 </Files>
551 </Project>
552
553 <Project name="OpenSim.Region.ClientStack" path="OpenSim/Region/ClientStack" type="Library">
554 <Configuration name="Debug">
555 <Options>
556 <OutputPath>../../../bin/</OutputPath>
557 </Options>
558 </Configuration>
559 <Configuration name="Release">
560 <Options>
561 <OutputPath>../../../bin/</OutputPath>
562 </Options>
563 </Configuration>
564
565 <ReferencePath>../../../bin/</ReferencePath>
566 <Reference name="System" localCopy="false"/>
567 <Reference name="System.Xml"/>
568 <Reference name="libsecondlife.dll"/>
569 <Reference name="Axiom.MathLib.dll"/>
570 <Reference name="Db4objects.Db4o.dll"/>
571 <Reference name="OpenSim.Region.Terrain.BasicTerrain"/>
572 <Reference name="OpenSim.Framework"/>
573 <Reference name="OpenSim.Framework.Console"/>
574 <Reference name="OpenSim.FrameworkGenericConfig.Xml"/>
575 <Reference name="OpenSim.Region.Physics.Manager"/>
576 <Reference name="OpenSim.Framework.Servers"/>
577 <Reference name="OpenSim.Region.Caches"/>
578 <Reference name="XMLRPC.dll"/>
579
580 <Files>
581 <Match pattern="*.cs" recurse="true"/>
582 </Files>
583 </Project>
584
585
586
587 <Project name="OpenSim.Region.Simulation" path="OpenSim/Region/Simulation" type="Library">
588 <Configuration name="Debug">
589 <Options>
590 <OutputPath>../../../bin/</OutputPath>
591 </Options>
592 </Configuration>
593 <Configuration name="Release">
594 <Options>
595 <OutputPath>../../../bin/</OutputPath>
596 </Options>
597 </Configuration>
598
599 <ReferencePath>../../../bin/</ReferencePath>
600 <Reference name="System" localCopy="false"/>
601 <Reference name="System.Xml"/>
602 <Reference name="libsecondlife.dll"/>
603 <Reference name="Axiom.MathLib.dll"/>
604 <Reference name="Db4objects.Db4o.dll"/>
605 <Reference name="OpenSim.Region.Terrain.BasicTerrain"/>
606 <Reference name="OpenSim.Framework"/>
607 <Reference name="OpenSim.Framework.Console"/>
608 <Reference name="OpenSim.Framework.GenericConfig.Xml"/>
609 <Reference name="OpenSim.Region.Physics.Manager"/>
610 <Reference name="OpenSim.Framework.Servers"/>
611 <Reference name="OpenSim.Region.Caches"/>
612 <Reference name="XMLRPC.dll"/>
613 <Reference name="OpenSim.Framework.Communications"/>
614
615 <Files>
616 <Match pattern="*.cs" recurse="true"/>
617 </Files>
618 </Project>
619
620 <!-- OpenSim app -->
621 <Project name="OpenSim" path="OpenSim/Region/Application" type="Exe">
622 <Configuration name="Debug">
623 <Options>
624 <OutputPath>../../../bin/</OutputPath>
625 </Options>
626 </Configuration>
627 <Configuration name="Release">
628 <Options>
629 <OutputPath>../../../bin/</OutputPath>
630 </Options>
631 </Configuration>
632
633 <ReferencePath>../../../bin/</ReferencePath>
634 <Reference name="System" localCopy="false"/>
635 <Reference name="System.Xml"/>
636 <Reference name="libsecondlife.dll"/>
637 <Reference name="Axiom.MathLib.dll"/>
638 <Reference name="Db4objects.Db4o.dll"/>
639 <Reference name="OpenSim.Region.Terrain.BasicTerrain"/>
640 <Reference name="OpenSim.Framework"/>
641 <Reference name="OpenSim.Framework.Console"/>
642 <Reference name="OpenSim.Region.Physics.Manager"/>
643 <Reference name="OpenSim.Framework.Servers"/>
644 <Reference name="OpenSim.Region.Simulation"/>
645 <Reference name="OpenSim.Region.ClientStack"/>
646 <Reference name="OpenSim.Framework.GenericConfig.Xml"/>
647 <Reference name="OpenSim.Framework.Communications"/>
648 <Reference name="OpenSim.Framework.Communications.OGS1"/>
649 <Reference name="OpenSim.Region.Caches"/>
650 <Reference name="XMLRPC.dll"/>
651 <Reference name="OpenSim.Framework.UserManagement" />
652 <Reference name="OpenSim.Region.LocalCommunications"/>
653
654 <Files>
655 <Match pattern="*.cs" recurse="true"/>
656 </Files>
657 </Project>
658
659 <!-- Scene Server API Example Apps -->
660
661 <Project name="SimpleApp" path="OpenSim/Region/Examples/SimpleApp" type="Exe">
662 <Configuration name="Debug">
663 <Options>
664 <OutputPath>../../../../bin/</OutputPath>
665 </Options>
666 </Configuration>
667 <Configuration name="Release">
668 <Options>
669 <OutputPath>../../../../bin/</OutputPath>
670 </Options>
671 </Configuration>
672
673 <ReferencePath>../../../../bin/</ReferencePath>
674
675 <Reference name="libsecondlife.dll"/>
676 <Reference name="System" localCopy="false"/>
677 <Reference name="System.Data.dll"/>
678 <Reference name="System.Xml"/>
679
680 <Reference name="OpenSim.Framework.Console"/>
681 <Reference name="OpenSim.Framework"/>
682 <Reference name="XMLRPC.dll"/>
683 <Reference name="OpenSim.Region.GridInterfaces.Local"/>
684 <Reference name="OpenSim.Servers"/>
685<Reference name="OpenSim.Framework.Communications"/>
686<Reference name="OpenSim.Region.LocalCommunications"/>
687 <Reference name="OpenSim.Region.Caches"/>
688 <Reference name="OpenSim.Region.ClientStack"/>
689 <Reference name="OpenSim.Region.Simulation"/>
690
691
692 <Files>
693 <Match pattern="*.cs" recurse="true"/>
694 </Files>
695 </Project>
696
697</Solution>
698
699
700<Solution name="OpenGridServices" activeConfig="Debug" path="./">
701 <Configuration name="Debug">
702 <Options>
703 <CompilerDefines>TRACE;DEBUG</CompilerDefines>
704 <OptimizeCode>false</OptimizeCode>
705 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
706 <AllowUnsafe>false</AllowUnsafe>
707 <WarningLevel>4</WarningLevel>
708 <WarningsAsErrors>false</WarningsAsErrors>
709 <SuppressWarnings></SuppressWarnings>
710 <OutputPath>bin</OutputPath>
711 <DebugInformation>true</DebugInformation>
712 <IncrementalBuild>true</IncrementalBuild>
713 <NoStdLib>false</NoStdLib>
714 </Options>
715 </Configuration>
716 <Configuration name="Release">
717 <Options>
718 <CompilerDefines>TRACE</CompilerDefines>
719 <OptimizeCode>true</OptimizeCode>
720 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
721 <AllowUnsafe>false</AllowUnsafe>
722 <WarningLevel>4</WarningLevel>
723 <WarningsAsErrors>false</WarningsAsErrors>
724 <SuppressWarnings></SuppressWarnings>
725 <OutputPath>bin</OutputPath>
726 <DebugInformation>false</DebugInformation>
727 <IncrementalBuild>true</IncrementalBuild>
728 <NoStdLib>false</NoStdLib>
729 </Options>
730 </Configuration>
731
732
733 <!-- OpenGrid Data Services -->
734 <Project name="OpenSim.Framework.Data" path="OpenSim/Framework/Data" type="Library">
735 <Configuration name="Debug">
736 <Options>
737 <OutputPath>../../../bin/</OutputPath>
738 </Options>
739 </Configuration>
740 <Configuration name="Release">
741 <Options>
742 <OutputPath>../../../bin/</OutputPath>
743 </Options>
744 </Configuration>
745
746 <ReferencePath>../../../bin/</ReferencePath>
747 <Reference name="System" localCopy="false"/>
748 <Reference name="System.Xml"/>
749 <Reference name="System.Data"/>
750 <Reference name="libsecondlife.dll"/>
751 <Files>
752 <Match pattern="*.cs" recurse="true"/>
753 </Files>
754 </Project>
755
756 <Project name="OpenSim.Framework.Data.MySQL" path="OpenSim/Framework/Data.MySQL" type="Library">
757 <Configuration name="Debug">
758 <Options>
759 <OutputPath>../../../bin/</OutputPath>
760 </Options>
761 </Configuration>
762 <Configuration name="Release">
763 <Options>
764 <OutputPath>../../../bin/</OutputPath>
765 </Options>
766 </Configuration>
767
768 <ReferencePath>../../../bin/</ReferencePath>
769 <Reference name="System" localCopy="false"/>
770 <Reference name="System.Xml"/>
771 <Reference name="System.Data"/>
772 <Reference name="OpenSim.Framework.Data"/>
773 <Reference name="libsecondlife.dll"/>
774 <Reference name="MySql.Data.dll"/>
775 <Files>
776 <Match pattern="*.cs" recurse="true"/>
777 </Files>
778 </Project>
779
780 <Project name="OpenSim.Framework.Data.DB4o" path="OpenSim/Framework/Data.DB4o" type="Library">
781 <Configuration name="Debug">
782 <Options>
783 <OutputPath>../../../bin/</OutputPath>
784 </Options>
785 </Configuration>
786 <Configuration name="Release">
787 <Options>
788 <OutputPath>../../../bin/</OutputPath>
789 </Options>
790 </Configuration>
791
792 <ReferencePath>../../../bin/</ReferencePath>
793 <Reference name="System" localCopy="false"/>
794 <Reference name="System.Xml"/>
795 <Reference name="System.Data"/>
796 <Reference name="OpenSim.Framework.Data"/>
797 <Reference name="libsecondlife.dll"/>
798 <Reference name="Db4objects.Db4o.dll"/>
799 <Files>
800 <Match pattern="*.cs" recurse="true"/>
801 </Files>
802 </Project>
803
804 <Project name="OpenSim.Framework.Data.MSSQL" path="OpenSim/Framework/Data.MSSQL" type="Library">
805 <Configuration name="Debug">
806 <Options>
807 <OutputPath>../../../bin/</OutputPath>
808 </Options>
809 </Configuration>
810 <Configuration name="Release">
811 <Options>
812 <OutputPath>../../../bin/</OutputPath>
813 </Options>
814 </Configuration>
815
816 <ReferencePath>../../../bin/</ReferencePath>
817 <Reference name="System" localCopy="false"/>
818 <Reference name="System.Xml"/>
819 <Reference name="System.Data"/>
820 <Reference name="OpenSim.Framework.Data"/>
821 <Reference name="libsecondlife.dll"/>
822 <Files>
823 <Match pattern="*.cs" recurse="true"/>
824 </Files>
825 </Project>
826
827 <Project name="OpenSim.Framework.Data.SQLite" path="OpenSim/Framework/Data.SQLite" type="Library">
828 <Configuration name="Debug">
829 <Options>
830 <OutputPath>../../../bin/</OutputPath>
831 </Options>
832 </Configuration>
833 <Configuration name="Release">
834 <Options>
835 <OutputPath>../../../bin/</OutputPath>
836 </Options>
837 </Configuration>
838
839 <ReferencePath>../../../bin/</ReferencePath>
840 <Reference name="System" localCopy="false"/>
841 <Reference name="System.Xml"/>
842 <Reference name="System.Data"/>
843 <Reference name="System.Data.SQLite.dll"/>
844 <Reference name="OpenSim.Framework.Data"/>
845 <Reference name="libsecondlife.dll"/>
846 <Files>
847 <Match pattern="*.cs" recurse="true"/>
848 </Files>
849 </Project>
850
851 <!-- OGS projects -->
852
853 <Project name="OpenSim.Grid.Framework.Manager" path="OpenSim/Grid/Framework.Manager" type="Library">
854 <Configuration name="Debug">
855 <Options>
856 <OutputPath>../../../bin/</OutputPath>
857 </Options>
858 </Configuration>
859 <Configuration name="Release">
860 <Options>
861 <OutputPath>../../../bin/</OutputPath>
862 </Options>
863 </Configuration>
864
865 <ReferencePath>../../../bin/</ReferencePath>
866 <Reference name="System" localCopy="false"/>
867 <Reference name="OpenSim.Framework"/>
868 <Reference name="OpenSim.Framework.Servers"/>
869 <Reference name="libsecondlife.dll"/>
870 <Reference name="XMLRPC.dll"/>
871
872
873 <Files>
874 <Match pattern="*.cs" recurse="true"/>
875 </Files>
876 </Project>
877
878 <Project name="OpenSim.Grid.GridServer" path="OpenSim/Grid/GridServer" type="Exe">
879 <Configuration name="Debug">
880 <Options>
881 <OutputPath>../../../bin/</OutputPath>
882 </Options>
883 </Configuration>
884 <Configuration name="Release">
885 <Options>
886 <OutputPath>../../../bin/</OutputPath>
887 </Options>
888 </Configuration>
889
890 <ReferencePath>../../../bin/</ReferencePath>
891 <Reference name="System" localCopy="false"/>
892 <Reference name="System.Data" localCopy="false"/>
893 <Reference name="System.Xml" localCopy="false"/>
894 <Reference name="OpenSim.Framework"/>
895 <Reference name="OpenSim.Framework.Console"/>
896 <Reference name="OpenSim.Framework.Servers"/>
897 <Reference name="OpenSim.Framework.Data"/>
898 <Reference name="OpenSim.Grid.Framework.Manager"/>
899 <Reference name="OpenSim.Framework.GenericConfig.Xml"/>
900 <Reference name="libsecondlife.dll"/>
901 <Reference name="Db4objects.Db4o.dll"/>
902 <Reference name="XMLRPC.dll"/>
903
904 <Files>
905 <Match pattern="*.cs" recurse="true"/>
906 </Files>
907 </Project>
908
909 <Project name="OpenSim.Grid.AssetServer" path="OpenSim/Grid/AssetServer" type="Exe">
910 <Configuration name="Debug">
911 <Options>
912 <OutputPath>../../../bin/</OutputPath>
913 </Options>
914 </Configuration>
915 <Configuration name="Release">
916 <Options>
917 <OutputPath>../../../bin/</OutputPath>
918 </Options>
919 </Configuration>
920
921 <ReferencePath>../../../bin/</ReferencePath>
922 <Reference name="System" localCopy="false"/>
923 <Reference name="System.Data" localCopy="false"/>
924 <Reference name="System.Xml" localCopy="false"/>
925 <Reference name="OpenSim.Framework"/>
926 <Reference name="OpenSim.Framework.Console"/>
927 <Reference name="OpenSim.Framework.Servers"/>
928 <Reference name="libsecondlife.dll"/>
929 <Reference name="Db4objects.Db4o.dll"/>
930 <Reference name="XMLRPC.dll"/>
931
932 <Files>
933 <Match pattern="*.cs" recurse="true"/>
934 </Files>
935 </Project>
936
937 <Project name="OpenSim.Framework.UserManagement" path="OpenSim/Framework/UserManager" type="Library">
938 <Configuration name="Debug">
939 <Options>
940 <OutputPath>../../../bin/</OutputPath>
941 </Options>
942 </Configuration>
943 <Configuration name="Release">
944 <Options>
945 <OutputPath>../../../bin/</OutputPath>
946 </Options>
947 </Configuration>
948
949 <ReferencePath>../../../bin/</ReferencePath>
950 <Reference name="System" localCopy="false"/>
951 <Reference name="System.Data" localCopy="false"/>
952 <Reference name="System.Xml" localCopy="false"/>
953 <Reference name="OpenSim.Framework"/>
954 <Reference name="OpenSim.Framework.Console"/>
955 <Reference name="OpenSim.Framework.Data"/>
956 <Reference name="OpenSim.Framework.GenericConfig.Xml"/>
957 <Reference name="OpenSim.Framework.Servers"/>
958 <Reference name="libsecondlife.dll"/>
959 <Reference name="Db4objects.Db4o.dll"/>
960 <Reference name="XMLRPC.dll"/>
961
962 <Files>
963 <Match pattern="*.cs" recurse="true"/>
964 </Files>
965 </Project>
966
967 <Project name="OpenSim.Grid.UserServer" path="OpenSim/Grid/UserServer" type="Exe">
968 <Configuration name="Debug">
969 <Options>
970 <OutputPath>../../../bin/</OutputPath>
971 </Options>
972 </Configuration>
973 <Configuration name="Release">
974 <Options>
975 <OutputPath>../../../bin/</OutputPath>
976 </Options>
977 </Configuration>
978
979 <ReferencePath>../../../bin/</ReferencePath>
980 <Reference name="System" localCopy="false"/>
981 <Reference name="System.Data" localCopy="false"/>
982 <Reference name="System.Xml" localCopy="false"/>
983 <Reference name="OpenSim.Framework"/>
984 <Reference name="OpenSim.Framework.Console"/>
985 <Reference name="OpenSim.Framework.Data"/>
986 <Reference name="OpenSim.Framework.GenericConfig.Xml"/>
987 <Reference name="OpenSim.Framework.Servers"/>
988 <Reference name="OpenSim.Framework.UserManager" />
989 <Reference name="libsecondlife.dll"/>
990 <Reference name="Db4objects.Db4o.dll"/>
991 <Reference name="XMLRPC.dll"/>
992
993 <Files>
994 <Match pattern="*.cs" recurse="true"/>
995 </Files>
996 </Project>
997
998 <Project name="OpenSim.Grid.GridServer.Config" path="OpenSim/Grid/GridServer.Config" type="Library">
999 <Configuration name="Debug">
1000 <Options>
1001 <OutputPath>../../../bin/</OutputPath>
1002 </Options>
1003 </Configuration>
1004 <Configuration name="Release">
1005 <Options>
1006 <OutputPath>../../../bin/</OutputPath>
1007 </Options>
1008 </Configuration>
1009
1010 <ReferencePath>../../../bin/</ReferencePath>
1011 <Reference name="System" localCopy="false"/>
1012 <Reference name="System.Data.dll"/>
1013 <Reference name="System.Xml"/>
1014 <Reference name="libsecondlife.dll"/>
1015 <Reference name="Db4objects.Db4o.dll"/>
1016 <Reference name="OpenSim.Framework"/>
1017 <Reference name="OpenSim.Framework.Console"/>
1018 <Files>
1019 <Match pattern="*.cs" recurse="true"/>
1020 </Files>
1021 </Project>
1022
1023 <Project name="OpenSim.Grid.UserServer.Config" path="OpenSim/Grid/UserServer.Config" type="Library">
1024 <Configuration name="Debug">
1025 <Options>
1026 <OutputPath>../../../bin/</OutputPath>
1027 </Options>
1028 </Configuration>
1029 <Configuration name="Release">
1030 <Options>
1031 <OutputPath>../../../bin/</OutputPath>
1032 </Options>
1033 </Configuration>
1034
1035 <ReferencePath>../../../bin/</ReferencePath>
1036 <Reference name="System" localCopy="false"/>
1037 <Reference name="System.Data.dll"/>
1038 <Reference name="System.Xml"/>
1039 <Reference name="libsecondlife.dll"/>
1040 <Reference name="Db4objects.Db4o.dll"/>
1041 <Reference name="OpenSim.Framework"/>
1042 <Reference name="OpenSim.Framework.Console"/>
1043 <Files>
1044 <Match pattern="*.cs" recurse="true"/>
1045 </Files>
1046 </Project>
1047
1048</Solution>
1049
1050
1051 <!-- Prebuild tool -->
1052 <Solution name="Prebuild" path="Prebuild/" >
1053 <Configuration name="Debug">
1054 <Options>
1055 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
1056 <OptimizeCode>false</OptimizeCode>
1057 <OutputPath>bin/Debug</OutputPath>
1058 <DebugInformation>true</DebugInformation>
1059 <SuppressWarnings>1595</SuppressWarnings>
1060 </Options>
1061 </Configuration>
1062 <Configuration name="Release">
1063 <Options>
1064 <CompilerDefines>TRACE</CompilerDefines>
1065 <OutputPath>bin/Release</OutputPath>
1066 <OptimizeCode>true</OptimizeCode>
1067 <DebugInformation>false</DebugInformation>
1068 <SuppressWarnings>1595</SuppressWarnings>
1069 </Options>
1070 </Configuration>
1071 <Project name="Prebuild" path="src/" language="C#" assemblyName="Prebuild" icon="App.ico" type="Exe" rootNamespace="Prebuild" startupObject="Prebuild.Prebuild">
1072 <Configuration name="Debug">
1073 <Options>
1074 <CompilerDefines>DEBUG;TRACE</CompilerDefines>
1075 <OptimizeCode>false</OptimizeCode>
1076 <OutputPath>..\..\bin\</OutputPath>
1077 <DebugInformation>true</DebugInformation>
1078 <KeyFile>Prebuild.snk</KeyFile>
1079 <SuppressWarnings>1595</SuppressWarnings>
1080 </Options>
1081 </Configuration>
1082 <Configuration name="Release">
1083 <Options>
1084 <CompilerDefines>TRACE</CompilerDefines>
1085 <OutputPath>..\..\bin\</OutputPath>
1086 <OptimizeCode>true</OptimizeCode>
1087 <DebugInformation>false</DebugInformation>
1088 <KeyFile>Prebuild.snk</KeyFile>
1089 <SuppressWarnings>1595</SuppressWarnings>
1090 </Options>
1091 </Configuration>
1092 <ReferencePath>../../bin/</ReferencePath>
1093 <Reference name="System.EnterpriseServices" />
1094 <Reference name="System.Xml" />
1095 <Reference name="System" />
1096 <Files>
1097 <Match pattern="App.ico" buildAction="EmbeddedResource"/>
1098 <Match path="data" pattern="prebuild-1.7.xsd" buildAction="EmbeddedResource"/>
1099 <Match pattern="*.cs" recurse="true"/>
1100 </Files>
1101 </Project>
1102 </Solution>
1103</Prebuild>
1104
1105
diff --git a/runprebuild.bat b/runprebuild.bat
new file mode 100644
index 0000000..c1e5d0e
--- /dev/null
+++ b/runprebuild.bat
@@ -0,0 +1,2 @@
1bin\Prebuild.exe /target nant
2bin\Prebuild.exe /target vs2005 \ No newline at end of file
diff --git a/share/php/generateUserFunction.php b/share/php/generateUserFunction.php
new file mode 100644
index 0000000..52ebc9f
--- /dev/null
+++ b/share/php/generateUserFunction.php
@@ -0,0 +1,46 @@
1<?php
2 // GenerateUser (v1.0)
3 // Creates a new user account, and returns it into an associative array.
4 // --
5 // $firstname - The users firstname
6 // $lastname - The users lastname
7 // $password - the users password
8 // $home - the regionhandle of the users home location
9 // --
10 function generateUser($firstname,$lastname,$password,$home) {
11 $user = array();
12 $user['UUID'] = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
13 mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
14 mt_rand( 0, 0x0fff ) | 0x4000,
15 mt_rand( 0, 0x3fff ) | 0x8000,
16 mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) );
17 $user['username'] = $firstname;
18 $user['lastname'] = $lastname;
19
20 $user['passwordSalt'] = md5(microtime() . mt_rand(0,0xffff));
21 $user['passwordHash'] = md5(md5($password) . ":" . $user['passwordSalt']);
22
23 $user['homeRegion'] = $home;
24 $user['homeLocationX'] = 128;
25 $user['homeLocationY'] = 128;
26 $user['homeLocationZ'] = 128;
27 $user['homeLookAtX'] = 15;
28 $user['homeLookAtY'] = 15;
29 $user['homeLookAtZ'] = 15;
30
31 $user['created'] = time();
32 $user['lastLogin'] = 0;
33
34 $user['userInventoryURI'] = "http://inventory.server.tld:8004/";
35 $user['userAssetURI'] = "http://asset.server.tld:8003/";
36
37 $user['profileCanDoMask'] = 0;
38 $user['profileWantDoMask'] = 0;
39 $user['profileAboutText'] = "I am a user.";
40 $user['profileFirstText'] = "Stuff.";
41 $user['profileImage'] = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', 0, 0, 0, 0, 0, 0, 0, 0 );
42 $user['profileFirstImage'] = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', 0, 0, 0, 0, 0, 0, 0, 0 );
43
44 return $user;
45 }
46?> \ No newline at end of file
diff --git a/share/regions/config_0.xml b/share/regions/config_0.xml
new file mode 100644
index 0000000..a7a85ad
--- /dev/null
+++ b/share/regions/config_0.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf000" SimName="0" SimLocationX="1000" SimLocationY="1000" Datastore="store_0_x00_y00.yap" SimListenPort="9100" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1.xml b/share/regions/config_1.xml
new file mode 100644
index 0000000..1ff4fd9
--- /dev/null
+++ b/share/regions/config_1.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf001" SimName="1" SimLocationX="1001" SimLocationY="1000" Datastore="store_1_x01_y00.yap" SimListenPort="9101" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_10.xml b/share/regions/config_10.xml
new file mode 100644
index 0000000..1ce503d
--- /dev/null
+++ b/share/regions/config_10.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf00a" SimName="10" SimLocationX="1010" SimLocationY="1000" Datastore="store_10_x10_y00.yap" SimListenPort="9110" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_100.xml b/share/regions/config_100.xml
new file mode 100644
index 0000000..5377794
--- /dev/null
+++ b/share/regions/config_100.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf064" SimName="100" SimLocationX="1004" SimLocationY="1003" Datastore="store_100_x04_y06.yap" SimListenPort="9200" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1000.xml b/share/regions/config_1000.xml
new file mode 100644
index 0000000..12cc889
--- /dev/null
+++ b/share/regions/config_1000.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e8" SimName="1000" SimLocationX="1008" SimLocationY="1031" Datastore="store_1000_x08_y62.yap" SimListenPort="10100" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1001.xml b/share/regions/config_1001.xml
new file mode 100644
index 0000000..e5010b9
--- /dev/null
+++ b/share/regions/config_1001.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e9" SimName="1001" SimLocationX="1009" SimLocationY="1031" Datastore="store_1001_x09_y62.yap" SimListenPort="10101" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1002.xml b/share/regions/config_1002.xml
new file mode 100644
index 0000000..f901d80
--- /dev/null
+++ b/share/regions/config_1002.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ea" SimName="1002" SimLocationX="1010" SimLocationY="1031" Datastore="store_1002_x10_y62.yap" SimListenPort="10102" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1003.xml b/share/regions/config_1003.xml
new file mode 100644
index 0000000..5ff3dce
--- /dev/null
+++ b/share/regions/config_1003.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3eb" SimName="1003" SimLocationX="1011" SimLocationY="1031" Datastore="store_1003_x11_y62.yap" SimListenPort="10103" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1004.xml b/share/regions/config_1004.xml
new file mode 100644
index 0000000..c2b9f1e
--- /dev/null
+++ b/share/regions/config_1004.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ec" SimName="1004" SimLocationX="1012" SimLocationY="1031" Datastore="store_1004_x12_y62.yap" SimListenPort="10104" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1005.xml b/share/regions/config_1005.xml
new file mode 100644
index 0000000..5aa7a3e
--- /dev/null
+++ b/share/regions/config_1005.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ed" SimName="1005" SimLocationX="1013" SimLocationY="1031" Datastore="store_1005_x13_y62.yap" SimListenPort="10105" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1006.xml b/share/regions/config_1006.xml
new file mode 100644
index 0000000..d561403
--- /dev/null
+++ b/share/regions/config_1006.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ee" SimName="1006" SimLocationX="1014" SimLocationY="1031" Datastore="store_1006_x14_y62.yap" SimListenPort="10106" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1007.xml b/share/regions/config_1007.xml
new file mode 100644
index 0000000..afd6c8a
--- /dev/null
+++ b/share/regions/config_1007.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ef" SimName="1007" SimLocationX="1015" SimLocationY="1031" Datastore="store_1007_x15_y62.yap" SimListenPort="10107" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1008.xml b/share/regions/config_1008.xml
new file mode 100644
index 0000000..c69ac88
--- /dev/null
+++ b/share/regions/config_1008.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f0" SimName="1008" SimLocationX="1016" SimLocationY="1031" Datastore="store_1008_x00_y63.yap" SimListenPort="10108" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1009.xml b/share/regions/config_1009.xml
new file mode 100644
index 0000000..77a8cb9
--- /dev/null
+++ b/share/regions/config_1009.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f1" SimName="1009" SimLocationX="1017" SimLocationY="1031" Datastore="store_1009_x01_y63.yap" SimListenPort="10109" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_101.xml b/share/regions/config_101.xml
new file mode 100644
index 0000000..d1510b6
--- /dev/null
+++ b/share/regions/config_101.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf065" SimName="101" SimLocationX="1005" SimLocationY="1003" Datastore="store_101_x05_y06.yap" SimListenPort="9201" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1010.xml b/share/regions/config_1010.xml
new file mode 100644
index 0000000..1f371b9
--- /dev/null
+++ b/share/regions/config_1010.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f2" SimName="1010" SimLocationX="1018" SimLocationY="1031" Datastore="store_1010_x02_y63.yap" SimListenPort="10110" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1011.xml b/share/regions/config_1011.xml
new file mode 100644
index 0000000..1483495
--- /dev/null
+++ b/share/regions/config_1011.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f3" SimName="1011" SimLocationX="1019" SimLocationY="1031" Datastore="store_1011_x03_y63.yap" SimListenPort="10111" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1012.xml b/share/regions/config_1012.xml
new file mode 100644
index 0000000..d076c14
--- /dev/null
+++ b/share/regions/config_1012.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f4" SimName="1012" SimLocationX="1020" SimLocationY="1031" Datastore="store_1012_x04_y63.yap" SimListenPort="10112" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1013.xml b/share/regions/config_1013.xml
new file mode 100644
index 0000000..32d783a
--- /dev/null
+++ b/share/regions/config_1013.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f5" SimName="1013" SimLocationX="1021" SimLocationY="1031" Datastore="store_1013_x05_y63.yap" SimListenPort="10113" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1014.xml b/share/regions/config_1014.xml
new file mode 100644
index 0000000..14df9f4
--- /dev/null
+++ b/share/regions/config_1014.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f6" SimName="1014" SimLocationX="1022" SimLocationY="1031" Datastore="store_1014_x06_y63.yap" SimListenPort="10114" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1015.xml b/share/regions/config_1015.xml
new file mode 100644
index 0000000..20b2317
--- /dev/null
+++ b/share/regions/config_1015.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f7" SimName="1015" SimLocationX="1023" SimLocationY="1031" Datastore="store_1015_x07_y63.yap" SimListenPort="10115" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1016.xml b/share/regions/config_1016.xml
new file mode 100644
index 0000000..5be5dee
--- /dev/null
+++ b/share/regions/config_1016.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f8" SimName="1016" SimLocationX="1024" SimLocationY="1031" Datastore="store_1016_x08_y63.yap" SimListenPort="10116" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1017.xml b/share/regions/config_1017.xml
new file mode 100644
index 0000000..1edbc6a
--- /dev/null
+++ b/share/regions/config_1017.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3f9" SimName="1017" SimLocationX="1025" SimLocationY="1031" Datastore="store_1017_x09_y63.yap" SimListenPort="10117" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1018.xml b/share/regions/config_1018.xml
new file mode 100644
index 0000000..bee2492
--- /dev/null
+++ b/share/regions/config_1018.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3fa" SimName="1018" SimLocationX="1026" SimLocationY="1031" Datastore="store_1018_x10_y63.yap" SimListenPort="10118" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1019.xml b/share/regions/config_1019.xml
new file mode 100644
index 0000000..ae20cce
--- /dev/null
+++ b/share/regions/config_1019.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3fb" SimName="1019" SimLocationX="1027" SimLocationY="1031" Datastore="store_1019_x11_y63.yap" SimListenPort="10119" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_102.xml b/share/regions/config_102.xml
new file mode 100644
index 0000000..b163638
--- /dev/null
+++ b/share/regions/config_102.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf066" SimName="102" SimLocationX="1006" SimLocationY="1003" Datastore="store_102_x06_y06.yap" SimListenPort="9202" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1020.xml b/share/regions/config_1020.xml
new file mode 100644
index 0000000..3acbfe6
--- /dev/null
+++ b/share/regions/config_1020.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3fc" SimName="1020" SimLocationX="1028" SimLocationY="1031" Datastore="store_1020_x12_y63.yap" SimListenPort="10120" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1021.xml b/share/regions/config_1021.xml
new file mode 100644
index 0000000..33a28da
--- /dev/null
+++ b/share/regions/config_1021.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3fd" SimName="1021" SimLocationX="1029" SimLocationY="1031" Datastore="store_1021_x13_y63.yap" SimListenPort="10121" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1022.xml b/share/regions/config_1022.xml
new file mode 100644
index 0000000..bee87ff
--- /dev/null
+++ b/share/regions/config_1022.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3fe" SimName="1022" SimLocationX="1030" SimLocationY="1031" Datastore="store_1022_x14_y63.yap" SimListenPort="10122" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_1023.xml b/share/regions/config_1023.xml
new file mode 100644
index 0000000..ff90f32
--- /dev/null
+++ b/share/regions/config_1023.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ff" SimName="1023" SimLocationX="1031" SimLocationY="1031" Datastore="store_1023_x15_y63.yap" SimListenPort="10123" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-48.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_103.xml b/share/regions/config_103.xml
new file mode 100644
index 0000000..8a1e78e
--- /dev/null
+++ b/share/regions/config_103.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf067" SimName="103" SimLocationX="1007" SimLocationY="1003" Datastore="store_103_x07_y06.yap" SimListenPort="9203" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_104.xml b/share/regions/config_104.xml
new file mode 100644
index 0000000..5875dd9
--- /dev/null
+++ b/share/regions/config_104.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf068" SimName="104" SimLocationX="1008" SimLocationY="1003" Datastore="store_104_x08_y06.yap" SimListenPort="9204" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_105.xml b/share/regions/config_105.xml
new file mode 100644
index 0000000..86f6c5b
--- /dev/null
+++ b/share/regions/config_105.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf069" SimName="105" SimLocationX="1009" SimLocationY="1003" Datastore="store_105_x09_y06.yap" SimListenPort="9205" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_106.xml b/share/regions/config_106.xml
new file mode 100644
index 0000000..768a528
--- /dev/null
+++ b/share/regions/config_106.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf06a" SimName="106" SimLocationX="1010" SimLocationY="1003" Datastore="store_106_x10_y06.yap" SimListenPort="9206" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_107.xml b/share/regions/config_107.xml
new file mode 100644
index 0000000..efa0446
--- /dev/null
+++ b/share/regions/config_107.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf06b" SimName="107" SimLocationX="1011" SimLocationY="1003" Datastore="store_107_x11_y06.yap" SimListenPort="9207" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_108.xml b/share/regions/config_108.xml
new file mode 100644
index 0000000..60f1dcb
--- /dev/null
+++ b/share/regions/config_108.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf06c" SimName="108" SimLocationX="1012" SimLocationY="1003" Datastore="store_108_x12_y06.yap" SimListenPort="9208" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_109.xml b/share/regions/config_109.xml
new file mode 100644
index 0000000..2c44ff9
--- /dev/null
+++ b/share/regions/config_109.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf06d" SimName="109" SimLocationX="1013" SimLocationY="1003" Datastore="store_109_x13_y06.yap" SimListenPort="9209" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_11.xml b/share/regions/config_11.xml
new file mode 100644
index 0000000..63b3489
--- /dev/null
+++ b/share/regions/config_11.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf00b" SimName="11" SimLocationX="1011" SimLocationY="1000" Datastore="store_11_x11_y00.yap" SimListenPort="9111" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_110.xml b/share/regions/config_110.xml
new file mode 100644
index 0000000..02fbc4d
--- /dev/null
+++ b/share/regions/config_110.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf06e" SimName="110" SimLocationX="1014" SimLocationY="1003" Datastore="store_110_x14_y06.yap" SimListenPort="9210" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_111.xml b/share/regions/config_111.xml
new file mode 100644
index 0000000..4752891
--- /dev/null
+++ b/share/regions/config_111.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf06f" SimName="111" SimLocationX="1015" SimLocationY="1003" Datastore="store_111_x15_y06.yap" SimListenPort="9211" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_112.xml b/share/regions/config_112.xml
new file mode 100644
index 0000000..c672402
--- /dev/null
+++ b/share/regions/config_112.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf070" SimName="112" SimLocationX="1016" SimLocationY="1003" Datastore="store_112_x00_y07.yap" SimListenPort="9212" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_113.xml b/share/regions/config_113.xml
new file mode 100644
index 0000000..0ea4391
--- /dev/null
+++ b/share/regions/config_113.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf071" SimName="113" SimLocationX="1017" SimLocationY="1003" Datastore="store_113_x01_y07.yap" SimListenPort="9213" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_114.xml b/share/regions/config_114.xml
new file mode 100644
index 0000000..844653e
--- /dev/null
+++ b/share/regions/config_114.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf072" SimName="114" SimLocationX="1018" SimLocationY="1003" Datastore="store_114_x02_y07.yap" SimListenPort="9214" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_115.xml b/share/regions/config_115.xml
new file mode 100644
index 0000000..1672c5d
--- /dev/null
+++ b/share/regions/config_115.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf073" SimName="115" SimLocationX="1019" SimLocationY="1003" Datastore="store_115_x03_y07.yap" SimListenPort="9215" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_116.xml b/share/regions/config_116.xml
new file mode 100644
index 0000000..abb1e44
--- /dev/null
+++ b/share/regions/config_116.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf074" SimName="116" SimLocationX="1020" SimLocationY="1003" Datastore="store_116_x04_y07.yap" SimListenPort="9216" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_117.xml b/share/regions/config_117.xml
new file mode 100644
index 0000000..4f90aa4
--- /dev/null
+++ b/share/regions/config_117.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf075" SimName="117" SimLocationX="1021" SimLocationY="1003" Datastore="store_117_x05_y07.yap" SimListenPort="9217" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_118.xml b/share/regions/config_118.xml
new file mode 100644
index 0000000..5241fa6
--- /dev/null
+++ b/share/regions/config_118.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf076" SimName="118" SimLocationX="1022" SimLocationY="1003" Datastore="store_118_x06_y07.yap" SimListenPort="9218" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_119.xml b/share/regions/config_119.xml
new file mode 100644
index 0000000..8b8d85d
--- /dev/null
+++ b/share/regions/config_119.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf077" SimName="119" SimLocationX="1023" SimLocationY="1003" Datastore="store_119_x07_y07.yap" SimListenPort="9219" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_12.xml b/share/regions/config_12.xml
new file mode 100644
index 0000000..dbab016
--- /dev/null
+++ b/share/regions/config_12.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf00c" SimName="12" SimLocationX="1012" SimLocationY="1000" Datastore="store_12_x12_y00.yap" SimListenPort="9112" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_120.xml b/share/regions/config_120.xml
new file mode 100644
index 0000000..b3a3ba5
--- /dev/null
+++ b/share/regions/config_120.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf078" SimName="120" SimLocationX="1024" SimLocationY="1003" Datastore="store_120_x08_y07.yap" SimListenPort="9220" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_121.xml b/share/regions/config_121.xml
new file mode 100644
index 0000000..d204659
--- /dev/null
+++ b/share/regions/config_121.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf079" SimName="121" SimLocationX="1025" SimLocationY="1003" Datastore="store_121_x09_y07.yap" SimListenPort="9221" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_122.xml b/share/regions/config_122.xml
new file mode 100644
index 0000000..b13dc6f
--- /dev/null
+++ b/share/regions/config_122.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf07a" SimName="122" SimLocationX="1026" SimLocationY="1003" Datastore="store_122_x10_y07.yap" SimListenPort="9222" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_123.xml b/share/regions/config_123.xml
new file mode 100644
index 0000000..22a81ee
--- /dev/null
+++ b/share/regions/config_123.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf07b" SimName="123" SimLocationX="1027" SimLocationY="1003" Datastore="store_123_x11_y07.yap" SimListenPort="9223" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_124.xml b/share/regions/config_124.xml
new file mode 100644
index 0000000..5b9b153
--- /dev/null
+++ b/share/regions/config_124.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf07c" SimName="124" SimLocationX="1028" SimLocationY="1003" Datastore="store_124_x12_y07.yap" SimListenPort="9224" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_125.xml b/share/regions/config_125.xml
new file mode 100644
index 0000000..deef175
--- /dev/null
+++ b/share/regions/config_125.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf07d" SimName="125" SimLocationX="1029" SimLocationY="1003" Datastore="store_125_x13_y07.yap" SimListenPort="9225" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_126.xml b/share/regions/config_126.xml
new file mode 100644
index 0000000..705978c
--- /dev/null
+++ b/share/regions/config_126.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf07e" SimName="126" SimLocationX="1030" SimLocationY="1003" Datastore="store_126_x14_y07.yap" SimListenPort="9226" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_127.xml b/share/regions/config_127.xml
new file mode 100644
index 0000000..a6ef58c
--- /dev/null
+++ b/share/regions/config_127.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf07f" SimName="127" SimLocationX="1031" SimLocationY="1003" Datastore="store_127_x15_y07.yap" SimListenPort="9227" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y08.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_128.xml b/share/regions/config_128.xml
new file mode 100644
index 0000000..9745ea2
--- /dev/null
+++ b/share/regions/config_128.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf080" SimName="128" SimLocationX="1000" SimLocationY="1004" Datastore="store_128_x00_y08.yap" SimListenPort="9228" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_129.xml b/share/regions/config_129.xml
new file mode 100644
index 0000000..81abdde
--- /dev/null
+++ b/share/regions/config_129.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf081" SimName="129" SimLocationX="1001" SimLocationY="1004" Datastore="store_129_x01_y08.yap" SimListenPort="9229" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_13.xml b/share/regions/config_13.xml
new file mode 100644
index 0000000..879d1cc
--- /dev/null
+++ b/share/regions/config_13.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf00d" SimName="13" SimLocationX="1013" SimLocationY="1000" Datastore="store_13_x13_y00.yap" SimListenPort="9113" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_130.xml b/share/regions/config_130.xml
new file mode 100644
index 0000000..ca8f2fb
--- /dev/null
+++ b/share/regions/config_130.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf082" SimName="130" SimLocationX="1002" SimLocationY="1004" Datastore="store_130_x02_y08.yap" SimListenPort="9230" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_131.xml b/share/regions/config_131.xml
new file mode 100644
index 0000000..ae84c9e
--- /dev/null
+++ b/share/regions/config_131.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf083" SimName="131" SimLocationX="1003" SimLocationY="1004" Datastore="store_131_x03_y08.yap" SimListenPort="9231" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_132.xml b/share/regions/config_132.xml
new file mode 100644
index 0000000..88b0895
--- /dev/null
+++ b/share/regions/config_132.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf084" SimName="132" SimLocationX="1004" SimLocationY="1004" Datastore="store_132_x04_y08.yap" SimListenPort="9232" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_133.xml b/share/regions/config_133.xml
new file mode 100644
index 0000000..f03aff6
--- /dev/null
+++ b/share/regions/config_133.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf085" SimName="133" SimLocationX="1005" SimLocationY="1004" Datastore="store_133_x05_y08.yap" SimListenPort="9233" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_134.xml b/share/regions/config_134.xml
new file mode 100644
index 0000000..1dae046
--- /dev/null
+++ b/share/regions/config_134.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf086" SimName="134" SimLocationX="1006" SimLocationY="1004" Datastore="store_134_x06_y08.yap" SimListenPort="9234" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_135.xml b/share/regions/config_135.xml
new file mode 100644
index 0000000..5643a00
--- /dev/null
+++ b/share/regions/config_135.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf087" SimName="135" SimLocationX="1007" SimLocationY="1004" Datastore="store_135_x07_y08.yap" SimListenPort="9235" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_136.xml b/share/regions/config_136.xml
new file mode 100644
index 0000000..5e85f53
--- /dev/null
+++ b/share/regions/config_136.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf088" SimName="136" SimLocationX="1008" SimLocationY="1004" Datastore="store_136_x08_y08.yap" SimListenPort="9236" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_137.xml b/share/regions/config_137.xml
new file mode 100644
index 0000000..7fedbaa
--- /dev/null
+++ b/share/regions/config_137.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf089" SimName="137" SimLocationX="1009" SimLocationY="1004" Datastore="store_137_x09_y08.yap" SimListenPort="9237" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_138.xml b/share/regions/config_138.xml
new file mode 100644
index 0000000..9610d97
--- /dev/null
+++ b/share/regions/config_138.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf08a" SimName="138" SimLocationX="1010" SimLocationY="1004" Datastore="store_138_x10_y08.yap" SimListenPort="9238" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_139.xml b/share/regions/config_139.xml
new file mode 100644
index 0000000..950a9ae
--- /dev/null
+++ b/share/regions/config_139.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf08b" SimName="139" SimLocationX="1011" SimLocationY="1004" Datastore="store_139_x11_y08.yap" SimListenPort="9239" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_14.xml b/share/regions/config_14.xml
new file mode 100644
index 0000000..d737ebf
--- /dev/null
+++ b/share/regions/config_14.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf00e" SimName="14" SimLocationX="1014" SimLocationY="1000" Datastore="store_14_x14_y00.yap" SimListenPort="9114" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_140.xml b/share/regions/config_140.xml
new file mode 100644
index 0000000..9ba3d2e
--- /dev/null
+++ b/share/regions/config_140.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf08c" SimName="140" SimLocationX="1012" SimLocationY="1004" Datastore="store_140_x12_y08.yap" SimListenPort="9240" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_141.xml b/share/regions/config_141.xml
new file mode 100644
index 0000000..35f63d1
--- /dev/null
+++ b/share/regions/config_141.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf08d" SimName="141" SimLocationX="1013" SimLocationY="1004" Datastore="store_141_x13_y08.yap" SimListenPort="9241" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_142.xml b/share/regions/config_142.xml
new file mode 100644
index 0000000..35511cf
--- /dev/null
+++ b/share/regions/config_142.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf08e" SimName="142" SimLocationX="1014" SimLocationY="1004" Datastore="store_142_x14_y08.yap" SimListenPort="9242" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_143.xml b/share/regions/config_143.xml
new file mode 100644
index 0000000..83fd144
--- /dev/null
+++ b/share/regions/config_143.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf08f" SimName="143" SimLocationX="1015" SimLocationY="1004" Datastore="store_143_x15_y08.yap" SimListenPort="9243" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y07.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_144.xml b/share/regions/config_144.xml
new file mode 100644
index 0000000..559f854
--- /dev/null
+++ b/share/regions/config_144.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf090" SimName="144" SimLocationX="1016" SimLocationY="1004" Datastore="store_144_x00_y09.yap" SimListenPort="9244" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_145.xml b/share/regions/config_145.xml
new file mode 100644
index 0000000..ea2aff7
--- /dev/null
+++ b/share/regions/config_145.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf091" SimName="145" SimLocationX="1017" SimLocationY="1004" Datastore="store_145_x01_y09.yap" SimListenPort="9245" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_146.xml b/share/regions/config_146.xml
new file mode 100644
index 0000000..35308b0
--- /dev/null
+++ b/share/regions/config_146.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf092" SimName="146" SimLocationX="1018" SimLocationY="1004" Datastore="store_146_x02_y09.yap" SimListenPort="9246" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_147.xml b/share/regions/config_147.xml
new file mode 100644
index 0000000..65ffcbc
--- /dev/null
+++ b/share/regions/config_147.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf093" SimName="147" SimLocationX="1019" SimLocationY="1004" Datastore="store_147_x03_y09.yap" SimListenPort="9247" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_148.xml b/share/regions/config_148.xml
new file mode 100644
index 0000000..50e5b70
--- /dev/null
+++ b/share/regions/config_148.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf094" SimName="148" SimLocationX="1020" SimLocationY="1004" Datastore="store_148_x04_y09.yap" SimListenPort="9248" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_149.xml b/share/regions/config_149.xml
new file mode 100644
index 0000000..d75a455
--- /dev/null
+++ b/share/regions/config_149.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf095" SimName="149" SimLocationX="1021" SimLocationY="1004" Datastore="store_149_x05_y09.yap" SimListenPort="9249" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_15.xml b/share/regions/config_15.xml
new file mode 100644
index 0000000..9caeae7
--- /dev/null
+++ b/share/regions/config_15.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf00f" SimName="15" SimLocationX="1015" SimLocationY="1000" Datastore="store_15_x15_y00.yap" SimListenPort="9115" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_150.xml b/share/regions/config_150.xml
new file mode 100644
index 0000000..2ae5b9f
--- /dev/null
+++ b/share/regions/config_150.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf096" SimName="150" SimLocationX="1022" SimLocationY="1004" Datastore="store_150_x06_y09.yap" SimListenPort="9250" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_151.xml b/share/regions/config_151.xml
new file mode 100644
index 0000000..bc2bdcd
--- /dev/null
+++ b/share/regions/config_151.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf097" SimName="151" SimLocationX="1023" SimLocationY="1004" Datastore="store_151_x07_y09.yap" SimListenPort="9251" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_152.xml b/share/regions/config_152.xml
new file mode 100644
index 0000000..b641d91
--- /dev/null
+++ b/share/regions/config_152.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf098" SimName="152" SimLocationX="1024" SimLocationY="1004" Datastore="store_152_x08_y09.yap" SimListenPort="9252" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_153.xml b/share/regions/config_153.xml
new file mode 100644
index 0000000..f308946
--- /dev/null
+++ b/share/regions/config_153.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf099" SimName="153" SimLocationX="1025" SimLocationY="1004" Datastore="store_153_x09_y09.yap" SimListenPort="9253" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_154.xml b/share/regions/config_154.xml
new file mode 100644
index 0000000..16a0185
--- /dev/null
+++ b/share/regions/config_154.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf09a" SimName="154" SimLocationX="1026" SimLocationY="1004" Datastore="store_154_x10_y09.yap" SimListenPort="9254" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_155.xml b/share/regions/config_155.xml
new file mode 100644
index 0000000..d026ca7
--- /dev/null
+++ b/share/regions/config_155.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf09b" SimName="155" SimLocationX="1027" SimLocationY="1004" Datastore="store_155_x11_y09.yap" SimListenPort="9255" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_156.xml b/share/regions/config_156.xml
new file mode 100644
index 0000000..1565d11
--- /dev/null
+++ b/share/regions/config_156.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf09c" SimName="156" SimLocationX="1028" SimLocationY="1004" Datastore="store_156_x12_y09.yap" SimListenPort="9256" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_157.xml b/share/regions/config_157.xml
new file mode 100644
index 0000000..6883214
--- /dev/null
+++ b/share/regions/config_157.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf09d" SimName="157" SimLocationX="1029" SimLocationY="1004" Datastore="store_157_x13_y09.yap" SimListenPort="9257" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_158.xml b/share/regions/config_158.xml
new file mode 100644
index 0000000..f8d2d67
--- /dev/null
+++ b/share/regions/config_158.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf09e" SimName="158" SimLocationX="1030" SimLocationY="1004" Datastore="store_158_x14_y09.yap" SimListenPort="9258" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_159.xml b/share/regions/config_159.xml
new file mode 100644
index 0000000..95147b4
--- /dev/null
+++ b/share/regions/config_159.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf09f" SimName="159" SimLocationX="1031" SimLocationY="1004" Datastore="store_159_x15_y09.yap" SimListenPort="9259" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y06.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_16.xml b/share/regions/config_16.xml
new file mode 100644
index 0000000..92bb4a9
--- /dev/null
+++ b/share/regions/config_16.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf010" SimName="16" SimLocationX="1016" SimLocationY="1000" Datastore="store_16_x00_y01.yap" SimListenPort="9116" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_160.xml b/share/regions/config_160.xml
new file mode 100644
index 0000000..6590dd3
--- /dev/null
+++ b/share/regions/config_160.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a0" SimName="160" SimLocationX="1000" SimLocationY="1005" Datastore="store_160_x00_y10.yap" SimListenPort="9260" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_161.xml b/share/regions/config_161.xml
new file mode 100644
index 0000000..77f9205
--- /dev/null
+++ b/share/regions/config_161.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a1" SimName="161" SimLocationX="1001" SimLocationY="1005" Datastore="store_161_x01_y10.yap" SimListenPort="9261" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_162.xml b/share/regions/config_162.xml
new file mode 100644
index 0000000..0b33247
--- /dev/null
+++ b/share/regions/config_162.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a2" SimName="162" SimLocationX="1002" SimLocationY="1005" Datastore="store_162_x02_y10.yap" SimListenPort="9262" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_163.xml b/share/regions/config_163.xml
new file mode 100644
index 0000000..f6d1d2e
--- /dev/null
+++ b/share/regions/config_163.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a3" SimName="163" SimLocationX="1003" SimLocationY="1005" Datastore="store_163_x03_y10.yap" SimListenPort="9263" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_164.xml b/share/regions/config_164.xml
new file mode 100644
index 0000000..92e4731
--- /dev/null
+++ b/share/regions/config_164.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a4" SimName="164" SimLocationX="1004" SimLocationY="1005" Datastore="store_164_x04_y10.yap" SimListenPort="9264" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_165.xml b/share/regions/config_165.xml
new file mode 100644
index 0000000..d7b8613
--- /dev/null
+++ b/share/regions/config_165.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a5" SimName="165" SimLocationX="1005" SimLocationY="1005" Datastore="store_165_x05_y10.yap" SimListenPort="9265" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_166.xml b/share/regions/config_166.xml
new file mode 100644
index 0000000..61aa9d9
--- /dev/null
+++ b/share/regions/config_166.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a6" SimName="166" SimLocationX="1006" SimLocationY="1005" Datastore="store_166_x06_y10.yap" SimListenPort="9266" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_167.xml b/share/regions/config_167.xml
new file mode 100644
index 0000000..96170d7
--- /dev/null
+++ b/share/regions/config_167.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a7" SimName="167" SimLocationX="1007" SimLocationY="1005" Datastore="store_167_x07_y10.yap" SimListenPort="9267" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_168.xml b/share/regions/config_168.xml
new file mode 100644
index 0000000..b0d3929
--- /dev/null
+++ b/share/regions/config_168.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a8" SimName="168" SimLocationX="1008" SimLocationY="1005" Datastore="store_168_x08_y10.yap" SimListenPort="9268" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_169.xml b/share/regions/config_169.xml
new file mode 100644
index 0000000..aeef543
--- /dev/null
+++ b/share/regions/config_169.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0a9" SimName="169" SimLocationX="1009" SimLocationY="1005" Datastore="store_169_x09_y10.yap" SimListenPort="9269" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_17.xml b/share/regions/config_17.xml
new file mode 100644
index 0000000..5265775
--- /dev/null
+++ b/share/regions/config_17.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf011" SimName="17" SimLocationX="1017" SimLocationY="1000" Datastore="store_17_x01_y01.yap" SimListenPort="9117" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_170.xml b/share/regions/config_170.xml
new file mode 100644
index 0000000..37462f7
--- /dev/null
+++ b/share/regions/config_170.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0aa" SimName="170" SimLocationX="1010" SimLocationY="1005" Datastore="store_170_x10_y10.yap" SimListenPort="9270" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_171.xml b/share/regions/config_171.xml
new file mode 100644
index 0000000..51c5e30
--- /dev/null
+++ b/share/regions/config_171.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ab" SimName="171" SimLocationX="1011" SimLocationY="1005" Datastore="store_171_x11_y10.yap" SimListenPort="9271" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_172.xml b/share/regions/config_172.xml
new file mode 100644
index 0000000..6560be5
--- /dev/null
+++ b/share/regions/config_172.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ac" SimName="172" SimLocationX="1012" SimLocationY="1005" Datastore="store_172_x12_y10.yap" SimListenPort="9272" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_173.xml b/share/regions/config_173.xml
new file mode 100644
index 0000000..12a448d
--- /dev/null
+++ b/share/regions/config_173.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ad" SimName="173" SimLocationX="1013" SimLocationY="1005" Datastore="store_173_x13_y10.yap" SimListenPort="9273" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_174.xml b/share/regions/config_174.xml
new file mode 100644
index 0000000..5897c49
--- /dev/null
+++ b/share/regions/config_174.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ae" SimName="174" SimLocationX="1014" SimLocationY="1005" Datastore="store_174_x14_y10.yap" SimListenPort="9274" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_175.xml b/share/regions/config_175.xml
new file mode 100644
index 0000000..79e0808
--- /dev/null
+++ b/share/regions/config_175.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0af" SimName="175" SimLocationX="1015" SimLocationY="1005" Datastore="store_175_x15_y10.yap" SimListenPort="9275" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y05.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_176.xml b/share/regions/config_176.xml
new file mode 100644
index 0000000..26845f3
--- /dev/null
+++ b/share/regions/config_176.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b0" SimName="176" SimLocationX="1016" SimLocationY="1005" Datastore="store_176_x00_y11.yap" SimListenPort="9276" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_177.xml b/share/regions/config_177.xml
new file mode 100644
index 0000000..e87dc0d
--- /dev/null
+++ b/share/regions/config_177.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b1" SimName="177" SimLocationX="1017" SimLocationY="1005" Datastore="store_177_x01_y11.yap" SimListenPort="9277" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_178.xml b/share/regions/config_178.xml
new file mode 100644
index 0000000..f82a47d
--- /dev/null
+++ b/share/regions/config_178.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b2" SimName="178" SimLocationX="1018" SimLocationY="1005" Datastore="store_178_x02_y11.yap" SimListenPort="9278" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_179.xml b/share/regions/config_179.xml
new file mode 100644
index 0000000..483f97f
--- /dev/null
+++ b/share/regions/config_179.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b3" SimName="179" SimLocationX="1019" SimLocationY="1005" Datastore="store_179_x03_y11.yap" SimListenPort="9279" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_18.xml b/share/regions/config_18.xml
new file mode 100644
index 0000000..ea486a1
--- /dev/null
+++ b/share/regions/config_18.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf012" SimName="18" SimLocationX="1018" SimLocationY="1000" Datastore="store_18_x02_y01.yap" SimListenPort="9118" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_180.xml b/share/regions/config_180.xml
new file mode 100644
index 0000000..21a0ade
--- /dev/null
+++ b/share/regions/config_180.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b4" SimName="180" SimLocationX="1020" SimLocationY="1005" Datastore="store_180_x04_y11.yap" SimListenPort="9280" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_181.xml b/share/regions/config_181.xml
new file mode 100644
index 0000000..c8043c7
--- /dev/null
+++ b/share/regions/config_181.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b5" SimName="181" SimLocationX="1021" SimLocationY="1005" Datastore="store_181_x05_y11.yap" SimListenPort="9281" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_182.xml b/share/regions/config_182.xml
new file mode 100644
index 0000000..b1a35f6
--- /dev/null
+++ b/share/regions/config_182.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b6" SimName="182" SimLocationX="1022" SimLocationY="1005" Datastore="store_182_x06_y11.yap" SimListenPort="9282" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_183.xml b/share/regions/config_183.xml
new file mode 100644
index 0000000..0d4e7dc
--- /dev/null
+++ b/share/regions/config_183.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b7" SimName="183" SimLocationX="1023" SimLocationY="1005" Datastore="store_183_x07_y11.yap" SimListenPort="9283" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_184.xml b/share/regions/config_184.xml
new file mode 100644
index 0000000..475f411
--- /dev/null
+++ b/share/regions/config_184.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b8" SimName="184" SimLocationX="1024" SimLocationY="1005" Datastore="store_184_x08_y11.yap" SimListenPort="9284" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_185.xml b/share/regions/config_185.xml
new file mode 100644
index 0000000..7501e1a
--- /dev/null
+++ b/share/regions/config_185.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0b9" SimName="185" SimLocationX="1025" SimLocationY="1005" Datastore="store_185_x09_y11.yap" SimListenPort="9285" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_186.xml b/share/regions/config_186.xml
new file mode 100644
index 0000000..744e6d1
--- /dev/null
+++ b/share/regions/config_186.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ba" SimName="186" SimLocationX="1026" SimLocationY="1005" Datastore="store_186_x10_y11.yap" SimListenPort="9286" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_187.xml b/share/regions/config_187.xml
new file mode 100644
index 0000000..3e063c9
--- /dev/null
+++ b/share/regions/config_187.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0bb" SimName="187" SimLocationX="1027" SimLocationY="1005" Datastore="store_187_x11_y11.yap" SimListenPort="9287" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_188.xml b/share/regions/config_188.xml
new file mode 100644
index 0000000..89707ab
--- /dev/null
+++ b/share/regions/config_188.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0bc" SimName="188" SimLocationX="1028" SimLocationY="1005" Datastore="store_188_x12_y11.yap" SimListenPort="9288" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_189.xml b/share/regions/config_189.xml
new file mode 100644
index 0000000..6aaa491
--- /dev/null
+++ b/share/regions/config_189.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0bd" SimName="189" SimLocationX="1029" SimLocationY="1005" Datastore="store_189_x13_y11.yap" SimListenPort="9289" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_19.xml b/share/regions/config_19.xml
new file mode 100644
index 0000000..5f5ca6f
--- /dev/null
+++ b/share/regions/config_19.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf013" SimName="19" SimLocationX="1019" SimLocationY="1000" Datastore="store_19_x03_y01.yap" SimListenPort="9119" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_190.xml b/share/regions/config_190.xml
new file mode 100644
index 0000000..b37cce9
--- /dev/null
+++ b/share/regions/config_190.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0be" SimName="190" SimLocationX="1030" SimLocationY="1005" Datastore="store_190_x14_y11.yap" SimListenPort="9290" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_191.xml b/share/regions/config_191.xml
new file mode 100644
index 0000000..774b607
--- /dev/null
+++ b/share/regions/config_191.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0bf" SimName="191" SimLocationX="1031" SimLocationY="1005" Datastore="store_191_x15_y11.yap" SimListenPort="9291" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y04.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_192.xml b/share/regions/config_192.xml
new file mode 100644
index 0000000..8efd00f
--- /dev/null
+++ b/share/regions/config_192.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c0" SimName="192" SimLocationX="1000" SimLocationY="1006" Datastore="store_192_x00_y12.yap" SimListenPort="9292" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_193.xml b/share/regions/config_193.xml
new file mode 100644
index 0000000..a60cf3c
--- /dev/null
+++ b/share/regions/config_193.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c1" SimName="193" SimLocationX="1001" SimLocationY="1006" Datastore="store_193_x01_y12.yap" SimListenPort="9293" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_194.xml b/share/regions/config_194.xml
new file mode 100644
index 0000000..fabecfe
--- /dev/null
+++ b/share/regions/config_194.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c2" SimName="194" SimLocationX="1002" SimLocationY="1006" Datastore="store_194_x02_y12.yap" SimListenPort="9294" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_195.xml b/share/regions/config_195.xml
new file mode 100644
index 0000000..c83ab69
--- /dev/null
+++ b/share/regions/config_195.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c3" SimName="195" SimLocationX="1003" SimLocationY="1006" Datastore="store_195_x03_y12.yap" SimListenPort="9295" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_196.xml b/share/regions/config_196.xml
new file mode 100644
index 0000000..40cd901
--- /dev/null
+++ b/share/regions/config_196.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c4" SimName="196" SimLocationX="1004" SimLocationY="1006" Datastore="store_196_x04_y12.yap" SimListenPort="9296" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_197.xml b/share/regions/config_197.xml
new file mode 100644
index 0000000..d1cd6e9
--- /dev/null
+++ b/share/regions/config_197.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c5" SimName="197" SimLocationX="1005" SimLocationY="1006" Datastore="store_197_x05_y12.yap" SimListenPort="9297" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_198.xml b/share/regions/config_198.xml
new file mode 100644
index 0000000..f66b8c3
--- /dev/null
+++ b/share/regions/config_198.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c6" SimName="198" SimLocationX="1006" SimLocationY="1006" Datastore="store_198_x06_y12.yap" SimListenPort="9298" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_199.xml b/share/regions/config_199.xml
new file mode 100644
index 0000000..e660b53
--- /dev/null
+++ b/share/regions/config_199.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c7" SimName="199" SimLocationX="1007" SimLocationY="1006" Datastore="store_199_x07_y12.yap" SimListenPort="9299" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_2.xml b/share/regions/config_2.xml
new file mode 100644
index 0000000..83cb5aa
--- /dev/null
+++ b/share/regions/config_2.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf002" SimName="2" SimLocationX="1002" SimLocationY="1000" Datastore="store_2_x02_y00.yap" SimListenPort="9102" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_20.xml b/share/regions/config_20.xml
new file mode 100644
index 0000000..adbee55
--- /dev/null
+++ b/share/regions/config_20.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf014" SimName="20" SimLocationX="1020" SimLocationY="1000" Datastore="store_20_x04_y01.yap" SimListenPort="9120" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_200.xml b/share/regions/config_200.xml
new file mode 100644
index 0000000..9911037
--- /dev/null
+++ b/share/regions/config_200.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c8" SimName="200" SimLocationX="1008" SimLocationY="1006" Datastore="store_200_x08_y12.yap" SimListenPort="9300" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_201.xml b/share/regions/config_201.xml
new file mode 100644
index 0000000..3c73666
--- /dev/null
+++ b/share/regions/config_201.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0c9" SimName="201" SimLocationX="1009" SimLocationY="1006" Datastore="store_201_x09_y12.yap" SimListenPort="9301" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_202.xml b/share/regions/config_202.xml
new file mode 100644
index 0000000..baab769
--- /dev/null
+++ b/share/regions/config_202.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ca" SimName="202" SimLocationX="1010" SimLocationY="1006" Datastore="store_202_x10_y12.yap" SimListenPort="9302" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_203.xml b/share/regions/config_203.xml
new file mode 100644
index 0000000..a4aa865
--- /dev/null
+++ b/share/regions/config_203.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0cb" SimName="203" SimLocationX="1011" SimLocationY="1006" Datastore="store_203_x11_y12.yap" SimListenPort="9303" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_204.xml b/share/regions/config_204.xml
new file mode 100644
index 0000000..f5e62b0
--- /dev/null
+++ b/share/regions/config_204.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0cc" SimName="204" SimLocationX="1012" SimLocationY="1006" Datastore="store_204_x12_y12.yap" SimListenPort="9304" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_205.xml b/share/regions/config_205.xml
new file mode 100644
index 0000000..daafd9a
--- /dev/null
+++ b/share/regions/config_205.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0cd" SimName="205" SimLocationX="1013" SimLocationY="1006" Datastore="store_205_x13_y12.yap" SimListenPort="9305" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_206.xml b/share/regions/config_206.xml
new file mode 100644
index 0000000..951303b
--- /dev/null
+++ b/share/regions/config_206.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ce" SimName="206" SimLocationX="1014" SimLocationY="1006" Datastore="store_206_x14_y12.yap" SimListenPort="9306" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_207.xml b/share/regions/config_207.xml
new file mode 100644
index 0000000..6978761
--- /dev/null
+++ b/share/regions/config_207.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0cf" SimName="207" SimLocationX="1015" SimLocationY="1006" Datastore="store_207_x15_y12.yap" SimListenPort="9307" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y03.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_208.xml b/share/regions/config_208.xml
new file mode 100644
index 0000000..beb4192
--- /dev/null
+++ b/share/regions/config_208.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d0" SimName="208" SimLocationX="1016" SimLocationY="1006" Datastore="store_208_x00_y13.yap" SimListenPort="9308" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_209.xml b/share/regions/config_209.xml
new file mode 100644
index 0000000..0d31497
--- /dev/null
+++ b/share/regions/config_209.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d1" SimName="209" SimLocationX="1017" SimLocationY="1006" Datastore="store_209_x01_y13.yap" SimListenPort="9309" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_21.xml b/share/regions/config_21.xml
new file mode 100644
index 0000000..bc6d3c8
--- /dev/null
+++ b/share/regions/config_21.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf015" SimName="21" SimLocationX="1021" SimLocationY="1000" Datastore="store_21_x05_y01.yap" SimListenPort="9121" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_210.xml b/share/regions/config_210.xml
new file mode 100644
index 0000000..fefc765
--- /dev/null
+++ b/share/regions/config_210.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d2" SimName="210" SimLocationX="1018" SimLocationY="1006" Datastore="store_210_x02_y13.yap" SimListenPort="9310" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_211.xml b/share/regions/config_211.xml
new file mode 100644
index 0000000..7988165
--- /dev/null
+++ b/share/regions/config_211.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d3" SimName="211" SimLocationX="1019" SimLocationY="1006" Datastore="store_211_x03_y13.yap" SimListenPort="9311" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_212.xml b/share/regions/config_212.xml
new file mode 100644
index 0000000..85dbe0d
--- /dev/null
+++ b/share/regions/config_212.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d4" SimName="212" SimLocationX="1020" SimLocationY="1006" Datastore="store_212_x04_y13.yap" SimListenPort="9312" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_213.xml b/share/regions/config_213.xml
new file mode 100644
index 0000000..548b527
--- /dev/null
+++ b/share/regions/config_213.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d5" SimName="213" SimLocationX="1021" SimLocationY="1006" Datastore="store_213_x05_y13.yap" SimListenPort="9313" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_214.xml b/share/regions/config_214.xml
new file mode 100644
index 0000000..40d84e4
--- /dev/null
+++ b/share/regions/config_214.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d6" SimName="214" SimLocationX="1022" SimLocationY="1006" Datastore="store_214_x06_y13.yap" SimListenPort="9314" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_215.xml b/share/regions/config_215.xml
new file mode 100644
index 0000000..d412233
--- /dev/null
+++ b/share/regions/config_215.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d7" SimName="215" SimLocationX="1023" SimLocationY="1006" Datastore="store_215_x07_y13.yap" SimListenPort="9315" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_216.xml b/share/regions/config_216.xml
new file mode 100644
index 0000000..f404b28
--- /dev/null
+++ b/share/regions/config_216.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d8" SimName="216" SimLocationX="1024" SimLocationY="1006" Datastore="store_216_x08_y13.yap" SimListenPort="9316" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_217.xml b/share/regions/config_217.xml
new file mode 100644
index 0000000..707bf97
--- /dev/null
+++ b/share/regions/config_217.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0d9" SimName="217" SimLocationX="1025" SimLocationY="1006" Datastore="store_217_x09_y13.yap" SimListenPort="9317" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_218.xml b/share/regions/config_218.xml
new file mode 100644
index 0000000..656c3e0
--- /dev/null
+++ b/share/regions/config_218.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0da" SimName="218" SimLocationX="1026" SimLocationY="1006" Datastore="store_218_x10_y13.yap" SimListenPort="9318" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_219.xml b/share/regions/config_219.xml
new file mode 100644
index 0000000..0dd3407
--- /dev/null
+++ b/share/regions/config_219.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0db" SimName="219" SimLocationX="1027" SimLocationY="1006" Datastore="store_219_x11_y13.yap" SimListenPort="9319" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_22.xml b/share/regions/config_22.xml
new file mode 100644
index 0000000..c474cf8
--- /dev/null
+++ b/share/regions/config_22.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf016" SimName="22" SimLocationX="1022" SimLocationY="1000" Datastore="store_22_x06_y01.yap" SimListenPort="9122" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_220.xml b/share/regions/config_220.xml
new file mode 100644
index 0000000..4518a89
--- /dev/null
+++ b/share/regions/config_220.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0dc" SimName="220" SimLocationX="1028" SimLocationY="1006" Datastore="store_220_x12_y13.yap" SimListenPort="9320" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_221.xml b/share/regions/config_221.xml
new file mode 100644
index 0000000..85c4523
--- /dev/null
+++ b/share/regions/config_221.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0dd" SimName="221" SimLocationX="1029" SimLocationY="1006" Datastore="store_221_x13_y13.yap" SimListenPort="9321" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_222.xml b/share/regions/config_222.xml
new file mode 100644
index 0000000..0985eb7
--- /dev/null
+++ b/share/regions/config_222.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0de" SimName="222" SimLocationX="1030" SimLocationY="1006" Datastore="store_222_x14_y13.yap" SimListenPort="9322" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_223.xml b/share/regions/config_223.xml
new file mode 100644
index 0000000..d0884d1
--- /dev/null
+++ b/share/regions/config_223.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0df" SimName="223" SimLocationX="1031" SimLocationY="1006" Datastore="store_223_x15_y13.yap" SimListenPort="9323" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y02.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_224.xml b/share/regions/config_224.xml
new file mode 100644
index 0000000..9c8f651
--- /dev/null
+++ b/share/regions/config_224.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e0" SimName="224" SimLocationX="1000" SimLocationY="1007" Datastore="store_224_x00_y14.yap" SimListenPort="9324" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_225.xml b/share/regions/config_225.xml
new file mode 100644
index 0000000..c5dbf32
--- /dev/null
+++ b/share/regions/config_225.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e1" SimName="225" SimLocationX="1001" SimLocationY="1007" Datastore="store_225_x01_y14.yap" SimListenPort="9325" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_226.xml b/share/regions/config_226.xml
new file mode 100644
index 0000000..7d831d1
--- /dev/null
+++ b/share/regions/config_226.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e2" SimName="226" SimLocationX="1002" SimLocationY="1007" Datastore="store_226_x02_y14.yap" SimListenPort="9326" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_227.xml b/share/regions/config_227.xml
new file mode 100644
index 0000000..d614e38
--- /dev/null
+++ b/share/regions/config_227.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e3" SimName="227" SimLocationX="1003" SimLocationY="1007" Datastore="store_227_x03_y14.yap" SimListenPort="9327" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_228.xml b/share/regions/config_228.xml
new file mode 100644
index 0000000..8ad7b59
--- /dev/null
+++ b/share/regions/config_228.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e4" SimName="228" SimLocationX="1004" SimLocationY="1007" Datastore="store_228_x04_y14.yap" SimListenPort="9328" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_229.xml b/share/regions/config_229.xml
new file mode 100644
index 0000000..6a56d2a
--- /dev/null
+++ b/share/regions/config_229.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e5" SimName="229" SimLocationX="1005" SimLocationY="1007" Datastore="store_229_x05_y14.yap" SimListenPort="9329" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_23.xml b/share/regions/config_23.xml
new file mode 100644
index 0000000..7d29fec
--- /dev/null
+++ b/share/regions/config_23.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf017" SimName="23" SimLocationX="1023" SimLocationY="1000" Datastore="store_23_x07_y01.yap" SimListenPort="9123" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_230.xml b/share/regions/config_230.xml
new file mode 100644
index 0000000..8fcb606
--- /dev/null
+++ b/share/regions/config_230.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e6" SimName="230" SimLocationX="1006" SimLocationY="1007" Datastore="store_230_x06_y14.yap" SimListenPort="9330" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_231.xml b/share/regions/config_231.xml
new file mode 100644
index 0000000..c024242
--- /dev/null
+++ b/share/regions/config_231.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e7" SimName="231" SimLocationX="1007" SimLocationY="1007" Datastore="store_231_x07_y14.yap" SimListenPort="9331" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_232.xml b/share/regions/config_232.xml
new file mode 100644
index 0000000..f55b7f0
--- /dev/null
+++ b/share/regions/config_232.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e8" SimName="232" SimLocationX="1008" SimLocationY="1007" Datastore="store_232_x08_y14.yap" SimListenPort="9332" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_233.xml b/share/regions/config_233.xml
new file mode 100644
index 0000000..9ba5de1
--- /dev/null
+++ b/share/regions/config_233.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0e9" SimName="233" SimLocationX="1009" SimLocationY="1007" Datastore="store_233_x09_y14.yap" SimListenPort="9333" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_234.xml b/share/regions/config_234.xml
new file mode 100644
index 0000000..7f5164f
--- /dev/null
+++ b/share/regions/config_234.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ea" SimName="234" SimLocationX="1010" SimLocationY="1007" Datastore="store_234_x10_y14.yap" SimListenPort="9334" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_235.xml b/share/regions/config_235.xml
new file mode 100644
index 0000000..6a8292c
--- /dev/null
+++ b/share/regions/config_235.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0eb" SimName="235" SimLocationX="1011" SimLocationY="1007" Datastore="store_235_x11_y14.yap" SimListenPort="9335" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_236.xml b/share/regions/config_236.xml
new file mode 100644
index 0000000..f99af33
--- /dev/null
+++ b/share/regions/config_236.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ec" SimName="236" SimLocationX="1012" SimLocationY="1007" Datastore="store_236_x12_y14.yap" SimListenPort="9336" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_237.xml b/share/regions/config_237.xml
new file mode 100644
index 0000000..3c8199f
--- /dev/null
+++ b/share/regions/config_237.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ed" SimName="237" SimLocationX="1013" SimLocationY="1007" Datastore="store_237_x13_y14.yap" SimListenPort="9337" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_238.xml b/share/regions/config_238.xml
new file mode 100644
index 0000000..0144491
--- /dev/null
+++ b/share/regions/config_238.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ee" SimName="238" SimLocationX="1014" SimLocationY="1007" Datastore="store_238_x14_y14.yap" SimListenPort="9338" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_239.xml b/share/regions/config_239.xml
new file mode 100644
index 0000000..9bf8bf5
--- /dev/null
+++ b/share/regions/config_239.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ef" SimName="239" SimLocationX="1015" SimLocationY="1007" Datastore="store_239_x15_y14.yap" SimListenPort="9339" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y01.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_24.xml b/share/regions/config_24.xml
new file mode 100644
index 0000000..c6f1752
--- /dev/null
+++ b/share/regions/config_24.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf018" SimName="24" SimLocationX="1024" SimLocationY="1000" Datastore="store_24_x08_y01.yap" SimListenPort="9124" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_240.xml b/share/regions/config_240.xml
new file mode 100644
index 0000000..ad7181a
--- /dev/null
+++ b/share/regions/config_240.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f0" SimName="240" SimLocationX="1016" SimLocationY="1007" Datastore="store_240_x00_y15.yap" SimListenPort="9340" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_241.xml b/share/regions/config_241.xml
new file mode 100644
index 0000000..3fd187f
--- /dev/null
+++ b/share/regions/config_241.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f1" SimName="241" SimLocationX="1017" SimLocationY="1007" Datastore="store_241_x01_y15.yap" SimListenPort="9341" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_242.xml b/share/regions/config_242.xml
new file mode 100644
index 0000000..6d265ef
--- /dev/null
+++ b/share/regions/config_242.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f2" SimName="242" SimLocationX="1018" SimLocationY="1007" Datastore="store_242_x02_y15.yap" SimListenPort="9342" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_243.xml b/share/regions/config_243.xml
new file mode 100644
index 0000000..a3c7508
--- /dev/null
+++ b/share/regions/config_243.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f3" SimName="243" SimLocationX="1019" SimLocationY="1007" Datastore="store_243_x03_y15.yap" SimListenPort="9343" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_244.xml b/share/regions/config_244.xml
new file mode 100644
index 0000000..b36846d
--- /dev/null
+++ b/share/regions/config_244.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f4" SimName="244" SimLocationX="1020" SimLocationY="1007" Datastore="store_244_x04_y15.yap" SimListenPort="9344" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_245.xml b/share/regions/config_245.xml
new file mode 100644
index 0000000..22f57a6
--- /dev/null
+++ b/share/regions/config_245.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f5" SimName="245" SimLocationX="1021" SimLocationY="1007" Datastore="store_245_x05_y15.yap" SimListenPort="9345" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_246.xml b/share/regions/config_246.xml
new file mode 100644
index 0000000..9ead36c
--- /dev/null
+++ b/share/regions/config_246.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f6" SimName="246" SimLocationX="1022" SimLocationY="1007" Datastore="store_246_x06_y15.yap" SimListenPort="9346" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_247.xml b/share/regions/config_247.xml
new file mode 100644
index 0000000..7bcb4d4
--- /dev/null
+++ b/share/regions/config_247.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f7" SimName="247" SimLocationX="1023" SimLocationY="1007" Datastore="store_247_x07_y15.yap" SimListenPort="9347" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_248.xml b/share/regions/config_248.xml
new file mode 100644
index 0000000..48232f1
--- /dev/null
+++ b/share/regions/config_248.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f8" SimName="248" SimLocationX="1024" SimLocationY="1007" Datastore="store_248_x08_y15.yap" SimListenPort="9348" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_249.xml b/share/regions/config_249.xml
new file mode 100644
index 0000000..6d62588
--- /dev/null
+++ b/share/regions/config_249.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0f9" SimName="249" SimLocationX="1025" SimLocationY="1007" Datastore="store_249_x09_y15.yap" SimListenPort="9349" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_25.xml b/share/regions/config_25.xml
new file mode 100644
index 0000000..5543521
--- /dev/null
+++ b/share/regions/config_25.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf019" SimName="25" SimLocationX="1025" SimLocationY="1000" Datastore="store_25_x09_y01.yap" SimListenPort="9125" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_250.xml b/share/regions/config_250.xml
new file mode 100644
index 0000000..1b1abaa
--- /dev/null
+++ b/share/regions/config_250.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0fa" SimName="250" SimLocationX="1026" SimLocationY="1007" Datastore="store_250_x10_y15.yap" SimListenPort="9350" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_251.xml b/share/regions/config_251.xml
new file mode 100644
index 0000000..780a6e6
--- /dev/null
+++ b/share/regions/config_251.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0fb" SimName="251" SimLocationX="1027" SimLocationY="1007" Datastore="store_251_x11_y15.yap" SimListenPort="9351" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_252.xml b/share/regions/config_252.xml
new file mode 100644
index 0000000..5adfad5
--- /dev/null
+++ b/share/regions/config_252.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0fc" SimName="252" SimLocationX="1028" SimLocationY="1007" Datastore="store_252_x12_y15.yap" SimListenPort="9352" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_253.xml b/share/regions/config_253.xml
new file mode 100644
index 0000000..d974650
--- /dev/null
+++ b/share/regions/config_253.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0fd" SimName="253" SimLocationX="1029" SimLocationY="1007" Datastore="store_253_x13_y15.yap" SimListenPort="9353" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_254.xml b/share/regions/config_254.xml
new file mode 100644
index 0000000..ccb55f9
--- /dev/null
+++ b/share/regions/config_254.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0fe" SimName="254" SimLocationX="1030" SimLocationY="1007" Datastore="store_254_x14_y15.yap" SimListenPort="9354" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_255.xml b/share/regions/config_255.xml
new file mode 100644
index 0000000..7cec0e9
--- /dev/null
+++ b/share/regions/config_255.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf0ff" SimName="255" SimLocationX="1031" SimLocationY="1007" Datastore="store_255_x15_y15.yap" SimListenPort="9355" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y00.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_256.xml b/share/regions/config_256.xml
new file mode 100644
index 0000000..59a632f
--- /dev/null
+++ b/share/regions/config_256.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf100" SimName="256" SimLocationX="1000" SimLocationY="1008" Datastore="store_256_x00_y16.yap" SimListenPort="9356" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_257.xml b/share/regions/config_257.xml
new file mode 100644
index 0000000..6e0543e
--- /dev/null
+++ b/share/regions/config_257.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf101" SimName="257" SimLocationX="1001" SimLocationY="1008" Datastore="store_257_x01_y16.yap" SimListenPort="9357" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_258.xml b/share/regions/config_258.xml
new file mode 100644
index 0000000..655ace1
--- /dev/null
+++ b/share/regions/config_258.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf102" SimName="258" SimLocationX="1002" SimLocationY="1008" Datastore="store_258_x02_y16.yap" SimListenPort="9358" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_259.xml b/share/regions/config_259.xml
new file mode 100644
index 0000000..78c90d6
--- /dev/null
+++ b/share/regions/config_259.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf103" SimName="259" SimLocationX="1003" SimLocationY="1008" Datastore="store_259_x03_y16.yap" SimListenPort="9359" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_26.xml b/share/regions/config_26.xml
new file mode 100644
index 0000000..763a3b1
--- /dev/null
+++ b/share/regions/config_26.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf01a" SimName="26" SimLocationX="1026" SimLocationY="1000" Datastore="store_26_x10_y01.yap" SimListenPort="9126" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_260.xml b/share/regions/config_260.xml
new file mode 100644
index 0000000..96e20ae
--- /dev/null
+++ b/share/regions/config_260.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf104" SimName="260" SimLocationX="1004" SimLocationY="1008" Datastore="store_260_x04_y16.yap" SimListenPort="9360" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_261.xml b/share/regions/config_261.xml
new file mode 100644
index 0000000..d50760c
--- /dev/null
+++ b/share/regions/config_261.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf105" SimName="261" SimLocationX="1005" SimLocationY="1008" Datastore="store_261_x05_y16.yap" SimListenPort="9361" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_262.xml b/share/regions/config_262.xml
new file mode 100644
index 0000000..96f8101
--- /dev/null
+++ b/share/regions/config_262.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf106" SimName="262" SimLocationX="1006" SimLocationY="1008" Datastore="store_262_x06_y16.yap" SimListenPort="9362" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_263.xml b/share/regions/config_263.xml
new file mode 100644
index 0000000..2ce131b
--- /dev/null
+++ b/share/regions/config_263.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf107" SimName="263" SimLocationX="1007" SimLocationY="1008" Datastore="store_263_x07_y16.yap" SimListenPort="9363" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_264.xml b/share/regions/config_264.xml
new file mode 100644
index 0000000..48e9e5d
--- /dev/null
+++ b/share/regions/config_264.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf108" SimName="264" SimLocationX="1008" SimLocationY="1008" Datastore="store_264_x08_y16.yap" SimListenPort="9364" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_265.xml b/share/regions/config_265.xml
new file mode 100644
index 0000000..45a4702
--- /dev/null
+++ b/share/regions/config_265.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf109" SimName="265" SimLocationX="1009" SimLocationY="1008" Datastore="store_265_x09_y16.yap" SimListenPort="9365" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_266.xml b/share/regions/config_266.xml
new file mode 100644
index 0000000..19b71ef
--- /dev/null
+++ b/share/regions/config_266.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf10a" SimName="266" SimLocationX="1010" SimLocationY="1008" Datastore="store_266_x10_y16.yap" SimListenPort="9366" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_267.xml b/share/regions/config_267.xml
new file mode 100644
index 0000000..66d6461
--- /dev/null
+++ b/share/regions/config_267.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf10b" SimName="267" SimLocationX="1011" SimLocationY="1008" Datastore="store_267_x11_y16.yap" SimListenPort="9367" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_268.xml b/share/regions/config_268.xml
new file mode 100644
index 0000000..4a7d8a5
--- /dev/null
+++ b/share/regions/config_268.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf10c" SimName="268" SimLocationX="1012" SimLocationY="1008" Datastore="store_268_x12_y16.yap" SimListenPort="9368" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_269.xml b/share/regions/config_269.xml
new file mode 100644
index 0000000..3b31628
--- /dev/null
+++ b/share/regions/config_269.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf10d" SimName="269" SimLocationX="1013" SimLocationY="1008" Datastore="store_269_x13_y16.yap" SimListenPort="9369" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_27.xml b/share/regions/config_27.xml
new file mode 100644
index 0000000..8dfbbd3
--- /dev/null
+++ b/share/regions/config_27.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf01b" SimName="27" SimLocationX="1027" SimLocationY="1000" Datastore="store_27_x11_y01.yap" SimListenPort="9127" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_270.xml b/share/regions/config_270.xml
new file mode 100644
index 0000000..9117885
--- /dev/null
+++ b/share/regions/config_270.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf10e" SimName="270" SimLocationX="1014" SimLocationY="1008" Datastore="store_270_x14_y16.yap" SimListenPort="9370" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_271.xml b/share/regions/config_271.xml
new file mode 100644
index 0000000..af8522c
--- /dev/null
+++ b/share/regions/config_271.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf10f" SimName="271" SimLocationX="1015" SimLocationY="1008" Datastore="store_271_x15_y16.yap" SimListenPort="9371" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-1.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_272.xml b/share/regions/config_272.xml
new file mode 100644
index 0000000..0274ef9
--- /dev/null
+++ b/share/regions/config_272.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf110" SimName="272" SimLocationX="1016" SimLocationY="1008" Datastore="store_272_x00_y17.yap" SimListenPort="9372" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_273.xml b/share/regions/config_273.xml
new file mode 100644
index 0000000..0f55269
--- /dev/null
+++ b/share/regions/config_273.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf111" SimName="273" SimLocationX="1017" SimLocationY="1008" Datastore="store_273_x01_y17.yap" SimListenPort="9373" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_274.xml b/share/regions/config_274.xml
new file mode 100644
index 0000000..35f3a9d
--- /dev/null
+++ b/share/regions/config_274.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf112" SimName="274" SimLocationX="1018" SimLocationY="1008" Datastore="store_274_x02_y17.yap" SimListenPort="9374" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_275.xml b/share/regions/config_275.xml
new file mode 100644
index 0000000..fc37b99
--- /dev/null
+++ b/share/regions/config_275.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf113" SimName="275" SimLocationX="1019" SimLocationY="1008" Datastore="store_275_x03_y17.yap" SimListenPort="9375" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_276.xml b/share/regions/config_276.xml
new file mode 100644
index 0000000..2ffa80c
--- /dev/null
+++ b/share/regions/config_276.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf114" SimName="276" SimLocationX="1020" SimLocationY="1008" Datastore="store_276_x04_y17.yap" SimListenPort="9376" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_277.xml b/share/regions/config_277.xml
new file mode 100644
index 0000000..8f4f35c
--- /dev/null
+++ b/share/regions/config_277.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf115" SimName="277" SimLocationX="1021" SimLocationY="1008" Datastore="store_277_x05_y17.yap" SimListenPort="9377" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_278.xml b/share/regions/config_278.xml
new file mode 100644
index 0000000..3363f18
--- /dev/null
+++ b/share/regions/config_278.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf116" SimName="278" SimLocationX="1022" SimLocationY="1008" Datastore="store_278_x06_y17.yap" SimListenPort="9378" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_279.xml b/share/regions/config_279.xml
new file mode 100644
index 0000000..df78f8f
--- /dev/null
+++ b/share/regions/config_279.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf117" SimName="279" SimLocationX="1023" SimLocationY="1008" Datastore="store_279_x07_y17.yap" SimListenPort="9379" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_28.xml b/share/regions/config_28.xml
new file mode 100644
index 0000000..5e6441d
--- /dev/null
+++ b/share/regions/config_28.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf01c" SimName="28" SimLocationX="1028" SimLocationY="1000" Datastore="store_28_x12_y01.yap" SimListenPort="9128" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_280.xml b/share/regions/config_280.xml
new file mode 100644
index 0000000..766ac88
--- /dev/null
+++ b/share/regions/config_280.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf118" SimName="280" SimLocationX="1024" SimLocationY="1008" Datastore="store_280_x08_y17.yap" SimListenPort="9380" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_281.xml b/share/regions/config_281.xml
new file mode 100644
index 0000000..32c6aa7
--- /dev/null
+++ b/share/regions/config_281.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf119" SimName="281" SimLocationX="1025" SimLocationY="1008" Datastore="store_281_x09_y17.yap" SimListenPort="9381" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_282.xml b/share/regions/config_282.xml
new file mode 100644
index 0000000..d53e3d9
--- /dev/null
+++ b/share/regions/config_282.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf11a" SimName="282" SimLocationX="1026" SimLocationY="1008" Datastore="store_282_x10_y17.yap" SimListenPort="9382" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_283.xml b/share/regions/config_283.xml
new file mode 100644
index 0000000..9db3fdf
--- /dev/null
+++ b/share/regions/config_283.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf11b" SimName="283" SimLocationX="1027" SimLocationY="1008" Datastore="store_283_x11_y17.yap" SimListenPort="9383" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_284.xml b/share/regions/config_284.xml
new file mode 100644
index 0000000..905bbb4
--- /dev/null
+++ b/share/regions/config_284.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf11c" SimName="284" SimLocationX="1028" SimLocationY="1008" Datastore="store_284_x12_y17.yap" SimListenPort="9384" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_285.xml b/share/regions/config_285.xml
new file mode 100644
index 0000000..8216e68
--- /dev/null
+++ b/share/regions/config_285.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf11d" SimName="285" SimLocationX="1029" SimLocationY="1008" Datastore="store_285_x13_y17.yap" SimListenPort="9385" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_286.xml b/share/regions/config_286.xml
new file mode 100644
index 0000000..58d10df
--- /dev/null
+++ b/share/regions/config_286.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf11e" SimName="286" SimLocationX="1030" SimLocationY="1008" Datastore="store_286_x14_y17.yap" SimListenPort="9386" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_287.xml b/share/regions/config_287.xml
new file mode 100644
index 0000000..4eee8cd
--- /dev/null
+++ b/share/regions/config_287.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf11f" SimName="287" SimLocationX="1031" SimLocationY="1008" Datastore="store_287_x15_y17.yap" SimListenPort="9387" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-2.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_288.xml b/share/regions/config_288.xml
new file mode 100644
index 0000000..ee82cd2
--- /dev/null
+++ b/share/regions/config_288.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf120" SimName="288" SimLocationX="1000" SimLocationY="1009" Datastore="store_288_x00_y18.yap" SimListenPort="9388" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_289.xml b/share/regions/config_289.xml
new file mode 100644
index 0000000..9601fc7
--- /dev/null
+++ b/share/regions/config_289.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf121" SimName="289" SimLocationX="1001" SimLocationY="1009" Datastore="store_289_x01_y18.yap" SimListenPort="9389" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_29.xml b/share/regions/config_29.xml
new file mode 100644
index 0000000..1881ee9
--- /dev/null
+++ b/share/regions/config_29.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf01d" SimName="29" SimLocationX="1029" SimLocationY="1000" Datastore="store_29_x13_y01.yap" SimListenPort="9129" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_290.xml b/share/regions/config_290.xml
new file mode 100644
index 0000000..22a383a
--- /dev/null
+++ b/share/regions/config_290.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf122" SimName="290" SimLocationX="1002" SimLocationY="1009" Datastore="store_290_x02_y18.yap" SimListenPort="9390" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_291.xml b/share/regions/config_291.xml
new file mode 100644
index 0000000..540d89d
--- /dev/null
+++ b/share/regions/config_291.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf123" SimName="291" SimLocationX="1003" SimLocationY="1009" Datastore="store_291_x03_y18.yap" SimListenPort="9391" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_292.xml b/share/regions/config_292.xml
new file mode 100644
index 0000000..6ce1d47
--- /dev/null
+++ b/share/regions/config_292.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf124" SimName="292" SimLocationX="1004" SimLocationY="1009" Datastore="store_292_x04_y18.yap" SimListenPort="9392" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_293.xml b/share/regions/config_293.xml
new file mode 100644
index 0000000..003d49a
--- /dev/null
+++ b/share/regions/config_293.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf125" SimName="293" SimLocationX="1005" SimLocationY="1009" Datastore="store_293_x05_y18.yap" SimListenPort="9393" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_294.xml b/share/regions/config_294.xml
new file mode 100644
index 0000000..f668758
--- /dev/null
+++ b/share/regions/config_294.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf126" SimName="294" SimLocationX="1006" SimLocationY="1009" Datastore="store_294_x06_y18.yap" SimListenPort="9394" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_295.xml b/share/regions/config_295.xml
new file mode 100644
index 0000000..d102961
--- /dev/null
+++ b/share/regions/config_295.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf127" SimName="295" SimLocationX="1007" SimLocationY="1009" Datastore="store_295_x07_y18.yap" SimListenPort="9395" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_296.xml b/share/regions/config_296.xml
new file mode 100644
index 0000000..5e012e4
--- /dev/null
+++ b/share/regions/config_296.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf128" SimName="296" SimLocationX="1008" SimLocationY="1009" Datastore="store_296_x08_y18.yap" SimListenPort="9396" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_297.xml b/share/regions/config_297.xml
new file mode 100644
index 0000000..a3b8b93
--- /dev/null
+++ b/share/regions/config_297.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf129" SimName="297" SimLocationX="1009" SimLocationY="1009" Datastore="store_297_x09_y18.yap" SimListenPort="9397" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_298.xml b/share/regions/config_298.xml
new file mode 100644
index 0000000..fdff826
--- /dev/null
+++ b/share/regions/config_298.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf12a" SimName="298" SimLocationX="1010" SimLocationY="1009" Datastore="store_298_x10_y18.yap" SimListenPort="9398" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_299.xml b/share/regions/config_299.xml
new file mode 100644
index 0000000..0642bb3
--- /dev/null
+++ b/share/regions/config_299.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf12b" SimName="299" SimLocationX="1011" SimLocationY="1009" Datastore="store_299_x11_y18.yap" SimListenPort="9399" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_3.xml b/share/regions/config_3.xml
new file mode 100644
index 0000000..806c88d
--- /dev/null
+++ b/share/regions/config_3.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf003" SimName="3" SimLocationX="1003" SimLocationY="1000" Datastore="store_3_x03_y00.yap" SimListenPort="9103" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_30.xml b/share/regions/config_30.xml
new file mode 100644
index 0000000..c1c55ec
--- /dev/null
+++ b/share/regions/config_30.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf01e" SimName="30" SimLocationX="1030" SimLocationY="1000" Datastore="store_30_x14_y01.yap" SimListenPort="9130" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_300.xml b/share/regions/config_300.xml
new file mode 100644
index 0000000..5fd299f
--- /dev/null
+++ b/share/regions/config_300.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf12c" SimName="300" SimLocationX="1012" SimLocationY="1009" Datastore="store_300_x12_y18.yap" SimListenPort="9400" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_301.xml b/share/regions/config_301.xml
new file mode 100644
index 0000000..90c08bb
--- /dev/null
+++ b/share/regions/config_301.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf12d" SimName="301" SimLocationX="1013" SimLocationY="1009" Datastore="store_301_x13_y18.yap" SimListenPort="9401" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_302.xml b/share/regions/config_302.xml
new file mode 100644
index 0000000..4d1c646
--- /dev/null
+++ b/share/regions/config_302.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf12e" SimName="302" SimLocationX="1014" SimLocationY="1009" Datastore="store_302_x14_y18.yap" SimListenPort="9402" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_303.xml b/share/regions/config_303.xml
new file mode 100644
index 0000000..931bf65
--- /dev/null
+++ b/share/regions/config_303.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf12f" SimName="303" SimLocationX="1015" SimLocationY="1009" Datastore="store_303_x15_y18.yap" SimListenPort="9403" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-3.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_304.xml b/share/regions/config_304.xml
new file mode 100644
index 0000000..5d6395a
--- /dev/null
+++ b/share/regions/config_304.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf130" SimName="304" SimLocationX="1016" SimLocationY="1009" Datastore="store_304_x00_y19.yap" SimListenPort="9404" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_305.xml b/share/regions/config_305.xml
new file mode 100644
index 0000000..6d95c1d
--- /dev/null
+++ b/share/regions/config_305.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf131" SimName="305" SimLocationX="1017" SimLocationY="1009" Datastore="store_305_x01_y19.yap" SimListenPort="9405" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_306.xml b/share/regions/config_306.xml
new file mode 100644
index 0000000..4beb01c
--- /dev/null
+++ b/share/regions/config_306.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf132" SimName="306" SimLocationX="1018" SimLocationY="1009" Datastore="store_306_x02_y19.yap" SimListenPort="9406" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_307.xml b/share/regions/config_307.xml
new file mode 100644
index 0000000..ac717c0
--- /dev/null
+++ b/share/regions/config_307.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf133" SimName="307" SimLocationX="1019" SimLocationY="1009" Datastore="store_307_x03_y19.yap" SimListenPort="9407" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_308.xml b/share/regions/config_308.xml
new file mode 100644
index 0000000..d84b894
--- /dev/null
+++ b/share/regions/config_308.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf134" SimName="308" SimLocationX="1020" SimLocationY="1009" Datastore="store_308_x04_y19.yap" SimListenPort="9408" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_309.xml b/share/regions/config_309.xml
new file mode 100644
index 0000000..bb6d9cf
--- /dev/null
+++ b/share/regions/config_309.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf135" SimName="309" SimLocationX="1021" SimLocationY="1009" Datastore="store_309_x05_y19.yap" SimListenPort="9409" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_31.xml b/share/regions/config_31.xml
new file mode 100644
index 0000000..a66ed51
--- /dev/null
+++ b/share/regions/config_31.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf01f" SimName="31" SimLocationX="1031" SimLocationY="1000" Datastore="store_31_x15_y01.yap" SimListenPort="9131" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_310.xml b/share/regions/config_310.xml
new file mode 100644
index 0000000..c9d537d
--- /dev/null
+++ b/share/regions/config_310.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf136" SimName="310" SimLocationX="1022" SimLocationY="1009" Datastore="store_310_x06_y19.yap" SimListenPort="9410" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_311.xml b/share/regions/config_311.xml
new file mode 100644
index 0000000..ecdaeb8
--- /dev/null
+++ b/share/regions/config_311.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf137" SimName="311" SimLocationX="1023" SimLocationY="1009" Datastore="store_311_x07_y19.yap" SimListenPort="9411" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_312.xml b/share/regions/config_312.xml
new file mode 100644
index 0000000..dbcb515
--- /dev/null
+++ b/share/regions/config_312.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf138" SimName="312" SimLocationX="1024" SimLocationY="1009" Datastore="store_312_x08_y19.yap" SimListenPort="9412" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_313.xml b/share/regions/config_313.xml
new file mode 100644
index 0000000..7dc6b45
--- /dev/null
+++ b/share/regions/config_313.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf139" SimName="313" SimLocationX="1025" SimLocationY="1009" Datastore="store_313_x09_y19.yap" SimListenPort="9413" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_314.xml b/share/regions/config_314.xml
new file mode 100644
index 0000000..865d865
--- /dev/null
+++ b/share/regions/config_314.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf13a" SimName="314" SimLocationX="1026" SimLocationY="1009" Datastore="store_314_x10_y19.yap" SimListenPort="9414" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_315.xml b/share/regions/config_315.xml
new file mode 100644
index 0000000..073e89a
--- /dev/null
+++ b/share/regions/config_315.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf13b" SimName="315" SimLocationX="1027" SimLocationY="1009" Datastore="store_315_x11_y19.yap" SimListenPort="9415" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_316.xml b/share/regions/config_316.xml
new file mode 100644
index 0000000..4c5d131
--- /dev/null
+++ b/share/regions/config_316.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf13c" SimName="316" SimLocationX="1028" SimLocationY="1009" Datastore="store_316_x12_y19.yap" SimListenPort="9416" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_317.xml b/share/regions/config_317.xml
new file mode 100644
index 0000000..853caf7
--- /dev/null
+++ b/share/regions/config_317.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf13d" SimName="317" SimLocationX="1029" SimLocationY="1009" Datastore="store_317_x13_y19.yap" SimListenPort="9417" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_318.xml b/share/regions/config_318.xml
new file mode 100644
index 0000000..d0eb759
--- /dev/null
+++ b/share/regions/config_318.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf13e" SimName="318" SimLocationX="1030" SimLocationY="1009" Datastore="store_318_x14_y19.yap" SimListenPort="9418" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_319.xml b/share/regions/config_319.xml
new file mode 100644
index 0000000..168875f
--- /dev/null
+++ b/share/regions/config_319.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf13f" SimName="319" SimLocationX="1031" SimLocationY="1009" Datastore="store_319_x15_y19.yap" SimListenPort="9419" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-4.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_32.xml b/share/regions/config_32.xml
new file mode 100644
index 0000000..47c45af
--- /dev/null
+++ b/share/regions/config_32.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf020" SimName="32" SimLocationX="1000" SimLocationY="1001" Datastore="store_32_x00_y02.yap" SimListenPort="9132" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_320.xml b/share/regions/config_320.xml
new file mode 100644
index 0000000..6f7c12e
--- /dev/null
+++ b/share/regions/config_320.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf140" SimName="320" SimLocationX="1000" SimLocationY="1010" Datastore="store_320_x00_y20.yap" SimListenPort="9420" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_321.xml b/share/regions/config_321.xml
new file mode 100644
index 0000000..dd8c9ea
--- /dev/null
+++ b/share/regions/config_321.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf141" SimName="321" SimLocationX="1001" SimLocationY="1010" Datastore="store_321_x01_y20.yap" SimListenPort="9421" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_322.xml b/share/regions/config_322.xml
new file mode 100644
index 0000000..47ec1e8
--- /dev/null
+++ b/share/regions/config_322.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf142" SimName="322" SimLocationX="1002" SimLocationY="1010" Datastore="store_322_x02_y20.yap" SimListenPort="9422" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_323.xml b/share/regions/config_323.xml
new file mode 100644
index 0000000..e6efaf4
--- /dev/null
+++ b/share/regions/config_323.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf143" SimName="323" SimLocationX="1003" SimLocationY="1010" Datastore="store_323_x03_y20.yap" SimListenPort="9423" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_324.xml b/share/regions/config_324.xml
new file mode 100644
index 0000000..24c7a1a
--- /dev/null
+++ b/share/regions/config_324.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf144" SimName="324" SimLocationX="1004" SimLocationY="1010" Datastore="store_324_x04_y20.yap" SimListenPort="9424" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_325.xml b/share/regions/config_325.xml
new file mode 100644
index 0000000..5a9b9e1
--- /dev/null
+++ b/share/regions/config_325.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf145" SimName="325" SimLocationX="1005" SimLocationY="1010" Datastore="store_325_x05_y20.yap" SimListenPort="9425" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_326.xml b/share/regions/config_326.xml
new file mode 100644
index 0000000..1994ff3
--- /dev/null
+++ b/share/regions/config_326.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf146" SimName="326" SimLocationX="1006" SimLocationY="1010" Datastore="store_326_x06_y20.yap" SimListenPort="9426" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_327.xml b/share/regions/config_327.xml
new file mode 100644
index 0000000..75a3cfc
--- /dev/null
+++ b/share/regions/config_327.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf147" SimName="327" SimLocationX="1007" SimLocationY="1010" Datastore="store_327_x07_y20.yap" SimListenPort="9427" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_328.xml b/share/regions/config_328.xml
new file mode 100644
index 0000000..824b2e9
--- /dev/null
+++ b/share/regions/config_328.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf148" SimName="328" SimLocationX="1008" SimLocationY="1010" Datastore="store_328_x08_y20.yap" SimListenPort="9428" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_329.xml b/share/regions/config_329.xml
new file mode 100644
index 0000000..757680f
--- /dev/null
+++ b/share/regions/config_329.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf149" SimName="329" SimLocationX="1009" SimLocationY="1010" Datastore="store_329_x09_y20.yap" SimListenPort="9429" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_33.xml b/share/regions/config_33.xml
new file mode 100644
index 0000000..8c14f7a
--- /dev/null
+++ b/share/regions/config_33.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf021" SimName="33" SimLocationX="1001" SimLocationY="1001" Datastore="store_33_x01_y02.yap" SimListenPort="9133" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_330.xml b/share/regions/config_330.xml
new file mode 100644
index 0000000..0270580
--- /dev/null
+++ b/share/regions/config_330.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf14a" SimName="330" SimLocationX="1010" SimLocationY="1010" Datastore="store_330_x10_y20.yap" SimListenPort="9430" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_331.xml b/share/regions/config_331.xml
new file mode 100644
index 0000000..ad74945
--- /dev/null
+++ b/share/regions/config_331.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf14b" SimName="331" SimLocationX="1011" SimLocationY="1010" Datastore="store_331_x11_y20.yap" SimListenPort="9431" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_332.xml b/share/regions/config_332.xml
new file mode 100644
index 0000000..bf19af1
--- /dev/null
+++ b/share/regions/config_332.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf14c" SimName="332" SimLocationX="1012" SimLocationY="1010" Datastore="store_332_x12_y20.yap" SimListenPort="9432" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_333.xml b/share/regions/config_333.xml
new file mode 100644
index 0000000..3686668
--- /dev/null
+++ b/share/regions/config_333.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf14d" SimName="333" SimLocationX="1013" SimLocationY="1010" Datastore="store_333_x13_y20.yap" SimListenPort="9433" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_334.xml b/share/regions/config_334.xml
new file mode 100644
index 0000000..4b28b3e
--- /dev/null
+++ b/share/regions/config_334.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf14e" SimName="334" SimLocationX="1014" SimLocationY="1010" Datastore="store_334_x14_y20.yap" SimListenPort="9434" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_335.xml b/share/regions/config_335.xml
new file mode 100644
index 0000000..1980da0
--- /dev/null
+++ b/share/regions/config_335.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf14f" SimName="335" SimLocationX="1015" SimLocationY="1010" Datastore="store_335_x15_y20.yap" SimListenPort="9435" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-5.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_336.xml b/share/regions/config_336.xml
new file mode 100644
index 0000000..1e4b2a7
--- /dev/null
+++ b/share/regions/config_336.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf150" SimName="336" SimLocationX="1016" SimLocationY="1010" Datastore="store_336_x00_y21.yap" SimListenPort="9436" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_337.xml b/share/regions/config_337.xml
new file mode 100644
index 0000000..3e7e3ce
--- /dev/null
+++ b/share/regions/config_337.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf151" SimName="337" SimLocationX="1017" SimLocationY="1010" Datastore="store_337_x01_y21.yap" SimListenPort="9437" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_338.xml b/share/regions/config_338.xml
new file mode 100644
index 0000000..71c88de
--- /dev/null
+++ b/share/regions/config_338.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf152" SimName="338" SimLocationX="1018" SimLocationY="1010" Datastore="store_338_x02_y21.yap" SimListenPort="9438" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_339.xml b/share/regions/config_339.xml
new file mode 100644
index 0000000..d22de66
--- /dev/null
+++ b/share/regions/config_339.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf153" SimName="339" SimLocationX="1019" SimLocationY="1010" Datastore="store_339_x03_y21.yap" SimListenPort="9439" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_34.xml b/share/regions/config_34.xml
new file mode 100644
index 0000000..08132d0
--- /dev/null
+++ b/share/regions/config_34.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf022" SimName="34" SimLocationX="1002" SimLocationY="1001" Datastore="store_34_x02_y02.yap" SimListenPort="9134" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_340.xml b/share/regions/config_340.xml
new file mode 100644
index 0000000..c05d9e3
--- /dev/null
+++ b/share/regions/config_340.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf154" SimName="340" SimLocationX="1020" SimLocationY="1010" Datastore="store_340_x04_y21.yap" SimListenPort="9440" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_341.xml b/share/regions/config_341.xml
new file mode 100644
index 0000000..a8e8581
--- /dev/null
+++ b/share/regions/config_341.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf155" SimName="341" SimLocationX="1021" SimLocationY="1010" Datastore="store_341_x05_y21.yap" SimListenPort="9441" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_342.xml b/share/regions/config_342.xml
new file mode 100644
index 0000000..cb28842
--- /dev/null
+++ b/share/regions/config_342.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf156" SimName="342" SimLocationX="1022" SimLocationY="1010" Datastore="store_342_x06_y21.yap" SimListenPort="9442" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_343.xml b/share/regions/config_343.xml
new file mode 100644
index 0000000..2a9678f
--- /dev/null
+++ b/share/regions/config_343.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf157" SimName="343" SimLocationX="1023" SimLocationY="1010" Datastore="store_343_x07_y21.yap" SimListenPort="9443" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_344.xml b/share/regions/config_344.xml
new file mode 100644
index 0000000..8e9771a
--- /dev/null
+++ b/share/regions/config_344.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf158" SimName="344" SimLocationX="1024" SimLocationY="1010" Datastore="store_344_x08_y21.yap" SimListenPort="9444" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_345.xml b/share/regions/config_345.xml
new file mode 100644
index 0000000..4d64467
--- /dev/null
+++ b/share/regions/config_345.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf159" SimName="345" SimLocationX="1025" SimLocationY="1010" Datastore="store_345_x09_y21.yap" SimListenPort="9445" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_346.xml b/share/regions/config_346.xml
new file mode 100644
index 0000000..36b2516
--- /dev/null
+++ b/share/regions/config_346.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf15a" SimName="346" SimLocationX="1026" SimLocationY="1010" Datastore="store_346_x10_y21.yap" SimListenPort="9446" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_347.xml b/share/regions/config_347.xml
new file mode 100644
index 0000000..10344f4
--- /dev/null
+++ b/share/regions/config_347.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf15b" SimName="347" SimLocationX="1027" SimLocationY="1010" Datastore="store_347_x11_y21.yap" SimListenPort="9447" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_348.xml b/share/regions/config_348.xml
new file mode 100644
index 0000000..102b9dd
--- /dev/null
+++ b/share/regions/config_348.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf15c" SimName="348" SimLocationX="1028" SimLocationY="1010" Datastore="store_348_x12_y21.yap" SimListenPort="9448" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_349.xml b/share/regions/config_349.xml
new file mode 100644
index 0000000..de39dc9
--- /dev/null
+++ b/share/regions/config_349.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf15d" SimName="349" SimLocationX="1029" SimLocationY="1010" Datastore="store_349_x13_y21.yap" SimListenPort="9449" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_35.xml b/share/regions/config_35.xml
new file mode 100644
index 0000000..fde3552
--- /dev/null
+++ b/share/regions/config_35.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf023" SimName="35" SimLocationX="1003" SimLocationY="1001" Datastore="store_35_x03_y02.yap" SimListenPort="9135" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_350.xml b/share/regions/config_350.xml
new file mode 100644
index 0000000..aa10906
--- /dev/null
+++ b/share/regions/config_350.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf15e" SimName="350" SimLocationX="1030" SimLocationY="1010" Datastore="store_350_x14_y21.yap" SimListenPort="9450" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_351.xml b/share/regions/config_351.xml
new file mode 100644
index 0000000..e791e61
--- /dev/null
+++ b/share/regions/config_351.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf15f" SimName="351" SimLocationX="1031" SimLocationY="1010" Datastore="store_351_x15_y21.yap" SimListenPort="9451" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-6.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_352.xml b/share/regions/config_352.xml
new file mode 100644
index 0000000..7ab0219
--- /dev/null
+++ b/share/regions/config_352.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf160" SimName="352" SimLocationX="1000" SimLocationY="1011" Datastore="store_352_x00_y22.yap" SimListenPort="9452" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_353.xml b/share/regions/config_353.xml
new file mode 100644
index 0000000..489ce5a
--- /dev/null
+++ b/share/regions/config_353.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf161" SimName="353" SimLocationX="1001" SimLocationY="1011" Datastore="store_353_x01_y22.yap" SimListenPort="9453" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_354.xml b/share/regions/config_354.xml
new file mode 100644
index 0000000..4eacc38
--- /dev/null
+++ b/share/regions/config_354.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf162" SimName="354" SimLocationX="1002" SimLocationY="1011" Datastore="store_354_x02_y22.yap" SimListenPort="9454" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_355.xml b/share/regions/config_355.xml
new file mode 100644
index 0000000..1f85b26
--- /dev/null
+++ b/share/regions/config_355.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf163" SimName="355" SimLocationX="1003" SimLocationY="1011" Datastore="store_355_x03_y22.yap" SimListenPort="9455" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_356.xml b/share/regions/config_356.xml
new file mode 100644
index 0000000..baf1880
--- /dev/null
+++ b/share/regions/config_356.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf164" SimName="356" SimLocationX="1004" SimLocationY="1011" Datastore="store_356_x04_y22.yap" SimListenPort="9456" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_357.xml b/share/regions/config_357.xml
new file mode 100644
index 0000000..37e2f28
--- /dev/null
+++ b/share/regions/config_357.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf165" SimName="357" SimLocationX="1005" SimLocationY="1011" Datastore="store_357_x05_y22.yap" SimListenPort="9457" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_358.xml b/share/regions/config_358.xml
new file mode 100644
index 0000000..75ae185
--- /dev/null
+++ b/share/regions/config_358.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf166" SimName="358" SimLocationX="1006" SimLocationY="1011" Datastore="store_358_x06_y22.yap" SimListenPort="9458" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_359.xml b/share/regions/config_359.xml
new file mode 100644
index 0000000..698ab2b
--- /dev/null
+++ b/share/regions/config_359.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf167" SimName="359" SimLocationX="1007" SimLocationY="1011" Datastore="store_359_x07_y22.yap" SimListenPort="9459" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_36.xml b/share/regions/config_36.xml
new file mode 100644
index 0000000..f50eda8
--- /dev/null
+++ b/share/regions/config_36.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf024" SimName="36" SimLocationX="1004" SimLocationY="1001" Datastore="store_36_x04_y02.yap" SimListenPort="9136" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_360.xml b/share/regions/config_360.xml
new file mode 100644
index 0000000..c18027c
--- /dev/null
+++ b/share/regions/config_360.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf168" SimName="360" SimLocationX="1008" SimLocationY="1011" Datastore="store_360_x08_y22.yap" SimListenPort="9460" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_361.xml b/share/regions/config_361.xml
new file mode 100644
index 0000000..97f12e6
--- /dev/null
+++ b/share/regions/config_361.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf169" SimName="361" SimLocationX="1009" SimLocationY="1011" Datastore="store_361_x09_y22.yap" SimListenPort="9461" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_362.xml b/share/regions/config_362.xml
new file mode 100644
index 0000000..ba0a464
--- /dev/null
+++ b/share/regions/config_362.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf16a" SimName="362" SimLocationX="1010" SimLocationY="1011" Datastore="store_362_x10_y22.yap" SimListenPort="9462" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_363.xml b/share/regions/config_363.xml
new file mode 100644
index 0000000..c0965e6
--- /dev/null
+++ b/share/regions/config_363.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf16b" SimName="363" SimLocationX="1011" SimLocationY="1011" Datastore="store_363_x11_y22.yap" SimListenPort="9463" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_364.xml b/share/regions/config_364.xml
new file mode 100644
index 0000000..d977ab4
--- /dev/null
+++ b/share/regions/config_364.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf16c" SimName="364" SimLocationX="1012" SimLocationY="1011" Datastore="store_364_x12_y22.yap" SimListenPort="9464" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_365.xml b/share/regions/config_365.xml
new file mode 100644
index 0000000..260e3a6
--- /dev/null
+++ b/share/regions/config_365.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf16d" SimName="365" SimLocationX="1013" SimLocationY="1011" Datastore="store_365_x13_y22.yap" SimListenPort="9465" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_366.xml b/share/regions/config_366.xml
new file mode 100644
index 0000000..3d61061
--- /dev/null
+++ b/share/regions/config_366.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf16e" SimName="366" SimLocationX="1014" SimLocationY="1011" Datastore="store_366_x14_y22.yap" SimListenPort="9466" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_367.xml b/share/regions/config_367.xml
new file mode 100644
index 0000000..cc2b5d6
--- /dev/null
+++ b/share/regions/config_367.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf16f" SimName="367" SimLocationX="1015" SimLocationY="1011" Datastore="store_367_x15_y22.yap" SimListenPort="9467" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-7.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_368.xml b/share/regions/config_368.xml
new file mode 100644
index 0000000..07bab28
--- /dev/null
+++ b/share/regions/config_368.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf170" SimName="368" SimLocationX="1016" SimLocationY="1011" Datastore="store_368_x00_y23.yap" SimListenPort="9468" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_369.xml b/share/regions/config_369.xml
new file mode 100644
index 0000000..6b0b8f8
--- /dev/null
+++ b/share/regions/config_369.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf171" SimName="369" SimLocationX="1017" SimLocationY="1011" Datastore="store_369_x01_y23.yap" SimListenPort="9469" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_37.xml b/share/regions/config_37.xml
new file mode 100644
index 0000000..d8f8e70
--- /dev/null
+++ b/share/regions/config_37.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf025" SimName="37" SimLocationX="1005" SimLocationY="1001" Datastore="store_37_x05_y02.yap" SimListenPort="9137" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_370.xml b/share/regions/config_370.xml
new file mode 100644
index 0000000..b9b23df
--- /dev/null
+++ b/share/regions/config_370.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf172" SimName="370" SimLocationX="1018" SimLocationY="1011" Datastore="store_370_x02_y23.yap" SimListenPort="9470" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_371.xml b/share/regions/config_371.xml
new file mode 100644
index 0000000..db2e347
--- /dev/null
+++ b/share/regions/config_371.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf173" SimName="371" SimLocationX="1019" SimLocationY="1011" Datastore="store_371_x03_y23.yap" SimListenPort="9471" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_372.xml b/share/regions/config_372.xml
new file mode 100644
index 0000000..daaf089
--- /dev/null
+++ b/share/regions/config_372.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf174" SimName="372" SimLocationX="1020" SimLocationY="1011" Datastore="store_372_x04_y23.yap" SimListenPort="9472" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_373.xml b/share/regions/config_373.xml
new file mode 100644
index 0000000..9169e6f
--- /dev/null
+++ b/share/regions/config_373.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf175" SimName="373" SimLocationX="1021" SimLocationY="1011" Datastore="store_373_x05_y23.yap" SimListenPort="9473" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_374.xml b/share/regions/config_374.xml
new file mode 100644
index 0000000..f7a8024
--- /dev/null
+++ b/share/regions/config_374.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf176" SimName="374" SimLocationX="1022" SimLocationY="1011" Datastore="store_374_x06_y23.yap" SimListenPort="9474" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_375.xml b/share/regions/config_375.xml
new file mode 100644
index 0000000..ee53e02
--- /dev/null
+++ b/share/regions/config_375.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf177" SimName="375" SimLocationX="1023" SimLocationY="1011" Datastore="store_375_x07_y23.yap" SimListenPort="9475" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_376.xml b/share/regions/config_376.xml
new file mode 100644
index 0000000..6567eba
--- /dev/null
+++ b/share/regions/config_376.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf178" SimName="376" SimLocationX="1024" SimLocationY="1011" Datastore="store_376_x08_y23.yap" SimListenPort="9476" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_377.xml b/share/regions/config_377.xml
new file mode 100644
index 0000000..9cfc07a
--- /dev/null
+++ b/share/regions/config_377.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf179" SimName="377" SimLocationX="1025" SimLocationY="1011" Datastore="store_377_x09_y23.yap" SimListenPort="9477" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_378.xml b/share/regions/config_378.xml
new file mode 100644
index 0000000..dc64f23
--- /dev/null
+++ b/share/regions/config_378.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf17a" SimName="378" SimLocationX="1026" SimLocationY="1011" Datastore="store_378_x10_y23.yap" SimListenPort="9478" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_379.xml b/share/regions/config_379.xml
new file mode 100644
index 0000000..b690161
--- /dev/null
+++ b/share/regions/config_379.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf17b" SimName="379" SimLocationX="1027" SimLocationY="1011" Datastore="store_379_x11_y23.yap" SimListenPort="9479" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_38.xml b/share/regions/config_38.xml
new file mode 100644
index 0000000..8b59756
--- /dev/null
+++ b/share/regions/config_38.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf026" SimName="38" SimLocationX="1006" SimLocationY="1001" Datastore="store_38_x06_y02.yap" SimListenPort="9138" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_380.xml b/share/regions/config_380.xml
new file mode 100644
index 0000000..c287ca7
--- /dev/null
+++ b/share/regions/config_380.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf17c" SimName="380" SimLocationX="1028" SimLocationY="1011" Datastore="store_380_x12_y23.yap" SimListenPort="9480" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_381.xml b/share/regions/config_381.xml
new file mode 100644
index 0000000..6407a59
--- /dev/null
+++ b/share/regions/config_381.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf17d" SimName="381" SimLocationX="1029" SimLocationY="1011" Datastore="store_381_x13_y23.yap" SimListenPort="9481" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_382.xml b/share/regions/config_382.xml
new file mode 100644
index 0000000..c3601c0
--- /dev/null
+++ b/share/regions/config_382.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf17e" SimName="382" SimLocationX="1030" SimLocationY="1011" Datastore="store_382_x14_y23.yap" SimListenPort="9482" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_383.xml b/share/regions/config_383.xml
new file mode 100644
index 0000000..5067b99
--- /dev/null
+++ b/share/regions/config_383.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf17f" SimName="383" SimLocationX="1031" SimLocationY="1011" Datastore="store_383_x15_y23.yap" SimListenPort="9483" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-8.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_384.xml b/share/regions/config_384.xml
new file mode 100644
index 0000000..e624312
--- /dev/null
+++ b/share/regions/config_384.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf180" SimName="384" SimLocationX="1000" SimLocationY="1012" Datastore="store_384_x00_y24.yap" SimListenPort="9484" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_385.xml b/share/regions/config_385.xml
new file mode 100644
index 0000000..d0095f3
--- /dev/null
+++ b/share/regions/config_385.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf181" SimName="385" SimLocationX="1001" SimLocationY="1012" Datastore="store_385_x01_y24.yap" SimListenPort="9485" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_386.xml b/share/regions/config_386.xml
new file mode 100644
index 0000000..ae9549d
--- /dev/null
+++ b/share/regions/config_386.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf182" SimName="386" SimLocationX="1002" SimLocationY="1012" Datastore="store_386_x02_y24.yap" SimListenPort="9486" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_387.xml b/share/regions/config_387.xml
new file mode 100644
index 0000000..e2c2880
--- /dev/null
+++ b/share/regions/config_387.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf183" SimName="387" SimLocationX="1003" SimLocationY="1012" Datastore="store_387_x03_y24.yap" SimListenPort="9487" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_388.xml b/share/regions/config_388.xml
new file mode 100644
index 0000000..5b0e3e2
--- /dev/null
+++ b/share/regions/config_388.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf184" SimName="388" SimLocationX="1004" SimLocationY="1012" Datastore="store_388_x04_y24.yap" SimListenPort="9488" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_389.xml b/share/regions/config_389.xml
new file mode 100644
index 0000000..a77061a
--- /dev/null
+++ b/share/regions/config_389.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf185" SimName="389" SimLocationX="1005" SimLocationY="1012" Datastore="store_389_x05_y24.yap" SimListenPort="9489" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_39.xml b/share/regions/config_39.xml
new file mode 100644
index 0000000..75050bb
--- /dev/null
+++ b/share/regions/config_39.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf027" SimName="39" SimLocationX="1007" SimLocationY="1001" Datastore="store_39_x07_y02.yap" SimListenPort="9139" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_390.xml b/share/regions/config_390.xml
new file mode 100644
index 0000000..79887c0
--- /dev/null
+++ b/share/regions/config_390.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf186" SimName="390" SimLocationX="1006" SimLocationY="1012" Datastore="store_390_x06_y24.yap" SimListenPort="9490" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_391.xml b/share/regions/config_391.xml
new file mode 100644
index 0000000..3863fb5
--- /dev/null
+++ b/share/regions/config_391.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf187" SimName="391" SimLocationX="1007" SimLocationY="1012" Datastore="store_391_x07_y24.yap" SimListenPort="9491" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_392.xml b/share/regions/config_392.xml
new file mode 100644
index 0000000..c5c4552
--- /dev/null
+++ b/share/regions/config_392.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf188" SimName="392" SimLocationX="1008" SimLocationY="1012" Datastore="store_392_x08_y24.yap" SimListenPort="9492" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_393.xml b/share/regions/config_393.xml
new file mode 100644
index 0000000..d0e0a61
--- /dev/null
+++ b/share/regions/config_393.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf189" SimName="393" SimLocationX="1009" SimLocationY="1012" Datastore="store_393_x09_y24.yap" SimListenPort="9493" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_394.xml b/share/regions/config_394.xml
new file mode 100644
index 0000000..3fd4cb5
--- /dev/null
+++ b/share/regions/config_394.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf18a" SimName="394" SimLocationX="1010" SimLocationY="1012" Datastore="store_394_x10_y24.yap" SimListenPort="9494" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_395.xml b/share/regions/config_395.xml
new file mode 100644
index 0000000..a49a948
--- /dev/null
+++ b/share/regions/config_395.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf18b" SimName="395" SimLocationX="1011" SimLocationY="1012" Datastore="store_395_x11_y24.yap" SimListenPort="9495" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_396.xml b/share/regions/config_396.xml
new file mode 100644
index 0000000..fd2461a
--- /dev/null
+++ b/share/regions/config_396.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf18c" SimName="396" SimLocationX="1012" SimLocationY="1012" Datastore="store_396_x12_y24.yap" SimListenPort="9496" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_397.xml b/share/regions/config_397.xml
new file mode 100644
index 0000000..d3a693b
--- /dev/null
+++ b/share/regions/config_397.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf18d" SimName="397" SimLocationX="1013" SimLocationY="1012" Datastore="store_397_x13_y24.yap" SimListenPort="9497" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_398.xml b/share/regions/config_398.xml
new file mode 100644
index 0000000..e2afde9
--- /dev/null
+++ b/share/regions/config_398.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf18e" SimName="398" SimLocationX="1014" SimLocationY="1012" Datastore="store_398_x14_y24.yap" SimListenPort="9498" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_399.xml b/share/regions/config_399.xml
new file mode 100644
index 0000000..938794c
--- /dev/null
+++ b/share/regions/config_399.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf18f" SimName="399" SimLocationX="1015" SimLocationY="1012" Datastore="store_399_x15_y24.yap" SimListenPort="9499" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-9.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_4.xml b/share/regions/config_4.xml
new file mode 100644
index 0000000..8744f4e
--- /dev/null
+++ b/share/regions/config_4.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf004" SimName="4" SimLocationX="1004" SimLocationY="1000" Datastore="store_4_x04_y00.yap" SimListenPort="9104" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_40.xml b/share/regions/config_40.xml
new file mode 100644
index 0000000..2e399da
--- /dev/null
+++ b/share/regions/config_40.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf028" SimName="40" SimLocationX="1008" SimLocationY="1001" Datastore="store_40_x08_y02.yap" SimListenPort="9140" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_400.xml b/share/regions/config_400.xml
new file mode 100644
index 0000000..cab19d9
--- /dev/null
+++ b/share/regions/config_400.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf190" SimName="400" SimLocationX="1016" SimLocationY="1012" Datastore="store_400_x00_y25.yap" SimListenPort="9500" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_401.xml b/share/regions/config_401.xml
new file mode 100644
index 0000000..f8c29e7
--- /dev/null
+++ b/share/regions/config_401.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf191" SimName="401" SimLocationX="1017" SimLocationY="1012" Datastore="store_401_x01_y25.yap" SimListenPort="9501" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_402.xml b/share/regions/config_402.xml
new file mode 100644
index 0000000..39fea36
--- /dev/null
+++ b/share/regions/config_402.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf192" SimName="402" SimLocationX="1018" SimLocationY="1012" Datastore="store_402_x02_y25.yap" SimListenPort="9502" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_403.xml b/share/regions/config_403.xml
new file mode 100644
index 0000000..d61a2da
--- /dev/null
+++ b/share/regions/config_403.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf193" SimName="403" SimLocationX="1019" SimLocationY="1012" Datastore="store_403_x03_y25.yap" SimListenPort="9503" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_404.xml b/share/regions/config_404.xml
new file mode 100644
index 0000000..d2d5a81
--- /dev/null
+++ b/share/regions/config_404.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf194" SimName="404" SimLocationX="1020" SimLocationY="1012" Datastore="store_404_x04_y25.yap" SimListenPort="9504" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_405.xml b/share/regions/config_405.xml
new file mode 100644
index 0000000..a07a7bc
--- /dev/null
+++ b/share/regions/config_405.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf195" SimName="405" SimLocationX="1021" SimLocationY="1012" Datastore="store_405_x05_y25.yap" SimListenPort="9505" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_406.xml b/share/regions/config_406.xml
new file mode 100644
index 0000000..5855778
--- /dev/null
+++ b/share/regions/config_406.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf196" SimName="406" SimLocationX="1022" SimLocationY="1012" Datastore="store_406_x06_y25.yap" SimListenPort="9506" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_407.xml b/share/regions/config_407.xml
new file mode 100644
index 0000000..9c54b3d
--- /dev/null
+++ b/share/regions/config_407.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf197" SimName="407" SimLocationX="1023" SimLocationY="1012" Datastore="store_407_x07_y25.yap" SimListenPort="9507" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_408.xml b/share/regions/config_408.xml
new file mode 100644
index 0000000..83e95b1
--- /dev/null
+++ b/share/regions/config_408.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf198" SimName="408" SimLocationX="1024" SimLocationY="1012" Datastore="store_408_x08_y25.yap" SimListenPort="9508" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_409.xml b/share/regions/config_409.xml
new file mode 100644
index 0000000..6b15ed3
--- /dev/null
+++ b/share/regions/config_409.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf199" SimName="409" SimLocationX="1025" SimLocationY="1012" Datastore="store_409_x09_y25.yap" SimListenPort="9509" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_41.xml b/share/regions/config_41.xml
new file mode 100644
index 0000000..c7ddbb9
--- /dev/null
+++ b/share/regions/config_41.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf029" SimName="41" SimLocationX="1009" SimLocationY="1001" Datastore="store_41_x09_y02.yap" SimListenPort="9141" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_410.xml b/share/regions/config_410.xml
new file mode 100644
index 0000000..0fb99a1
--- /dev/null
+++ b/share/regions/config_410.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf19a" SimName="410" SimLocationX="1026" SimLocationY="1012" Datastore="store_410_x10_y25.yap" SimListenPort="9510" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_411.xml b/share/regions/config_411.xml
new file mode 100644
index 0000000..aa6144d
--- /dev/null
+++ b/share/regions/config_411.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf19b" SimName="411" SimLocationX="1027" SimLocationY="1012" Datastore="store_411_x11_y25.yap" SimListenPort="9511" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_412.xml b/share/regions/config_412.xml
new file mode 100644
index 0000000..9645235
--- /dev/null
+++ b/share/regions/config_412.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf19c" SimName="412" SimLocationX="1028" SimLocationY="1012" Datastore="store_412_x12_y25.yap" SimListenPort="9512" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_413.xml b/share/regions/config_413.xml
new file mode 100644
index 0000000..1ae01f8
--- /dev/null
+++ b/share/regions/config_413.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf19d" SimName="413" SimLocationX="1029" SimLocationY="1012" Datastore="store_413_x13_y25.yap" SimListenPort="9513" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_414.xml b/share/regions/config_414.xml
new file mode 100644
index 0000000..9773a95
--- /dev/null
+++ b/share/regions/config_414.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf19e" SimName="414" SimLocationX="1030" SimLocationY="1012" Datastore="store_414_x14_y25.yap" SimListenPort="9514" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_415.xml b/share/regions/config_415.xml
new file mode 100644
index 0000000..7b43426
--- /dev/null
+++ b/share/regions/config_415.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf19f" SimName="415" SimLocationX="1031" SimLocationY="1012" Datastore="store_415_x15_y25.yap" SimListenPort="9515" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_416.xml b/share/regions/config_416.xml
new file mode 100644
index 0000000..a35c477
--- /dev/null
+++ b/share/regions/config_416.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a0" SimName="416" SimLocationX="1000" SimLocationY="1013" Datastore="store_416_x00_y26.yap" SimListenPort="9516" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_417.xml b/share/regions/config_417.xml
new file mode 100644
index 0000000..58001d1
--- /dev/null
+++ b/share/regions/config_417.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a1" SimName="417" SimLocationX="1001" SimLocationY="1013" Datastore="store_417_x01_y26.yap" SimListenPort="9517" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_418.xml b/share/regions/config_418.xml
new file mode 100644
index 0000000..3c525a1
--- /dev/null
+++ b/share/regions/config_418.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a2" SimName="418" SimLocationX="1002" SimLocationY="1013" Datastore="store_418_x02_y26.yap" SimListenPort="9518" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_419.xml b/share/regions/config_419.xml
new file mode 100644
index 0000000..9663580
--- /dev/null
+++ b/share/regions/config_419.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a3" SimName="419" SimLocationX="1003" SimLocationY="1013" Datastore="store_419_x03_y26.yap" SimListenPort="9519" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_42.xml b/share/regions/config_42.xml
new file mode 100644
index 0000000..edc7db7
--- /dev/null
+++ b/share/regions/config_42.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf02a" SimName="42" SimLocationX="1010" SimLocationY="1001" Datastore="store_42_x10_y02.yap" SimListenPort="9142" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_420.xml b/share/regions/config_420.xml
new file mode 100644
index 0000000..3df78a7
--- /dev/null
+++ b/share/regions/config_420.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a4" SimName="420" SimLocationX="1004" SimLocationY="1013" Datastore="store_420_x04_y26.yap" SimListenPort="9520" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_421.xml b/share/regions/config_421.xml
new file mode 100644
index 0000000..aed95bc
--- /dev/null
+++ b/share/regions/config_421.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a5" SimName="421" SimLocationX="1005" SimLocationY="1013" Datastore="store_421_x05_y26.yap" SimListenPort="9521" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_422.xml b/share/regions/config_422.xml
new file mode 100644
index 0000000..703c004
--- /dev/null
+++ b/share/regions/config_422.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a6" SimName="422" SimLocationX="1006" SimLocationY="1013" Datastore="store_422_x06_y26.yap" SimListenPort="9522" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_423.xml b/share/regions/config_423.xml
new file mode 100644
index 0000000..eca9a6f
--- /dev/null
+++ b/share/regions/config_423.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a7" SimName="423" SimLocationX="1007" SimLocationY="1013" Datastore="store_423_x07_y26.yap" SimListenPort="9523" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_424.xml b/share/regions/config_424.xml
new file mode 100644
index 0000000..91c68dc
--- /dev/null
+++ b/share/regions/config_424.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a8" SimName="424" SimLocationX="1008" SimLocationY="1013" Datastore="store_424_x08_y26.yap" SimListenPort="9524" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_425.xml b/share/regions/config_425.xml
new file mode 100644
index 0000000..92111f1
--- /dev/null
+++ b/share/regions/config_425.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1a9" SimName="425" SimLocationX="1009" SimLocationY="1013" Datastore="store_425_x09_y26.yap" SimListenPort="9525" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_426.xml b/share/regions/config_426.xml
new file mode 100644
index 0000000..9295577
--- /dev/null
+++ b/share/regions/config_426.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1aa" SimName="426" SimLocationX="1010" SimLocationY="1013" Datastore="store_426_x10_y26.yap" SimListenPort="9526" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_427.xml b/share/regions/config_427.xml
new file mode 100644
index 0000000..f54d20c
--- /dev/null
+++ b/share/regions/config_427.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ab" SimName="427" SimLocationX="1011" SimLocationY="1013" Datastore="store_427_x11_y26.yap" SimListenPort="9527" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_428.xml b/share/regions/config_428.xml
new file mode 100644
index 0000000..b4b407a
--- /dev/null
+++ b/share/regions/config_428.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ac" SimName="428" SimLocationX="1012" SimLocationY="1013" Datastore="store_428_x12_y26.yap" SimListenPort="9528" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_429.xml b/share/regions/config_429.xml
new file mode 100644
index 0000000..3389b8c
--- /dev/null
+++ b/share/regions/config_429.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ad" SimName="429" SimLocationX="1013" SimLocationY="1013" Datastore="store_429_x13_y26.yap" SimListenPort="9529" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_43.xml b/share/regions/config_43.xml
new file mode 100644
index 0000000..3841629
--- /dev/null
+++ b/share/regions/config_43.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf02b" SimName="43" SimLocationX="1011" SimLocationY="1001" Datastore="store_43_x11_y02.yap" SimListenPort="9143" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_430.xml b/share/regions/config_430.xml
new file mode 100644
index 0000000..1123c41
--- /dev/null
+++ b/share/regions/config_430.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ae" SimName="430" SimLocationX="1014" SimLocationY="1013" Datastore="store_430_x14_y26.yap" SimListenPort="9530" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_431.xml b/share/regions/config_431.xml
new file mode 100644
index 0000000..3c225d2
--- /dev/null
+++ b/share/regions/config_431.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1af" SimName="431" SimLocationX="1015" SimLocationY="1013" Datastore="store_431_x15_y26.yap" SimListenPort="9531" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_432.xml b/share/regions/config_432.xml
new file mode 100644
index 0000000..67579d3
--- /dev/null
+++ b/share/regions/config_432.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b0" SimName="432" SimLocationX="1016" SimLocationY="1013" Datastore="store_432_x00_y27.yap" SimListenPort="9532" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_433.xml b/share/regions/config_433.xml
new file mode 100644
index 0000000..6086a53
--- /dev/null
+++ b/share/regions/config_433.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b1" SimName="433" SimLocationX="1017" SimLocationY="1013" Datastore="store_433_x01_y27.yap" SimListenPort="9533" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_434.xml b/share/regions/config_434.xml
new file mode 100644
index 0000000..a634da2
--- /dev/null
+++ b/share/regions/config_434.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b2" SimName="434" SimLocationX="1018" SimLocationY="1013" Datastore="store_434_x02_y27.yap" SimListenPort="9534" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_435.xml b/share/regions/config_435.xml
new file mode 100644
index 0000000..06dcd5b
--- /dev/null
+++ b/share/regions/config_435.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b3" SimName="435" SimLocationX="1019" SimLocationY="1013" Datastore="store_435_x03_y27.yap" SimListenPort="9535" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_436.xml b/share/regions/config_436.xml
new file mode 100644
index 0000000..70c64a6
--- /dev/null
+++ b/share/regions/config_436.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b4" SimName="436" SimLocationX="1020" SimLocationY="1013" Datastore="store_436_x04_y27.yap" SimListenPort="9536" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_437.xml b/share/regions/config_437.xml
new file mode 100644
index 0000000..aaa105e
--- /dev/null
+++ b/share/regions/config_437.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b5" SimName="437" SimLocationX="1021" SimLocationY="1013" Datastore="store_437_x05_y27.yap" SimListenPort="9537" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_438.xml b/share/regions/config_438.xml
new file mode 100644
index 0000000..3f7b991
--- /dev/null
+++ b/share/regions/config_438.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b6" SimName="438" SimLocationX="1022" SimLocationY="1013" Datastore="store_438_x06_y27.yap" SimListenPort="9538" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_439.xml b/share/regions/config_439.xml
new file mode 100644
index 0000000..6ff6c99
--- /dev/null
+++ b/share/regions/config_439.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b7" SimName="439" SimLocationX="1023" SimLocationY="1013" Datastore="store_439_x07_y27.yap" SimListenPort="9539" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_44.xml b/share/regions/config_44.xml
new file mode 100644
index 0000000..00a639c
--- /dev/null
+++ b/share/regions/config_44.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf02c" SimName="44" SimLocationX="1012" SimLocationY="1001" Datastore="store_44_x12_y02.yap" SimListenPort="9144" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_440.xml b/share/regions/config_440.xml
new file mode 100644
index 0000000..2514f27
--- /dev/null
+++ b/share/regions/config_440.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b8" SimName="440" SimLocationX="1024" SimLocationY="1013" Datastore="store_440_x08_y27.yap" SimListenPort="9540" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_441.xml b/share/regions/config_441.xml
new file mode 100644
index 0000000..6c69568
--- /dev/null
+++ b/share/regions/config_441.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1b9" SimName="441" SimLocationX="1025" SimLocationY="1013" Datastore="store_441_x09_y27.yap" SimListenPort="9541" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_442.xml b/share/regions/config_442.xml
new file mode 100644
index 0000000..3b39f84
--- /dev/null
+++ b/share/regions/config_442.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ba" SimName="442" SimLocationX="1026" SimLocationY="1013" Datastore="store_442_x10_y27.yap" SimListenPort="9542" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_443.xml b/share/regions/config_443.xml
new file mode 100644
index 0000000..f86fcca
--- /dev/null
+++ b/share/regions/config_443.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1bb" SimName="443" SimLocationX="1027" SimLocationY="1013" Datastore="store_443_x11_y27.yap" SimListenPort="9543" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_444.xml b/share/regions/config_444.xml
new file mode 100644
index 0000000..0b2cecc
--- /dev/null
+++ b/share/regions/config_444.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1bc" SimName="444" SimLocationX="1028" SimLocationY="1013" Datastore="store_444_x12_y27.yap" SimListenPort="9544" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_445.xml b/share/regions/config_445.xml
new file mode 100644
index 0000000..cda5bf8
--- /dev/null
+++ b/share/regions/config_445.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1bd" SimName="445" SimLocationX="1029" SimLocationY="1013" Datastore="store_445_x13_y27.yap" SimListenPort="9545" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_446.xml b/share/regions/config_446.xml
new file mode 100644
index 0000000..d2daec5
--- /dev/null
+++ b/share/regions/config_446.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1be" SimName="446" SimLocationX="1030" SimLocationY="1013" Datastore="store_446_x14_y27.yap" SimListenPort="9546" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_447.xml b/share/regions/config_447.xml
new file mode 100644
index 0000000..c39cd11
--- /dev/null
+++ b/share/regions/config_447.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1bf" SimName="447" SimLocationX="1031" SimLocationY="1013" Datastore="store_447_x15_y27.yap" SimListenPort="9547" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_448.xml b/share/regions/config_448.xml
new file mode 100644
index 0000000..391cf51
--- /dev/null
+++ b/share/regions/config_448.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c0" SimName="448" SimLocationX="1000" SimLocationY="1014" Datastore="store_448_x00_y28.yap" SimListenPort="9548" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_449.xml b/share/regions/config_449.xml
new file mode 100644
index 0000000..fa67578
--- /dev/null
+++ b/share/regions/config_449.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c1" SimName="449" SimLocationX="1001" SimLocationY="1014" Datastore="store_449_x01_y28.yap" SimListenPort="9549" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_45.xml b/share/regions/config_45.xml
new file mode 100644
index 0000000..247bcd7
--- /dev/null
+++ b/share/regions/config_45.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf02d" SimName="45" SimLocationX="1013" SimLocationY="1001" Datastore="store_45_x13_y02.yap" SimListenPort="9145" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_450.xml b/share/regions/config_450.xml
new file mode 100644
index 0000000..54404a1
--- /dev/null
+++ b/share/regions/config_450.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c2" SimName="450" SimLocationX="1002" SimLocationY="1014" Datastore="store_450_x02_y28.yap" SimListenPort="9550" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_451.xml b/share/regions/config_451.xml
new file mode 100644
index 0000000..4c21c75
--- /dev/null
+++ b/share/regions/config_451.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c3" SimName="451" SimLocationX="1003" SimLocationY="1014" Datastore="store_451_x03_y28.yap" SimListenPort="9551" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_452.xml b/share/regions/config_452.xml
new file mode 100644
index 0000000..e2d8006
--- /dev/null
+++ b/share/regions/config_452.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c4" SimName="452" SimLocationX="1004" SimLocationY="1014" Datastore="store_452_x04_y28.yap" SimListenPort="9552" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_453.xml b/share/regions/config_453.xml
new file mode 100644
index 0000000..207829e
--- /dev/null
+++ b/share/regions/config_453.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c5" SimName="453" SimLocationX="1005" SimLocationY="1014" Datastore="store_453_x05_y28.yap" SimListenPort="9553" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_454.xml b/share/regions/config_454.xml
new file mode 100644
index 0000000..d216735
--- /dev/null
+++ b/share/regions/config_454.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c6" SimName="454" SimLocationX="1006" SimLocationY="1014" Datastore="store_454_x06_y28.yap" SimListenPort="9554" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_455.xml b/share/regions/config_455.xml
new file mode 100644
index 0000000..82fae24
--- /dev/null
+++ b/share/regions/config_455.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c7" SimName="455" SimLocationX="1007" SimLocationY="1014" Datastore="store_455_x07_y28.yap" SimListenPort="9555" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_456.xml b/share/regions/config_456.xml
new file mode 100644
index 0000000..0487f14
--- /dev/null
+++ b/share/regions/config_456.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c8" SimName="456" SimLocationX="1008" SimLocationY="1014" Datastore="store_456_x08_y28.yap" SimListenPort="9556" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_457.xml b/share/regions/config_457.xml
new file mode 100644
index 0000000..858c3e0
--- /dev/null
+++ b/share/regions/config_457.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1c9" SimName="457" SimLocationX="1009" SimLocationY="1014" Datastore="store_457_x09_y28.yap" SimListenPort="9557" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_458.xml b/share/regions/config_458.xml
new file mode 100644
index 0000000..09e4a6c
--- /dev/null
+++ b/share/regions/config_458.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ca" SimName="458" SimLocationX="1010" SimLocationY="1014" Datastore="store_458_x10_y28.yap" SimListenPort="9558" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_459.xml b/share/regions/config_459.xml
new file mode 100644
index 0000000..f0f069c
--- /dev/null
+++ b/share/regions/config_459.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1cb" SimName="459" SimLocationX="1011" SimLocationY="1014" Datastore="store_459_x11_y28.yap" SimListenPort="9559" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_46.xml b/share/regions/config_46.xml
new file mode 100644
index 0000000..e2b865c
--- /dev/null
+++ b/share/regions/config_46.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf02e" SimName="46" SimLocationX="1014" SimLocationY="1001" Datastore="store_46_x14_y02.yap" SimListenPort="9146" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_460.xml b/share/regions/config_460.xml
new file mode 100644
index 0000000..d90b4d2
--- /dev/null
+++ b/share/regions/config_460.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1cc" SimName="460" SimLocationX="1012" SimLocationY="1014" Datastore="store_460_x12_y28.yap" SimListenPort="9560" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_461.xml b/share/regions/config_461.xml
new file mode 100644
index 0000000..18bc3d7
--- /dev/null
+++ b/share/regions/config_461.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1cd" SimName="461" SimLocationX="1013" SimLocationY="1014" Datastore="store_461_x13_y28.yap" SimListenPort="9561" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_462.xml b/share/regions/config_462.xml
new file mode 100644
index 0000000..1d89c58
--- /dev/null
+++ b/share/regions/config_462.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ce" SimName="462" SimLocationX="1014" SimLocationY="1014" Datastore="store_462_x14_y28.yap" SimListenPort="9562" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_463.xml b/share/regions/config_463.xml
new file mode 100644
index 0000000..55c5dfd
--- /dev/null
+++ b/share/regions/config_463.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1cf" SimName="463" SimLocationX="1015" SimLocationY="1014" Datastore="store_463_x15_y28.yap" SimListenPort="9563" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_464.xml b/share/regions/config_464.xml
new file mode 100644
index 0000000..0831e89
--- /dev/null
+++ b/share/regions/config_464.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d0" SimName="464" SimLocationX="1016" SimLocationY="1014" Datastore="store_464_x00_y29.yap" SimListenPort="9564" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_465.xml b/share/regions/config_465.xml
new file mode 100644
index 0000000..0f5c04b
--- /dev/null
+++ b/share/regions/config_465.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d1" SimName="465" SimLocationX="1017" SimLocationY="1014" Datastore="store_465_x01_y29.yap" SimListenPort="9565" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_466.xml b/share/regions/config_466.xml
new file mode 100644
index 0000000..6ae69b0
--- /dev/null
+++ b/share/regions/config_466.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d2" SimName="466" SimLocationX="1018" SimLocationY="1014" Datastore="store_466_x02_y29.yap" SimListenPort="9566" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_467.xml b/share/regions/config_467.xml
new file mode 100644
index 0000000..b9904a3
--- /dev/null
+++ b/share/regions/config_467.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d3" SimName="467" SimLocationX="1019" SimLocationY="1014" Datastore="store_467_x03_y29.yap" SimListenPort="9567" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_468.xml b/share/regions/config_468.xml
new file mode 100644
index 0000000..94ed66a
--- /dev/null
+++ b/share/regions/config_468.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d4" SimName="468" SimLocationX="1020" SimLocationY="1014" Datastore="store_468_x04_y29.yap" SimListenPort="9568" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_469.xml b/share/regions/config_469.xml
new file mode 100644
index 0000000..5ac092e
--- /dev/null
+++ b/share/regions/config_469.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d5" SimName="469" SimLocationX="1021" SimLocationY="1014" Datastore="store_469_x05_y29.yap" SimListenPort="9569" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_47.xml b/share/regions/config_47.xml
new file mode 100644
index 0000000..b0efa2b
--- /dev/null
+++ b/share/regions/config_47.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf02f" SimName="47" SimLocationX="1015" SimLocationY="1001" Datastore="store_47_x15_y02.yap" SimListenPort="9147" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y13.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_470.xml b/share/regions/config_470.xml
new file mode 100644
index 0000000..c1d592a
--- /dev/null
+++ b/share/regions/config_470.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d6" SimName="470" SimLocationX="1022" SimLocationY="1014" Datastore="store_470_x06_y29.yap" SimListenPort="9570" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_471.xml b/share/regions/config_471.xml
new file mode 100644
index 0000000..4a53f11
--- /dev/null
+++ b/share/regions/config_471.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d7" SimName="471" SimLocationX="1023" SimLocationY="1014" Datastore="store_471_x07_y29.yap" SimListenPort="9571" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_472.xml b/share/regions/config_472.xml
new file mode 100644
index 0000000..e5e387c
--- /dev/null
+++ b/share/regions/config_472.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d8" SimName="472" SimLocationX="1024" SimLocationY="1014" Datastore="store_472_x08_y29.yap" SimListenPort="9572" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_473.xml b/share/regions/config_473.xml
new file mode 100644
index 0000000..4303c15
--- /dev/null
+++ b/share/regions/config_473.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1d9" SimName="473" SimLocationX="1025" SimLocationY="1014" Datastore="store_473_x09_y29.yap" SimListenPort="9573" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_474.xml b/share/regions/config_474.xml
new file mode 100644
index 0000000..77c264f
--- /dev/null
+++ b/share/regions/config_474.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1da" SimName="474" SimLocationX="1026" SimLocationY="1014" Datastore="store_474_x10_y29.yap" SimListenPort="9574" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_475.xml b/share/regions/config_475.xml
new file mode 100644
index 0000000..d1d660f
--- /dev/null
+++ b/share/regions/config_475.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1db" SimName="475" SimLocationX="1027" SimLocationY="1014" Datastore="store_475_x11_y29.yap" SimListenPort="9575" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_476.xml b/share/regions/config_476.xml
new file mode 100644
index 0000000..7daed61
--- /dev/null
+++ b/share/regions/config_476.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1dc" SimName="476" SimLocationX="1028" SimLocationY="1014" Datastore="store_476_x12_y29.yap" SimListenPort="9576" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_477.xml b/share/regions/config_477.xml
new file mode 100644
index 0000000..d146e10
--- /dev/null
+++ b/share/regions/config_477.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1dd" SimName="477" SimLocationX="1029" SimLocationY="1014" Datastore="store_477_x13_y29.yap" SimListenPort="9577" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_478.xml b/share/regions/config_478.xml
new file mode 100644
index 0000000..e1d4b30
--- /dev/null
+++ b/share/regions/config_478.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1de" SimName="478" SimLocationX="1030" SimLocationY="1014" Datastore="store_478_x14_y29.yap" SimListenPort="9578" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_479.xml b/share/regions/config_479.xml
new file mode 100644
index 0000000..8b8d0a8
--- /dev/null
+++ b/share/regions/config_479.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1df" SimName="479" SimLocationX="1031" SimLocationY="1014" Datastore="store_479_x15_y29.yap" SimListenPort="9579" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-14.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_48.xml b/share/regions/config_48.xml
new file mode 100644
index 0000000..ce31b09
--- /dev/null
+++ b/share/regions/config_48.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf030" SimName="48" SimLocationX="1016" SimLocationY="1001" Datastore="store_48_x00_y03.yap" SimListenPort="9148" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_480.xml b/share/regions/config_480.xml
new file mode 100644
index 0000000..b6fecdc
--- /dev/null
+++ b/share/regions/config_480.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e0" SimName="480" SimLocationX="1000" SimLocationY="1015" Datastore="store_480_x00_y30.yap" SimListenPort="9580" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_481.xml b/share/regions/config_481.xml
new file mode 100644
index 0000000..ec438e5
--- /dev/null
+++ b/share/regions/config_481.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e1" SimName="481" SimLocationX="1001" SimLocationY="1015" Datastore="store_481_x01_y30.yap" SimListenPort="9581" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_482.xml b/share/regions/config_482.xml
new file mode 100644
index 0000000..c684968
--- /dev/null
+++ b/share/regions/config_482.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e2" SimName="482" SimLocationX="1002" SimLocationY="1015" Datastore="store_482_x02_y30.yap" SimListenPort="9582" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_483.xml b/share/regions/config_483.xml
new file mode 100644
index 0000000..a22c870
--- /dev/null
+++ b/share/regions/config_483.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e3" SimName="483" SimLocationX="1003" SimLocationY="1015" Datastore="store_483_x03_y30.yap" SimListenPort="9583" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_484.xml b/share/regions/config_484.xml
new file mode 100644
index 0000000..27d3e36
--- /dev/null
+++ b/share/regions/config_484.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e4" SimName="484" SimLocationX="1004" SimLocationY="1015" Datastore="store_484_x04_y30.yap" SimListenPort="9584" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_485.xml b/share/regions/config_485.xml
new file mode 100644
index 0000000..cd85329
--- /dev/null
+++ b/share/regions/config_485.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e5" SimName="485" SimLocationX="1005" SimLocationY="1015" Datastore="store_485_x05_y30.yap" SimListenPort="9585" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_486.xml b/share/regions/config_486.xml
new file mode 100644
index 0000000..4c6667a
--- /dev/null
+++ b/share/regions/config_486.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e6" SimName="486" SimLocationX="1006" SimLocationY="1015" Datastore="store_486_x06_y30.yap" SimListenPort="9586" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_487.xml b/share/regions/config_487.xml
new file mode 100644
index 0000000..96a2da7
--- /dev/null
+++ b/share/regions/config_487.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e7" SimName="487" SimLocationX="1007" SimLocationY="1015" Datastore="store_487_x07_y30.yap" SimListenPort="9587" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_488.xml b/share/regions/config_488.xml
new file mode 100644
index 0000000..f8e7e04
--- /dev/null
+++ b/share/regions/config_488.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e8" SimName="488" SimLocationX="1008" SimLocationY="1015" Datastore="store_488_x08_y30.yap" SimListenPort="9588" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_489.xml b/share/regions/config_489.xml
new file mode 100644
index 0000000..1209ee0
--- /dev/null
+++ b/share/regions/config_489.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1e9" SimName="489" SimLocationX="1009" SimLocationY="1015" Datastore="store_489_x09_y30.yap" SimListenPort="9589" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_49.xml b/share/regions/config_49.xml
new file mode 100644
index 0000000..4c775f0
--- /dev/null
+++ b/share/regions/config_49.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf031" SimName="49" SimLocationX="1017" SimLocationY="1001" Datastore="store_49_x01_y03.yap" SimListenPort="9149" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_490.xml b/share/regions/config_490.xml
new file mode 100644
index 0000000..4f125ac
--- /dev/null
+++ b/share/regions/config_490.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ea" SimName="490" SimLocationX="1010" SimLocationY="1015" Datastore="store_490_x10_y30.yap" SimListenPort="9590" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_491.xml b/share/regions/config_491.xml
new file mode 100644
index 0000000..7ed67c4
--- /dev/null
+++ b/share/regions/config_491.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1eb" SimName="491" SimLocationX="1011" SimLocationY="1015" Datastore="store_491_x11_y30.yap" SimListenPort="9591" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_492.xml b/share/regions/config_492.xml
new file mode 100644
index 0000000..8a8bbaa
--- /dev/null
+++ b/share/regions/config_492.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ec" SimName="492" SimLocationX="1012" SimLocationY="1015" Datastore="store_492_x12_y30.yap" SimListenPort="9592" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_493.xml b/share/regions/config_493.xml
new file mode 100644
index 0000000..b6238a3
--- /dev/null
+++ b/share/regions/config_493.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ed" SimName="493" SimLocationX="1013" SimLocationY="1015" Datastore="store_493_x13_y30.yap" SimListenPort="9593" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_494.xml b/share/regions/config_494.xml
new file mode 100644
index 0000000..2c4e400
--- /dev/null
+++ b/share/regions/config_494.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ee" SimName="494" SimLocationX="1014" SimLocationY="1015" Datastore="store_494_x14_y30.yap" SimListenPort="9594" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_495.xml b/share/regions/config_495.xml
new file mode 100644
index 0000000..f249907
--- /dev/null
+++ b/share/regions/config_495.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ef" SimName="495" SimLocationX="1015" SimLocationY="1015" Datastore="store_495_x15_y30.yap" SimListenPort="9595" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_496.xml b/share/regions/config_496.xml
new file mode 100644
index 0000000..c5870f2
--- /dev/null
+++ b/share/regions/config_496.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f0" SimName="496" SimLocationX="1016" SimLocationY="1015" Datastore="store_496_x00_y31.yap" SimListenPort="9596" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_497.xml b/share/regions/config_497.xml
new file mode 100644
index 0000000..efeeda6
--- /dev/null
+++ b/share/regions/config_497.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f1" SimName="497" SimLocationX="1017" SimLocationY="1015" Datastore="store_497_x01_y31.yap" SimListenPort="9597" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_498.xml b/share/regions/config_498.xml
new file mode 100644
index 0000000..257e3a4
--- /dev/null
+++ b/share/regions/config_498.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f2" SimName="498" SimLocationX="1018" SimLocationY="1015" Datastore="store_498_x02_y31.yap" SimListenPort="9598" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_499.xml b/share/regions/config_499.xml
new file mode 100644
index 0000000..b42f29b
--- /dev/null
+++ b/share/regions/config_499.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f3" SimName="499" SimLocationX="1019" SimLocationY="1015" Datastore="store_499_x03_y31.yap" SimListenPort="9599" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_5.xml b/share/regions/config_5.xml
new file mode 100644
index 0000000..b32cb4b
--- /dev/null
+++ b/share/regions/config_5.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf005" SimName="5" SimLocationX="1005" SimLocationY="1000" Datastore="store_5_x05_y00.yap" SimListenPort="9105" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_50.xml b/share/regions/config_50.xml
new file mode 100644
index 0000000..bd3138f
--- /dev/null
+++ b/share/regions/config_50.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf032" SimName="50" SimLocationX="1018" SimLocationY="1001" Datastore="store_50_x02_y03.yap" SimListenPort="9150" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_500.xml b/share/regions/config_500.xml
new file mode 100644
index 0000000..d272b8f
--- /dev/null
+++ b/share/regions/config_500.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f4" SimName="500" SimLocationX="1020" SimLocationY="1015" Datastore="store_500_x04_y31.yap" SimListenPort="9600" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_501.xml b/share/regions/config_501.xml
new file mode 100644
index 0000000..70701c3
--- /dev/null
+++ b/share/regions/config_501.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f5" SimName="501" SimLocationX="1021" SimLocationY="1015" Datastore="store_501_x05_y31.yap" SimListenPort="9601" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_502.xml b/share/regions/config_502.xml
new file mode 100644
index 0000000..f29d78f
--- /dev/null
+++ b/share/regions/config_502.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f6" SimName="502" SimLocationX="1022" SimLocationY="1015" Datastore="store_502_x06_y31.yap" SimListenPort="9602" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_503.xml b/share/regions/config_503.xml
new file mode 100644
index 0000000..fc27205
--- /dev/null
+++ b/share/regions/config_503.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f7" SimName="503" SimLocationX="1023" SimLocationY="1015" Datastore="store_503_x07_y31.yap" SimListenPort="9603" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_504.xml b/share/regions/config_504.xml
new file mode 100644
index 0000000..4324371
--- /dev/null
+++ b/share/regions/config_504.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f8" SimName="504" SimLocationX="1024" SimLocationY="1015" Datastore="store_504_x08_y31.yap" SimListenPort="9604" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_505.xml b/share/regions/config_505.xml
new file mode 100644
index 0000000..b5d7933
--- /dev/null
+++ b/share/regions/config_505.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1f9" SimName="505" SimLocationX="1025" SimLocationY="1015" Datastore="store_505_x09_y31.yap" SimListenPort="9605" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_506.xml b/share/regions/config_506.xml
new file mode 100644
index 0000000..9c34e60
--- /dev/null
+++ b/share/regions/config_506.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1fa" SimName="506" SimLocationX="1026" SimLocationY="1015" Datastore="store_506_x10_y31.yap" SimListenPort="9606" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_507.xml b/share/regions/config_507.xml
new file mode 100644
index 0000000..8cf3e32
--- /dev/null
+++ b/share/regions/config_507.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1fb" SimName="507" SimLocationX="1027" SimLocationY="1015" Datastore="store_507_x11_y31.yap" SimListenPort="9607" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_508.xml b/share/regions/config_508.xml
new file mode 100644
index 0000000..629dc2f
--- /dev/null
+++ b/share/regions/config_508.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1fc" SimName="508" SimLocationX="1028" SimLocationY="1015" Datastore="store_508_x12_y31.yap" SimListenPort="9608" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_509.xml b/share/regions/config_509.xml
new file mode 100644
index 0000000..f850296
--- /dev/null
+++ b/share/regions/config_509.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1fd" SimName="509" SimLocationX="1029" SimLocationY="1015" Datastore="store_509_x13_y31.yap" SimListenPort="9609" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_51.xml b/share/regions/config_51.xml
new file mode 100644
index 0000000..f40bd4e
--- /dev/null
+++ b/share/regions/config_51.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf033" SimName="51" SimLocationX="1019" SimLocationY="1001" Datastore="store_51_x03_y03.yap" SimListenPort="9151" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_510.xml b/share/regions/config_510.xml
new file mode 100644
index 0000000..84c7aa3
--- /dev/null
+++ b/share/regions/config_510.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1fe" SimName="510" SimLocationX="1030" SimLocationY="1015" Datastore="store_510_x14_y31.yap" SimListenPort="9610" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_511.xml b/share/regions/config_511.xml
new file mode 100644
index 0000000..e802fe9
--- /dev/null
+++ b/share/regions/config_511.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf1ff" SimName="511" SimLocationX="1031" SimLocationY="1015" Datastore="store_511_x15_y31.yap" SimListenPort="9611" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-16.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_512.xml b/share/regions/config_512.xml
new file mode 100644
index 0000000..2c7f382
--- /dev/null
+++ b/share/regions/config_512.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf200" SimName="512" SimLocationX="1000" SimLocationY="1016" Datastore="store_512_x00_y32.yap" SimListenPort="9612" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_513.xml b/share/regions/config_513.xml
new file mode 100644
index 0000000..3f8b78e
--- /dev/null
+++ b/share/regions/config_513.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf201" SimName="513" SimLocationX="1001" SimLocationY="1016" Datastore="store_513_x01_y32.yap" SimListenPort="9613" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_514.xml b/share/regions/config_514.xml
new file mode 100644
index 0000000..ce0b6c3
--- /dev/null
+++ b/share/regions/config_514.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf202" SimName="514" SimLocationX="1002" SimLocationY="1016" Datastore="store_514_x02_y32.yap" SimListenPort="9614" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_515.xml b/share/regions/config_515.xml
new file mode 100644
index 0000000..bbea25c
--- /dev/null
+++ b/share/regions/config_515.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf203" SimName="515" SimLocationX="1003" SimLocationY="1016" Datastore="store_515_x03_y32.yap" SimListenPort="9615" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_516.xml b/share/regions/config_516.xml
new file mode 100644
index 0000000..b71f9c9
--- /dev/null
+++ b/share/regions/config_516.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf204" SimName="516" SimLocationX="1004" SimLocationY="1016" Datastore="store_516_x04_y32.yap" SimListenPort="9616" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_517.xml b/share/regions/config_517.xml
new file mode 100644
index 0000000..6c113bd
--- /dev/null
+++ b/share/regions/config_517.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf205" SimName="517" SimLocationX="1005" SimLocationY="1016" Datastore="store_517_x05_y32.yap" SimListenPort="9617" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_518.xml b/share/regions/config_518.xml
new file mode 100644
index 0000000..0091020
--- /dev/null
+++ b/share/regions/config_518.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf206" SimName="518" SimLocationX="1006" SimLocationY="1016" Datastore="store_518_x06_y32.yap" SimListenPort="9618" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_519.xml b/share/regions/config_519.xml
new file mode 100644
index 0000000..deb4357
--- /dev/null
+++ b/share/regions/config_519.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf207" SimName="519" SimLocationX="1007" SimLocationY="1016" Datastore="store_519_x07_y32.yap" SimListenPort="9619" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_52.xml b/share/regions/config_52.xml
new file mode 100644
index 0000000..32b8f45
--- /dev/null
+++ b/share/regions/config_52.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf034" SimName="52" SimLocationX="1020" SimLocationY="1001" Datastore="store_52_x04_y03.yap" SimListenPort="9152" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_520.xml b/share/regions/config_520.xml
new file mode 100644
index 0000000..a6bbdfc
--- /dev/null
+++ b/share/regions/config_520.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf208" SimName="520" SimLocationX="1008" SimLocationY="1016" Datastore="store_520_x08_y32.yap" SimListenPort="9620" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_521.xml b/share/regions/config_521.xml
new file mode 100644
index 0000000..11bb267
--- /dev/null
+++ b/share/regions/config_521.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf209" SimName="521" SimLocationX="1009" SimLocationY="1016" Datastore="store_521_x09_y32.yap" SimListenPort="9621" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_522.xml b/share/regions/config_522.xml
new file mode 100644
index 0000000..4bd3d4c
--- /dev/null
+++ b/share/regions/config_522.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf20a" SimName="522" SimLocationX="1010" SimLocationY="1016" Datastore="store_522_x10_y32.yap" SimListenPort="9622" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_523.xml b/share/regions/config_523.xml
new file mode 100644
index 0000000..9b71352
--- /dev/null
+++ b/share/regions/config_523.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf20b" SimName="523" SimLocationX="1011" SimLocationY="1016" Datastore="store_523_x11_y32.yap" SimListenPort="9623" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_524.xml b/share/regions/config_524.xml
new file mode 100644
index 0000000..bdac61a
--- /dev/null
+++ b/share/regions/config_524.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf20c" SimName="524" SimLocationX="1012" SimLocationY="1016" Datastore="store_524_x12_y32.yap" SimListenPort="9624" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_525.xml b/share/regions/config_525.xml
new file mode 100644
index 0000000..4bffa37
--- /dev/null
+++ b/share/regions/config_525.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf20d" SimName="525" SimLocationX="1013" SimLocationY="1016" Datastore="store_525_x13_y32.yap" SimListenPort="9625" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_526.xml b/share/regions/config_526.xml
new file mode 100644
index 0000000..a85625e
--- /dev/null
+++ b/share/regions/config_526.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf20e" SimName="526" SimLocationX="1014" SimLocationY="1016" Datastore="store_526_x14_y32.yap" SimListenPort="9626" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_527.xml b/share/regions/config_527.xml
new file mode 100644
index 0000000..0ca64ea
--- /dev/null
+++ b/share/regions/config_527.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf20f" SimName="527" SimLocationX="1015" SimLocationY="1016" Datastore="store_527_x15_y32.yap" SimListenPort="9627" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-17.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_528.xml b/share/regions/config_528.xml
new file mode 100644
index 0000000..8bf8a53
--- /dev/null
+++ b/share/regions/config_528.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf210" SimName="528" SimLocationX="1016" SimLocationY="1016" Datastore="store_528_x00_y33.yap" SimListenPort="9628" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_529.xml b/share/regions/config_529.xml
new file mode 100644
index 0000000..d09b185
--- /dev/null
+++ b/share/regions/config_529.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf211" SimName="529" SimLocationX="1017" SimLocationY="1016" Datastore="store_529_x01_y33.yap" SimListenPort="9629" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_53.xml b/share/regions/config_53.xml
new file mode 100644
index 0000000..8ae55e1
--- /dev/null
+++ b/share/regions/config_53.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf035" SimName="53" SimLocationX="1021" SimLocationY="1001" Datastore="store_53_x05_y03.yap" SimListenPort="9153" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_530.xml b/share/regions/config_530.xml
new file mode 100644
index 0000000..aed5fbc
--- /dev/null
+++ b/share/regions/config_530.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf212" SimName="530" SimLocationX="1018" SimLocationY="1016" Datastore="store_530_x02_y33.yap" SimListenPort="9630" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_531.xml b/share/regions/config_531.xml
new file mode 100644
index 0000000..2ad352f
--- /dev/null
+++ b/share/regions/config_531.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf213" SimName="531" SimLocationX="1019" SimLocationY="1016" Datastore="store_531_x03_y33.yap" SimListenPort="9631" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_532.xml b/share/regions/config_532.xml
new file mode 100644
index 0000000..7650354
--- /dev/null
+++ b/share/regions/config_532.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf214" SimName="532" SimLocationX="1020" SimLocationY="1016" Datastore="store_532_x04_y33.yap" SimListenPort="9632" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_533.xml b/share/regions/config_533.xml
new file mode 100644
index 0000000..2bcfe71
--- /dev/null
+++ b/share/regions/config_533.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf215" SimName="533" SimLocationX="1021" SimLocationY="1016" Datastore="store_533_x05_y33.yap" SimListenPort="9633" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_534.xml b/share/regions/config_534.xml
new file mode 100644
index 0000000..2484ebc
--- /dev/null
+++ b/share/regions/config_534.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf216" SimName="534" SimLocationX="1022" SimLocationY="1016" Datastore="store_534_x06_y33.yap" SimListenPort="9634" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_535.xml b/share/regions/config_535.xml
new file mode 100644
index 0000000..c3310dd
--- /dev/null
+++ b/share/regions/config_535.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf217" SimName="535" SimLocationX="1023" SimLocationY="1016" Datastore="store_535_x07_y33.yap" SimListenPort="9635" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_536.xml b/share/regions/config_536.xml
new file mode 100644
index 0000000..a2733cf
--- /dev/null
+++ b/share/regions/config_536.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf218" SimName="536" SimLocationX="1024" SimLocationY="1016" Datastore="store_536_x08_y33.yap" SimListenPort="9636" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_537.xml b/share/regions/config_537.xml
new file mode 100644
index 0000000..fb04dc7
--- /dev/null
+++ b/share/regions/config_537.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf219" SimName="537" SimLocationX="1025" SimLocationY="1016" Datastore="store_537_x09_y33.yap" SimListenPort="9637" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_538.xml b/share/regions/config_538.xml
new file mode 100644
index 0000000..5c027f5
--- /dev/null
+++ b/share/regions/config_538.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf21a" SimName="538" SimLocationX="1026" SimLocationY="1016" Datastore="store_538_x10_y33.yap" SimListenPort="9638" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_539.xml b/share/regions/config_539.xml
new file mode 100644
index 0000000..6f892e1
--- /dev/null
+++ b/share/regions/config_539.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf21b" SimName="539" SimLocationX="1027" SimLocationY="1016" Datastore="store_539_x11_y33.yap" SimListenPort="9639" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_54.xml b/share/regions/config_54.xml
new file mode 100644
index 0000000..79e56bf
--- /dev/null
+++ b/share/regions/config_54.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf036" SimName="54" SimLocationX="1022" SimLocationY="1001" Datastore="store_54_x06_y03.yap" SimListenPort="9154" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_540.xml b/share/regions/config_540.xml
new file mode 100644
index 0000000..f9a02ba
--- /dev/null
+++ b/share/regions/config_540.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf21c" SimName="540" SimLocationX="1028" SimLocationY="1016" Datastore="store_540_x12_y33.yap" SimListenPort="9640" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_541.xml b/share/regions/config_541.xml
new file mode 100644
index 0000000..0f16ce2
--- /dev/null
+++ b/share/regions/config_541.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf21d" SimName="541" SimLocationX="1029" SimLocationY="1016" Datastore="store_541_x13_y33.yap" SimListenPort="9641" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_542.xml b/share/regions/config_542.xml
new file mode 100644
index 0000000..0d2800b
--- /dev/null
+++ b/share/regions/config_542.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf21e" SimName="542" SimLocationX="1030" SimLocationY="1016" Datastore="store_542_x14_y33.yap" SimListenPort="9642" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_543.xml b/share/regions/config_543.xml
new file mode 100644
index 0000000..e523447
--- /dev/null
+++ b/share/regions/config_543.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf21f" SimName="543" SimLocationX="1031" SimLocationY="1016" Datastore="store_543_x15_y33.yap" SimListenPort="9643" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-18.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_544.xml b/share/regions/config_544.xml
new file mode 100644
index 0000000..e778d54
--- /dev/null
+++ b/share/regions/config_544.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf220" SimName="544" SimLocationX="1000" SimLocationY="1017" Datastore="store_544_x00_y34.yap" SimListenPort="9644" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_545.xml b/share/regions/config_545.xml
new file mode 100644
index 0000000..d3361b2
--- /dev/null
+++ b/share/regions/config_545.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf221" SimName="545" SimLocationX="1001" SimLocationY="1017" Datastore="store_545_x01_y34.yap" SimListenPort="9645" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_546.xml b/share/regions/config_546.xml
new file mode 100644
index 0000000..4421558
--- /dev/null
+++ b/share/regions/config_546.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf222" SimName="546" SimLocationX="1002" SimLocationY="1017" Datastore="store_546_x02_y34.yap" SimListenPort="9646" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_547.xml b/share/regions/config_547.xml
new file mode 100644
index 0000000..90ec378
--- /dev/null
+++ b/share/regions/config_547.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf223" SimName="547" SimLocationX="1003" SimLocationY="1017" Datastore="store_547_x03_y34.yap" SimListenPort="9647" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_548.xml b/share/regions/config_548.xml
new file mode 100644
index 0000000..c7c5ab9
--- /dev/null
+++ b/share/regions/config_548.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf224" SimName="548" SimLocationX="1004" SimLocationY="1017" Datastore="store_548_x04_y34.yap" SimListenPort="9648" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_549.xml b/share/regions/config_549.xml
new file mode 100644
index 0000000..23f426f
--- /dev/null
+++ b/share/regions/config_549.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf225" SimName="549" SimLocationX="1005" SimLocationY="1017" Datastore="store_549_x05_y34.yap" SimListenPort="9649" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_55.xml b/share/regions/config_55.xml
new file mode 100644
index 0000000..1c95a26
--- /dev/null
+++ b/share/regions/config_55.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf037" SimName="55" SimLocationX="1023" SimLocationY="1001" Datastore="store_55_x07_y03.yap" SimListenPort="9155" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_550.xml b/share/regions/config_550.xml
new file mode 100644
index 0000000..9200dde
--- /dev/null
+++ b/share/regions/config_550.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf226" SimName="550" SimLocationX="1006" SimLocationY="1017" Datastore="store_550_x06_y34.yap" SimListenPort="9650" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_551.xml b/share/regions/config_551.xml
new file mode 100644
index 0000000..b0afa2e
--- /dev/null
+++ b/share/regions/config_551.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf227" SimName="551" SimLocationX="1007" SimLocationY="1017" Datastore="store_551_x07_y34.yap" SimListenPort="9651" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_552.xml b/share/regions/config_552.xml
new file mode 100644
index 0000000..a2ff8ce
--- /dev/null
+++ b/share/regions/config_552.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf228" SimName="552" SimLocationX="1008" SimLocationY="1017" Datastore="store_552_x08_y34.yap" SimListenPort="9652" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_553.xml b/share/regions/config_553.xml
new file mode 100644
index 0000000..504c70b
--- /dev/null
+++ b/share/regions/config_553.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf229" SimName="553" SimLocationX="1009" SimLocationY="1017" Datastore="store_553_x09_y34.yap" SimListenPort="9653" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_554.xml b/share/regions/config_554.xml
new file mode 100644
index 0000000..0f07c23
--- /dev/null
+++ b/share/regions/config_554.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf22a" SimName="554" SimLocationX="1010" SimLocationY="1017" Datastore="store_554_x10_y34.yap" SimListenPort="9654" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_555.xml b/share/regions/config_555.xml
new file mode 100644
index 0000000..780a240
--- /dev/null
+++ b/share/regions/config_555.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf22b" SimName="555" SimLocationX="1011" SimLocationY="1017" Datastore="store_555_x11_y34.yap" SimListenPort="9655" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_556.xml b/share/regions/config_556.xml
new file mode 100644
index 0000000..cc01dff
--- /dev/null
+++ b/share/regions/config_556.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf22c" SimName="556" SimLocationX="1012" SimLocationY="1017" Datastore="store_556_x12_y34.yap" SimListenPort="9656" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_557.xml b/share/regions/config_557.xml
new file mode 100644
index 0000000..af57ec2
--- /dev/null
+++ b/share/regions/config_557.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf22d" SimName="557" SimLocationX="1013" SimLocationY="1017" Datastore="store_557_x13_y34.yap" SimListenPort="9657" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_558.xml b/share/regions/config_558.xml
new file mode 100644
index 0000000..f34c431
--- /dev/null
+++ b/share/regions/config_558.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf22e" SimName="558" SimLocationX="1014" SimLocationY="1017" Datastore="store_558_x14_y34.yap" SimListenPort="9658" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_559.xml b/share/regions/config_559.xml
new file mode 100644
index 0000000..11ba4a5
--- /dev/null
+++ b/share/regions/config_559.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf22f" SimName="559" SimLocationX="1015" SimLocationY="1017" Datastore="store_559_x15_y34.yap" SimListenPort="9659" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-19.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_56.xml b/share/regions/config_56.xml
new file mode 100644
index 0000000..22d3547
--- /dev/null
+++ b/share/regions/config_56.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf038" SimName="56" SimLocationX="1024" SimLocationY="1001" Datastore="store_56_x08_y03.yap" SimListenPort="9156" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_560.xml b/share/regions/config_560.xml
new file mode 100644
index 0000000..62d856b
--- /dev/null
+++ b/share/regions/config_560.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf230" SimName="560" SimLocationX="1016" SimLocationY="1017" Datastore="store_560_x00_y35.yap" SimListenPort="9660" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_561.xml b/share/regions/config_561.xml
new file mode 100644
index 0000000..823f3aa
--- /dev/null
+++ b/share/regions/config_561.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf231" SimName="561" SimLocationX="1017" SimLocationY="1017" Datastore="store_561_x01_y35.yap" SimListenPort="9661" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_562.xml b/share/regions/config_562.xml
new file mode 100644
index 0000000..c364231
--- /dev/null
+++ b/share/regions/config_562.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf232" SimName="562" SimLocationX="1018" SimLocationY="1017" Datastore="store_562_x02_y35.yap" SimListenPort="9662" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_563.xml b/share/regions/config_563.xml
new file mode 100644
index 0000000..26e60c7
--- /dev/null
+++ b/share/regions/config_563.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf233" SimName="563" SimLocationX="1019" SimLocationY="1017" Datastore="store_563_x03_y35.yap" SimListenPort="9663" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_564.xml b/share/regions/config_564.xml
new file mode 100644
index 0000000..98f671b
--- /dev/null
+++ b/share/regions/config_564.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf234" SimName="564" SimLocationX="1020" SimLocationY="1017" Datastore="store_564_x04_y35.yap" SimListenPort="9664" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_565.xml b/share/regions/config_565.xml
new file mode 100644
index 0000000..40877b1
--- /dev/null
+++ b/share/regions/config_565.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf235" SimName="565" SimLocationX="1021" SimLocationY="1017" Datastore="store_565_x05_y35.yap" SimListenPort="9665" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_566.xml b/share/regions/config_566.xml
new file mode 100644
index 0000000..efeaf26
--- /dev/null
+++ b/share/regions/config_566.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf236" SimName="566" SimLocationX="1022" SimLocationY="1017" Datastore="store_566_x06_y35.yap" SimListenPort="9666" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_567.xml b/share/regions/config_567.xml
new file mode 100644
index 0000000..5937c5f
--- /dev/null
+++ b/share/regions/config_567.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf237" SimName="567" SimLocationX="1023" SimLocationY="1017" Datastore="store_567_x07_y35.yap" SimListenPort="9667" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_568.xml b/share/regions/config_568.xml
new file mode 100644
index 0000000..62a019e
--- /dev/null
+++ b/share/regions/config_568.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf238" SimName="568" SimLocationX="1024" SimLocationY="1017" Datastore="store_568_x08_y35.yap" SimListenPort="9668" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_569.xml b/share/regions/config_569.xml
new file mode 100644
index 0000000..e8e2d4c
--- /dev/null
+++ b/share/regions/config_569.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf239" SimName="569" SimLocationX="1025" SimLocationY="1017" Datastore="store_569_x09_y35.yap" SimListenPort="9669" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_57.xml b/share/regions/config_57.xml
new file mode 100644
index 0000000..57366a8
--- /dev/null
+++ b/share/regions/config_57.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf039" SimName="57" SimLocationX="1025" SimLocationY="1001" Datastore="store_57_x09_y03.yap" SimListenPort="9157" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_570.xml b/share/regions/config_570.xml
new file mode 100644
index 0000000..4f71090
--- /dev/null
+++ b/share/regions/config_570.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf23a" SimName="570" SimLocationX="1026" SimLocationY="1017" Datastore="store_570_x10_y35.yap" SimListenPort="9670" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_571.xml b/share/regions/config_571.xml
new file mode 100644
index 0000000..4aee950
--- /dev/null
+++ b/share/regions/config_571.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf23b" SimName="571" SimLocationX="1027" SimLocationY="1017" Datastore="store_571_x11_y35.yap" SimListenPort="9671" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_572.xml b/share/regions/config_572.xml
new file mode 100644
index 0000000..fb784b8
--- /dev/null
+++ b/share/regions/config_572.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf23c" SimName="572" SimLocationX="1028" SimLocationY="1017" Datastore="store_572_x12_y35.yap" SimListenPort="9672" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_573.xml b/share/regions/config_573.xml
new file mode 100644
index 0000000..ecfdb93
--- /dev/null
+++ b/share/regions/config_573.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf23d" SimName="573" SimLocationX="1029" SimLocationY="1017" Datastore="store_573_x13_y35.yap" SimListenPort="9673" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_574.xml b/share/regions/config_574.xml
new file mode 100644
index 0000000..4ac455d
--- /dev/null
+++ b/share/regions/config_574.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf23e" SimName="574" SimLocationX="1030" SimLocationY="1017" Datastore="store_574_x14_y35.yap" SimListenPort="9674" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_575.xml b/share/regions/config_575.xml
new file mode 100644
index 0000000..2dce467
--- /dev/null
+++ b/share/regions/config_575.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf23f" SimName="575" SimLocationX="1031" SimLocationY="1017" Datastore="store_575_x15_y35.yap" SimListenPort="9675" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-20.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_576.xml b/share/regions/config_576.xml
new file mode 100644
index 0000000..f870dcd
--- /dev/null
+++ b/share/regions/config_576.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf240" SimName="576" SimLocationX="1000" SimLocationY="1018" Datastore="store_576_x00_y36.yap" SimListenPort="9676" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_577.xml b/share/regions/config_577.xml
new file mode 100644
index 0000000..349d03b
--- /dev/null
+++ b/share/regions/config_577.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf241" SimName="577" SimLocationX="1001" SimLocationY="1018" Datastore="store_577_x01_y36.yap" SimListenPort="9677" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_578.xml b/share/regions/config_578.xml
new file mode 100644
index 0000000..eebe8bb
--- /dev/null
+++ b/share/regions/config_578.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf242" SimName="578" SimLocationX="1002" SimLocationY="1018" Datastore="store_578_x02_y36.yap" SimListenPort="9678" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_579.xml b/share/regions/config_579.xml
new file mode 100644
index 0000000..5970a14
--- /dev/null
+++ b/share/regions/config_579.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf243" SimName="579" SimLocationX="1003" SimLocationY="1018" Datastore="store_579_x03_y36.yap" SimListenPort="9679" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_58.xml b/share/regions/config_58.xml
new file mode 100644
index 0000000..2e8febd
--- /dev/null
+++ b/share/regions/config_58.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf03a" SimName="58" SimLocationX="1026" SimLocationY="1001" Datastore="store_58_x10_y03.yap" SimListenPort="9158" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_580.xml b/share/regions/config_580.xml
new file mode 100644
index 0000000..ee93b09
--- /dev/null
+++ b/share/regions/config_580.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf244" SimName="580" SimLocationX="1004" SimLocationY="1018" Datastore="store_580_x04_y36.yap" SimListenPort="9680" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_581.xml b/share/regions/config_581.xml
new file mode 100644
index 0000000..3d73d61
--- /dev/null
+++ b/share/regions/config_581.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf245" SimName="581" SimLocationX="1005" SimLocationY="1018" Datastore="store_581_x05_y36.yap" SimListenPort="9681" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_582.xml b/share/regions/config_582.xml
new file mode 100644
index 0000000..98f6b4f
--- /dev/null
+++ b/share/regions/config_582.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf246" SimName="582" SimLocationX="1006" SimLocationY="1018" Datastore="store_582_x06_y36.yap" SimListenPort="9682" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_583.xml b/share/regions/config_583.xml
new file mode 100644
index 0000000..e625c3e
--- /dev/null
+++ b/share/regions/config_583.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf247" SimName="583" SimLocationX="1007" SimLocationY="1018" Datastore="store_583_x07_y36.yap" SimListenPort="9683" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_584.xml b/share/regions/config_584.xml
new file mode 100644
index 0000000..5da7869
--- /dev/null
+++ b/share/regions/config_584.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf248" SimName="584" SimLocationX="1008" SimLocationY="1018" Datastore="store_584_x08_y36.yap" SimListenPort="9684" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_585.xml b/share/regions/config_585.xml
new file mode 100644
index 0000000..0d989a8
--- /dev/null
+++ b/share/regions/config_585.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf249" SimName="585" SimLocationX="1009" SimLocationY="1018" Datastore="store_585_x09_y36.yap" SimListenPort="9685" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_586.xml b/share/regions/config_586.xml
new file mode 100644
index 0000000..17941ae
--- /dev/null
+++ b/share/regions/config_586.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf24a" SimName="586" SimLocationX="1010" SimLocationY="1018" Datastore="store_586_x10_y36.yap" SimListenPort="9686" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_587.xml b/share/regions/config_587.xml
new file mode 100644
index 0000000..dd191d1
--- /dev/null
+++ b/share/regions/config_587.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf24b" SimName="587" SimLocationX="1011" SimLocationY="1018" Datastore="store_587_x11_y36.yap" SimListenPort="9687" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_588.xml b/share/regions/config_588.xml
new file mode 100644
index 0000000..c8e93b2
--- /dev/null
+++ b/share/regions/config_588.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf24c" SimName="588" SimLocationX="1012" SimLocationY="1018" Datastore="store_588_x12_y36.yap" SimListenPort="9688" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_589.xml b/share/regions/config_589.xml
new file mode 100644
index 0000000..bb65f6c
--- /dev/null
+++ b/share/regions/config_589.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf24d" SimName="589" SimLocationX="1013" SimLocationY="1018" Datastore="store_589_x13_y36.yap" SimListenPort="9689" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_59.xml b/share/regions/config_59.xml
new file mode 100644
index 0000000..5c5b754
--- /dev/null
+++ b/share/regions/config_59.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf03b" SimName="59" SimLocationX="1027" SimLocationY="1001" Datastore="store_59_x11_y03.yap" SimListenPort="9159" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_590.xml b/share/regions/config_590.xml
new file mode 100644
index 0000000..82bf00d
--- /dev/null
+++ b/share/regions/config_590.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf24e" SimName="590" SimLocationX="1014" SimLocationY="1018" Datastore="store_590_x14_y36.yap" SimListenPort="9690" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_591.xml b/share/regions/config_591.xml
new file mode 100644
index 0000000..3fb37d4
--- /dev/null
+++ b/share/regions/config_591.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf24f" SimName="591" SimLocationX="1015" SimLocationY="1018" Datastore="store_591_x15_y36.yap" SimListenPort="9691" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-21.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_592.xml b/share/regions/config_592.xml
new file mode 100644
index 0000000..0ffdab8
--- /dev/null
+++ b/share/regions/config_592.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf250" SimName="592" SimLocationX="1016" SimLocationY="1018" Datastore="store_592_x00_y37.yap" SimListenPort="9692" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_593.xml b/share/regions/config_593.xml
new file mode 100644
index 0000000..3e02f70
--- /dev/null
+++ b/share/regions/config_593.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf251" SimName="593" SimLocationX="1017" SimLocationY="1018" Datastore="store_593_x01_y37.yap" SimListenPort="9693" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_594.xml b/share/regions/config_594.xml
new file mode 100644
index 0000000..e75d997
--- /dev/null
+++ b/share/regions/config_594.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf252" SimName="594" SimLocationX="1018" SimLocationY="1018" Datastore="store_594_x02_y37.yap" SimListenPort="9694" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_595.xml b/share/regions/config_595.xml
new file mode 100644
index 0000000..57a58da
--- /dev/null
+++ b/share/regions/config_595.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf253" SimName="595" SimLocationX="1019" SimLocationY="1018" Datastore="store_595_x03_y37.yap" SimListenPort="9695" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_596.xml b/share/regions/config_596.xml
new file mode 100644
index 0000000..0a4f07f
--- /dev/null
+++ b/share/regions/config_596.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf254" SimName="596" SimLocationX="1020" SimLocationY="1018" Datastore="store_596_x04_y37.yap" SimListenPort="9696" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_597.xml b/share/regions/config_597.xml
new file mode 100644
index 0000000..1d74ae4
--- /dev/null
+++ b/share/regions/config_597.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf255" SimName="597" SimLocationX="1021" SimLocationY="1018" Datastore="store_597_x05_y37.yap" SimListenPort="9697" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_598.xml b/share/regions/config_598.xml
new file mode 100644
index 0000000..933d93d
--- /dev/null
+++ b/share/regions/config_598.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf256" SimName="598" SimLocationX="1022" SimLocationY="1018" Datastore="store_598_x06_y37.yap" SimListenPort="9698" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_599.xml b/share/regions/config_599.xml
new file mode 100644
index 0000000..4ed64d0
--- /dev/null
+++ b/share/regions/config_599.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf257" SimName="599" SimLocationX="1023" SimLocationY="1018" Datastore="store_599_x07_y37.yap" SimListenPort="9699" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_6.xml b/share/regions/config_6.xml
new file mode 100644
index 0000000..e5a52ac
--- /dev/null
+++ b/share/regions/config_6.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf006" SimName="6" SimLocationX="1006" SimLocationY="1000" Datastore="store_6_x06_y00.yap" SimListenPort="9106" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_60.xml b/share/regions/config_60.xml
new file mode 100644
index 0000000..8159d99
--- /dev/null
+++ b/share/regions/config_60.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf03c" SimName="60" SimLocationX="1028" SimLocationY="1001" Datastore="store_60_x12_y03.yap" SimListenPort="9160" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_600.xml b/share/regions/config_600.xml
new file mode 100644
index 0000000..1fd886e
--- /dev/null
+++ b/share/regions/config_600.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf258" SimName="600" SimLocationX="1024" SimLocationY="1018" Datastore="store_600_x08_y37.yap" SimListenPort="9700" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_601.xml b/share/regions/config_601.xml
new file mode 100644
index 0000000..e5ccd9d
--- /dev/null
+++ b/share/regions/config_601.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf259" SimName="601" SimLocationX="1025" SimLocationY="1018" Datastore="store_601_x09_y37.yap" SimListenPort="9701" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_602.xml b/share/regions/config_602.xml
new file mode 100644
index 0000000..97ebf22
--- /dev/null
+++ b/share/regions/config_602.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf25a" SimName="602" SimLocationX="1026" SimLocationY="1018" Datastore="store_602_x10_y37.yap" SimListenPort="9702" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_603.xml b/share/regions/config_603.xml
new file mode 100644
index 0000000..c4abec1
--- /dev/null
+++ b/share/regions/config_603.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf25b" SimName="603" SimLocationX="1027" SimLocationY="1018" Datastore="store_603_x11_y37.yap" SimListenPort="9703" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_604.xml b/share/regions/config_604.xml
new file mode 100644
index 0000000..f8fb610
--- /dev/null
+++ b/share/regions/config_604.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf25c" SimName="604" SimLocationX="1028" SimLocationY="1018" Datastore="store_604_x12_y37.yap" SimListenPort="9704" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_605.xml b/share/regions/config_605.xml
new file mode 100644
index 0000000..9fe0d84
--- /dev/null
+++ b/share/regions/config_605.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf25d" SimName="605" SimLocationX="1029" SimLocationY="1018" Datastore="store_605_x13_y37.yap" SimListenPort="9705" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_606.xml b/share/regions/config_606.xml
new file mode 100644
index 0000000..221310d
--- /dev/null
+++ b/share/regions/config_606.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf25e" SimName="606" SimLocationX="1030" SimLocationY="1018" Datastore="store_606_x14_y37.yap" SimListenPort="9706" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_607.xml b/share/regions/config_607.xml
new file mode 100644
index 0000000..77e16e4
--- /dev/null
+++ b/share/regions/config_607.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf25f" SimName="607" SimLocationX="1031" SimLocationY="1018" Datastore="store_607_x15_y37.yap" SimListenPort="9707" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-22.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_608.xml b/share/regions/config_608.xml
new file mode 100644
index 0000000..2e75ba6
--- /dev/null
+++ b/share/regions/config_608.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf260" SimName="608" SimLocationX="1000" SimLocationY="1019" Datastore="store_608_x00_y38.yap" SimListenPort="9708" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_609.xml b/share/regions/config_609.xml
new file mode 100644
index 0000000..232d072
--- /dev/null
+++ b/share/regions/config_609.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf261" SimName="609" SimLocationX="1001" SimLocationY="1019" Datastore="store_609_x01_y38.yap" SimListenPort="9709" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_61.xml b/share/regions/config_61.xml
new file mode 100644
index 0000000..55a8c64
--- /dev/null
+++ b/share/regions/config_61.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf03d" SimName="61" SimLocationX="1029" SimLocationY="1001" Datastore="store_61_x13_y03.yap" SimListenPort="9161" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_610.xml b/share/regions/config_610.xml
new file mode 100644
index 0000000..f0bc96b
--- /dev/null
+++ b/share/regions/config_610.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf262" SimName="610" SimLocationX="1002" SimLocationY="1019" Datastore="store_610_x02_y38.yap" SimListenPort="9710" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_611.xml b/share/regions/config_611.xml
new file mode 100644
index 0000000..e6340c4
--- /dev/null
+++ b/share/regions/config_611.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf263" SimName="611" SimLocationX="1003" SimLocationY="1019" Datastore="store_611_x03_y38.yap" SimListenPort="9711" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_612.xml b/share/regions/config_612.xml
new file mode 100644
index 0000000..f233f89
--- /dev/null
+++ b/share/regions/config_612.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf264" SimName="612" SimLocationX="1004" SimLocationY="1019" Datastore="store_612_x04_y38.yap" SimListenPort="9712" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_613.xml b/share/regions/config_613.xml
new file mode 100644
index 0000000..ec6ae40
--- /dev/null
+++ b/share/regions/config_613.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf265" SimName="613" SimLocationX="1005" SimLocationY="1019" Datastore="store_613_x05_y38.yap" SimListenPort="9713" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_614.xml b/share/regions/config_614.xml
new file mode 100644
index 0000000..4a6eb03
--- /dev/null
+++ b/share/regions/config_614.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf266" SimName="614" SimLocationX="1006" SimLocationY="1019" Datastore="store_614_x06_y38.yap" SimListenPort="9714" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_615.xml b/share/regions/config_615.xml
new file mode 100644
index 0000000..dc4c2f9
--- /dev/null
+++ b/share/regions/config_615.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf267" SimName="615" SimLocationX="1007" SimLocationY="1019" Datastore="store_615_x07_y38.yap" SimListenPort="9715" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_616.xml b/share/regions/config_616.xml
new file mode 100644
index 0000000..34ce6d6
--- /dev/null
+++ b/share/regions/config_616.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf268" SimName="616" SimLocationX="1008" SimLocationY="1019" Datastore="store_616_x08_y38.yap" SimListenPort="9716" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_617.xml b/share/regions/config_617.xml
new file mode 100644
index 0000000..b4903c2
--- /dev/null
+++ b/share/regions/config_617.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf269" SimName="617" SimLocationX="1009" SimLocationY="1019" Datastore="store_617_x09_y38.yap" SimListenPort="9717" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_618.xml b/share/regions/config_618.xml
new file mode 100644
index 0000000..78b23b5
--- /dev/null
+++ b/share/regions/config_618.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf26a" SimName="618" SimLocationX="1010" SimLocationY="1019" Datastore="store_618_x10_y38.yap" SimListenPort="9718" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_619.xml b/share/regions/config_619.xml
new file mode 100644
index 0000000..6b14d81
--- /dev/null
+++ b/share/regions/config_619.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf26b" SimName="619" SimLocationX="1011" SimLocationY="1019" Datastore="store_619_x11_y38.yap" SimListenPort="9719" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_62.xml b/share/regions/config_62.xml
new file mode 100644
index 0000000..e35c51f
--- /dev/null
+++ b/share/regions/config_62.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf03e" SimName="62" SimLocationX="1030" SimLocationY="1001" Datastore="store_62_x14_y03.yap" SimListenPort="9162" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_620.xml b/share/regions/config_620.xml
new file mode 100644
index 0000000..660b624
--- /dev/null
+++ b/share/regions/config_620.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf26c" SimName="620" SimLocationX="1012" SimLocationY="1019" Datastore="store_620_x12_y38.yap" SimListenPort="9720" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_621.xml b/share/regions/config_621.xml
new file mode 100644
index 0000000..d4d7767
--- /dev/null
+++ b/share/regions/config_621.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf26d" SimName="621" SimLocationX="1013" SimLocationY="1019" Datastore="store_621_x13_y38.yap" SimListenPort="9721" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_622.xml b/share/regions/config_622.xml
new file mode 100644
index 0000000..ee45a34
--- /dev/null
+++ b/share/regions/config_622.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf26e" SimName="622" SimLocationX="1014" SimLocationY="1019" Datastore="store_622_x14_y38.yap" SimListenPort="9722" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_623.xml b/share/regions/config_623.xml
new file mode 100644
index 0000000..0919d49
--- /dev/null
+++ b/share/regions/config_623.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf26f" SimName="623" SimLocationX="1015" SimLocationY="1019" Datastore="store_623_x15_y38.yap" SimListenPort="9723" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-23.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_624.xml b/share/regions/config_624.xml
new file mode 100644
index 0000000..572a48f
--- /dev/null
+++ b/share/regions/config_624.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf270" SimName="624" SimLocationX="1016" SimLocationY="1019" Datastore="store_624_x00_y39.yap" SimListenPort="9724" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_625.xml b/share/regions/config_625.xml
new file mode 100644
index 0000000..98bec19
--- /dev/null
+++ b/share/regions/config_625.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf271" SimName="625" SimLocationX="1017" SimLocationY="1019" Datastore="store_625_x01_y39.yap" SimListenPort="9725" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_626.xml b/share/regions/config_626.xml
new file mode 100644
index 0000000..a64fb56
--- /dev/null
+++ b/share/regions/config_626.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf272" SimName="626" SimLocationX="1018" SimLocationY="1019" Datastore="store_626_x02_y39.yap" SimListenPort="9726" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_627.xml b/share/regions/config_627.xml
new file mode 100644
index 0000000..a388684
--- /dev/null
+++ b/share/regions/config_627.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf273" SimName="627" SimLocationX="1019" SimLocationY="1019" Datastore="store_627_x03_y39.yap" SimListenPort="9727" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_628.xml b/share/regions/config_628.xml
new file mode 100644
index 0000000..786bf6e
--- /dev/null
+++ b/share/regions/config_628.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf274" SimName="628" SimLocationX="1020" SimLocationY="1019" Datastore="store_628_x04_y39.yap" SimListenPort="9728" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_629.xml b/share/regions/config_629.xml
new file mode 100644
index 0000000..bc815b7
--- /dev/null
+++ b/share/regions/config_629.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf275" SimName="629" SimLocationX="1021" SimLocationY="1019" Datastore="store_629_x05_y39.yap" SimListenPort="9729" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_63.xml b/share/regions/config_63.xml
new file mode 100644
index 0000000..bd9992b
--- /dev/null
+++ b/share/regions/config_63.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf03f" SimName="63" SimLocationX="1031" SimLocationY="1001" Datastore="store_63_x15_y03.yap" SimListenPort="9163" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y12.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_630.xml b/share/regions/config_630.xml
new file mode 100644
index 0000000..f654ce4
--- /dev/null
+++ b/share/regions/config_630.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf276" SimName="630" SimLocationX="1022" SimLocationY="1019" Datastore="store_630_x06_y39.yap" SimListenPort="9730" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_631.xml b/share/regions/config_631.xml
new file mode 100644
index 0000000..fbc2bf9
--- /dev/null
+++ b/share/regions/config_631.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf277" SimName="631" SimLocationX="1023" SimLocationY="1019" Datastore="store_631_x07_y39.yap" SimListenPort="9731" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_632.xml b/share/regions/config_632.xml
new file mode 100644
index 0000000..9530a63
--- /dev/null
+++ b/share/regions/config_632.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf278" SimName="632" SimLocationX="1024" SimLocationY="1019" Datastore="store_632_x08_y39.yap" SimListenPort="9732" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_633.xml b/share/regions/config_633.xml
new file mode 100644
index 0000000..35babf2
--- /dev/null
+++ b/share/regions/config_633.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf279" SimName="633" SimLocationX="1025" SimLocationY="1019" Datastore="store_633_x09_y39.yap" SimListenPort="9733" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_634.xml b/share/regions/config_634.xml
new file mode 100644
index 0000000..ee3965d
--- /dev/null
+++ b/share/regions/config_634.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf27a" SimName="634" SimLocationX="1026" SimLocationY="1019" Datastore="store_634_x10_y39.yap" SimListenPort="9734" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_635.xml b/share/regions/config_635.xml
new file mode 100644
index 0000000..10e388f
--- /dev/null
+++ b/share/regions/config_635.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf27b" SimName="635" SimLocationX="1027" SimLocationY="1019" Datastore="store_635_x11_y39.yap" SimListenPort="9735" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_636.xml b/share/regions/config_636.xml
new file mode 100644
index 0000000..b4a962c
--- /dev/null
+++ b/share/regions/config_636.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf27c" SimName="636" SimLocationX="1028" SimLocationY="1019" Datastore="store_636_x12_y39.yap" SimListenPort="9736" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_637.xml b/share/regions/config_637.xml
new file mode 100644
index 0000000..1d0ccfc
--- /dev/null
+++ b/share/regions/config_637.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf27d" SimName="637" SimLocationX="1029" SimLocationY="1019" Datastore="store_637_x13_y39.yap" SimListenPort="9737" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_638.xml b/share/regions/config_638.xml
new file mode 100644
index 0000000..a4ebf85
--- /dev/null
+++ b/share/regions/config_638.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf27e" SimName="638" SimLocationX="1030" SimLocationY="1019" Datastore="store_638_x14_y39.yap" SimListenPort="9738" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_639.xml b/share/regions/config_639.xml
new file mode 100644
index 0000000..99d42e4
--- /dev/null
+++ b/share/regions/config_639.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf27f" SimName="639" SimLocationX="1031" SimLocationY="1019" Datastore="store_639_x15_y39.yap" SimListenPort="9739" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-24.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_64.xml b/share/regions/config_64.xml
new file mode 100644
index 0000000..669676c
--- /dev/null
+++ b/share/regions/config_64.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf040" SimName="64" SimLocationX="1000" SimLocationY="1002" Datastore="store_64_x00_y04.yap" SimListenPort="9164" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_640.xml b/share/regions/config_640.xml
new file mode 100644
index 0000000..e32bc2e
--- /dev/null
+++ b/share/regions/config_640.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf280" SimName="640" SimLocationX="1000" SimLocationY="1020" Datastore="store_640_x00_y40.yap" SimListenPort="9740" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_641.xml b/share/regions/config_641.xml
new file mode 100644
index 0000000..da68ff4
--- /dev/null
+++ b/share/regions/config_641.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf281" SimName="641" SimLocationX="1001" SimLocationY="1020" Datastore="store_641_x01_y40.yap" SimListenPort="9741" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_642.xml b/share/regions/config_642.xml
new file mode 100644
index 0000000..a90333f
--- /dev/null
+++ b/share/regions/config_642.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf282" SimName="642" SimLocationX="1002" SimLocationY="1020" Datastore="store_642_x02_y40.yap" SimListenPort="9742" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_643.xml b/share/regions/config_643.xml
new file mode 100644
index 0000000..7912a3c
--- /dev/null
+++ b/share/regions/config_643.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf283" SimName="643" SimLocationX="1003" SimLocationY="1020" Datastore="store_643_x03_y40.yap" SimListenPort="9743" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_644.xml b/share/regions/config_644.xml
new file mode 100644
index 0000000..89a302b
--- /dev/null
+++ b/share/regions/config_644.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf284" SimName="644" SimLocationX="1004" SimLocationY="1020" Datastore="store_644_x04_y40.yap" SimListenPort="9744" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_645.xml b/share/regions/config_645.xml
new file mode 100644
index 0000000..f5fd1b6
--- /dev/null
+++ b/share/regions/config_645.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf285" SimName="645" SimLocationX="1005" SimLocationY="1020" Datastore="store_645_x05_y40.yap" SimListenPort="9745" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_646.xml b/share/regions/config_646.xml
new file mode 100644
index 0000000..8cd3548
--- /dev/null
+++ b/share/regions/config_646.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf286" SimName="646" SimLocationX="1006" SimLocationY="1020" Datastore="store_646_x06_y40.yap" SimListenPort="9746" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_647.xml b/share/regions/config_647.xml
new file mode 100644
index 0000000..8d82b10
--- /dev/null
+++ b/share/regions/config_647.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf287" SimName="647" SimLocationX="1007" SimLocationY="1020" Datastore="store_647_x07_y40.yap" SimListenPort="9747" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_648.xml b/share/regions/config_648.xml
new file mode 100644
index 0000000..d02a8df
--- /dev/null
+++ b/share/regions/config_648.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf288" SimName="648" SimLocationX="1008" SimLocationY="1020" Datastore="store_648_x08_y40.yap" SimListenPort="9748" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_649.xml b/share/regions/config_649.xml
new file mode 100644
index 0000000..407e855
--- /dev/null
+++ b/share/regions/config_649.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf289" SimName="649" SimLocationX="1009" SimLocationY="1020" Datastore="store_649_x09_y40.yap" SimListenPort="9749" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_65.xml b/share/regions/config_65.xml
new file mode 100644
index 0000000..d502fda
--- /dev/null
+++ b/share/regions/config_65.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf041" SimName="65" SimLocationX="1001" SimLocationY="1002" Datastore="store_65_x01_y04.yap" SimListenPort="9165" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_650.xml b/share/regions/config_650.xml
new file mode 100644
index 0000000..ff9ecf2
--- /dev/null
+++ b/share/regions/config_650.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf28a" SimName="650" SimLocationX="1010" SimLocationY="1020" Datastore="store_650_x10_y40.yap" SimListenPort="9750" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_651.xml b/share/regions/config_651.xml
new file mode 100644
index 0000000..07643d3
--- /dev/null
+++ b/share/regions/config_651.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf28b" SimName="651" SimLocationX="1011" SimLocationY="1020" Datastore="store_651_x11_y40.yap" SimListenPort="9751" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_652.xml b/share/regions/config_652.xml
new file mode 100644
index 0000000..f3bb531
--- /dev/null
+++ b/share/regions/config_652.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf28c" SimName="652" SimLocationX="1012" SimLocationY="1020" Datastore="store_652_x12_y40.yap" SimListenPort="9752" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_653.xml b/share/regions/config_653.xml
new file mode 100644
index 0000000..6e7c4b8
--- /dev/null
+++ b/share/regions/config_653.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf28d" SimName="653" SimLocationX="1013" SimLocationY="1020" Datastore="store_653_x13_y40.yap" SimListenPort="9753" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_654.xml b/share/regions/config_654.xml
new file mode 100644
index 0000000..0346807
--- /dev/null
+++ b/share/regions/config_654.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf28e" SimName="654" SimLocationX="1014" SimLocationY="1020" Datastore="store_654_x14_y40.yap" SimListenPort="9754" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_655.xml b/share/regions/config_655.xml
new file mode 100644
index 0000000..5113188
--- /dev/null
+++ b/share/regions/config_655.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf28f" SimName="655" SimLocationX="1015" SimLocationY="1020" Datastore="store_655_x15_y40.yap" SimListenPort="9755" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-25.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_656.xml b/share/regions/config_656.xml
new file mode 100644
index 0000000..f7d1ca4
--- /dev/null
+++ b/share/regions/config_656.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf290" SimName="656" SimLocationX="1016" SimLocationY="1020" Datastore="store_656_x00_y41.yap" SimListenPort="9756" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_657.xml b/share/regions/config_657.xml
new file mode 100644
index 0000000..04cdf41
--- /dev/null
+++ b/share/regions/config_657.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf291" SimName="657" SimLocationX="1017" SimLocationY="1020" Datastore="store_657_x01_y41.yap" SimListenPort="9757" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_658.xml b/share/regions/config_658.xml
new file mode 100644
index 0000000..9682b36
--- /dev/null
+++ b/share/regions/config_658.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf292" SimName="658" SimLocationX="1018" SimLocationY="1020" Datastore="store_658_x02_y41.yap" SimListenPort="9758" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_659.xml b/share/regions/config_659.xml
new file mode 100644
index 0000000..a5380c4
--- /dev/null
+++ b/share/regions/config_659.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf293" SimName="659" SimLocationX="1019" SimLocationY="1020" Datastore="store_659_x03_y41.yap" SimListenPort="9759" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_66.xml b/share/regions/config_66.xml
new file mode 100644
index 0000000..5cf1043
--- /dev/null
+++ b/share/regions/config_66.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf042" SimName="66" SimLocationX="1002" SimLocationY="1002" Datastore="store_66_x02_y04.yap" SimListenPort="9166" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_660.xml b/share/regions/config_660.xml
new file mode 100644
index 0000000..7801bcb
--- /dev/null
+++ b/share/regions/config_660.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf294" SimName="660" SimLocationX="1020" SimLocationY="1020" Datastore="store_660_x04_y41.yap" SimListenPort="9760" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_661.xml b/share/regions/config_661.xml
new file mode 100644
index 0000000..3ff4ef9
--- /dev/null
+++ b/share/regions/config_661.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf295" SimName="661" SimLocationX="1021" SimLocationY="1020" Datastore="store_661_x05_y41.yap" SimListenPort="9761" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_662.xml b/share/regions/config_662.xml
new file mode 100644
index 0000000..6b0ffb3
--- /dev/null
+++ b/share/regions/config_662.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf296" SimName="662" SimLocationX="1022" SimLocationY="1020" Datastore="store_662_x06_y41.yap" SimListenPort="9762" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_663.xml b/share/regions/config_663.xml
new file mode 100644
index 0000000..2efec8d
--- /dev/null
+++ b/share/regions/config_663.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf297" SimName="663" SimLocationX="1023" SimLocationY="1020" Datastore="store_663_x07_y41.yap" SimListenPort="9763" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_664.xml b/share/regions/config_664.xml
new file mode 100644
index 0000000..1535dd4
--- /dev/null
+++ b/share/regions/config_664.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf298" SimName="664" SimLocationX="1024" SimLocationY="1020" Datastore="store_664_x08_y41.yap" SimListenPort="9764" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_665.xml b/share/regions/config_665.xml
new file mode 100644
index 0000000..4a7c0e5
--- /dev/null
+++ b/share/regions/config_665.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf299" SimName="665" SimLocationX="1025" SimLocationY="1020" Datastore="store_665_x09_y41.yap" SimListenPort="9765" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_666.xml b/share/regions/config_666.xml
new file mode 100644
index 0000000..3dd6225
--- /dev/null
+++ b/share/regions/config_666.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf29a" SimName="666" SimLocationX="1026" SimLocationY="1020" Datastore="store_666_x10_y41.yap" SimListenPort="9766" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_667.xml b/share/regions/config_667.xml
new file mode 100644
index 0000000..0bd4d2f
--- /dev/null
+++ b/share/regions/config_667.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf29b" SimName="667" SimLocationX="1027" SimLocationY="1020" Datastore="store_667_x11_y41.yap" SimListenPort="9767" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_668.xml b/share/regions/config_668.xml
new file mode 100644
index 0000000..872ca80
--- /dev/null
+++ b/share/regions/config_668.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf29c" SimName="668" SimLocationX="1028" SimLocationY="1020" Datastore="store_668_x12_y41.yap" SimListenPort="9768" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_669.xml b/share/regions/config_669.xml
new file mode 100644
index 0000000..3b04eea
--- /dev/null
+++ b/share/regions/config_669.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf29d" SimName="669" SimLocationX="1029" SimLocationY="1020" Datastore="store_669_x13_y41.yap" SimListenPort="9769" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_67.xml b/share/regions/config_67.xml
new file mode 100644
index 0000000..ce0b3be
--- /dev/null
+++ b/share/regions/config_67.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf043" SimName="67" SimLocationX="1003" SimLocationY="1002" Datastore="store_67_x03_y04.yap" SimListenPort="9167" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_670.xml b/share/regions/config_670.xml
new file mode 100644
index 0000000..ba31ce9
--- /dev/null
+++ b/share/regions/config_670.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf29e" SimName="670" SimLocationX="1030" SimLocationY="1020" Datastore="store_670_x14_y41.yap" SimListenPort="9770" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_671.xml b/share/regions/config_671.xml
new file mode 100644
index 0000000..99260f5
--- /dev/null
+++ b/share/regions/config_671.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf29f" SimName="671" SimLocationX="1031" SimLocationY="1020" Datastore="store_671_x15_y41.yap" SimListenPort="9771" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-26.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_672.xml b/share/regions/config_672.xml
new file mode 100644
index 0000000..faa4e9f
--- /dev/null
+++ b/share/regions/config_672.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a0" SimName="672" SimLocationX="1000" SimLocationY="1021" Datastore="store_672_x00_y42.yap" SimListenPort="9772" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_673.xml b/share/regions/config_673.xml
new file mode 100644
index 0000000..304dee4
--- /dev/null
+++ b/share/regions/config_673.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a1" SimName="673" SimLocationX="1001" SimLocationY="1021" Datastore="store_673_x01_y42.yap" SimListenPort="9773" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_674.xml b/share/regions/config_674.xml
new file mode 100644
index 0000000..d7224ad
--- /dev/null
+++ b/share/regions/config_674.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a2" SimName="674" SimLocationX="1002" SimLocationY="1021" Datastore="store_674_x02_y42.yap" SimListenPort="9774" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_675.xml b/share/regions/config_675.xml
new file mode 100644
index 0000000..713354f
--- /dev/null
+++ b/share/regions/config_675.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a3" SimName="675" SimLocationX="1003" SimLocationY="1021" Datastore="store_675_x03_y42.yap" SimListenPort="9775" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_676.xml b/share/regions/config_676.xml
new file mode 100644
index 0000000..6e5eea0
--- /dev/null
+++ b/share/regions/config_676.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a4" SimName="676" SimLocationX="1004" SimLocationY="1021" Datastore="store_676_x04_y42.yap" SimListenPort="9776" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_677.xml b/share/regions/config_677.xml
new file mode 100644
index 0000000..dc85b78
--- /dev/null
+++ b/share/regions/config_677.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a5" SimName="677" SimLocationX="1005" SimLocationY="1021" Datastore="store_677_x05_y42.yap" SimListenPort="9777" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_678.xml b/share/regions/config_678.xml
new file mode 100644
index 0000000..238a63c
--- /dev/null
+++ b/share/regions/config_678.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a6" SimName="678" SimLocationX="1006" SimLocationY="1021" Datastore="store_678_x06_y42.yap" SimListenPort="9778" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_679.xml b/share/regions/config_679.xml
new file mode 100644
index 0000000..8afb0de
--- /dev/null
+++ b/share/regions/config_679.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a7" SimName="679" SimLocationX="1007" SimLocationY="1021" Datastore="store_679_x07_y42.yap" SimListenPort="9779" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_68.xml b/share/regions/config_68.xml
new file mode 100644
index 0000000..e3e4b40
--- /dev/null
+++ b/share/regions/config_68.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf044" SimName="68" SimLocationX="1004" SimLocationY="1002" Datastore="store_68_x04_y04.yap" SimListenPort="9168" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_680.xml b/share/regions/config_680.xml
new file mode 100644
index 0000000..3afcc52
--- /dev/null
+++ b/share/regions/config_680.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a8" SimName="680" SimLocationX="1008" SimLocationY="1021" Datastore="store_680_x08_y42.yap" SimListenPort="9780" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_681.xml b/share/regions/config_681.xml
new file mode 100644
index 0000000..f5c6f7b
--- /dev/null
+++ b/share/regions/config_681.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2a9" SimName="681" SimLocationX="1009" SimLocationY="1021" Datastore="store_681_x09_y42.yap" SimListenPort="9781" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_682.xml b/share/regions/config_682.xml
new file mode 100644
index 0000000..f88d81c
--- /dev/null
+++ b/share/regions/config_682.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2aa" SimName="682" SimLocationX="1010" SimLocationY="1021" Datastore="store_682_x10_y42.yap" SimListenPort="9782" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_683.xml b/share/regions/config_683.xml
new file mode 100644
index 0000000..315e47c
--- /dev/null
+++ b/share/regions/config_683.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ab" SimName="683" SimLocationX="1011" SimLocationY="1021" Datastore="store_683_x11_y42.yap" SimListenPort="9783" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_684.xml b/share/regions/config_684.xml
new file mode 100644
index 0000000..cef1951
--- /dev/null
+++ b/share/regions/config_684.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ac" SimName="684" SimLocationX="1012" SimLocationY="1021" Datastore="store_684_x12_y42.yap" SimListenPort="9784" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_685.xml b/share/regions/config_685.xml
new file mode 100644
index 0000000..fce8917
--- /dev/null
+++ b/share/regions/config_685.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ad" SimName="685" SimLocationX="1013" SimLocationY="1021" Datastore="store_685_x13_y42.yap" SimListenPort="9785" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_686.xml b/share/regions/config_686.xml
new file mode 100644
index 0000000..20c19dc
--- /dev/null
+++ b/share/regions/config_686.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ae" SimName="686" SimLocationX="1014" SimLocationY="1021" Datastore="store_686_x14_y42.yap" SimListenPort="9786" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_687.xml b/share/regions/config_687.xml
new file mode 100644
index 0000000..8604eaf
--- /dev/null
+++ b/share/regions/config_687.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2af" SimName="687" SimLocationX="1015" SimLocationY="1021" Datastore="store_687_x15_y42.yap" SimListenPort="9787" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-27.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_688.xml b/share/regions/config_688.xml
new file mode 100644
index 0000000..12033c9
--- /dev/null
+++ b/share/regions/config_688.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b0" SimName="688" SimLocationX="1016" SimLocationY="1021" Datastore="store_688_x00_y43.yap" SimListenPort="9788" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_689.xml b/share/regions/config_689.xml
new file mode 100644
index 0000000..bda5afb
--- /dev/null
+++ b/share/regions/config_689.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b1" SimName="689" SimLocationX="1017" SimLocationY="1021" Datastore="store_689_x01_y43.yap" SimListenPort="9789" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_69.xml b/share/regions/config_69.xml
new file mode 100644
index 0000000..55e75ab
--- /dev/null
+++ b/share/regions/config_69.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf045" SimName="69" SimLocationX="1005" SimLocationY="1002" Datastore="store_69_x05_y04.yap" SimListenPort="9169" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_690.xml b/share/regions/config_690.xml
new file mode 100644
index 0000000..fd1ed38
--- /dev/null
+++ b/share/regions/config_690.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b2" SimName="690" SimLocationX="1018" SimLocationY="1021" Datastore="store_690_x02_y43.yap" SimListenPort="9790" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_691.xml b/share/regions/config_691.xml
new file mode 100644
index 0000000..8c6f56e
--- /dev/null
+++ b/share/regions/config_691.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b3" SimName="691" SimLocationX="1019" SimLocationY="1021" Datastore="store_691_x03_y43.yap" SimListenPort="9791" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_692.xml b/share/regions/config_692.xml
new file mode 100644
index 0000000..2b6133b
--- /dev/null
+++ b/share/regions/config_692.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b4" SimName="692" SimLocationX="1020" SimLocationY="1021" Datastore="store_692_x04_y43.yap" SimListenPort="9792" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_693.xml b/share/regions/config_693.xml
new file mode 100644
index 0000000..1fa28f4
--- /dev/null
+++ b/share/regions/config_693.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b5" SimName="693" SimLocationX="1021" SimLocationY="1021" Datastore="store_693_x05_y43.yap" SimListenPort="9793" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_694.xml b/share/regions/config_694.xml
new file mode 100644
index 0000000..7ea9a56
--- /dev/null
+++ b/share/regions/config_694.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b6" SimName="694" SimLocationX="1022" SimLocationY="1021" Datastore="store_694_x06_y43.yap" SimListenPort="9794" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_695.xml b/share/regions/config_695.xml
new file mode 100644
index 0000000..6e57b7a
--- /dev/null
+++ b/share/regions/config_695.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b7" SimName="695" SimLocationX="1023" SimLocationY="1021" Datastore="store_695_x07_y43.yap" SimListenPort="9795" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_696.xml b/share/regions/config_696.xml
new file mode 100644
index 0000000..5311547
--- /dev/null
+++ b/share/regions/config_696.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b8" SimName="696" SimLocationX="1024" SimLocationY="1021" Datastore="store_696_x08_y43.yap" SimListenPort="9796" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_697.xml b/share/regions/config_697.xml
new file mode 100644
index 0000000..a549fac
--- /dev/null
+++ b/share/regions/config_697.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2b9" SimName="697" SimLocationX="1025" SimLocationY="1021" Datastore="store_697_x09_y43.yap" SimListenPort="9797" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_698.xml b/share/regions/config_698.xml
new file mode 100644
index 0000000..07aa253
--- /dev/null
+++ b/share/regions/config_698.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ba" SimName="698" SimLocationX="1026" SimLocationY="1021" Datastore="store_698_x10_y43.yap" SimListenPort="9798" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_699.xml b/share/regions/config_699.xml
new file mode 100644
index 0000000..e85dc5c
--- /dev/null
+++ b/share/regions/config_699.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2bb" SimName="699" SimLocationX="1027" SimLocationY="1021" Datastore="store_699_x11_y43.yap" SimListenPort="9799" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_7.xml b/share/regions/config_7.xml
new file mode 100644
index 0000000..fb8b2a4
--- /dev/null
+++ b/share/regions/config_7.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf007" SimName="7" SimLocationX="1007" SimLocationY="1000" Datastore="store_7_x07_y00.yap" SimListenPort="9107" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_70.xml b/share/regions/config_70.xml
new file mode 100644
index 0000000..bce1dc1
--- /dev/null
+++ b/share/regions/config_70.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf046" SimName="70" SimLocationX="1006" SimLocationY="1002" Datastore="store_70_x06_y04.yap" SimListenPort="9170" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_700.xml b/share/regions/config_700.xml
new file mode 100644
index 0000000..d315e2f
--- /dev/null
+++ b/share/regions/config_700.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2bc" SimName="700" SimLocationX="1028" SimLocationY="1021" Datastore="store_700_x12_y43.yap" SimListenPort="9800" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_701.xml b/share/regions/config_701.xml
new file mode 100644
index 0000000..2c2ee68
--- /dev/null
+++ b/share/regions/config_701.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2bd" SimName="701" SimLocationX="1029" SimLocationY="1021" Datastore="store_701_x13_y43.yap" SimListenPort="9801" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_702.xml b/share/regions/config_702.xml
new file mode 100644
index 0000000..b2f6b63
--- /dev/null
+++ b/share/regions/config_702.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2be" SimName="702" SimLocationX="1030" SimLocationY="1021" Datastore="store_702_x14_y43.yap" SimListenPort="9802" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_703.xml b/share/regions/config_703.xml
new file mode 100644
index 0000000..3ad5f15
--- /dev/null
+++ b/share/regions/config_703.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2bf" SimName="703" SimLocationX="1031" SimLocationY="1021" Datastore="store_703_x15_y43.yap" SimListenPort="9803" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-28.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_704.xml b/share/regions/config_704.xml
new file mode 100644
index 0000000..94dc04e
--- /dev/null
+++ b/share/regions/config_704.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c0" SimName="704" SimLocationX="1000" SimLocationY="1022" Datastore="store_704_x00_y44.yap" SimListenPort="9804" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_705.xml b/share/regions/config_705.xml
new file mode 100644
index 0000000..00b9909
--- /dev/null
+++ b/share/regions/config_705.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c1" SimName="705" SimLocationX="1001" SimLocationY="1022" Datastore="store_705_x01_y44.yap" SimListenPort="9805" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_706.xml b/share/regions/config_706.xml
new file mode 100644
index 0000000..729934d
--- /dev/null
+++ b/share/regions/config_706.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c2" SimName="706" SimLocationX="1002" SimLocationY="1022" Datastore="store_706_x02_y44.yap" SimListenPort="9806" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_707.xml b/share/regions/config_707.xml
new file mode 100644
index 0000000..c65288a
--- /dev/null
+++ b/share/regions/config_707.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c3" SimName="707" SimLocationX="1003" SimLocationY="1022" Datastore="store_707_x03_y44.yap" SimListenPort="9807" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_708.xml b/share/regions/config_708.xml
new file mode 100644
index 0000000..bcdbd8a
--- /dev/null
+++ b/share/regions/config_708.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c4" SimName="708" SimLocationX="1004" SimLocationY="1022" Datastore="store_708_x04_y44.yap" SimListenPort="9808" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_709.xml b/share/regions/config_709.xml
new file mode 100644
index 0000000..e385e33
--- /dev/null
+++ b/share/regions/config_709.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c5" SimName="709" SimLocationX="1005" SimLocationY="1022" Datastore="store_709_x05_y44.yap" SimListenPort="9809" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_71.xml b/share/regions/config_71.xml
new file mode 100644
index 0000000..dc746dc
--- /dev/null
+++ b/share/regions/config_71.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf047" SimName="71" SimLocationX="1007" SimLocationY="1002" Datastore="store_71_x07_y04.yap" SimListenPort="9171" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_710.xml b/share/regions/config_710.xml
new file mode 100644
index 0000000..25c91de
--- /dev/null
+++ b/share/regions/config_710.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c6" SimName="710" SimLocationX="1006" SimLocationY="1022" Datastore="store_710_x06_y44.yap" SimListenPort="9810" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_711.xml b/share/regions/config_711.xml
new file mode 100644
index 0000000..3cfc51d
--- /dev/null
+++ b/share/regions/config_711.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c7" SimName="711" SimLocationX="1007" SimLocationY="1022" Datastore="store_711_x07_y44.yap" SimListenPort="9811" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_712.xml b/share/regions/config_712.xml
new file mode 100644
index 0000000..7ef6107
--- /dev/null
+++ b/share/regions/config_712.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c8" SimName="712" SimLocationX="1008" SimLocationY="1022" Datastore="store_712_x08_y44.yap" SimListenPort="9812" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_713.xml b/share/regions/config_713.xml
new file mode 100644
index 0000000..5a81394
--- /dev/null
+++ b/share/regions/config_713.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2c9" SimName="713" SimLocationX="1009" SimLocationY="1022" Datastore="store_713_x09_y44.yap" SimListenPort="9813" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_714.xml b/share/regions/config_714.xml
new file mode 100644
index 0000000..d4738a7
--- /dev/null
+++ b/share/regions/config_714.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ca" SimName="714" SimLocationX="1010" SimLocationY="1022" Datastore="store_714_x10_y44.yap" SimListenPort="9814" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_715.xml b/share/regions/config_715.xml
new file mode 100644
index 0000000..d86bf2b
--- /dev/null
+++ b/share/regions/config_715.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2cb" SimName="715" SimLocationX="1011" SimLocationY="1022" Datastore="store_715_x11_y44.yap" SimListenPort="9815" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_716.xml b/share/regions/config_716.xml
new file mode 100644
index 0000000..e57720d
--- /dev/null
+++ b/share/regions/config_716.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2cc" SimName="716" SimLocationX="1012" SimLocationY="1022" Datastore="store_716_x12_y44.yap" SimListenPort="9816" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_717.xml b/share/regions/config_717.xml
new file mode 100644
index 0000000..c2ad944
--- /dev/null
+++ b/share/regions/config_717.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2cd" SimName="717" SimLocationX="1013" SimLocationY="1022" Datastore="store_717_x13_y44.yap" SimListenPort="9817" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_718.xml b/share/regions/config_718.xml
new file mode 100644
index 0000000..33211bc
--- /dev/null
+++ b/share/regions/config_718.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ce" SimName="718" SimLocationX="1014" SimLocationY="1022" Datastore="store_718_x14_y44.yap" SimListenPort="9818" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_719.xml b/share/regions/config_719.xml
new file mode 100644
index 0000000..a3a32d2
--- /dev/null
+++ b/share/regions/config_719.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2cf" SimName="719" SimLocationX="1015" SimLocationY="1022" Datastore="store_719_x15_y44.yap" SimListenPort="9819" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-29.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_72.xml b/share/regions/config_72.xml
new file mode 100644
index 0000000..132db9a
--- /dev/null
+++ b/share/regions/config_72.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf048" SimName="72" SimLocationX="1008" SimLocationY="1002" Datastore="store_72_x08_y04.yap" SimListenPort="9172" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_720.xml b/share/regions/config_720.xml
new file mode 100644
index 0000000..898cd57
--- /dev/null
+++ b/share/regions/config_720.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d0" SimName="720" SimLocationX="1016" SimLocationY="1022" Datastore="store_720_x00_y45.yap" SimListenPort="9820" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_721.xml b/share/regions/config_721.xml
new file mode 100644
index 0000000..30ec038
--- /dev/null
+++ b/share/regions/config_721.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d1" SimName="721" SimLocationX="1017" SimLocationY="1022" Datastore="store_721_x01_y45.yap" SimListenPort="9821" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_722.xml b/share/regions/config_722.xml
new file mode 100644
index 0000000..56f5e4a
--- /dev/null
+++ b/share/regions/config_722.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d2" SimName="722" SimLocationX="1018" SimLocationY="1022" Datastore="store_722_x02_y45.yap" SimListenPort="9822" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_723.xml b/share/regions/config_723.xml
new file mode 100644
index 0000000..ce8fbf9
--- /dev/null
+++ b/share/regions/config_723.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d3" SimName="723" SimLocationX="1019" SimLocationY="1022" Datastore="store_723_x03_y45.yap" SimListenPort="9823" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_724.xml b/share/regions/config_724.xml
new file mode 100644
index 0000000..0a72dbc
--- /dev/null
+++ b/share/regions/config_724.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d4" SimName="724" SimLocationX="1020" SimLocationY="1022" Datastore="store_724_x04_y45.yap" SimListenPort="9824" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_725.xml b/share/regions/config_725.xml
new file mode 100644
index 0000000..8608f8b
--- /dev/null
+++ b/share/regions/config_725.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d5" SimName="725" SimLocationX="1021" SimLocationY="1022" Datastore="store_725_x05_y45.yap" SimListenPort="9825" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_726.xml b/share/regions/config_726.xml
new file mode 100644
index 0000000..5766227
--- /dev/null
+++ b/share/regions/config_726.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d6" SimName="726" SimLocationX="1022" SimLocationY="1022" Datastore="store_726_x06_y45.yap" SimListenPort="9826" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_727.xml b/share/regions/config_727.xml
new file mode 100644
index 0000000..6553367
--- /dev/null
+++ b/share/regions/config_727.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d7" SimName="727" SimLocationX="1023" SimLocationY="1022" Datastore="store_727_x07_y45.yap" SimListenPort="9827" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_728.xml b/share/regions/config_728.xml
new file mode 100644
index 0000000..867cdd1
--- /dev/null
+++ b/share/regions/config_728.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d8" SimName="728" SimLocationX="1024" SimLocationY="1022" Datastore="store_728_x08_y45.yap" SimListenPort="9828" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_729.xml b/share/regions/config_729.xml
new file mode 100644
index 0000000..4c3f3bf
--- /dev/null
+++ b/share/regions/config_729.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2d9" SimName="729" SimLocationX="1025" SimLocationY="1022" Datastore="store_729_x09_y45.yap" SimListenPort="9829" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_73.xml b/share/regions/config_73.xml
new file mode 100644
index 0000000..a9dff11
--- /dev/null
+++ b/share/regions/config_73.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf049" SimName="73" SimLocationX="1009" SimLocationY="1002" Datastore="store_73_x09_y04.yap" SimListenPort="9173" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_730.xml b/share/regions/config_730.xml
new file mode 100644
index 0000000..95567f3
--- /dev/null
+++ b/share/regions/config_730.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2da" SimName="730" SimLocationX="1026" SimLocationY="1022" Datastore="store_730_x10_y45.yap" SimListenPort="9830" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_731.xml b/share/regions/config_731.xml
new file mode 100644
index 0000000..b1eac25
--- /dev/null
+++ b/share/regions/config_731.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2db" SimName="731" SimLocationX="1027" SimLocationY="1022" Datastore="store_731_x11_y45.yap" SimListenPort="9831" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_732.xml b/share/regions/config_732.xml
new file mode 100644
index 0000000..df6ab85
--- /dev/null
+++ b/share/regions/config_732.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2dc" SimName="732" SimLocationX="1028" SimLocationY="1022" Datastore="store_732_x12_y45.yap" SimListenPort="9832" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_733.xml b/share/regions/config_733.xml
new file mode 100644
index 0000000..cba3b47
--- /dev/null
+++ b/share/regions/config_733.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2dd" SimName="733" SimLocationX="1029" SimLocationY="1022" Datastore="store_733_x13_y45.yap" SimListenPort="9833" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_734.xml b/share/regions/config_734.xml
new file mode 100644
index 0000000..21cad95
--- /dev/null
+++ b/share/regions/config_734.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2de" SimName="734" SimLocationX="1030" SimLocationY="1022" Datastore="store_734_x14_y45.yap" SimListenPort="9834" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_735.xml b/share/regions/config_735.xml
new file mode 100644
index 0000000..78386fe
--- /dev/null
+++ b/share/regions/config_735.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2df" SimName="735" SimLocationX="1031" SimLocationY="1022" Datastore="store_735_x15_y45.yap" SimListenPort="9835" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-30.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_736.xml b/share/regions/config_736.xml
new file mode 100644
index 0000000..2001880
--- /dev/null
+++ b/share/regions/config_736.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e0" SimName="736" SimLocationX="1000" SimLocationY="1023" Datastore="store_736_x00_y46.yap" SimListenPort="9836" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_737.xml b/share/regions/config_737.xml
new file mode 100644
index 0000000..8e73b25
--- /dev/null
+++ b/share/regions/config_737.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e1" SimName="737" SimLocationX="1001" SimLocationY="1023" Datastore="store_737_x01_y46.yap" SimListenPort="9837" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_738.xml b/share/regions/config_738.xml
new file mode 100644
index 0000000..c27bea7
--- /dev/null
+++ b/share/regions/config_738.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e2" SimName="738" SimLocationX="1002" SimLocationY="1023" Datastore="store_738_x02_y46.yap" SimListenPort="9838" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_739.xml b/share/regions/config_739.xml
new file mode 100644
index 0000000..2a59512
--- /dev/null
+++ b/share/regions/config_739.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e3" SimName="739" SimLocationX="1003" SimLocationY="1023" Datastore="store_739_x03_y46.yap" SimListenPort="9839" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_74.xml b/share/regions/config_74.xml
new file mode 100644
index 0000000..d1955d5
--- /dev/null
+++ b/share/regions/config_74.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf04a" SimName="74" SimLocationX="1010" SimLocationY="1002" Datastore="store_74_x10_y04.yap" SimListenPort="9174" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_740.xml b/share/regions/config_740.xml
new file mode 100644
index 0000000..21948b2
--- /dev/null
+++ b/share/regions/config_740.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e4" SimName="740" SimLocationX="1004" SimLocationY="1023" Datastore="store_740_x04_y46.yap" SimListenPort="9840" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_741.xml b/share/regions/config_741.xml
new file mode 100644
index 0000000..f3c5719
--- /dev/null
+++ b/share/regions/config_741.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e5" SimName="741" SimLocationX="1005" SimLocationY="1023" Datastore="store_741_x05_y46.yap" SimListenPort="9841" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_742.xml b/share/regions/config_742.xml
new file mode 100644
index 0000000..d545076
--- /dev/null
+++ b/share/regions/config_742.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e6" SimName="742" SimLocationX="1006" SimLocationY="1023" Datastore="store_742_x06_y46.yap" SimListenPort="9842" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_743.xml b/share/regions/config_743.xml
new file mode 100644
index 0000000..6bc85e7
--- /dev/null
+++ b/share/regions/config_743.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e7" SimName="743" SimLocationX="1007" SimLocationY="1023" Datastore="store_743_x07_y46.yap" SimListenPort="9843" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_744.xml b/share/regions/config_744.xml
new file mode 100644
index 0000000..c6b0084
--- /dev/null
+++ b/share/regions/config_744.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e8" SimName="744" SimLocationX="1008" SimLocationY="1023" Datastore="store_744_x08_y46.yap" SimListenPort="9844" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_745.xml b/share/regions/config_745.xml
new file mode 100644
index 0000000..726cbe4
--- /dev/null
+++ b/share/regions/config_745.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2e9" SimName="745" SimLocationX="1009" SimLocationY="1023" Datastore="store_745_x09_y46.yap" SimListenPort="9845" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_746.xml b/share/regions/config_746.xml
new file mode 100644
index 0000000..8352089
--- /dev/null
+++ b/share/regions/config_746.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ea" SimName="746" SimLocationX="1010" SimLocationY="1023" Datastore="store_746_x10_y46.yap" SimListenPort="9846" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_747.xml b/share/regions/config_747.xml
new file mode 100644
index 0000000..6b3f7bb
--- /dev/null
+++ b/share/regions/config_747.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2eb" SimName="747" SimLocationX="1011" SimLocationY="1023" Datastore="store_747_x11_y46.yap" SimListenPort="9847" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_748.xml b/share/regions/config_748.xml
new file mode 100644
index 0000000..df21b05
--- /dev/null
+++ b/share/regions/config_748.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ec" SimName="748" SimLocationX="1012" SimLocationY="1023" Datastore="store_748_x12_y46.yap" SimListenPort="9848" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_749.xml b/share/regions/config_749.xml
new file mode 100644
index 0000000..ef66c7b
--- /dev/null
+++ b/share/regions/config_749.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ed" SimName="749" SimLocationX="1013" SimLocationY="1023" Datastore="store_749_x13_y46.yap" SimListenPort="9849" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_75.xml b/share/regions/config_75.xml
new file mode 100644
index 0000000..6849f9e
--- /dev/null
+++ b/share/regions/config_75.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf04b" SimName="75" SimLocationX="1011" SimLocationY="1002" Datastore="store_75_x11_y04.yap" SimListenPort="9175" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_750.xml b/share/regions/config_750.xml
new file mode 100644
index 0000000..d86e2af
--- /dev/null
+++ b/share/regions/config_750.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ee" SimName="750" SimLocationX="1014" SimLocationY="1023" Datastore="store_750_x14_y46.yap" SimListenPort="9850" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_751.xml b/share/regions/config_751.xml
new file mode 100644
index 0000000..84d4b55
--- /dev/null
+++ b/share/regions/config_751.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ef" SimName="751" SimLocationX="1015" SimLocationY="1023" Datastore="store_751_x15_y46.yap" SimListenPort="9851" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-31.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_752.xml b/share/regions/config_752.xml
new file mode 100644
index 0000000..4c29c01
--- /dev/null
+++ b/share/regions/config_752.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f0" SimName="752" SimLocationX="1016" SimLocationY="1023" Datastore="store_752_x00_y47.yap" SimListenPort="9852" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_753.xml b/share/regions/config_753.xml
new file mode 100644
index 0000000..4967672
--- /dev/null
+++ b/share/regions/config_753.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f1" SimName="753" SimLocationX="1017" SimLocationY="1023" Datastore="store_753_x01_y47.yap" SimListenPort="9853" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_754.xml b/share/regions/config_754.xml
new file mode 100644
index 0000000..9963821
--- /dev/null
+++ b/share/regions/config_754.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f2" SimName="754" SimLocationX="1018" SimLocationY="1023" Datastore="store_754_x02_y47.yap" SimListenPort="9854" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_755.xml b/share/regions/config_755.xml
new file mode 100644
index 0000000..f4dc0a0
--- /dev/null
+++ b/share/regions/config_755.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f3" SimName="755" SimLocationX="1019" SimLocationY="1023" Datastore="store_755_x03_y47.yap" SimListenPort="9855" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_756.xml b/share/regions/config_756.xml
new file mode 100644
index 0000000..027d8fd
--- /dev/null
+++ b/share/regions/config_756.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f4" SimName="756" SimLocationX="1020" SimLocationY="1023" Datastore="store_756_x04_y47.yap" SimListenPort="9856" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_757.xml b/share/regions/config_757.xml
new file mode 100644
index 0000000..053ad3f
--- /dev/null
+++ b/share/regions/config_757.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f5" SimName="757" SimLocationX="1021" SimLocationY="1023" Datastore="store_757_x05_y47.yap" SimListenPort="9857" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_758.xml b/share/regions/config_758.xml
new file mode 100644
index 0000000..2a9f270
--- /dev/null
+++ b/share/regions/config_758.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f6" SimName="758" SimLocationX="1022" SimLocationY="1023" Datastore="store_758_x06_y47.yap" SimListenPort="9858" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_759.xml b/share/regions/config_759.xml
new file mode 100644
index 0000000..fb00e58
--- /dev/null
+++ b/share/regions/config_759.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f7" SimName="759" SimLocationX="1023" SimLocationY="1023" Datastore="store_759_x07_y47.yap" SimListenPort="9859" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_76.xml b/share/regions/config_76.xml
new file mode 100644
index 0000000..55cb583
--- /dev/null
+++ b/share/regions/config_76.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf04c" SimName="76" SimLocationX="1012" SimLocationY="1002" Datastore="store_76_x12_y04.yap" SimListenPort="9176" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_760.xml b/share/regions/config_760.xml
new file mode 100644
index 0000000..da23a264
--- /dev/null
+++ b/share/regions/config_760.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f8" SimName="760" SimLocationX="1024" SimLocationY="1023" Datastore="store_760_x08_y47.yap" SimListenPort="9860" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_761.xml b/share/regions/config_761.xml
new file mode 100644
index 0000000..fd1d1bf
--- /dev/null
+++ b/share/regions/config_761.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2f9" SimName="761" SimLocationX="1025" SimLocationY="1023" Datastore="store_761_x09_y47.yap" SimListenPort="9861" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_762.xml b/share/regions/config_762.xml
new file mode 100644
index 0000000..9da782a
--- /dev/null
+++ b/share/regions/config_762.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2fa" SimName="762" SimLocationX="1026" SimLocationY="1023" Datastore="store_762_x10_y47.yap" SimListenPort="9862" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_763.xml b/share/regions/config_763.xml
new file mode 100644
index 0000000..eb8ae20
--- /dev/null
+++ b/share/regions/config_763.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2fb" SimName="763" SimLocationX="1027" SimLocationY="1023" Datastore="store_763_x11_y47.yap" SimListenPort="9863" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_764.xml b/share/regions/config_764.xml
new file mode 100644
index 0000000..db700e8
--- /dev/null
+++ b/share/regions/config_764.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2fc" SimName="764" SimLocationX="1028" SimLocationY="1023" Datastore="store_764_x12_y47.yap" SimListenPort="9864" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_765.xml b/share/regions/config_765.xml
new file mode 100644
index 0000000..dcd8fb5
--- /dev/null
+++ b/share/regions/config_765.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2fd" SimName="765" SimLocationX="1029" SimLocationY="1023" Datastore="store_765_x13_y47.yap" SimListenPort="9865" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_766.xml b/share/regions/config_766.xml
new file mode 100644
index 0000000..42d7ca1
--- /dev/null
+++ b/share/regions/config_766.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2fe" SimName="766" SimLocationX="1030" SimLocationY="1023" Datastore="store_766_x14_y47.yap" SimListenPort="9866" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_767.xml b/share/regions/config_767.xml
new file mode 100644
index 0000000..26c871f
--- /dev/null
+++ b/share/regions/config_767.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf2ff" SimName="767" SimLocationX="1031" SimLocationY="1023" Datastore="store_767_x15_y47.yap" SimListenPort="9867" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-32.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_768.xml b/share/regions/config_768.xml
new file mode 100644
index 0000000..2f03610
--- /dev/null
+++ b/share/regions/config_768.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf300" SimName="768" SimLocationX="1000" SimLocationY="1024" Datastore="store_768_x00_y48.yap" SimListenPort="9868" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_769.xml b/share/regions/config_769.xml
new file mode 100644
index 0000000..e203642
--- /dev/null
+++ b/share/regions/config_769.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf301" SimName="769" SimLocationX="1001" SimLocationY="1024" Datastore="store_769_x01_y48.yap" SimListenPort="9869" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_77.xml b/share/regions/config_77.xml
new file mode 100644
index 0000000..098fadb
--- /dev/null
+++ b/share/regions/config_77.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf04d" SimName="77" SimLocationX="1013" SimLocationY="1002" Datastore="store_77_x13_y04.yap" SimListenPort="9177" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_770.xml b/share/regions/config_770.xml
new file mode 100644
index 0000000..4ba6aca
--- /dev/null
+++ b/share/regions/config_770.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf302" SimName="770" SimLocationX="1002" SimLocationY="1024" Datastore="store_770_x02_y48.yap" SimListenPort="9870" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_771.xml b/share/regions/config_771.xml
new file mode 100644
index 0000000..930228b
--- /dev/null
+++ b/share/regions/config_771.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf303" SimName="771" SimLocationX="1003" SimLocationY="1024" Datastore="store_771_x03_y48.yap" SimListenPort="9871" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_772.xml b/share/regions/config_772.xml
new file mode 100644
index 0000000..89b63c7
--- /dev/null
+++ b/share/regions/config_772.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf304" SimName="772" SimLocationX="1004" SimLocationY="1024" Datastore="store_772_x04_y48.yap" SimListenPort="9872" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_773.xml b/share/regions/config_773.xml
new file mode 100644
index 0000000..3fd3ebb
--- /dev/null
+++ b/share/regions/config_773.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf305" SimName="773" SimLocationX="1005" SimLocationY="1024" Datastore="store_773_x05_y48.yap" SimListenPort="9873" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_774.xml b/share/regions/config_774.xml
new file mode 100644
index 0000000..00bc7ea
--- /dev/null
+++ b/share/regions/config_774.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf306" SimName="774" SimLocationX="1006" SimLocationY="1024" Datastore="store_774_x06_y48.yap" SimListenPort="9874" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_775.xml b/share/regions/config_775.xml
new file mode 100644
index 0000000..8b5a0e4
--- /dev/null
+++ b/share/regions/config_775.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf307" SimName="775" SimLocationX="1007" SimLocationY="1024" Datastore="store_775_x07_y48.yap" SimListenPort="9875" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_776.xml b/share/regions/config_776.xml
new file mode 100644
index 0000000..6ce71f7
--- /dev/null
+++ b/share/regions/config_776.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf308" SimName="776" SimLocationX="1008" SimLocationY="1024" Datastore="store_776_x08_y48.yap" SimListenPort="9876" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_777.xml b/share/regions/config_777.xml
new file mode 100644
index 0000000..3dc2da2
--- /dev/null
+++ b/share/regions/config_777.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf309" SimName="777" SimLocationX="1009" SimLocationY="1024" Datastore="store_777_x09_y48.yap" SimListenPort="9877" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_778.xml b/share/regions/config_778.xml
new file mode 100644
index 0000000..90c422e
--- /dev/null
+++ b/share/regions/config_778.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf30a" SimName="778" SimLocationX="1010" SimLocationY="1024" Datastore="store_778_x10_y48.yap" SimListenPort="9878" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_779.xml b/share/regions/config_779.xml
new file mode 100644
index 0000000..61bc661
--- /dev/null
+++ b/share/regions/config_779.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf30b" SimName="779" SimLocationX="1011" SimLocationY="1024" Datastore="store_779_x11_y48.yap" SimListenPort="9879" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_78.xml b/share/regions/config_78.xml
new file mode 100644
index 0000000..ad83220
--- /dev/null
+++ b/share/regions/config_78.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf04e" SimName="78" SimLocationX="1014" SimLocationY="1002" Datastore="store_78_x14_y04.yap" SimListenPort="9178" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_780.xml b/share/regions/config_780.xml
new file mode 100644
index 0000000..2a37177
--- /dev/null
+++ b/share/regions/config_780.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf30c" SimName="780" SimLocationX="1012" SimLocationY="1024" Datastore="store_780_x12_y48.yap" SimListenPort="9880" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_781.xml b/share/regions/config_781.xml
new file mode 100644
index 0000000..27abcfb
--- /dev/null
+++ b/share/regions/config_781.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf30d" SimName="781" SimLocationX="1013" SimLocationY="1024" Datastore="store_781_x13_y48.yap" SimListenPort="9881" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_782.xml b/share/regions/config_782.xml
new file mode 100644
index 0000000..7307283
--- /dev/null
+++ b/share/regions/config_782.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf30e" SimName="782" SimLocationX="1014" SimLocationY="1024" Datastore="store_782_x14_y48.yap" SimListenPort="9882" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_783.xml b/share/regions/config_783.xml
new file mode 100644
index 0000000..b27f4cc
--- /dev/null
+++ b/share/regions/config_783.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf30f" SimName="783" SimLocationX="1015" SimLocationY="1024" Datastore="store_783_x15_y48.yap" SimListenPort="9883" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-33.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_784.xml b/share/regions/config_784.xml
new file mode 100644
index 0000000..50c1d5a
--- /dev/null
+++ b/share/regions/config_784.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf310" SimName="784" SimLocationX="1016" SimLocationY="1024" Datastore="store_784_x00_y49.yap" SimListenPort="9884" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_785.xml b/share/regions/config_785.xml
new file mode 100644
index 0000000..4449502
--- /dev/null
+++ b/share/regions/config_785.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf311" SimName="785" SimLocationX="1017" SimLocationY="1024" Datastore="store_785_x01_y49.yap" SimListenPort="9885" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_786.xml b/share/regions/config_786.xml
new file mode 100644
index 0000000..3987f24
--- /dev/null
+++ b/share/regions/config_786.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf312" SimName="786" SimLocationX="1018" SimLocationY="1024" Datastore="store_786_x02_y49.yap" SimListenPort="9886" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_787.xml b/share/regions/config_787.xml
new file mode 100644
index 0000000..226675a
--- /dev/null
+++ b/share/regions/config_787.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf313" SimName="787" SimLocationX="1019" SimLocationY="1024" Datastore="store_787_x03_y49.yap" SimListenPort="9887" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_788.xml b/share/regions/config_788.xml
new file mode 100644
index 0000000..0d2b063
--- /dev/null
+++ b/share/regions/config_788.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf314" SimName="788" SimLocationX="1020" SimLocationY="1024" Datastore="store_788_x04_y49.yap" SimListenPort="9888" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_789.xml b/share/regions/config_789.xml
new file mode 100644
index 0000000..340351d
--- /dev/null
+++ b/share/regions/config_789.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf315" SimName="789" SimLocationX="1021" SimLocationY="1024" Datastore="store_789_x05_y49.yap" SimListenPort="9889" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_79.xml b/share/regions/config_79.xml
new file mode 100644
index 0000000..04cbad1
--- /dev/null
+++ b/share/regions/config_79.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf04f" SimName="79" SimLocationX="1015" SimLocationY="1002" Datastore="store_79_x15_y04.yap" SimListenPort="9179" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y11.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_790.xml b/share/regions/config_790.xml
new file mode 100644
index 0000000..5a0f061
--- /dev/null
+++ b/share/regions/config_790.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf316" SimName="790" SimLocationX="1022" SimLocationY="1024" Datastore="store_790_x06_y49.yap" SimListenPort="9890" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_791.xml b/share/regions/config_791.xml
new file mode 100644
index 0000000..712e3e4
--- /dev/null
+++ b/share/regions/config_791.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf317" SimName="791" SimLocationX="1023" SimLocationY="1024" Datastore="store_791_x07_y49.yap" SimListenPort="9891" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_792.xml b/share/regions/config_792.xml
new file mode 100644
index 0000000..36d1b4f
--- /dev/null
+++ b/share/regions/config_792.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf318" SimName="792" SimLocationX="1024" SimLocationY="1024" Datastore="store_792_x08_y49.yap" SimListenPort="9892" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_793.xml b/share/regions/config_793.xml
new file mode 100644
index 0000000..777df87
--- /dev/null
+++ b/share/regions/config_793.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf319" SimName="793" SimLocationX="1025" SimLocationY="1024" Datastore="store_793_x09_y49.yap" SimListenPort="9893" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_794.xml b/share/regions/config_794.xml
new file mode 100644
index 0000000..0fe4c96
--- /dev/null
+++ b/share/regions/config_794.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf31a" SimName="794" SimLocationX="1026" SimLocationY="1024" Datastore="store_794_x10_y49.yap" SimListenPort="9894" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_795.xml b/share/regions/config_795.xml
new file mode 100644
index 0000000..a830ff1
--- /dev/null
+++ b/share/regions/config_795.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf31b" SimName="795" SimLocationX="1027" SimLocationY="1024" Datastore="store_795_x11_y49.yap" SimListenPort="9895" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_796.xml b/share/regions/config_796.xml
new file mode 100644
index 0000000..4bb7ead
--- /dev/null
+++ b/share/regions/config_796.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf31c" SimName="796" SimLocationX="1028" SimLocationY="1024" Datastore="store_796_x12_y49.yap" SimListenPort="9896" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_797.xml b/share/regions/config_797.xml
new file mode 100644
index 0000000..84465a3
--- /dev/null
+++ b/share/regions/config_797.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf31d" SimName="797" SimLocationX="1029" SimLocationY="1024" Datastore="store_797_x13_y49.yap" SimListenPort="9897" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_798.xml b/share/regions/config_798.xml
new file mode 100644
index 0000000..b7327c6
--- /dev/null
+++ b/share/regions/config_798.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf31e" SimName="798" SimLocationX="1030" SimLocationY="1024" Datastore="store_798_x14_y49.yap" SimListenPort="9898" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_799.xml b/share/regions/config_799.xml
new file mode 100644
index 0000000..d810bcd
--- /dev/null
+++ b/share/regions/config_799.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf31f" SimName="799" SimLocationX="1031" SimLocationY="1024" Datastore="store_799_x15_y49.yap" SimListenPort="9899" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-34.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_8.xml b/share/regions/config_8.xml
new file mode 100644
index 0000000..b4be610
--- /dev/null
+++ b/share/regions/config_8.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf008" SimName="8" SimLocationX="1008" SimLocationY="1000" Datastore="store_8_x08_y00.yap" SimListenPort="9108" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_80.xml b/share/regions/config_80.xml
new file mode 100644
index 0000000..f3613ce
--- /dev/null
+++ b/share/regions/config_80.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf050" SimName="80" SimLocationX="1016" SimLocationY="1002" Datastore="store_80_x00_y05.yap" SimListenPort="9180" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_800.xml b/share/regions/config_800.xml
new file mode 100644
index 0000000..3d467d7
--- /dev/null
+++ b/share/regions/config_800.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf320" SimName="800" SimLocationX="1000" SimLocationY="1025" Datastore="store_800_x00_y50.yap" SimListenPort="9900" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_801.xml b/share/regions/config_801.xml
new file mode 100644
index 0000000..8e58788
--- /dev/null
+++ b/share/regions/config_801.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf321" SimName="801" SimLocationX="1001" SimLocationY="1025" Datastore="store_801_x01_y50.yap" SimListenPort="9901" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_802.xml b/share/regions/config_802.xml
new file mode 100644
index 0000000..b91ee06
--- /dev/null
+++ b/share/regions/config_802.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf322" SimName="802" SimLocationX="1002" SimLocationY="1025" Datastore="store_802_x02_y50.yap" SimListenPort="9902" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_803.xml b/share/regions/config_803.xml
new file mode 100644
index 0000000..797e25b
--- /dev/null
+++ b/share/regions/config_803.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf323" SimName="803" SimLocationX="1003" SimLocationY="1025" Datastore="store_803_x03_y50.yap" SimListenPort="9903" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_804.xml b/share/regions/config_804.xml
new file mode 100644
index 0000000..fbb552b
--- /dev/null
+++ b/share/regions/config_804.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf324" SimName="804" SimLocationX="1004" SimLocationY="1025" Datastore="store_804_x04_y50.yap" SimListenPort="9904" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_805.xml b/share/regions/config_805.xml
new file mode 100644
index 0000000..c2813a7
--- /dev/null
+++ b/share/regions/config_805.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf325" SimName="805" SimLocationX="1005" SimLocationY="1025" Datastore="store_805_x05_y50.yap" SimListenPort="9905" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_806.xml b/share/regions/config_806.xml
new file mode 100644
index 0000000..5ddfcb4
--- /dev/null
+++ b/share/regions/config_806.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf326" SimName="806" SimLocationX="1006" SimLocationY="1025" Datastore="store_806_x06_y50.yap" SimListenPort="9906" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_807.xml b/share/regions/config_807.xml
new file mode 100644
index 0000000..ebb9b3e
--- /dev/null
+++ b/share/regions/config_807.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf327" SimName="807" SimLocationX="1007" SimLocationY="1025" Datastore="store_807_x07_y50.yap" SimListenPort="9907" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_808.xml b/share/regions/config_808.xml
new file mode 100644
index 0000000..6718f13
--- /dev/null
+++ b/share/regions/config_808.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf328" SimName="808" SimLocationX="1008" SimLocationY="1025" Datastore="store_808_x08_y50.yap" SimListenPort="9908" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_809.xml b/share/regions/config_809.xml
new file mode 100644
index 0000000..cbe981a
--- /dev/null
+++ b/share/regions/config_809.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf329" SimName="809" SimLocationX="1009" SimLocationY="1025" Datastore="store_809_x09_y50.yap" SimListenPort="9909" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_81.xml b/share/regions/config_81.xml
new file mode 100644
index 0000000..ee52bf7
--- /dev/null
+++ b/share/regions/config_81.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf051" SimName="81" SimLocationX="1017" SimLocationY="1002" Datastore="store_81_x01_y05.yap" SimListenPort="9181" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_810.xml b/share/regions/config_810.xml
new file mode 100644
index 0000000..8dfcdec
--- /dev/null
+++ b/share/regions/config_810.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf32a" SimName="810" SimLocationX="1010" SimLocationY="1025" Datastore="store_810_x10_y50.yap" SimListenPort="9910" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_811.xml b/share/regions/config_811.xml
new file mode 100644
index 0000000..1eaaa83
--- /dev/null
+++ b/share/regions/config_811.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf32b" SimName="811" SimLocationX="1011" SimLocationY="1025" Datastore="store_811_x11_y50.yap" SimListenPort="9911" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_812.xml b/share/regions/config_812.xml
new file mode 100644
index 0000000..a5e7f49
--- /dev/null
+++ b/share/regions/config_812.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf32c" SimName="812" SimLocationX="1012" SimLocationY="1025" Datastore="store_812_x12_y50.yap" SimListenPort="9912" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_813.xml b/share/regions/config_813.xml
new file mode 100644
index 0000000..991d105
--- /dev/null
+++ b/share/regions/config_813.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf32d" SimName="813" SimLocationX="1013" SimLocationY="1025" Datastore="store_813_x13_y50.yap" SimListenPort="9913" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_814.xml b/share/regions/config_814.xml
new file mode 100644
index 0000000..c7ea360
--- /dev/null
+++ b/share/regions/config_814.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf32e" SimName="814" SimLocationX="1014" SimLocationY="1025" Datastore="store_814_x14_y50.yap" SimListenPort="9914" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_815.xml b/share/regions/config_815.xml
new file mode 100644
index 0000000..813f64b
--- /dev/null
+++ b/share/regions/config_815.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf32f" SimName="815" SimLocationX="1015" SimLocationY="1025" Datastore="store_815_x15_y50.yap" SimListenPort="9915" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-35.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_816.xml b/share/regions/config_816.xml
new file mode 100644
index 0000000..a15e217
--- /dev/null
+++ b/share/regions/config_816.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf330" SimName="816" SimLocationX="1016" SimLocationY="1025" Datastore="store_816_x00_y51.yap" SimListenPort="9916" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_817.xml b/share/regions/config_817.xml
new file mode 100644
index 0000000..81e6c67
--- /dev/null
+++ b/share/regions/config_817.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf331" SimName="817" SimLocationX="1017" SimLocationY="1025" Datastore="store_817_x01_y51.yap" SimListenPort="9917" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_818.xml b/share/regions/config_818.xml
new file mode 100644
index 0000000..18a9086
--- /dev/null
+++ b/share/regions/config_818.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf332" SimName="818" SimLocationX="1018" SimLocationY="1025" Datastore="store_818_x02_y51.yap" SimListenPort="9918" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_819.xml b/share/regions/config_819.xml
new file mode 100644
index 0000000..7b207ad
--- /dev/null
+++ b/share/regions/config_819.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf333" SimName="819" SimLocationX="1019" SimLocationY="1025" Datastore="store_819_x03_y51.yap" SimListenPort="9919" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_82.xml b/share/regions/config_82.xml
new file mode 100644
index 0000000..d74644d
--- /dev/null
+++ b/share/regions/config_82.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf052" SimName="82" SimLocationX="1018" SimLocationY="1002" Datastore="store_82_x02_y05.yap" SimListenPort="9182" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_820.xml b/share/regions/config_820.xml
new file mode 100644
index 0000000..d6b65c5
--- /dev/null
+++ b/share/regions/config_820.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf334" SimName="820" SimLocationX="1020" SimLocationY="1025" Datastore="store_820_x04_y51.yap" SimListenPort="9920" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_821.xml b/share/regions/config_821.xml
new file mode 100644
index 0000000..49cf8ba
--- /dev/null
+++ b/share/regions/config_821.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf335" SimName="821" SimLocationX="1021" SimLocationY="1025" Datastore="store_821_x05_y51.yap" SimListenPort="9921" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_822.xml b/share/regions/config_822.xml
new file mode 100644
index 0000000..2ef23f1
--- /dev/null
+++ b/share/regions/config_822.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf336" SimName="822" SimLocationX="1022" SimLocationY="1025" Datastore="store_822_x06_y51.yap" SimListenPort="9922" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_823.xml b/share/regions/config_823.xml
new file mode 100644
index 0000000..f317ab9
--- /dev/null
+++ b/share/regions/config_823.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf337" SimName="823" SimLocationX="1023" SimLocationY="1025" Datastore="store_823_x07_y51.yap" SimListenPort="9923" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_824.xml b/share/regions/config_824.xml
new file mode 100644
index 0000000..b0e22a4
--- /dev/null
+++ b/share/regions/config_824.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf338" SimName="824" SimLocationX="1024" SimLocationY="1025" Datastore="store_824_x08_y51.yap" SimListenPort="9924" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_825.xml b/share/regions/config_825.xml
new file mode 100644
index 0000000..282bd47
--- /dev/null
+++ b/share/regions/config_825.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf339" SimName="825" SimLocationX="1025" SimLocationY="1025" Datastore="store_825_x09_y51.yap" SimListenPort="9925" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_826.xml b/share/regions/config_826.xml
new file mode 100644
index 0000000..3093150
--- /dev/null
+++ b/share/regions/config_826.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf33a" SimName="826" SimLocationX="1026" SimLocationY="1025" Datastore="store_826_x10_y51.yap" SimListenPort="9926" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_827.xml b/share/regions/config_827.xml
new file mode 100644
index 0000000..4608a28
--- /dev/null
+++ b/share/regions/config_827.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf33b" SimName="827" SimLocationX="1027" SimLocationY="1025" Datastore="store_827_x11_y51.yap" SimListenPort="9927" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_828.xml b/share/regions/config_828.xml
new file mode 100644
index 0000000..4bba5e4
--- /dev/null
+++ b/share/regions/config_828.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf33c" SimName="828" SimLocationX="1028" SimLocationY="1025" Datastore="store_828_x12_y51.yap" SimListenPort="9928" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_829.xml b/share/regions/config_829.xml
new file mode 100644
index 0000000..bd0e7db
--- /dev/null
+++ b/share/regions/config_829.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf33d" SimName="829" SimLocationX="1029" SimLocationY="1025" Datastore="store_829_x13_y51.yap" SimListenPort="9929" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_83.xml b/share/regions/config_83.xml
new file mode 100644
index 0000000..eea085c
--- /dev/null
+++ b/share/regions/config_83.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf053" SimName="83" SimLocationX="1019" SimLocationY="1002" Datastore="store_83_x03_y05.yap" SimListenPort="9183" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_830.xml b/share/regions/config_830.xml
new file mode 100644
index 0000000..118864d
--- /dev/null
+++ b/share/regions/config_830.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf33e" SimName="830" SimLocationX="1030" SimLocationY="1025" Datastore="store_830_x14_y51.yap" SimListenPort="9930" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_831.xml b/share/regions/config_831.xml
new file mode 100644
index 0000000..6f3b420
--- /dev/null
+++ b/share/regions/config_831.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf33f" SimName="831" SimLocationX="1031" SimLocationY="1025" Datastore="store_831_x15_y51.yap" SimListenPort="9931" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-36.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_832.xml b/share/regions/config_832.xml
new file mode 100644
index 0000000..7578fa6
--- /dev/null
+++ b/share/regions/config_832.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf340" SimName="832" SimLocationX="1000" SimLocationY="1026" Datastore="store_832_x00_y52.yap" SimListenPort="9932" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_833.xml b/share/regions/config_833.xml
new file mode 100644
index 0000000..e526d62
--- /dev/null
+++ b/share/regions/config_833.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf341" SimName="833" SimLocationX="1001" SimLocationY="1026" Datastore="store_833_x01_y52.yap" SimListenPort="9933" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_834.xml b/share/regions/config_834.xml
new file mode 100644
index 0000000..d7b6c57
--- /dev/null
+++ b/share/regions/config_834.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf342" SimName="834" SimLocationX="1002" SimLocationY="1026" Datastore="store_834_x02_y52.yap" SimListenPort="9934" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_835.xml b/share/regions/config_835.xml
new file mode 100644
index 0000000..0dc42d2
--- /dev/null
+++ b/share/regions/config_835.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf343" SimName="835" SimLocationX="1003" SimLocationY="1026" Datastore="store_835_x03_y52.yap" SimListenPort="9935" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_836.xml b/share/regions/config_836.xml
new file mode 100644
index 0000000..a937d60
--- /dev/null
+++ b/share/regions/config_836.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf344" SimName="836" SimLocationX="1004" SimLocationY="1026" Datastore="store_836_x04_y52.yap" SimListenPort="9936" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_837.xml b/share/regions/config_837.xml
new file mode 100644
index 0000000..b9900fc
--- /dev/null
+++ b/share/regions/config_837.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf345" SimName="837" SimLocationX="1005" SimLocationY="1026" Datastore="store_837_x05_y52.yap" SimListenPort="9937" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_838.xml b/share/regions/config_838.xml
new file mode 100644
index 0000000..9c4c909
--- /dev/null
+++ b/share/regions/config_838.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf346" SimName="838" SimLocationX="1006" SimLocationY="1026" Datastore="store_838_x06_y52.yap" SimListenPort="9938" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_839.xml b/share/regions/config_839.xml
new file mode 100644
index 0000000..b9e76e6
--- /dev/null
+++ b/share/regions/config_839.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf347" SimName="839" SimLocationX="1007" SimLocationY="1026" Datastore="store_839_x07_y52.yap" SimListenPort="9939" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_84.xml b/share/regions/config_84.xml
new file mode 100644
index 0000000..c5ecb24
--- /dev/null
+++ b/share/regions/config_84.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf054" SimName="84" SimLocationX="1020" SimLocationY="1002" Datastore="store_84_x04_y05.yap" SimListenPort="9184" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_840.xml b/share/regions/config_840.xml
new file mode 100644
index 0000000..89d5da2
--- /dev/null
+++ b/share/regions/config_840.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf348" SimName="840" SimLocationX="1008" SimLocationY="1026" Datastore="store_840_x08_y52.yap" SimListenPort="9940" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_841.xml b/share/regions/config_841.xml
new file mode 100644
index 0000000..f1727da
--- /dev/null
+++ b/share/regions/config_841.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf349" SimName="841" SimLocationX="1009" SimLocationY="1026" Datastore="store_841_x09_y52.yap" SimListenPort="9941" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_842.xml b/share/regions/config_842.xml
new file mode 100644
index 0000000..b3cb8c3
--- /dev/null
+++ b/share/regions/config_842.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf34a" SimName="842" SimLocationX="1010" SimLocationY="1026" Datastore="store_842_x10_y52.yap" SimListenPort="9942" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_843.xml b/share/regions/config_843.xml
new file mode 100644
index 0000000..aca572c
--- /dev/null
+++ b/share/regions/config_843.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf34b" SimName="843" SimLocationX="1011" SimLocationY="1026" Datastore="store_843_x11_y52.yap" SimListenPort="9943" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_844.xml b/share/regions/config_844.xml
new file mode 100644
index 0000000..7fddd7e
--- /dev/null
+++ b/share/regions/config_844.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf34c" SimName="844" SimLocationX="1012" SimLocationY="1026" Datastore="store_844_x12_y52.yap" SimListenPort="9944" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_845.xml b/share/regions/config_845.xml
new file mode 100644
index 0000000..fe70502
--- /dev/null
+++ b/share/regions/config_845.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf34d" SimName="845" SimLocationX="1013" SimLocationY="1026" Datastore="store_845_x13_y52.yap" SimListenPort="9945" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_846.xml b/share/regions/config_846.xml
new file mode 100644
index 0000000..f2230ff
--- /dev/null
+++ b/share/regions/config_846.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf34e" SimName="846" SimLocationX="1014" SimLocationY="1026" Datastore="store_846_x14_y52.yap" SimListenPort="9946" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_847.xml b/share/regions/config_847.xml
new file mode 100644
index 0000000..433bbc0
--- /dev/null
+++ b/share/regions/config_847.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf34f" SimName="847" SimLocationX="1015" SimLocationY="1026" Datastore="store_847_x15_y52.yap" SimListenPort="9947" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-37.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_848.xml b/share/regions/config_848.xml
new file mode 100644
index 0000000..ef82380
--- /dev/null
+++ b/share/regions/config_848.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf350" SimName="848" SimLocationX="1016" SimLocationY="1026" Datastore="store_848_x00_y53.yap" SimListenPort="9948" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_849.xml b/share/regions/config_849.xml
new file mode 100644
index 0000000..991e279
--- /dev/null
+++ b/share/regions/config_849.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf351" SimName="849" SimLocationX="1017" SimLocationY="1026" Datastore="store_849_x01_y53.yap" SimListenPort="9949" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_85.xml b/share/regions/config_85.xml
new file mode 100644
index 0000000..c180750
--- /dev/null
+++ b/share/regions/config_85.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf055" SimName="85" SimLocationX="1021" SimLocationY="1002" Datastore="store_85_x05_y05.yap" SimListenPort="9185" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_850.xml b/share/regions/config_850.xml
new file mode 100644
index 0000000..440eb71
--- /dev/null
+++ b/share/regions/config_850.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf352" SimName="850" SimLocationX="1018" SimLocationY="1026" Datastore="store_850_x02_y53.yap" SimListenPort="9950" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_851.xml b/share/regions/config_851.xml
new file mode 100644
index 0000000..5fe3b64
--- /dev/null
+++ b/share/regions/config_851.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf353" SimName="851" SimLocationX="1019" SimLocationY="1026" Datastore="store_851_x03_y53.yap" SimListenPort="9951" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_852.xml b/share/regions/config_852.xml
new file mode 100644
index 0000000..a1513ba
--- /dev/null
+++ b/share/regions/config_852.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf354" SimName="852" SimLocationX="1020" SimLocationY="1026" Datastore="store_852_x04_y53.yap" SimListenPort="9952" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_853.xml b/share/regions/config_853.xml
new file mode 100644
index 0000000..b2e572a
--- /dev/null
+++ b/share/regions/config_853.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf355" SimName="853" SimLocationX="1021" SimLocationY="1026" Datastore="store_853_x05_y53.yap" SimListenPort="9953" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_854.xml b/share/regions/config_854.xml
new file mode 100644
index 0000000..aff8b91
--- /dev/null
+++ b/share/regions/config_854.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf356" SimName="854" SimLocationX="1022" SimLocationY="1026" Datastore="store_854_x06_y53.yap" SimListenPort="9954" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_855.xml b/share/regions/config_855.xml
new file mode 100644
index 0000000..115e960
--- /dev/null
+++ b/share/regions/config_855.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf357" SimName="855" SimLocationX="1023" SimLocationY="1026" Datastore="store_855_x07_y53.yap" SimListenPort="9955" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_856.xml b/share/regions/config_856.xml
new file mode 100644
index 0000000..40b79fd
--- /dev/null
+++ b/share/regions/config_856.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf358" SimName="856" SimLocationX="1024" SimLocationY="1026" Datastore="store_856_x08_y53.yap" SimListenPort="9956" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_857.xml b/share/regions/config_857.xml
new file mode 100644
index 0000000..a4e114c
--- /dev/null
+++ b/share/regions/config_857.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf359" SimName="857" SimLocationX="1025" SimLocationY="1026" Datastore="store_857_x09_y53.yap" SimListenPort="9957" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_858.xml b/share/regions/config_858.xml
new file mode 100644
index 0000000..2881865
--- /dev/null
+++ b/share/regions/config_858.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf35a" SimName="858" SimLocationX="1026" SimLocationY="1026" Datastore="store_858_x10_y53.yap" SimListenPort="9958" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_859.xml b/share/regions/config_859.xml
new file mode 100644
index 0000000..865a470
--- /dev/null
+++ b/share/regions/config_859.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf35b" SimName="859" SimLocationX="1027" SimLocationY="1026" Datastore="store_859_x11_y53.yap" SimListenPort="9959" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_86.xml b/share/regions/config_86.xml
new file mode 100644
index 0000000..9b14bb1
--- /dev/null
+++ b/share/regions/config_86.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf056" SimName="86" SimLocationX="1022" SimLocationY="1002" Datastore="store_86_x06_y05.yap" SimListenPort="9186" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_860.xml b/share/regions/config_860.xml
new file mode 100644
index 0000000..71062cd
--- /dev/null
+++ b/share/regions/config_860.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf35c" SimName="860" SimLocationX="1028" SimLocationY="1026" Datastore="store_860_x12_y53.yap" SimListenPort="9960" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_861.xml b/share/regions/config_861.xml
new file mode 100644
index 0000000..d828145
--- /dev/null
+++ b/share/regions/config_861.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf35d" SimName="861" SimLocationX="1029" SimLocationY="1026" Datastore="store_861_x13_y53.yap" SimListenPort="9961" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_862.xml b/share/regions/config_862.xml
new file mode 100644
index 0000000..0700999
--- /dev/null
+++ b/share/regions/config_862.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf35e" SimName="862" SimLocationX="1030" SimLocationY="1026" Datastore="store_862_x14_y53.yap" SimListenPort="9962" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_863.xml b/share/regions/config_863.xml
new file mode 100644
index 0000000..954d08c
--- /dev/null
+++ b/share/regions/config_863.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf35f" SimName="863" SimLocationX="1031" SimLocationY="1026" Datastore="store_863_x15_y53.yap" SimListenPort="9963" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-38.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_864.xml b/share/regions/config_864.xml
new file mode 100644
index 0000000..68918af
--- /dev/null
+++ b/share/regions/config_864.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf360" SimName="864" SimLocationX="1000" SimLocationY="1027" Datastore="store_864_x00_y54.yap" SimListenPort="9964" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_865.xml b/share/regions/config_865.xml
new file mode 100644
index 0000000..adff624
--- /dev/null
+++ b/share/regions/config_865.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf361" SimName="865" SimLocationX="1001" SimLocationY="1027" Datastore="store_865_x01_y54.yap" SimListenPort="9965" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_866.xml b/share/regions/config_866.xml
new file mode 100644
index 0000000..0ffd723
--- /dev/null
+++ b/share/regions/config_866.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf362" SimName="866" SimLocationX="1002" SimLocationY="1027" Datastore="store_866_x02_y54.yap" SimListenPort="9966" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_867.xml b/share/regions/config_867.xml
new file mode 100644
index 0000000..94e112f
--- /dev/null
+++ b/share/regions/config_867.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf363" SimName="867" SimLocationX="1003" SimLocationY="1027" Datastore="store_867_x03_y54.yap" SimListenPort="9967" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_868.xml b/share/regions/config_868.xml
new file mode 100644
index 0000000..9b794ed
--- /dev/null
+++ b/share/regions/config_868.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf364" SimName="868" SimLocationX="1004" SimLocationY="1027" Datastore="store_868_x04_y54.yap" SimListenPort="9968" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_869.xml b/share/regions/config_869.xml
new file mode 100644
index 0000000..c2b5405
--- /dev/null
+++ b/share/regions/config_869.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf365" SimName="869" SimLocationX="1005" SimLocationY="1027" Datastore="store_869_x05_y54.yap" SimListenPort="9969" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_87.xml b/share/regions/config_87.xml
new file mode 100644
index 0000000..bd39935
--- /dev/null
+++ b/share/regions/config_87.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf057" SimName="87" SimLocationX="1023" SimLocationY="1002" Datastore="store_87_x07_y05.yap" SimListenPort="9187" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_870.xml b/share/regions/config_870.xml
new file mode 100644
index 0000000..6220e45
--- /dev/null
+++ b/share/regions/config_870.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf366" SimName="870" SimLocationX="1006" SimLocationY="1027" Datastore="store_870_x06_y54.yap" SimListenPort="9970" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_871.xml b/share/regions/config_871.xml
new file mode 100644
index 0000000..79be33d
--- /dev/null
+++ b/share/regions/config_871.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf367" SimName="871" SimLocationX="1007" SimLocationY="1027" Datastore="store_871_x07_y54.yap" SimListenPort="9971" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_872.xml b/share/regions/config_872.xml
new file mode 100644
index 0000000..4d864d5
--- /dev/null
+++ b/share/regions/config_872.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf368" SimName="872" SimLocationX="1008" SimLocationY="1027" Datastore="store_872_x08_y54.yap" SimListenPort="9972" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_873.xml b/share/regions/config_873.xml
new file mode 100644
index 0000000..592fa53
--- /dev/null
+++ b/share/regions/config_873.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf369" SimName="873" SimLocationX="1009" SimLocationY="1027" Datastore="store_873_x09_y54.yap" SimListenPort="9973" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_874.xml b/share/regions/config_874.xml
new file mode 100644
index 0000000..6347776
--- /dev/null
+++ b/share/regions/config_874.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf36a" SimName="874" SimLocationX="1010" SimLocationY="1027" Datastore="store_874_x10_y54.yap" SimListenPort="9974" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_875.xml b/share/regions/config_875.xml
new file mode 100644
index 0000000..2c91a9f
--- /dev/null
+++ b/share/regions/config_875.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf36b" SimName="875" SimLocationX="1011" SimLocationY="1027" Datastore="store_875_x11_y54.yap" SimListenPort="9975" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_876.xml b/share/regions/config_876.xml
new file mode 100644
index 0000000..662ece3
--- /dev/null
+++ b/share/regions/config_876.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf36c" SimName="876" SimLocationX="1012" SimLocationY="1027" Datastore="store_876_x12_y54.yap" SimListenPort="9976" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_877.xml b/share/regions/config_877.xml
new file mode 100644
index 0000000..4015a98
--- /dev/null
+++ b/share/regions/config_877.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf36d" SimName="877" SimLocationX="1013" SimLocationY="1027" Datastore="store_877_x13_y54.yap" SimListenPort="9977" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_878.xml b/share/regions/config_878.xml
new file mode 100644
index 0000000..49d452c
--- /dev/null
+++ b/share/regions/config_878.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf36e" SimName="878" SimLocationX="1014" SimLocationY="1027" Datastore="store_878_x14_y54.yap" SimListenPort="9978" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_879.xml b/share/regions/config_879.xml
new file mode 100644
index 0000000..363e9b0
--- /dev/null
+++ b/share/regions/config_879.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf36f" SimName="879" SimLocationX="1015" SimLocationY="1027" Datastore="store_879_x15_y54.yap" SimListenPort="9979" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-39.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_88.xml b/share/regions/config_88.xml
new file mode 100644
index 0000000..a180aee
--- /dev/null
+++ b/share/regions/config_88.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf058" SimName="88" SimLocationX="1024" SimLocationY="1002" Datastore="store_88_x08_y05.yap" SimListenPort="9188" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_880.xml b/share/regions/config_880.xml
new file mode 100644
index 0000000..8f00bd3
--- /dev/null
+++ b/share/regions/config_880.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf370" SimName="880" SimLocationX="1016" SimLocationY="1027" Datastore="store_880_x00_y55.yap" SimListenPort="9980" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_881.xml b/share/regions/config_881.xml
new file mode 100644
index 0000000..bec63f2
--- /dev/null
+++ b/share/regions/config_881.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf371" SimName="881" SimLocationX="1017" SimLocationY="1027" Datastore="store_881_x01_y55.yap" SimListenPort="9981" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_882.xml b/share/regions/config_882.xml
new file mode 100644
index 0000000..745f1b2
--- /dev/null
+++ b/share/regions/config_882.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf372" SimName="882" SimLocationX="1018" SimLocationY="1027" Datastore="store_882_x02_y55.yap" SimListenPort="9982" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_883.xml b/share/regions/config_883.xml
new file mode 100644
index 0000000..4d88d25
--- /dev/null
+++ b/share/regions/config_883.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf373" SimName="883" SimLocationX="1019" SimLocationY="1027" Datastore="store_883_x03_y55.yap" SimListenPort="9983" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_884.xml b/share/regions/config_884.xml
new file mode 100644
index 0000000..bc1e55b
--- /dev/null
+++ b/share/regions/config_884.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf374" SimName="884" SimLocationX="1020" SimLocationY="1027" Datastore="store_884_x04_y55.yap" SimListenPort="9984" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_885.xml b/share/regions/config_885.xml
new file mode 100644
index 0000000..e0e94a8
--- /dev/null
+++ b/share/regions/config_885.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf375" SimName="885" SimLocationX="1021" SimLocationY="1027" Datastore="store_885_x05_y55.yap" SimListenPort="9985" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_886.xml b/share/regions/config_886.xml
new file mode 100644
index 0000000..1f18106
--- /dev/null
+++ b/share/regions/config_886.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf376" SimName="886" SimLocationX="1022" SimLocationY="1027" Datastore="store_886_x06_y55.yap" SimListenPort="9986" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_887.xml b/share/regions/config_887.xml
new file mode 100644
index 0000000..318304a
--- /dev/null
+++ b/share/regions/config_887.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf377" SimName="887" SimLocationX="1023" SimLocationY="1027" Datastore="store_887_x07_y55.yap" SimListenPort="9987" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_888.xml b/share/regions/config_888.xml
new file mode 100644
index 0000000..c073f6d
--- /dev/null
+++ b/share/regions/config_888.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf378" SimName="888" SimLocationX="1024" SimLocationY="1027" Datastore="store_888_x08_y55.yap" SimListenPort="9988" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_889.xml b/share/regions/config_889.xml
new file mode 100644
index 0000000..944bff7
--- /dev/null
+++ b/share/regions/config_889.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf379" SimName="889" SimLocationX="1025" SimLocationY="1027" Datastore="store_889_x09_y55.yap" SimListenPort="9989" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_89.xml b/share/regions/config_89.xml
new file mode 100644
index 0000000..8a50594
--- /dev/null
+++ b/share/regions/config_89.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf059" SimName="89" SimLocationX="1025" SimLocationY="1002" Datastore="store_89_x09_y05.yap" SimListenPort="9189" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_890.xml b/share/regions/config_890.xml
new file mode 100644
index 0000000..a587c10
--- /dev/null
+++ b/share/regions/config_890.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf37a" SimName="890" SimLocationX="1026" SimLocationY="1027" Datastore="store_890_x10_y55.yap" SimListenPort="9990" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_891.xml b/share/regions/config_891.xml
new file mode 100644
index 0000000..16b1c82
--- /dev/null
+++ b/share/regions/config_891.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf37b" SimName="891" SimLocationX="1027" SimLocationY="1027" Datastore="store_891_x11_y55.yap" SimListenPort="9991" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_892.xml b/share/regions/config_892.xml
new file mode 100644
index 0000000..d1b3545
--- /dev/null
+++ b/share/regions/config_892.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf37c" SimName="892" SimLocationX="1028" SimLocationY="1027" Datastore="store_892_x12_y55.yap" SimListenPort="9992" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_893.xml b/share/regions/config_893.xml
new file mode 100644
index 0000000..77e3e51
--- /dev/null
+++ b/share/regions/config_893.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf37d" SimName="893" SimLocationX="1029" SimLocationY="1027" Datastore="store_893_x13_y55.yap" SimListenPort="9993" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_894.xml b/share/regions/config_894.xml
new file mode 100644
index 0000000..f313e48
--- /dev/null
+++ b/share/regions/config_894.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf37e" SimName="894" SimLocationX="1030" SimLocationY="1027" Datastore="store_894_x14_y55.yap" SimListenPort="9994" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_895.xml b/share/regions/config_895.xml
new file mode 100644
index 0000000..4e5204c
--- /dev/null
+++ b/share/regions/config_895.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf37f" SimName="895" SimLocationX="1031" SimLocationY="1027" Datastore="store_895_x15_y55.yap" SimListenPort="9995" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-40.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_896.xml b/share/regions/config_896.xml
new file mode 100644
index 0000000..54de294
--- /dev/null
+++ b/share/regions/config_896.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf380" SimName="896" SimLocationX="1000" SimLocationY="1028" Datastore="store_896_x00_y56.yap" SimListenPort="9996" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_897.xml b/share/regions/config_897.xml
new file mode 100644
index 0000000..0a7ca98
--- /dev/null
+++ b/share/regions/config_897.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf381" SimName="897" SimLocationX="1001" SimLocationY="1028" Datastore="store_897_x01_y56.yap" SimListenPort="9997" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_898.xml b/share/regions/config_898.xml
new file mode 100644
index 0000000..919b69e
--- /dev/null
+++ b/share/regions/config_898.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf382" SimName="898" SimLocationX="1002" SimLocationY="1028" Datastore="store_898_x02_y56.yap" SimListenPort="9998" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_899.xml b/share/regions/config_899.xml
new file mode 100644
index 0000000..b379919
--- /dev/null
+++ b/share/regions/config_899.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf383" SimName="899" SimLocationX="1003" SimLocationY="1028" Datastore="store_899_x03_y56.yap" SimListenPort="9999" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_9.xml b/share/regions/config_9.xml
new file mode 100644
index 0000000..ab795c9
--- /dev/null
+++ b/share/regions/config_9.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf009" SimName="9" SimLocationX="1009" SimLocationY="1000" Datastore="store_9_x09_y00.yap" SimListenPort="9109" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y15.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_90.xml b/share/regions/config_90.xml
new file mode 100644
index 0000000..1493d48
--- /dev/null
+++ b/share/regions/config_90.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf05a" SimName="90" SimLocationX="1026" SimLocationY="1002" Datastore="store_90_x10_y05.yap" SimListenPort="9190" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_900.xml b/share/regions/config_900.xml
new file mode 100644
index 0000000..9f0b217
--- /dev/null
+++ b/share/regions/config_900.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf384" SimName="900" SimLocationX="1004" SimLocationY="1028" Datastore="store_900_x04_y56.yap" SimListenPort="10000" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_901.xml b/share/regions/config_901.xml
new file mode 100644
index 0000000..2c7f4d0
--- /dev/null
+++ b/share/regions/config_901.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf385" SimName="901" SimLocationX="1005" SimLocationY="1028" Datastore="store_901_x05_y56.yap" SimListenPort="10001" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_902.xml b/share/regions/config_902.xml
new file mode 100644
index 0000000..4e353df
--- /dev/null
+++ b/share/regions/config_902.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf386" SimName="902" SimLocationX="1006" SimLocationY="1028" Datastore="store_902_x06_y56.yap" SimListenPort="10002" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_903.xml b/share/regions/config_903.xml
new file mode 100644
index 0000000..1c95582
--- /dev/null
+++ b/share/regions/config_903.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf387" SimName="903" SimLocationX="1007" SimLocationY="1028" Datastore="store_903_x07_y56.yap" SimListenPort="10003" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_904.xml b/share/regions/config_904.xml
new file mode 100644
index 0000000..7e007a7
--- /dev/null
+++ b/share/regions/config_904.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf388" SimName="904" SimLocationX="1008" SimLocationY="1028" Datastore="store_904_x08_y56.yap" SimListenPort="10004" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_905.xml b/share/regions/config_905.xml
new file mode 100644
index 0000000..fe91207
--- /dev/null
+++ b/share/regions/config_905.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf389" SimName="905" SimLocationX="1009" SimLocationY="1028" Datastore="store_905_x09_y56.yap" SimListenPort="10005" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_906.xml b/share/regions/config_906.xml
new file mode 100644
index 0000000..5d69d23
--- /dev/null
+++ b/share/regions/config_906.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf38a" SimName="906" SimLocationX="1010" SimLocationY="1028" Datastore="store_906_x10_y56.yap" SimListenPort="10006" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_907.xml b/share/regions/config_907.xml
new file mode 100644
index 0000000..f8efb84
--- /dev/null
+++ b/share/regions/config_907.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf38b" SimName="907" SimLocationX="1011" SimLocationY="1028" Datastore="store_907_x11_y56.yap" SimListenPort="10007" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_908.xml b/share/regions/config_908.xml
new file mode 100644
index 0000000..f17d7b3
--- /dev/null
+++ b/share/regions/config_908.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf38c" SimName="908" SimLocationX="1012" SimLocationY="1028" Datastore="store_908_x12_y56.yap" SimListenPort="10008" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_909.xml b/share/regions/config_909.xml
new file mode 100644
index 0000000..cfd5fb1
--- /dev/null
+++ b/share/regions/config_909.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf38d" SimName="909" SimLocationX="1013" SimLocationY="1028" Datastore="store_909_x13_y56.yap" SimListenPort="10009" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_91.xml b/share/regions/config_91.xml
new file mode 100644
index 0000000..3d25728
--- /dev/null
+++ b/share/regions/config_91.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf05b" SimName="91" SimLocationX="1027" SimLocationY="1002" Datastore="store_91_x11_y05.yap" SimListenPort="9191" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_910.xml b/share/regions/config_910.xml
new file mode 100644
index 0000000..ddaa044
--- /dev/null
+++ b/share/regions/config_910.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf38e" SimName="910" SimLocationX="1014" SimLocationY="1028" Datastore="store_910_x14_y56.yap" SimListenPort="10010" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_911.xml b/share/regions/config_911.xml
new file mode 100644
index 0000000..405cf70
--- /dev/null
+++ b/share/regions/config_911.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf38f" SimName="911" SimLocationX="1015" SimLocationY="1028" Datastore="store_911_x15_y56.yap" SimListenPort="10011" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-41.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_912.xml b/share/regions/config_912.xml
new file mode 100644
index 0000000..88298bd
--- /dev/null
+++ b/share/regions/config_912.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf390" SimName="912" SimLocationX="1016" SimLocationY="1028" Datastore="store_912_x00_y57.yap" SimListenPort="10012" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_913.xml b/share/regions/config_913.xml
new file mode 100644
index 0000000..ae50f3f
--- /dev/null
+++ b/share/regions/config_913.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf391" SimName="913" SimLocationX="1017" SimLocationY="1028" Datastore="store_913_x01_y57.yap" SimListenPort="10013" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_914.xml b/share/regions/config_914.xml
new file mode 100644
index 0000000..bc51b2d
--- /dev/null
+++ b/share/regions/config_914.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf392" SimName="914" SimLocationX="1018" SimLocationY="1028" Datastore="store_914_x02_y57.yap" SimListenPort="10014" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_915.xml b/share/regions/config_915.xml
new file mode 100644
index 0000000..492a463
--- /dev/null
+++ b/share/regions/config_915.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf393" SimName="915" SimLocationX="1019" SimLocationY="1028" Datastore="store_915_x03_y57.yap" SimListenPort="10015" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_916.xml b/share/regions/config_916.xml
new file mode 100644
index 0000000..2d11875
--- /dev/null
+++ b/share/regions/config_916.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf394" SimName="916" SimLocationX="1020" SimLocationY="1028" Datastore="store_916_x04_y57.yap" SimListenPort="10016" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_917.xml b/share/regions/config_917.xml
new file mode 100644
index 0000000..4ff3d2d
--- /dev/null
+++ b/share/regions/config_917.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf395" SimName="917" SimLocationX="1021" SimLocationY="1028" Datastore="store_917_x05_y57.yap" SimListenPort="10017" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_918.xml b/share/regions/config_918.xml
new file mode 100644
index 0000000..985dd0f
--- /dev/null
+++ b/share/regions/config_918.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf396" SimName="918" SimLocationX="1022" SimLocationY="1028" Datastore="store_918_x06_y57.yap" SimListenPort="10018" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_919.xml b/share/regions/config_919.xml
new file mode 100644
index 0000000..6fdace3
--- /dev/null
+++ b/share/regions/config_919.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf397" SimName="919" SimLocationX="1023" SimLocationY="1028" Datastore="store_919_x07_y57.yap" SimListenPort="10019" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_92.xml b/share/regions/config_92.xml
new file mode 100644
index 0000000..7484e94
--- /dev/null
+++ b/share/regions/config_92.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf05c" SimName="92" SimLocationX="1028" SimLocationY="1002" Datastore="store_92_x12_y05.yap" SimListenPort="9192" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_920.xml b/share/regions/config_920.xml
new file mode 100644
index 0000000..a1ae514
--- /dev/null
+++ b/share/regions/config_920.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf398" SimName="920" SimLocationX="1024" SimLocationY="1028" Datastore="store_920_x08_y57.yap" SimListenPort="10020" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_921.xml b/share/regions/config_921.xml
new file mode 100644
index 0000000..44e612a
--- /dev/null
+++ b/share/regions/config_921.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf399" SimName="921" SimLocationX="1025" SimLocationY="1028" Datastore="store_921_x09_y57.yap" SimListenPort="10021" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_922.xml b/share/regions/config_922.xml
new file mode 100644
index 0000000..3d19b64
--- /dev/null
+++ b/share/regions/config_922.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf39a" SimName="922" SimLocationX="1026" SimLocationY="1028" Datastore="store_922_x10_y57.yap" SimListenPort="10022" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_923.xml b/share/regions/config_923.xml
new file mode 100644
index 0000000..343ac3f
--- /dev/null
+++ b/share/regions/config_923.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf39b" SimName="923" SimLocationX="1027" SimLocationY="1028" Datastore="store_923_x11_y57.yap" SimListenPort="10023" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_924.xml b/share/regions/config_924.xml
new file mode 100644
index 0000000..ddcfa10
--- /dev/null
+++ b/share/regions/config_924.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf39c" SimName="924" SimLocationX="1028" SimLocationY="1028" Datastore="store_924_x12_y57.yap" SimListenPort="10024" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_925.xml b/share/regions/config_925.xml
new file mode 100644
index 0000000..bd8308a
--- /dev/null
+++ b/share/regions/config_925.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf39d" SimName="925" SimLocationX="1029" SimLocationY="1028" Datastore="store_925_x13_y57.yap" SimListenPort="10025" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_926.xml b/share/regions/config_926.xml
new file mode 100644
index 0000000..8771df5
--- /dev/null
+++ b/share/regions/config_926.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf39e" SimName="926" SimLocationX="1030" SimLocationY="1028" Datastore="store_926_x14_y57.yap" SimListenPort="10026" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_927.xml b/share/regions/config_927.xml
new file mode 100644
index 0000000..2275d3a
--- /dev/null
+++ b/share/regions/config_927.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf39f" SimName="927" SimLocationX="1031" SimLocationY="1028" Datastore="store_927_x15_y57.yap" SimListenPort="10027" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-42.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_928.xml b/share/regions/config_928.xml
new file mode 100644
index 0000000..347bf87
--- /dev/null
+++ b/share/regions/config_928.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a0" SimName="928" SimLocationX="1000" SimLocationY="1029" Datastore="store_928_x00_y58.yap" SimListenPort="10028" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_929.xml b/share/regions/config_929.xml
new file mode 100644
index 0000000..a7ed82b
--- /dev/null
+++ b/share/regions/config_929.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a1" SimName="929" SimLocationX="1001" SimLocationY="1029" Datastore="store_929_x01_y58.yap" SimListenPort="10029" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_93.xml b/share/regions/config_93.xml
new file mode 100644
index 0000000..922e9c8
--- /dev/null
+++ b/share/regions/config_93.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf05d" SimName="93" SimLocationX="1029" SimLocationY="1002" Datastore="store_93_x13_y05.yap" SimListenPort="9193" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_930.xml b/share/regions/config_930.xml
new file mode 100644
index 0000000..0aa90f7
--- /dev/null
+++ b/share/regions/config_930.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a2" SimName="930" SimLocationX="1002" SimLocationY="1029" Datastore="store_930_x02_y58.yap" SimListenPort="10030" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_931.xml b/share/regions/config_931.xml
new file mode 100644
index 0000000..b8f520b
--- /dev/null
+++ b/share/regions/config_931.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a3" SimName="931" SimLocationX="1003" SimLocationY="1029" Datastore="store_931_x03_y58.yap" SimListenPort="10031" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_932.xml b/share/regions/config_932.xml
new file mode 100644
index 0000000..2bc2aea
--- /dev/null
+++ b/share/regions/config_932.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a4" SimName="932" SimLocationX="1004" SimLocationY="1029" Datastore="store_932_x04_y58.yap" SimListenPort="10032" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_933.xml b/share/regions/config_933.xml
new file mode 100644
index 0000000..a1cdc75
--- /dev/null
+++ b/share/regions/config_933.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a5" SimName="933" SimLocationX="1005" SimLocationY="1029" Datastore="store_933_x05_y58.yap" SimListenPort="10033" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_934.xml b/share/regions/config_934.xml
new file mode 100644
index 0000000..0a893c1
--- /dev/null
+++ b/share/regions/config_934.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a6" SimName="934" SimLocationX="1006" SimLocationY="1029" Datastore="store_934_x06_y58.yap" SimListenPort="10034" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_935.xml b/share/regions/config_935.xml
new file mode 100644
index 0000000..d4de084
--- /dev/null
+++ b/share/regions/config_935.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a7" SimName="935" SimLocationX="1007" SimLocationY="1029" Datastore="store_935_x07_y58.yap" SimListenPort="10035" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_936.xml b/share/regions/config_936.xml
new file mode 100644
index 0000000..70b40b4
--- /dev/null
+++ b/share/regions/config_936.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a8" SimName="936" SimLocationX="1008" SimLocationY="1029" Datastore="store_936_x08_y58.yap" SimListenPort="10036" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_937.xml b/share/regions/config_937.xml
new file mode 100644
index 0000000..6fd7316
--- /dev/null
+++ b/share/regions/config_937.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3a9" SimName="937" SimLocationX="1009" SimLocationY="1029" Datastore="store_937_x09_y58.yap" SimListenPort="10037" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_938.xml b/share/regions/config_938.xml
new file mode 100644
index 0000000..cf8d865
--- /dev/null
+++ b/share/regions/config_938.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3aa" SimName="938" SimLocationX="1010" SimLocationY="1029" Datastore="store_938_x10_y58.yap" SimListenPort="10038" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_939.xml b/share/regions/config_939.xml
new file mode 100644
index 0000000..18e724e
--- /dev/null
+++ b/share/regions/config_939.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ab" SimName="939" SimLocationX="1011" SimLocationY="1029" Datastore="store_939_x11_y58.yap" SimListenPort="10039" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_94.xml b/share/regions/config_94.xml
new file mode 100644
index 0000000..47e8187
--- /dev/null
+++ b/share/regions/config_94.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf05e" SimName="94" SimLocationX="1030" SimLocationY="1002" Datastore="store_94_x14_y05.yap" SimListenPort="9194" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_940.xml b/share/regions/config_940.xml
new file mode 100644
index 0000000..5803c20
--- /dev/null
+++ b/share/regions/config_940.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ac" SimName="940" SimLocationX="1012" SimLocationY="1029" Datastore="store_940_x12_y58.yap" SimListenPort="10040" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_941.xml b/share/regions/config_941.xml
new file mode 100644
index 0000000..186feff
--- /dev/null
+++ b/share/regions/config_941.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ad" SimName="941" SimLocationX="1013" SimLocationY="1029" Datastore="store_941_x13_y58.yap" SimListenPort="10041" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_942.xml b/share/regions/config_942.xml
new file mode 100644
index 0000000..264557b
--- /dev/null
+++ b/share/regions/config_942.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ae" SimName="942" SimLocationX="1014" SimLocationY="1029" Datastore="store_942_x14_y58.yap" SimListenPort="10042" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_943.xml b/share/regions/config_943.xml
new file mode 100644
index 0000000..3f6a272
--- /dev/null
+++ b/share/regions/config_943.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3af" SimName="943" SimLocationX="1015" SimLocationY="1029" Datastore="store_943_x15_y58.yap" SimListenPort="10043" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-43.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_944.xml b/share/regions/config_944.xml
new file mode 100644
index 0000000..f244937
--- /dev/null
+++ b/share/regions/config_944.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b0" SimName="944" SimLocationX="1016" SimLocationY="1029" Datastore="store_944_x00_y59.yap" SimListenPort="10044" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_945.xml b/share/regions/config_945.xml
new file mode 100644
index 0000000..0a0e9e6
--- /dev/null
+++ b/share/regions/config_945.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b1" SimName="945" SimLocationX="1017" SimLocationY="1029" Datastore="store_945_x01_y59.yap" SimListenPort="10045" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_946.xml b/share/regions/config_946.xml
new file mode 100644
index 0000000..dbca9e1
--- /dev/null
+++ b/share/regions/config_946.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b2" SimName="946" SimLocationX="1018" SimLocationY="1029" Datastore="store_946_x02_y59.yap" SimListenPort="10046" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_947.xml b/share/regions/config_947.xml
new file mode 100644
index 0000000..e0d2ef5
--- /dev/null
+++ b/share/regions/config_947.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b3" SimName="947" SimLocationX="1019" SimLocationY="1029" Datastore="store_947_x03_y59.yap" SimListenPort="10047" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_948.xml b/share/regions/config_948.xml
new file mode 100644
index 0000000..92476ef
--- /dev/null
+++ b/share/regions/config_948.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b4" SimName="948" SimLocationX="1020" SimLocationY="1029" Datastore="store_948_x04_y59.yap" SimListenPort="10048" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_949.xml b/share/regions/config_949.xml
new file mode 100644
index 0000000..41a97e7
--- /dev/null
+++ b/share/regions/config_949.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b5" SimName="949" SimLocationX="1021" SimLocationY="1029" Datastore="store_949_x05_y59.yap" SimListenPort="10049" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_95.xml b/share/regions/config_95.xml
new file mode 100644
index 0000000..930a609
--- /dev/null
+++ b/share/regions/config_95.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf05f" SimName="95" SimLocationX="1031" SimLocationY="1002" Datastore="store_95_x15_y05.yap" SimListenPort="9195" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y10.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_950.xml b/share/regions/config_950.xml
new file mode 100644
index 0000000..e772291
--- /dev/null
+++ b/share/regions/config_950.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b6" SimName="950" SimLocationX="1022" SimLocationY="1029" Datastore="store_950_x06_y59.yap" SimListenPort="10050" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_951.xml b/share/regions/config_951.xml
new file mode 100644
index 0000000..50a0631
--- /dev/null
+++ b/share/regions/config_951.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b7" SimName="951" SimLocationX="1023" SimLocationY="1029" Datastore="store_951_x07_y59.yap" SimListenPort="10051" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_952.xml b/share/regions/config_952.xml
new file mode 100644
index 0000000..9c2bc5e
--- /dev/null
+++ b/share/regions/config_952.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b8" SimName="952" SimLocationX="1024" SimLocationY="1029" Datastore="store_952_x08_y59.yap" SimListenPort="10052" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_953.xml b/share/regions/config_953.xml
new file mode 100644
index 0000000..d8342fc
--- /dev/null
+++ b/share/regions/config_953.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3b9" SimName="953" SimLocationX="1025" SimLocationY="1029" Datastore="store_953_x09_y59.yap" SimListenPort="10053" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_954.xml b/share/regions/config_954.xml
new file mode 100644
index 0000000..685d074
--- /dev/null
+++ b/share/regions/config_954.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ba" SimName="954" SimLocationX="1026" SimLocationY="1029" Datastore="store_954_x10_y59.yap" SimListenPort="10054" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_955.xml b/share/regions/config_955.xml
new file mode 100644
index 0000000..52dfa18
--- /dev/null
+++ b/share/regions/config_955.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3bb" SimName="955" SimLocationX="1027" SimLocationY="1029" Datastore="store_955_x11_y59.yap" SimListenPort="10055" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_956.xml b/share/regions/config_956.xml
new file mode 100644
index 0000000..8ed9e2b
--- /dev/null
+++ b/share/regions/config_956.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3bc" SimName="956" SimLocationX="1028" SimLocationY="1029" Datastore="store_956_x12_y59.yap" SimListenPort="10056" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_957.xml b/share/regions/config_957.xml
new file mode 100644
index 0000000..3e9fe73
--- /dev/null
+++ b/share/regions/config_957.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3bd" SimName="957" SimLocationX="1029" SimLocationY="1029" Datastore="store_957_x13_y59.yap" SimListenPort="10057" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_958.xml b/share/regions/config_958.xml
new file mode 100644
index 0000000..3636698
--- /dev/null
+++ b/share/regions/config_958.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3be" SimName="958" SimLocationX="1030" SimLocationY="1029" Datastore="store_958_x14_y59.yap" SimListenPort="10058" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_959.xml b/share/regions/config_959.xml
new file mode 100644
index 0000000..3202187
--- /dev/null
+++ b/share/regions/config_959.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3bf" SimName="959" SimLocationX="1031" SimLocationY="1029" Datastore="store_959_x15_y59.yap" SimListenPort="10059" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-44.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_96.xml b/share/regions/config_96.xml
new file mode 100644
index 0000000..9227a91
--- /dev/null
+++ b/share/regions/config_96.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf060" SimName="96" SimLocationX="1000" SimLocationY="1003" Datastore="store_96_x00_y06.yap" SimListenPort="9196" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_960.xml b/share/regions/config_960.xml
new file mode 100644
index 0000000..8bf372c
--- /dev/null
+++ b/share/regions/config_960.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c0" SimName="960" SimLocationX="1000" SimLocationY="1030" Datastore="store_960_x00_y60.yap" SimListenPort="10060" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_961.xml b/share/regions/config_961.xml
new file mode 100644
index 0000000..2bc4c13
--- /dev/null
+++ b/share/regions/config_961.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c1" SimName="961" SimLocationX="1001" SimLocationY="1030" Datastore="store_961_x01_y60.yap" SimListenPort="10061" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_962.xml b/share/regions/config_962.xml
new file mode 100644
index 0000000..80a3554
--- /dev/null
+++ b/share/regions/config_962.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c2" SimName="962" SimLocationX="1002" SimLocationY="1030" Datastore="store_962_x02_y60.yap" SimListenPort="10062" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_963.xml b/share/regions/config_963.xml
new file mode 100644
index 0000000..17b9f93
--- /dev/null
+++ b/share/regions/config_963.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c3" SimName="963" SimLocationX="1003" SimLocationY="1030" Datastore="store_963_x03_y60.yap" SimListenPort="10063" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_964.xml b/share/regions/config_964.xml
new file mode 100644
index 0000000..823730e
--- /dev/null
+++ b/share/regions/config_964.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c4" SimName="964" SimLocationX="1004" SimLocationY="1030" Datastore="store_964_x04_y60.yap" SimListenPort="10064" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_965.xml b/share/regions/config_965.xml
new file mode 100644
index 0000000..8260f46
--- /dev/null
+++ b/share/regions/config_965.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c5" SimName="965" SimLocationX="1005" SimLocationY="1030" Datastore="store_965_x05_y60.yap" SimListenPort="10065" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_966.xml b/share/regions/config_966.xml
new file mode 100644
index 0000000..16afa28
--- /dev/null
+++ b/share/regions/config_966.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c6" SimName="966" SimLocationX="1006" SimLocationY="1030" Datastore="store_966_x06_y60.yap" SimListenPort="10066" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_967.xml b/share/regions/config_967.xml
new file mode 100644
index 0000000..dd7876a
--- /dev/null
+++ b/share/regions/config_967.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c7" SimName="967" SimLocationX="1007" SimLocationY="1030" Datastore="store_967_x07_y60.yap" SimListenPort="10067" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_968.xml b/share/regions/config_968.xml
new file mode 100644
index 0000000..0e62f7b
--- /dev/null
+++ b/share/regions/config_968.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c8" SimName="968" SimLocationX="1008" SimLocationY="1030" Datastore="store_968_x08_y60.yap" SimListenPort="10068" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_969.xml b/share/regions/config_969.xml
new file mode 100644
index 0000000..69c6091
--- /dev/null
+++ b/share/regions/config_969.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3c9" SimName="969" SimLocationX="1009" SimLocationY="1030" Datastore="store_969_x09_y60.yap" SimListenPort="10069" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_97.xml b/share/regions/config_97.xml
new file mode 100644
index 0000000..533c926
--- /dev/null
+++ b/share/regions/config_97.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf061" SimName="97" SimLocationX="1001" SimLocationY="1003" Datastore="store_97_x01_y06.yap" SimListenPort="9197" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_970.xml b/share/regions/config_970.xml
new file mode 100644
index 0000000..738b338
--- /dev/null
+++ b/share/regions/config_970.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ca" SimName="970" SimLocationX="1010" SimLocationY="1030" Datastore="store_970_x10_y60.yap" SimListenPort="10070" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_971.xml b/share/regions/config_971.xml
new file mode 100644
index 0000000..814ec0b
--- /dev/null
+++ b/share/regions/config_971.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3cb" SimName="971" SimLocationX="1011" SimLocationY="1030" Datastore="store_971_x11_y60.yap" SimListenPort="10071" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_972.xml b/share/regions/config_972.xml
new file mode 100644
index 0000000..5c6c9f2
--- /dev/null
+++ b/share/regions/config_972.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3cc" SimName="972" SimLocationX="1012" SimLocationY="1030" Datastore="store_972_x12_y60.yap" SimListenPort="10072" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_973.xml b/share/regions/config_973.xml
new file mode 100644
index 0000000..c21e807
--- /dev/null
+++ b/share/regions/config_973.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3cd" SimName="973" SimLocationX="1013" SimLocationY="1030" Datastore="store_973_x13_y60.yap" SimListenPort="10073" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_974.xml b/share/regions/config_974.xml
new file mode 100644
index 0000000..159cfc7
--- /dev/null
+++ b/share/regions/config_974.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3ce" SimName="974" SimLocationX="1014" SimLocationY="1030" Datastore="store_974_x14_y60.yap" SimListenPort="10074" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_975.xml b/share/regions/config_975.xml
new file mode 100644
index 0000000..117a250
--- /dev/null
+++ b/share/regions/config_975.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3cf" SimName="975" SimLocationX="1015" SimLocationY="1030" Datastore="store_975_x15_y60.yap" SimListenPort="10075" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-45.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_976.xml b/share/regions/config_976.xml
new file mode 100644
index 0000000..a910b53
--- /dev/null
+++ b/share/regions/config_976.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d0" SimName="976" SimLocationX="1016" SimLocationY="1030" Datastore="store_976_x00_y61.yap" SimListenPort="10076" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_977.xml b/share/regions/config_977.xml
new file mode 100644
index 0000000..67e5c69
--- /dev/null
+++ b/share/regions/config_977.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d1" SimName="977" SimLocationX="1017" SimLocationY="1030" Datastore="store_977_x01_y61.yap" SimListenPort="10077" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_978.xml b/share/regions/config_978.xml
new file mode 100644
index 0000000..5dc48dd
--- /dev/null
+++ b/share/regions/config_978.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d2" SimName="978" SimLocationX="1018" SimLocationY="1030" Datastore="store_978_x02_y61.yap" SimListenPort="10078" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_979.xml b/share/regions/config_979.xml
new file mode 100644
index 0000000..4054954
--- /dev/null
+++ b/share/regions/config_979.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d3" SimName="979" SimLocationX="1019" SimLocationY="1030" Datastore="store_979_x03_y61.yap" SimListenPort="10079" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_98.xml b/share/regions/config_98.xml
new file mode 100644
index 0000000..111c4a9
--- /dev/null
+++ b/share/regions/config_98.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf062" SimName="98" SimLocationX="1002" SimLocationY="1003" Datastore="store_98_x02_y06.yap" SimListenPort="9198" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_980.xml b/share/regions/config_980.xml
new file mode 100644
index 0000000..75b036f
--- /dev/null
+++ b/share/regions/config_980.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d4" SimName="980" SimLocationX="1020" SimLocationY="1030" Datastore="store_980_x04_y61.yap" SimListenPort="10080" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_981.xml b/share/regions/config_981.xml
new file mode 100644
index 0000000..fd71c85
--- /dev/null
+++ b/share/regions/config_981.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d5" SimName="981" SimLocationX="1021" SimLocationY="1030" Datastore="store_981_x05_y61.yap" SimListenPort="10081" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_982.xml b/share/regions/config_982.xml
new file mode 100644
index 0000000..c33fcec
--- /dev/null
+++ b/share/regions/config_982.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d6" SimName="982" SimLocationX="1022" SimLocationY="1030" Datastore="store_982_x06_y61.yap" SimListenPort="10082" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_983.xml b/share/regions/config_983.xml
new file mode 100644
index 0000000..a989801
--- /dev/null
+++ b/share/regions/config_983.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d7" SimName="983" SimLocationX="1023" SimLocationY="1030" Datastore="store_983_x07_y61.yap" SimListenPort="10083" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_984.xml b/share/regions/config_984.xml
new file mode 100644
index 0000000..d494071
--- /dev/null
+++ b/share/regions/config_984.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d8" SimName="984" SimLocationX="1024" SimLocationY="1030" Datastore="store_984_x08_y61.yap" SimListenPort="10084" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x08_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_985.xml b/share/regions/config_985.xml
new file mode 100644
index 0000000..2239f97
--- /dev/null
+++ b/share/regions/config_985.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3d9" SimName="985" SimLocationX="1025" SimLocationY="1030" Datastore="store_985_x09_y61.yap" SimListenPort="10085" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x09_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_986.xml b/share/regions/config_986.xml
new file mode 100644
index 0000000..67bc5b5
--- /dev/null
+++ b/share/regions/config_986.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3da" SimName="986" SimLocationX="1026" SimLocationY="1030" Datastore="store_986_x10_y61.yap" SimListenPort="10086" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x10_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_987.xml b/share/regions/config_987.xml
new file mode 100644
index 0000000..f4d52bb
--- /dev/null
+++ b/share/regions/config_987.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3db" SimName="987" SimLocationX="1027" SimLocationY="1030" Datastore="store_987_x11_y61.yap" SimListenPort="10087" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x11_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_988.xml b/share/regions/config_988.xml
new file mode 100644
index 0000000..ce12b39
--- /dev/null
+++ b/share/regions/config_988.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3dc" SimName="988" SimLocationX="1028" SimLocationY="1030" Datastore="store_988_x12_y61.yap" SimListenPort="10088" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x12_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_989.xml b/share/regions/config_989.xml
new file mode 100644
index 0000000..dc2c44a
--- /dev/null
+++ b/share/regions/config_989.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3dd" SimName="989" SimLocationX="1029" SimLocationY="1030" Datastore="store_989_x13_y61.yap" SimListenPort="10089" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x13_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_99.xml b/share/regions/config_99.xml
new file mode 100644
index 0000000..4be94a1
--- /dev/null
+++ b/share/regions/config_99.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf063" SimName="99" SimLocationX="1003" SimLocationY="1003" Datastore="store_99_x03_y06.yap" SimListenPort="9199" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y09.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_990.xml b/share/regions/config_990.xml
new file mode 100644
index 0000000..79c26ac
--- /dev/null
+++ b/share/regions/config_990.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3de" SimName="990" SimLocationX="1030" SimLocationY="1030" Datastore="store_990_x14_y61.yap" SimListenPort="10090" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x14_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_991.xml b/share/regions/config_991.xml
new file mode 100644
index 0000000..aefaa04
--- /dev/null
+++ b/share/regions/config_991.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3df" SimName="991" SimLocationX="1031" SimLocationY="1030" Datastore="store_991_x15_y61.yap" SimListenPort="10091" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x15_y-46.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_992.xml b/share/regions/config_992.xml
new file mode 100644
index 0000000..5b777ac
--- /dev/null
+++ b/share/regions/config_992.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e0" SimName="992" SimLocationX="1000" SimLocationY="1031" Datastore="store_992_x00_y62.yap" SimListenPort="10092" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x00_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_993.xml b/share/regions/config_993.xml
new file mode 100644
index 0000000..193dc0f
--- /dev/null
+++ b/share/regions/config_993.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e1" SimName="993" SimLocationX="1001" SimLocationY="1031" Datastore="store_993_x01_y62.yap" SimListenPort="10093" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x01_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_994.xml b/share/regions/config_994.xml
new file mode 100644
index 0000000..2481ec9
--- /dev/null
+++ b/share/regions/config_994.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e2" SimName="994" SimLocationX="1002" SimLocationY="1031" Datastore="store_994_x02_y62.yap" SimListenPort="10094" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x02_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_995.xml b/share/regions/config_995.xml
new file mode 100644
index 0000000..0947860
--- /dev/null
+++ b/share/regions/config_995.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e3" SimName="995" SimLocationX="1003" SimLocationY="1031" Datastore="store_995_x03_y62.yap" SimListenPort="10095" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x03_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_996.xml b/share/regions/config_996.xml
new file mode 100644
index 0000000..94e92ab
--- /dev/null
+++ b/share/regions/config_996.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e4" SimName="996" SimLocationX="1004" SimLocationY="1031" Datastore="store_996_x04_y62.yap" SimListenPort="10096" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x04_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_997.xml b/share/regions/config_997.xml
new file mode 100644
index 0000000..59f280a
--- /dev/null
+++ b/share/regions/config_997.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e5" SimName="997" SimLocationX="1005" SimLocationY="1031" Datastore="store_997_x05_y62.yap" SimListenPort="10097" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x05_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_998.xml b/share/regions/config_998.xml
new file mode 100644
index 0000000..ec78c85
--- /dev/null
+++ b/share/regions/config_998.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e6" SimName="998" SimLocationX="1006" SimLocationY="1031" Datastore="store_998_x06_y62.yap" SimListenPort="10098" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x06_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/regions/config_999.xml b/share/regions/config_999.xml
new file mode 100644
index 0000000..4ec70e4
--- /dev/null
+++ b/share/regions/config_999.xml
@@ -0,0 +1,3 @@
1<Root>
2 <Config SimUUID="e24110fd35684a8ba79651a8c81bf3e7" SimName="999" SimLocationX="1007" SimLocationY="1031" Datastore="store_999_x07_y62.yap" SimListenPort="10099" SimListenAddress="SYSTEMIP" TerrainFile="terrain_x07_y-47.r32" TerrainMultiplier="177.8" MasterAvatarFirstName="Adam" MasterAvatarLastName="Omega" MasterAvatarSandboxPassword="bork" />
3</Root>
diff --git a/share/sql/mysql-agents.sql b/share/sql/mysql-agents.sql
new file mode 100644
index 0000000..8194ca9
--- /dev/null
+++ b/share/sql/mysql-agents.sql
@@ -0,0 +1,24 @@
1SET FOREIGN_KEY_CHECKS=0;
2-- ----------------------------
3-- Table structure for agents
4-- ----------------------------
5CREATE TABLE `agents` (
6 `UUID` varchar(36) NOT NULL,
7 `sessionID` varchar(36) NOT NULL,
8 `secureSessionID` varchar(36) NOT NULL,
9 `agentIP` varchar(16) NOT NULL,
10 `agentPort` int(11) NOT NULL,
11 `agentOnline` tinyint(4) NOT NULL,
12 `loginTime` int(11) NOT NULL,
13 `logoutTime` int(11) NOT NULL,
14 `currentRegion` varchar(36) NOT NULL,
15 `currentHandle` bigint(20) unsigned NOT NULL,
16 `currentPos` varchar(64) NOT NULL,
17 PRIMARY KEY (`UUID`),
18 UNIQUE KEY `session` (`sessionID`),
19 UNIQUE KEY `ssession` (`secureSessionID`)
20) ENGINE=MyISAM DEFAULT CHARSET=utf8;
21
22-- ----------------------------
23-- Records
24-- ----------------------------
diff --git a/share/sql/mysql-inventoryfolders.sql b/share/sql/mysql-inventoryfolders.sql
new file mode 100644
index 0000000..c30239e
--- /dev/null
+++ b/share/sql/mysql-inventoryfolders.sql
@@ -0,0 +1,9 @@
1CREATE TABLE `inventoryfolders` (
2 `folderID` varchar(36) NOT NULL default '',
3 `agentID` varchar(36) default NULL,
4 `parentFolderID` varchar(36) default NULL,
5 `folderName` varchar(64) default NULL,
6 PRIMARY KEY (`folderID`),
7 KEY `owner` (`agentID`),
8 KEY `parent` (`parentFolderID`)
9) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/share/sql/mysql-inventoryitems.sql b/share/sql/mysql-inventoryitems.sql
new file mode 100644
index 0000000..6e90005
--- /dev/null
+++ b/share/sql/mysql-inventoryitems.sql
@@ -0,0 +1,14 @@
1CREATE TABLE `inventoryitems` (
2 `inventoryID` varchar(36) NOT NULL default '',
3 `assetID` varchar(36) default NULL,
4 `type` int(11) default NULL,
5 `parentFolderID` varchar(36) default NULL,
6 `avatarID` varchar(36) default NULL,
7 `inventoryName` varchar(64) default NULL,
8 `inventoryDescription` varchar(64) default NULL,
9 `inventoryNextPermissions` int(10) unsigned default NULL,
10 `inventoryCurrentPermissions` int(10) unsigned default NULL,
11 PRIMARY KEY (`inventoryID`),
12 KEY `owner` (`avatarID`),
13 KEY `folder` (`parentFolderID`)
14) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/share/sql/mysql-logs.sql b/share/sql/mysql-logs.sql
new file mode 100644
index 0000000..05c19e8
--- /dev/null
+++ b/share/sql/mysql-logs.sql
@@ -0,0 +1,10 @@
1CREATE TABLE `logs` (
2 `logID` int(10) unsigned NOT NULL auto_increment,
3 `target` varchar(36) default NULL,
4 `server` varchar(64) default NULL,
5 `method` varchar(64) default NULL,
6 `arguments` varchar(255) default NULL,
7 `priority` int(11) default NULL,
8 `message` text,
9 PRIMARY KEY (`logID`)
10) ENGINE=InnoDB DEFAULT CHARSET=utf8 \ No newline at end of file
diff --git a/share/sql/mysql-regions.sql b/share/sql/mysql-regions.sql
new file mode 100644
index 0000000..4f98826
--- /dev/null
+++ b/share/sql/mysql-regions.sql
@@ -0,0 +1,29 @@
1CREATE TABLE `regions` (
2 `uuid` varchar(36) NOT NULL,
3 `regionHandle` bigint(20) unsigned NOT NULL,
4 `regionName` varchar(32) default NULL,
5 `regionRecvKey` varchar(128) default NULL,
6 `regionSendKey` varchar(128) default NULL,
7 `regionSecret` varchar(128) default NULL,
8 `regionDataURI` varchar(255) default NULL,
9 `serverIP` varchar(16) default NULL,
10 `serverPort` int(10) unsigned default NULL,
11 `serverURI` varchar(255) default NULL,
12 `locX` int(10) unsigned default NULL,
13 `locY` int(10) unsigned default NULL,
14 `locZ` int(10) unsigned default NULL,
15 `eastOverrideHandle` bigint(20) unsigned default NULL,
16 `westOverrideHandle` bigint(20) unsigned default NULL,
17 `southOverrideHandle` bigint(20) unsigned default NULL,
18 `northOverrideHandle` bigint(20) unsigned default NULL,
19 `regionAssetURI` varchar(255) default NULL,
20 `regionAssetRecvKey` varchar(128) default NULL,
21 `regionAssetSendKey` varchar(128) default NULL,
22 `regionUserURI` varchar(255) default NULL,
23 `regionUserRecvKey` varchar(128) default NULL,
24 `regionUserSendKey` varchar(128) default NULL, `regionMapTexture` varchar(36) default NULL,
25 PRIMARY KEY (`uuid`),
26 KEY `regionName` (`regionName`),
27 KEY `regionHandle` (`regionHandle`),
28 KEY `overrideHandles` (`eastOverrideHandle`,`westOverrideHandle`,`southOverrideHandle`,`northOverrideHandle`)
29) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED \ No newline at end of file
diff --git a/share/sql/mysql-reservations.txt b/share/sql/mysql-reservations.txt
new file mode 100644
index 0000000..d6d84b9
--- /dev/null
+++ b/share/sql/mysql-reservations.txt
@@ -0,0 +1,16 @@
1CREATE TABLE `reservations` (
2 `resID` int(10) unsigned NOT NULL auto_increment,
3 `userUUID` varchar(36) default NULL,
4 `gridSendKey` varchar(64) default NULL,
5 `gridRecvKey` varchar(64) default NULL,
6 `resName` varchar(255) default NULL,
7 `resCompany` varchar(128) default NULL,
8 `resXMin` int(10) unsigned default NULL,
9 `resXMax` int(10) unsigned default NULL,
10 `resYMin` int(10) unsigned default NULL,
11 `resYMax` int(10) unsigned default NULL,
12 `status` int(10) unsigned default NULL,
13 PRIMARY KEY (`resID`),
14 KEY `resident` (`userUUID`),
15 KEY `coords` (`resXMin`,`resXMax`,`resYMin`,`resYMax`)
16) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=32 ;
diff --git a/share/sql/mysql-users.sql b/share/sql/mysql-users.sql
new file mode 100644
index 0000000..5ce4d1c
--- /dev/null
+++ b/share/sql/mysql-users.sql
@@ -0,0 +1,34 @@
1SET FOREIGN_KEY_CHECKS=0;
2-- ----------------------------
3-- Table structure for users
4-- ----------------------------
5CREATE TABLE `users` (
6 `UUID` varchar(36) NOT NULL default '',
7 `username` varchar(32) NOT NULL,
8 `lastname` varchar(32) NOT NULL,
9 `passwordHash` varchar(32) NOT NULL,
10 `passwordSalt` varchar(32) NOT NULL,
11 `homeRegion` bigint(20) unsigned default NULL,
12 `homeLocationX` float default NULL,
13 `homeLocationY` float default NULL,
14 `homeLocationZ` float default NULL,
15 `homeLookAtX` float default NULL,
16 `homeLookAtY` float default NULL,
17 `homeLookAtZ` float default NULL,
18 `created` int(11) NOT NULL,
19 `lastLogin` int(11) NOT NULL,
20 `userInventoryURI` varchar(255) default NULL,
21 `userAssetURI` varchar(255) default NULL,
22 `profileCanDoMask` int(10) unsigned default NULL,
23 `profileWantDoMask` int(10) unsigned default NULL,
24 `profileAboutText` text,
25 `profileFirstText` text,
26 `profileImage` varchar(36) default NULL,
27 `profileFirstImage` varchar(36) default NULL,
28 PRIMARY KEY (`UUID`),
29 UNIQUE KEY `usernames` (`username`,`lastname`)
30) ENGINE=MyISAM DEFAULT CHARSET=utf8;
31
32-- ----------------------------
33-- Records
34-- ----------------------------