updated prebuild.xml.

Added some more events to IClientAPI (OnGrapObject , OnGrapUpdate, OnDeGrapObject).
Sugilite
MW 2007-06-25 16:01:30 +00:00
parent 525dc30e6f
commit f413795497
22 changed files with 322 additions and 200 deletions

View File

@ -1,12 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
using OpenSim.Framework.Types;
using OpenGrid.Framework.Communications;
namespace OpenGrid.Framework.Communications.OGS1
{
public class GridCommsManager : CommunicationsManager
{
public GridCommsManager()
public GridCommsManager(NetworkServersInfo serversInfo) :base(serversInfo)
{
GridServer = new OGS1GridServices();
InterRegion = new OGSInterSimComms();

View File

@ -1,13 +1,12 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C1F40DD4-A68B-4233-9142-CE236775A3CE}</ProjectGuid>
<ProjectGuid>{17442AF1-0000-0000-0000-000000000000}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<ApplicationIcon></ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>OpenGrid.Framework.Communications.OGS1</AssemblyName>
@ -16,11 +15,9 @@
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>Library</OutputType>
<AppDesignerFolder>
</AppDesignerFolder>
<AppDesignerFolder></AppDesignerFolder>
<RootNamespace>OpenGrid.Framework.Communications.OGS1</RootNamespace>
<StartupObject>
</StartupObject>
<StartupObject></StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
</PropertyGroup>
@ -31,8 +28,7 @@
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;DEBUG</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DocumentationFile></DocumentationFile>
<DebugSymbols>True</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>False</Optimize>
@ -41,8 +37,7 @@
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoWarn>
</NoWarn>
<NoWarn></NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
@ -51,8 +46,7 @@
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DocumentationFile></DocumentationFile>
<DebugSymbols>False</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>True</Optimize>
@ -61,8 +55,7 @@
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoWarn>
</NoWarn>
<NoWarn></NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="libsecondlife.dll" >
@ -90,8 +83,10 @@
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\OpenGrid.Framework.Data\OpenGrid.Framework.Data.csproj">
<Project>{62CDF671-0000-0000-0000-000000000000}</Project>
<Name>OpenGrid.Framework.Data</Name>
<Project>{62CDF671-0000-0000-0000-000000000000}</Project>
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\OpenSim.Framework\OpenSim.Framework.csproj">
<Name>OpenSim.Framework</Name>
@ -119,12 +114,18 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Include="GridCommsManager.cs" />
<Compile Include="GridCommsManager.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="OGS1GridServices.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="OGSInterSimComms.cs" />
<Compile Include="OGSUserServices.cs" />
<Compile Include="OGSInterSimComms.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="OGSUserServices.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>

View File

@ -43,7 +43,7 @@ namespace OpenGrid.Framework.Communications
public IGridServices GridServer;
public IInterRegionCommunications InterRegion;
public CommunicationsManager()
public CommunicationsManager(NetworkServersInfo serversInfo)
{
}

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ReferencePath>E:\work\oslauth\sim\branches\Sugilite\bin\</ReferencePath>
<ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\Sugilite\bin\</ReferencePath>
<LastOpenVersion>8.0.50727</LastOpenVersion>
<ProjectView>ProjectFiles</ProjectView>
<ProjectTrust>0</ProjectTrust>

View File

@ -55,11 +55,12 @@ namespace OpenSim.Framework.Interfaces
public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient);
public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient);
public delegate void UpdatePrimVector(uint localID, LLVector3 pos, IClientAPI remoteClient);
public delegate void UpdateVector(uint localID, LLVector3 pos, IClientAPI remoteClient);
public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient);
public delegate void StatusChange(bool status);
public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status);
public delegate void UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient);
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);
public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client);
@ -86,14 +87,17 @@ namespace OpenSim.Framework.Interfaces
event UpdateAgent OnAgentUpdate;
event GenericCall OnRequestAvatarsData;
event GenericCall4 OnAddPrim;
event UpdateVector OnGrapObject;
event ObjectSelect OnDeGrapObject;
event MoveObject OnGrapUpdate;
event UpdateShape OnUpdatePrimShape;
event ObjectSelect OnObjectSelect;
event UpdatePrimFlags OnUpdatePrimFlags;
event UpdatePrimTexture OnUpdatePrimTexture;
event UpdatePrimVector OnUpdatePrimPosition;
event UpdateVector OnUpdatePrimPosition;
event UpdatePrimRotation OnUpdatePrimRotation;
event UpdatePrimVector OnUpdatePrimScale;
event UpdateVector OnUpdatePrimScale;
event StatusChange OnChildAgentStatus;
event GenericCall2 OnStopMovement;
event NewAvatar OnNewAvatar;
@ -143,13 +147,14 @@ namespace OpenSim.Framework.Interfaces
void SendRegionTeleport(ulong regionHandle, byte simAccess, string ipAddress, ushort ipPort, uint locationID, uint flags);
void SendTeleportCancel();
void SendTeleportLocationStart();
void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance);
void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry);
void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity);
void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint);
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID);
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID);
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags);
void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags);
void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation);
}
}

View File

@ -23,7 +23,7 @@
<include name="../../bin/Db4objects.Db4o.dll" />
<include name="../../bin/libsecondlife.dll" />
<include name="../../bin/OpenGrid.Framework.Data.dll" />
<include name="OpenGrid.Framework.UserManager.dll" />
<include name="../../bin/OpenGrid.Framework.UserManager.dll" />
<include name="../../bin/OpenSim.Framework.dll" />
<include name="../../bin/OpenSim.Framework.Console.dll" />
<include name="../../bin/OpenSim.GenericConfig.Xml.dll" />

View File

@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
# Visual C# Express 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGrid.Framework.Communications", "Common\OpenGrid.Framework.Communications\OpenGrid.Framework.Communications.csproj", "{683344D5-0000-0000-0000-000000000000}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGrid.Framework.Communications.OGS1", "Common\OpenGrid.Framework.Communications.OGS1\OpenGrid.Framework.Communications.OGS1.csproj", "{17442AF1-0000-0000-0000-000000000000}"

View File

@ -53,7 +53,7 @@ namespace SimpleApp
ClientView.TerrainManager = new TerrainManager(new SecondLife());
CommunicationsManager communicationsManager = new CommunicationsLocal(1000, 1000);
CommunicationsManager communicationsManager = new CommunicationsLocal(null);
RegionInfo regionInfo = new RegionInfo( );
BaseHttpServer httpServer = new BaseHttpServer(simPort);

View File

@ -43,9 +43,10 @@ namespace OpenSim.LocalCommunications
public LocalBackEndServices SandBoxServices = new LocalBackEndServices();
public LocalUserServices UserServices;
public CommunicationsLocal(uint defaultHomeX , uint defaultHomeY)
public CommunicationsLocal(NetworkServersInfo serversInfo)
: base(serversInfo)
{
UserServices = new LocalUserServices(this , defaultHomeX, defaultHomeY);
UserServices = new LocalUserServices(this , serversInfo.DefaultHomeLocX, serversInfo.DefaultHomeLocY);
UserServices.AddPlugin("OpenGrid.Framework.Data.DB4o.dll");
UserServer = UserServices;
GridServer = SandBoxServices;

View File

@ -27,6 +27,7 @@ namespace OpenSim.Region
private LLUUID agentID;
private AssetCache assetCache;
private int eventQueueCount = 1;
private Queue<string> CapsEventQueue = new Queue<string>();
public Caps(AssetCache assetCach, BaseHttpServer httpServer, string httpListen, uint httpPort, string capsPath, LLUUID agent)
{
@ -124,7 +125,24 @@ namespace OpenSim.Region
{
// Console.WriteLine("event queue request " + request);
string res = "";
int timer = 0;
/*while ((timer < 200) || (this.CapsEventQueue.Count < 1))
{
timer++;
}*/
if (this.CapsEventQueue.Count > 0)
{
lock (this.CapsEventQueue)
{
string item = CapsEventQueue.Dequeue();
res = item;
}
}
else
{
res = this.CreateEmptyEventResponse();
}
return res;
}
@ -141,6 +159,7 @@ namespace OpenSim.Region
res += "</map></array>";
res += "</map></llsd>";
eventQueueCount++;
this.CapsEventQueue.Enqueue(res);
return res;
}
@ -176,7 +195,7 @@ namespace OpenSim.Region
public void UploadHandler(LLUUID assetID, LLUUID inventoryItem, byte[] data)
{
// Console.WriteLine("upload handler called");
Console.WriteLine("upload handler called");
AssetBase asset;
asset = new AssetBase();
asset.FullID = assetID;
@ -185,7 +204,6 @@ namespace OpenSim.Region
asset.Name = "UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000");
asset.Data = data;
this.assetCache.AddAsset(asset);
}
public class AssetUploader

View File

@ -265,6 +265,7 @@ namespace OpenSim.Region
public void sendRegionInfoPacket(IClientAPI remote_client)
{
Encoding _enc = System.Text.Encoding.ASCII;
AgentCircuitData circuitData = remote_client.RequestClientInfo();
@ -281,7 +282,7 @@ namespace OpenSim.Region
regionInfoPacket.RegionInfo.RedirectGridY = m_regInfo.estateSettings.redirectGridY;
regionInfoPacket.RegionInfo.RegionFlags = (uint)m_regInfo.estateSettings.regionFlags;
regionInfoPacket.RegionInfo.SimAccess = (byte)m_regInfo.estateSettings.simAccess;
regionInfoPacket.RegionInfo.SimName = Helpers.StringToField(m_regInfo.RegionName);
regionInfoPacket.RegionInfo.SimName = _enc.GetBytes( m_regInfo.RegionName);
regionInfoPacket.RegionInfo.SunHour = m_regInfo.estateSettings.sunHour;
regionInfoPacket.RegionInfo.TerrainLowerLimit = m_regInfo.estateSettings.terrainLowerLimit;
regionInfoPacket.RegionInfo.TerrainRaiseLimit = m_regInfo.estateSettings.terrainRaiseLimit;

View File

@ -47,6 +47,7 @@ namespace OpenSim.Region.Scenes
private const uint FULL_MASK_PERMISSIONS = 2147483647;
private bool physicsEnabled = false;
private byte updateFlag = 0;
private uint flags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456 + 128;
private Dictionary<LLUUID, InventoryItem> inventoryItems;
@ -411,7 +412,7 @@ namespace OpenSim.Region.Scenes
lPos = this.Pos;
}
remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.primData, lPos, new LLUUID("00000000-0000-0000-9999-000000000005"));
remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.primData, lPos, new LLUUID("00000000-0000-0000-9999-000000000005"), this.flags);
}
/// <summary>
@ -434,7 +435,7 @@ namespace OpenSim.Region.Scenes
{
LLVector3 lPos;
Axiom.MathLib.Quaternion lRot;
if (this._physActor != null && this.physicsEnabled)
if (this._physActor != null && this.physicsEnabled) //is this needed ? doesn't the property fields do this for us?
{
PhysicsVector pPos = this._physActor.Position;
lPos = new LLVector3(pPos.X, pPos.Y, pPos.Z);
@ -445,6 +446,8 @@ namespace OpenSim.Region.Scenes
lPos = this.Pos;
lRot = this.rotation;
}
LLQuaternion mRot = new LLQuaternion(lRot.x, lRot.y, lRot.z, lRot.w);
RemoteClient.SendPrimTerseUpdate(this.m_regionHandle, 64096, this.LocalId, lPos, mRot);
}
/// <summary>
@ -535,6 +538,44 @@ namespace OpenSim.Region.Scenes
}
public void GrapMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
{
Console.WriteLine("moving prim to new location " + pos.X + " , " + pos.Y + " , " + pos.Z);
this.Pos = pos;
this.SendTerseUpdateToALLClients();
}
public void GetProperites(IClientAPI client)
{
//needs changing
ObjectPropertiesPacket proper = new ObjectPropertiesPacket();
proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1];
proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock();
proper.ObjectData[0].ItemID = LLUUID.Zero;
proper.ObjectData[0].CreationDate = (ulong)primData.CreationDate;
proper.ObjectData[0].CreatorID = primData.OwnerID;
proper.ObjectData[0].FolderID = LLUUID.Zero;
proper.ObjectData[0].FromTaskID = LLUUID.Zero;
proper.ObjectData[0].GroupID = LLUUID.Zero;
proper.ObjectData[0].InventorySerial = 0;
proper.ObjectData[0].LastOwnerID = LLUUID.Zero;
proper.ObjectData[0].ObjectID = this.uuid;
proper.ObjectData[0].OwnerID = primData.OwnerID;
proper.ObjectData[0].TouchName = new byte[0];
proper.ObjectData[0].TextureID = new byte[0];
proper.ObjectData[0].SitName = new byte[0];
proper.ObjectData[0].Name = new byte[0];
proper.ObjectData[0].Description = new byte[0];
proper.ObjectData[0].OwnerMask = primData.OwnerMask;
proper.ObjectData[0].NextOwnerMask = primData.NextOwnerMask;
proper.ObjectData[0].GroupMask = primData.GroupMask;
proper.ObjectData[0].EveryoneMask = primData.EveryoneMask;
proper.ObjectData[0].BaseMask = primData.BaseMask;
client.OutPacket(proper);
}
#endregion
}

View File

@ -214,7 +214,22 @@ namespace OpenSim.Region.Scenes
/// <param name="remoteClient"></param>
public void SelectPrim(uint primLocalID, IClientAPI remoteClient)
{
foreach (Entity ent in Entities.Values)
{
if (ent.LocalId == primLocalID)
{
((OpenSim.Region.Scenes.Primitive)ent).GetProperites(remoteClient);
break;
}
}
}
public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
{
if (this.Entities.ContainsKey(objectID))
{
((Primitive)this.Entities[objectID]).GrapMovement(offset, pos, remoteClient);
}
}
/// <summary>

View File

@ -57,19 +57,18 @@ namespace OpenSim.Region.Scenes
protected Dictionary<libsecondlife.LLUUID, Primitive> Prims;
private PhysicsScene phyScene;
private float timeStep = 0.1f;
public ILocalStorage localStorage;
private Random Rand = new Random();
private uint _primCount = 702000;
private int storageCount;
private Dictionary<LLUUID, ScriptHandler> m_scriptHandlers;
private Dictionary<string, ScriptFactory> m_scripts;
private Mutex updateLock;
public string m_datastore;
protected AuthenticateSessionsBase authenticateHandler;
protected RegionCommsListener regionCommsHost;
protected CommunicationsManager commsManager;
protected List<Caps> capsHandlers = new List<Caps>();
protected Dictionary<LLUUID, Caps> capsHandlers = new Dictionary<LLUUID, Caps>();
protected BaseHttpServer httpListener;
public ParcelManager parcelManager;
@ -127,7 +126,6 @@ namespace OpenSim.Region.Scenes
Prims = new Dictionary<LLUUID, Primitive>();
OpenSim.Framework.Console.MainLog.Instance.Verbose( "World.cs - creating LandMap");
TerrainManager = new TerrainManager(new SecondLife());
Terrain = new TerrainEngine();
ScenePresence.LoadAnims();
@ -271,53 +269,6 @@ namespace OpenSim.Region.Scenes
}
#endregion
#region Setup Methods
/// <summary>
/// Loads a new storage subsystem from a named library
/// </summary>
/// <param name="dllName">Storage Library</param>
/// <returns>Successful or not</returns>
public bool LoadStorageDLL(string dllName)
{
try
{
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
ILocalStorage store = null;
foreach (Type pluginType in pluginAssembly.GetTypes())
{
if (pluginType.IsPublic)
{
if (!pluginType.IsAbstract)
{
Type typeInterface = pluginType.GetInterface("ILocalStorage", true);
if (typeInterface != null)
{
ILocalStorage plug = (ILocalStorage)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
store = plug;
store.Initialise(this.m_datastore);
break;
}
typeInterface = null;
}
}
}
pluginAssembly = null;
this.localStorage = store;
return (store == null);
}
catch (Exception e)
{
OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: LoadStorageDLL() - Failed with exception " + e.ToString());
return false;
}
}
#endregion
#region Regenerate Terrain
/// <summary>
@ -558,6 +509,8 @@ namespace OpenSim.Region.Scenes
remoteClient.OnUpdatePrimPosition += this.UpdatePrimPosition;
remoteClient.OnRequestMapBlocks += this.RequestMapBlocks;
remoteClient.OnTeleportLocationRequest += this.RequestTeleportLocation;
//remoteClient.OnObjectSelect += this.SelectPrim;
remoteClient.OnGrapUpdate += this.MoveObject;
/* remoteClient.OnParcelPropertiesRequest += new ParcelPropertiesRequest(parcelManager.handleParcelPropertiesRequest);
remoteClient.OnParcelDivideRequest += new ParcelDivideRequest(parcelManager.handleParcelDivideRequest);
@ -680,22 +633,6 @@ namespace OpenSim.Region.Scenes
}
#endregion
#region ShutDown
/// <summary>
/// Tidy before shutdown
/// </summary>
public override void Close()
{
try
{
this.localStorage.ShutDown();
}
catch (Exception e)
{
OpenSim.Framework.Console.MainLog.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "World.cs: Close() - Failed with exception " + e.ToString());
}
}
#endregion
#region RegionCommsHost
@ -729,7 +666,7 @@ namespace OpenSim.Region.Scenes
//Console.WriteLine("new user, so creating caps handler for it");
Caps cap = new Caps(this.assetCache, httpListener, this.m_regInfo.CommsIPListenAddr, 9000, agent.CapsPath, agent.AgentID);
cap.RegisterHandlers();
this.capsHandlers.Add(cap);
this.capsHandlers.Add(agent.AgentID, cap);
}
this.authenticateHandler.AddNewCircuit(agent.circuitcode, agent);
}
@ -767,6 +704,7 @@ namespace OpenSim.Region.Scenes
agent.child = true;
this.commsManager.InterRegion.InformRegionOfChildAgent(neighbours[i].RegionHandle, agent);
remoteClient.InformClientOfNeighbour(neighbours[i].RegionHandle, System.Net.IPAddress.Parse(neighbours[i].CommsIPListenAddr), (ushort)neighbours[i].CommsIPListenPort);
//this.capsHandlers[remoteClient.AgentId].CreateEstablishAgentComms("", System.Net.IPAddress.Parse(neighbours[i].CommsIPListenAddr) + ":" + neighbours[i].CommsIPListenPort);
}
}
}
@ -845,16 +783,5 @@ namespace OpenSim.Region.Scenes
}
#endregion
/// <summary>
///
/// </summary>
/// <param name="px"></param>
/// <param name="py"></param>
/// <param name="RemoteClient"></param>
public override void SendLayerData(int px, int py, IClientAPI RemoteClient)
{
RemoteClient.SendLayerData(px, py, Terrain.getHeights1D());
}
}
}

View File

@ -51,8 +51,11 @@ namespace OpenSim.Region.Scenes
protected string m_regionName;
protected RegionInfo m_regInfo;
public TerrainEngine Terrain; //TODO: Replace TerrainManager with this.
protected libsecondlife.TerrainManager TerrainManager; // To be referenced via TerrainEngine
public TerrainEngine Terrain;
public string m_datastore;
public ILocalStorage localStorage;
protected object m_syncRoot = new object();
private uint m_nextLocalId = 8880000;
protected AssetCache assetCache;
@ -72,6 +75,51 @@ namespace OpenSim.Region.Scenes
/// </summary>
public abstract void LoadWorldMap();
/// <summary>
/// Loads a new storage subsystem from a named library
/// </summary>
/// <param name="dllName">Storage Library</param>
/// <returns>Successful or not</returns>
public bool LoadStorageDLL(string dllName)
{
try
{
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
ILocalStorage store = null;
foreach (Type pluginType in pluginAssembly.GetTypes())
{
if (pluginType.IsPublic)
{
if (!pluginType.IsAbstract)
{
Type typeInterface = pluginType.GetInterface("ILocalStorage", true);
if (typeInterface != null)
{
ILocalStorage plug = (ILocalStorage)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
store = plug;
store.Initialise(this.m_datastore);
break;
}
typeInterface = null;
}
}
}
pluginAssembly = null;
this.localStorage = store;
return (store == null);
}
catch (Exception e)
{
OpenSim.Framework.Console.MainLog.Instance.Warn("World.cs: LoadStorageDLL() - Failed with exception " + e.ToString());
return false;
}
}
/// <summary>
/// Send the region heightmap to the client
/// </summary>
@ -87,7 +135,10 @@ namespace OpenSim.Region.Scenes
/// <param name="px">Patch coordinate (x) 0..16</param>
/// <param name="py">Patch coordinate (y) 0..16</param>
/// <param name="RemoteClient">The client to send to</param>
public abstract void SendLayerData(int px, int py, IClientAPI RemoteClient);
public virtual void SendLayerData(int px, int py, IClientAPI RemoteClient)
{
RemoteClient.SendLayerData(px, py, Terrain.getHeights1D());
}
#endregion
@ -114,7 +165,7 @@ namespace OpenSim.Region.Scenes
/// <returns></returns>
public virtual RegionInfo RegionInfo
{
get { return null; }
get { return this.m_regInfo; }
}
public object SyncRoot
@ -131,7 +182,17 @@ namespace OpenSim.Region.Scenes
/// <summary>
/// Tidy before shutdown
/// </summary>
public abstract void Close();
public virtual void Close()
{
try
{
this.localStorage.ShutDown();
}
catch (Exception e)
{
OpenSim.Framework.Console.MainLog.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "World.cs: Close() - Failed with exception " + e.ToString());
}
}
#endregion

View File

@ -223,26 +223,23 @@ namespace OpenSim.Region.Scenes
Axiom.MathLib.Quaternion q = new Axiom.MathLib.Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z);
if (((movementflag & 1) == 0) || (q != this.bodyRot))
{
//we should add a new force to the list
// but for now we will deal with velocities
NewForce newVelocity = new NewForce();
Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3(1, 0, 0);
Axiom.MathLib.Vector3 direc = q * v3;
direc.Normalize();
//work out velocity for sim physics system
direc = direc * ((0.03f) * 128f);
if (this._physActor.Flying)
direc *= 4;
newVelocity.X = direc.x;
newVelocity.Y = direc.y;
newVelocity.Z = direc.z;
this.forcesList.Add(newVelocity);
this.AddNewMovement(v3, q);
movementflag = 1;
this.bodyRot = q;
}
}
else if ((flags & (uint)MainAvatar.ControlFlags.AGENT_CONTROL_AT_NEG) != 0)
{
Axiom.MathLib.Quaternion q = new Axiom.MathLib.Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z);
if (((movementflag & 2) == 0) || (q != this.bodyRot))
{
Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3(-1, 0, 0);
this.AddNewMovement(v3, q);
movementflag = 2;
this.bodyRot = q;
}
}
else
{
if ((movementflag) != 0)
@ -257,6 +254,23 @@ namespace OpenSim.Region.Scenes
}
}
protected void AddNewMovement(Axiom.MathLib.Vector3 vec, Axiom.MathLib.Quaternion rotation)
{
NewForce newVelocity = new NewForce();
Axiom.MathLib.Vector3 direc = rotation * vec;
direc.Normalize();
direc = direc * ((0.03f) * 128f);
if (this._physActor.Flying)
direc *= 4;
newVelocity.X = direc.x;
newVelocity.Y = direc.y;
newVelocity.Z = direc.z;
this.forcesList.Add(newVelocity);
}
#endregion
#region Overridden Methods

View File

@ -51,14 +51,17 @@ namespace OpenSim
public event StartAnim OnStartAnim;
public event GenericCall OnRequestAvatarsData;
public event LinkObjects OnLinkObjects;
public event UpdateVector OnGrapObject;
public event ObjectSelect OnDeGrapObject;
public event MoveObject OnGrapUpdate;
public event GenericCall4 OnAddPrim;
public event UpdateShape OnUpdatePrimShape;
public event ObjectSelect OnObjectSelect;
public event UpdatePrimFlags OnUpdatePrimFlags;
public event UpdatePrimTexture OnUpdatePrimTexture;
public event UpdatePrimVector OnUpdatePrimPosition;
public event UpdateVector OnUpdatePrimPosition;
public event UpdatePrimRotation OnUpdatePrimRotation;
public event UpdatePrimVector OnUpdatePrimScale;
public event UpdateVector OnUpdatePrimScale;
public event StatusChange OnChildAgentStatus;
public event GenericCall2 OnStopMovement;
public event NewAvatar OnNewAvatar;
@ -426,6 +429,17 @@ namespace OpenSim
OutPacket(tpStart);
}
public void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance)
{
MoneyBalanceReplyPacket money = new MoneyBalanceReplyPacket();
money.MoneyData.AgentID = this.AgentID;
money.MoneyData.TransactionID = transaction;
money.MoneyData.TransactionSuccess = success;
money.MoneyData.Description = description;
money.MoneyData.MoneyBalance = balance;
OutPacket(money);
}
#region Appearance/ Wearables Methods
/// <summary>
@ -569,13 +583,13 @@ namespace OpenSim
/// <param name="pos"></param>
/// <param name="rotation"></param>
/// <param name="textureID"></param>
public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID)
public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags)
{
ObjectUpdatePacket outPacket = new ObjectUpdatePacket();
outPacket.RegionData.RegionHandle = regionHandle;
outPacket.RegionData.TimeDilation = timeDilation;
outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primData, textureID);
outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primData, textureID, flags);
outPacket.ObjectData[0].ID = localID;
outPacket.ObjectData[0].FullID = primData.FullID;
byte[] pb = pos.GetBytes();
@ -592,13 +606,13 @@ namespace OpenSim
/// </summary>
/// <param name="primData"></param>
/// <param name="pos"></param>
public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID)
public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID , uint flags)
{
ObjectUpdatePacket outPacket = new ObjectUpdatePacket();
outPacket.RegionData.RegionHandle = regionHandle;
outPacket.RegionData.TimeDilation = timeDilation;
outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primData, textureID);
outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primData, textureID, flags);
outPacket.ObjectData[0].ID = localID;
outPacket.ObjectData[0].FullID = primData.FullID;
byte[] pb = pos.GetBytes();
@ -786,11 +800,11 @@ namespace OpenSim
/// </summary>
/// <param name="primData"></param>
/// <returns></returns>
protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimData primData, LLUUID textureID)
protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimData primData, LLUUID textureID, uint flags)
{
ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock();
this.SetDefaultPrimPacketValues(objupdate);
objupdate.UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456;
objupdate.UpdateFlags = flags;
this.SetPrimPacketShapeData(objupdate, primData, textureID);
return objupdate;

View File

@ -254,6 +254,27 @@ namespace OpenSim
}
}
break;
case PacketType.ObjectGrab:
ObjectGrabPacket grap = (ObjectGrabPacket)Pack;
if (OnGrapObject != null)
{
OnGrapObject(grap.ObjectData.LocalID, grap.ObjectData.GrabOffset, this);
}
break;
case PacketType.ObjectGrabUpdate:
ObjectGrabUpdatePacket grapUpdate = (ObjectGrabUpdatePacket)Pack;
if (OnGrapUpdate != null)
{
OnGrapUpdate(grapUpdate.ObjectData.ObjectID, grapUpdate.ObjectData.GrabOffsetInitial, grapUpdate.ObjectData.GrabPosition, this);
}
break;
case PacketType.ObjectDeGrab:
ObjectDeGrabPacket deGrap = (ObjectDeGrabPacket)Pack;
if (OnDeGrapObject != null)
{
OnDeGrapObject(deGrap.ObjectData.LocalID, this);
}
break;
#endregion
#region Inventory/Asset/Other related packets
@ -468,6 +489,10 @@ namespace OpenSim
break;
#endregion
case PacketType.MoneyBalanceRequest:
this.SendMoneyBalance(LLUUID.Zero, true, new byte[0], 1000);
break;
#region Parcel related packets
case PacketType.ParcelPropertiesRequest:
ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack;

View File

@ -1,4 +1,4 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.50727</ProductVersion>
@ -6,8 +6,7 @@
<ProjectGuid>{438A9556-0000-0000-0000-000000000000}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<ApplicationIcon></ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>OpenSim</AssemblyName>
@ -16,11 +15,9 @@
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>Exe</OutputType>
<AppDesignerFolder>
</AppDesignerFolder>
<AppDesignerFolder></AppDesignerFolder>
<RootNamespace>OpenSim</RootNamespace>
<StartupObject>
</StartupObject>
<StartupObject></StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
</PropertyGroup>
@ -31,8 +28,7 @@
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;DEBUG</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DocumentationFile></DocumentationFile>
<DebugSymbols>True</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>False</Optimize>
@ -41,8 +37,7 @@
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoWarn>
</NoWarn>
<NoWarn></NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
@ -51,8 +46,7 @@
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DocumentationFile></DocumentationFile>
<DebugSymbols>False</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>True</Optimize>
@ -61,8 +55,7 @@
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoWarn>
</NoWarn>
<NoWarn></NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="Axiom.MathLib.dll" >
@ -87,16 +80,18 @@
</Reference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Common\OpenGrid.Framework.Communications.OGS1\OpenGrid.Framework.Communications.OGS1.csproj">
<Project>{C1F40DD4-A68B-4233-9142-CE236775A3CE}</Project>
<Name>OpenGrid.Framework.Communications.OGS1</Name>
</ProjectReference>
<ProjectReference Include="..\..\Common\OpenGrid.Framework.Communications\OpenGrid.Framework.Communications.csproj">
<Name>OpenGrid.Framework.Communications</Name>
<Project>{683344D5-0000-0000-0000-000000000000}</Project>
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\Common\OpenGrid.Framework.Communications.OGS1\OpenGrid.Framework.Communications.OGS1.csproj">
<Name>OpenGrid.Framework.Communications.OGS1</Name>
<Project>{17442AF1-0000-0000-0000-000000000000}</Project>
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\Common\OpenGrid.Framework.UserManager\OpenGrid.Framework.UserManagement.csproj">
<Name>OpenGrid.Framework.UserManagement</Name>
<Project>{DA9A7391-0000-0000-0000-000000000000}</Project>

View File

@ -23,6 +23,7 @@
<include name="../../bin/Db4objects.Db4o.dll" />
<include name="../../bin/libsecondlife.dll" />
<include name="../../bin/OpenGrid.Framework.Communications.dll" />
<include name="../../bin/OpenGrid.Framework.Communications.OGS1.dll" />
<include name="../../bin/OpenGrid.Framework.UserManagement.dll" />
<include name="../../bin/OpenSim.Caches.dll" />
<include name="../../bin/OpenSim.Framework.dll" />

View File

@ -109,13 +109,13 @@ namespace OpenSim
this.SetupLocalGridServers();
// this.checkServer = new CheckSumServer(12036);
// this.checkServer.ServerListener();
sandboxCommunications = new CommunicationsLocal(this.serversData.DefaultHomeLocX, this.serversData.DefaultHomeLocY);
sandboxCommunications = new CommunicationsLocal(this.serversData);
this.commsManager = sandboxCommunications;
}
else
{
this.SetupRemoteGridServers();
this.commsManager = new GridCommsManager();
this.commsManager = new GridCommsManager(this.serversData);
}
startuptime = DateTime.Now;

View File

@ -534,6 +534,7 @@
<Reference name="OpenSim.Framework.Console"/>
<Reference name="OpenSim.Servers"/>
<Reference name="OpenGrid.Framework.Communications" />
<Reference name="OpenGrid.Framework.Data" />
<Reference name="libsecondlife.dll"/>
<Reference name="XMLRPC"/>
@ -664,6 +665,7 @@
<Reference name="OpenSim.RegionServer"/>
<Reference name="OpenSim.GenericConfig.Xml"/>
<Reference name="OpenGrid.Framework.Communications"/>
<Reference name="OpenGrid.Framework.Communications.OGS1"/>
<Reference name="OpenSim.Caches"/>
<Reference name="XMLRPC"/>
<Reference name="OpenGrid.Framework.UserManagement" />