* Removed ClientThreads from avatar
* Deleted SimpleApp2 as it's getting wonkier and wonkier by the minute * Added avatar handling to SimpleApp, still don't have any avatar out on the playing field * Removed some warnings * Went from IWorld to Scene *Sugilite
parent
8edcc844c4
commit
64ed1e1b3b
|
@ -48,8 +48,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrai
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApp", "OpenSim\Examples\SimpleApp\SimpleApp.csproj", "{24B12448-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApp2", "OpenSim\Examples\SimpleApp2\SimpleApp2.csproj", "{24DF2448-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLRPC", "Common\XmlRpcCS\XMLRPC.csproj", "{8E81D43C-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Global
|
||||
|
@ -154,10 +152,6 @@ Global
|
|||
{24B12448-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24B12448-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{24B12448-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{24DF2448-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{24DF2448-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24DF2448-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{24DF2448-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
|
|
@ -5,19 +5,28 @@ using OpenSim.Framework.Interfaces;
|
|||
using OpenSim.Framework.Types;
|
||||
using OpenSim.Framework.Console;
|
||||
using libsecondlife;
|
||||
using OpenSim.Region;
|
||||
using Avatar=OpenSim.Region.Scenes.Avatar;
|
||||
using OpenSim.Region.Scenes;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Caches;
|
||||
using OpenGrid.Framework.Communications;
|
||||
|
||||
namespace SimpleApp
|
||||
{
|
||||
public class MyWorld : IWorld
|
||||
public class MyWorld : Scene
|
||||
{
|
||||
private RegionInfo m_regionInfo;
|
||||
private List<OpenSim.Region.Scenes.Avatar> m_avatars;
|
||||
|
||||
public MyWorld(RegionInfo regionInfo)
|
||||
public MyWorld(Dictionary<uint, IClientAPI> clientThreads, RegionInfo regionInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach)
|
||||
: base(clientThreads, regionInfo, authen, commsMan, assetCach)
|
||||
{
|
||||
m_regionInfo = regionInfo;
|
||||
m_avatars = new List<Avatar>();
|
||||
}
|
||||
|
||||
private void SendLayerData(IClientAPI remoteClient)
|
||||
public override void SendLayerData(IClientAPI remoteClient)
|
||||
{
|
||||
float[] map = new float[65536];
|
||||
|
||||
|
@ -34,7 +43,7 @@ namespace SimpleApp
|
|||
|
||||
#region IWorld Members
|
||||
|
||||
void IWorld.AddNewAvatar(IClientAPI client, LLUUID agentID, bool child)
|
||||
override public void AddNewAvatar(IClientAPI client, LLUUID agentID, bool child)
|
||||
{
|
||||
LLVector3 pos = new LLVector3(128, 128, 128);
|
||||
|
||||
|
@ -65,6 +74,8 @@ namespace SimpleApp
|
|||
|
||||
client.SendRegionHandshake(m_regionInfo);
|
||||
|
||||
OpenSim.Region.Scenes.Avatar avatar = new Avatar( client, this, m_regionInfo );
|
||||
|
||||
}
|
||||
|
||||
private void SendWearables( IClientAPI client )
|
||||
|
@ -72,30 +83,28 @@ namespace SimpleApp
|
|||
client.SendWearables( AvatarWearable.DefaultWearables );
|
||||
}
|
||||
|
||||
void IWorld.RemoveAvatar(LLUUID agentID)
|
||||
public void RemoveAvatar(LLUUID agentID)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
RegionInfo IWorld.RegionInfo
|
||||
public RegionInfo RegionInfo
|
||||
{
|
||||
get { return m_regionInfo; }
|
||||
}
|
||||
|
||||
object IWorld.SyncRoot
|
||||
public object SyncRoot
|
||||
{
|
||||
get { return this; }
|
||||
}
|
||||
|
||||
private uint m_nextLocalId = 1;
|
||||
|
||||
uint IWorld.NextLocalId
|
||||
public uint NextLocalId
|
||||
{
|
||||
get { return m_nextLocalId++; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ using OpenSim.UserServer;
|
|||
using OpenSim.Servers;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Caches;
|
||||
using OpenGrid.Framework.Communications;
|
||||
using OpenSim.LocalCommunications;
|
||||
|
||||
namespace SimpleApp
|
||||
{
|
||||
|
@ -51,9 +53,11 @@ namespace SimpleApp
|
|||
|
||||
ClientView.TerrainManager = new TerrainManager(new SecondLife());
|
||||
|
||||
CommunicationsManager communicationsManager = new CommunicationsLocal();
|
||||
|
||||
RegionInfo regionInfo = new RegionInfo( );
|
||||
|
||||
udpServer.LocalWorld = new MyWorld( regionInfo );
|
||||
udpServer.LocalWorld = new MyWorld( packetServer.ClientAPIs, regionInfo, m_circuitManager, communicationsManager, assetCache );
|
||||
|
||||
// World world = new World(udpServer.PacketServer.ClientAPIs, regionInfo);
|
||||
// PhysicsScene physicsScene = new NullPhysicsScene();
|
||||
|
|
|
@ -62,10 +62,6 @@
|
|||
<HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="OpenSim.World" >
|
||||
<HintPath>OpenSim.World.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" >
|
||||
<HintPath>System.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
|
@ -80,6 +76,12 @@
|
|||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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="..\..\OpenSim.Caches\OpenSim.Caches.csproj">
|
||||
<Name>OpenSim.Caches</Name>
|
||||
<Project>{1938EB12-0000-0000-0000-000000000000}</Project>
|
||||
|
@ -104,6 +106,18 @@
|
|||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\OpenSim.LocalCommunications\OpenSim.LocalCommunications.csproj">
|
||||
<Name>OpenSim.LocalCommunications</Name>
|
||||
<Project>{79CED992-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\OpenSim.Region\OpenSim.Region.csproj">
|
||||
<Name>OpenSim.Region</Name>
|
||||
<Project>{196916AF-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\OpenSim.RegionServer\OpenSim.RegionServer.csproj">
|
||||
<Name>OpenSim.RegionServer</Name>
|
||||
<Project>{632E1BFD-0000-0000-0000-000000000000}</Project>
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using System.Net;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Assets;
|
||||
using OpenSim.Framework.Types;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Caches;
|
||||
|
||||
namespace SimpleApp2
|
||||
{
|
||||
public class MyClientView : ClientView
|
||||
{
|
||||
private float[] m_map;
|
||||
private Dictionary<uint, IClientAPI> m_clientAPIs;
|
||||
|
||||
public MyClientView(float[] map, Dictionary<uint, IClientAPI> clientAPIs, EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IWorld world, AssetCache assetCache, PacketServer packServer, InventoryCache inventoryCache, AuthenticateSessionsBase authenSessions)
|
||||
: base(remoteEP, initialcirpack, clientThreads, world, assetCache, packServer, inventoryCache, authenSessions)
|
||||
{
|
||||
m_map = map;
|
||||
m_clientAPIs = clientAPIs;
|
||||
|
||||
OnRegionHandShakeReply += RegionHandShakeReplyHandler;
|
||||
OnChatFromViewer += ChatHandler;
|
||||
OnRequestWearables += RequestWearablesHandler;
|
||||
OnCompleteMovementToRegion += CompleteMovementToRegionHandler;
|
||||
}
|
||||
|
||||
private void ChatHandler(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
|
||||
{
|
||||
// Echo it (so you know what you typed)
|
||||
SendChatMessage(message, type, fromPos, fromName, fromAgentID);
|
||||
SendChatMessage("Ready.", 1, fromPos, "System", LLUUID.Zero);
|
||||
}
|
||||
|
||||
private void CompleteMovementToRegionHandler()
|
||||
{
|
||||
LLVector3 pos = new LLVector3(128, 128, 128);
|
||||
|
||||
MoveAgentIntoRegion(m_world.RegionInfo, pos, LLVector3.Zero );
|
||||
|
||||
SendAvatarData( m_world.RegionInfo, FirstName,
|
||||
LastName, AgentId, 0,
|
||||
pos);
|
||||
|
||||
SendChatMessage("Welcome to My World.", 1, pos, "System", LLUUID.Zero);
|
||||
|
||||
|
||||
|
||||
// OpenSim.world.Primitive prim = new OpenSim.world.Primitive( m_clientAPIs, m_world.RegionInfo.RegionHandle, m_world, AgentId );
|
||||
|
||||
// SendNewPrim( prim );
|
||||
|
||||
}
|
||||
|
||||
private void RegionHandShakeReplyHandler(IClientAPI client)
|
||||
{
|
||||
client.SendLayerData(m_map);
|
||||
}
|
||||
|
||||
private void RequestWearablesHandler(IClientAPI client)
|
||||
{
|
||||
SendWearables(AvatarWearable.DefaultWearables);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim;
|
||||
using OpenSim.Assets;
|
||||
using System.Net;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Caches;
|
||||
|
||||
namespace SimpleApp2
|
||||
{
|
||||
public class MyPacketServer : PacketServer
|
||||
{
|
||||
private float[] m_map;
|
||||
|
||||
public MyPacketServer(float[] map, ClientStackNetworkHandler networkHandler, uint port)
|
||||
: base(networkHandler, port)
|
||||
{
|
||||
m_map = map;
|
||||
}
|
||||
|
||||
protected override ClientView CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IWorld world, AssetCache assetCache, PacketServer packServer, InventoryCache inventoryCache, AuthenticateSessionsBase authenSessions)
|
||||
{
|
||||
// (EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IWorld world, AssetCache assetCache, PacketServer packServer, InventoryCache inventoryCache, AuthenticateSessionsBase authenSessions)
|
||||
|
||||
|
||||
return new MyClientView(m_map, ClientAPIs, remoteEP, initialcirpack, clientThreads, world, assetCache, packServer, inventoryCache, authenSessions);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,178 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim;
|
||||
using OpenSim.Servers;
|
||||
using OpenSim.GridInterfaces.Local;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Types;
|
||||
using OpenSim.UserServer;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Assets;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Caches;
|
||||
|
||||
namespace SimpleApp2
|
||||
{
|
||||
class Program : IWorld, IAssetReceiver, conscmd_callback
|
||||
{
|
||||
private ConsoleBase m_console;
|
||||
private RegionInfo m_regionInfo;
|
||||
private float[] m_map;
|
||||
private AuthenticateSessionsBase m_circuitManager;
|
||||
|
||||
private void Run()
|
||||
{
|
||||
m_console = new ConsoleBase(null, "SimpleApp", this, false);
|
||||
MainConsole.Instance = m_console;
|
||||
|
||||
m_map = CreateMap();
|
||||
|
||||
CheckSumServer checksumServer = new CheckSumServer(12036);
|
||||
checksumServer.ServerListener();
|
||||
|
||||
string simAddr = "127.0.0.1";
|
||||
int simPort = 9000;
|
||||
|
||||
m_circuitManager = new AuthenticateSessionsBase();
|
||||
|
||||
LoginServer loginServer = new LoginServer(simAddr, simPort, 0, 0, false);
|
||||
loginServer.Startup();
|
||||
|
||||
loginServer.SetSessionHandler( AddNewSessionHandler );
|
||||
|
||||
InventoryCache inventoryCache = new InventoryCache();
|
||||
|
||||
LocalAssetServer assetServer = new LocalAssetServer();
|
||||
assetServer.SetServerInfo("http://127.0.0.1:8003/", "");
|
||||
assetServer.SetReceiver(this);
|
||||
|
||||
AssetCache assetCache = new AssetCache(assetServer);
|
||||
|
||||
UDPServer udpServer = new UDPServer(simPort, assetCache, inventoryCache, m_console, m_circuitManager );
|
||||
PacketServer packetServer = new MyPacketServer(m_map, udpServer, (uint) simPort );
|
||||
udpServer.ServerListener();
|
||||
|
||||
ClientView.TerrainManager = new TerrainManager(new SecondLife());
|
||||
|
||||
m_regionInfo = new RegionInfo();
|
||||
|
||||
udpServer.LocalWorld = this;
|
||||
|
||||
// World world = new World(udpServer.PacketServer.ClientAPIs, regionInfo);
|
||||
// PhysicsScene physicsScene = new NullPhysicsScene();
|
||||
// world.PhysicsScene = physicsScene;
|
||||
// udpServer.LocalWorld = world;
|
||||
|
||||
BaseHttpServer httpServer = new BaseHttpServer(simPort);
|
||||
httpServer.AddXmlRPCHandler("login_to_simulator", loginServer.XmlRpcLoginMethod);
|
||||
httpServer.Start();
|
||||
|
||||
m_console.WriteLine(LogPriority.NORMAL, "Press enter to quit.");
|
||||
m_console.ReadLine();
|
||||
}
|
||||
|
||||
private float[] CreateMap()
|
||||
{
|
||||
float[] map = new float[65536];
|
||||
|
||||
for (int i = 0; i < 65536; i++)
|
||||
{
|
||||
int x = i % 256;
|
||||
int y = i / 256;
|
||||
|
||||
map[i] = (float)(x + y / 2);
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
private bool AddNewSessionHandler(ulong regionHandle, Login loginData)
|
||||
{
|
||||
m_console.WriteLine(LogPriority.NORMAL, "Region [{0}] recieved Login from [{1}] [{2}]", regionHandle, loginData.First, loginData.Last);
|
||||
|
||||
AgentCircuitData agent = new AgentCircuitData();
|
||||
agent.AgentID = loginData.Agent;
|
||||
agent.firstname = loginData.First;
|
||||
agent.lastname = loginData.Last;
|
||||
agent.SessionID = loginData.Session;
|
||||
agent.SecureSessionID = loginData.SecureSession;
|
||||
agent.circuitcode = loginData.CircuitCode;
|
||||
agent.BaseFolder = loginData.BaseFolder;
|
||||
agent.InventoryFolder = loginData.InventoryFolder;
|
||||
agent.startpos = new LLVector3(128, 128, 70);
|
||||
|
||||
m_circuitManager.AddNewCircuit(agent.circuitcode, agent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Program app = new Program();
|
||||
|
||||
app.Run();
|
||||
}
|
||||
|
||||
|
||||
#region IWorld Members
|
||||
|
||||
void IWorld.AddNewAvatar(IClientAPI remoteClient, LLUUID agentID, bool child)
|
||||
{
|
||||
remoteClient.SendRegionHandshake(m_regionInfo);
|
||||
}
|
||||
|
||||
void IWorld.RemoveAvatar(LLUUID agentID)
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
RegionInfo IWorld.RegionInfo
|
||||
{
|
||||
get { return m_regionInfo; }
|
||||
}
|
||||
|
||||
object IWorld.SyncRoot
|
||||
{
|
||||
get { return this; }
|
||||
}
|
||||
|
||||
private uint m_nextLocalId = 1;
|
||||
|
||||
uint IWorld.NextLocalId
|
||||
{
|
||||
get { return m_nextLocalId++; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IAssetReceiver Members
|
||||
|
||||
public void AssetReceived(AssetBase asset, bool IsTexture)
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public void AssetNotFound(AssetBase asset)
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region conscmd_callback Members
|
||||
|
||||
public void RunCmd(string cmd, string[] cmdparams)
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
public void Show(string ShowWhat)
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("SimpleApp2")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Playahead AB")]
|
||||
[assembly: AssemblyProduct("SimpleApp2")]
|
||||
[assembly: AssemblyCopyright("Copyright © Playahead AB 2007")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("bdda0707-02b4-46ca-87ce-ab3c12558a4a")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -1,154 +0,0 @@
|
|||
<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>{24DF2448-0000-0000-0000-000000000000}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ApplicationIcon>
|
||||
</ApplicationIcon>
|
||||
<AssemblyKeyContainerName>
|
||||
</AssemblyKeyContainerName>
|
||||
<AssemblyName>SimpleApp2</AssemblyName>
|
||||
<DefaultClientScript>JScript</DefaultClientScript>
|
||||
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
|
||||
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
||||
<DelaySign>false</DelaySign>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>
|
||||
</AppDesignerFolder>
|
||||
<RootNamespace>SimpleApp2</RootNamespace>
|
||||
<StartupObject>
|
||||
</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile>
|
||||
</ConfigurationOverrideFile>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<Optimize>False</Optimize>
|
||||
<OutputPath>..\..\..\bin\</OutputPath>
|
||||
<RegisterForComInterop>False</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>
|
||||
</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
||||
<ConfigurationOverrideFile>
|
||||
</ConfigurationOverrideFile>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
<Optimize>True</Optimize>
|
||||
<OutputPath>..\..\..\bin\</OutputPath>
|
||||
<RegisterForComInterop>False</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>False</RemoveIntegerChecks>
|
||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<NoWarn>
|
||||
</NoWarn>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="libsecondlife.dll">
|
||||
<HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="OpenSim.World">
|
||||
<HintPath>OpenSim.World.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System">
|
||||
<HintPath>System.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.dll">
|
||||
<HintPath>..\..\..\bin\System.Data.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml">
|
||||
<HintPath>System.Xml.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\OpenSim.Caches\OpenSim.Caches.csproj">
|
||||
<Name>OpenSim.Caches</Name>
|
||||
<Project>{1938EB12-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\Common\OpenSim.Framework\OpenSim.Framework.csproj">
|
||||
<Name>OpenSim.Framework</Name>
|
||||
<Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\Common\OpenSim.Framework.Console\OpenSim.Framework.Console.csproj">
|
||||
<Name>OpenSim.Framework.Console</Name>
|
||||
<Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\OpenSim.GridInterfaces\Local\OpenSim.GridInterfaces.Local.csproj">
|
||||
<Name>OpenSim.GridInterfaces.Local</Name>
|
||||
<Project>{546099CD-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\OpenSim.RegionServer\OpenSim.RegionServer.csproj">
|
||||
<Name>OpenSim.RegionServer</Name>
|
||||
<Project>{632E1BFD-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\Common\OpenSim.Servers\OpenSim.Servers.csproj">
|
||||
<Name>OpenSim.Servers</Name>
|
||||
<Project>{8BB20F0A-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\Common\XmlRpcCS\XMLRPC.csproj">
|
||||
<Name>XMLRPC</Name>
|
||||
<Project>{8E81D43C-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MyClientView.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MyPacketServer.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>
|
||||
</PreBuildEvent>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -1,53 +0,0 @@
|
|||
<?xml version="1.0" ?>
|
||||
<project name="SimpleApp2" default="build">
|
||||
<target name="build">
|
||||
<echo message="Build Directory is ${project::get-base-directory()}/${build.dir}" />
|
||||
<mkdir dir="${project::get-base-directory()}/${build.dir}" />
|
||||
<copy todir="${project::get-base-directory()}/${build.dir}">
|
||||
<fileset basedir="${project::get-base-directory()}">
|
||||
</fileset>
|
||||
</copy>
|
||||
<csc target="exe" debug="${build.debug}" unsafe="False" define="TRACE;DEBUG" output="${project::get-base-directory()}/${build.dir}/${project::get-name()}.exe">
|
||||
<resources prefix="SimpleApp2" dynamicprefix="true" >
|
||||
</resources>
|
||||
<sources failonempty="true">
|
||||
<include name="MyClientView.cs" />
|
||||
<include name="MyPacketServer.cs" />
|
||||
<include name="Program.cs" />
|
||||
<include name="Properties/AssemblyInfo.cs" />
|
||||
</sources>
|
||||
<references basedir="${project::get-base-directory()}">
|
||||
<lib>
|
||||
<include name="${project::get-base-directory()}" />
|
||||
<include name="${project::get-base-directory()}/${build.dir}" />
|
||||
</lib>
|
||||
<include name="../../../bin/libsecondlife.dll" />
|
||||
<include name="../../../bin/OpenSim.Caches.dll" />
|
||||
<include name="../../../bin/OpenSim.Framework.dll" />
|
||||
<include name="../../../bin/OpenSim.Framework.Console.dll" />
|
||||
<include name="../../../bin/OpenSim.GridInterfaces.Local.dll" />
|
||||
<include name="../../../bin/OpenSim.RegionServer.dll" />
|
||||
<include name="../../../bin/OpenSim.Servers.dll" />
|
||||
<include name="OpenSim.World.dll" />
|
||||
<include name="System.dll" />
|
||||
<include name="System.Data.dll.dll" />
|
||||
<include name="System.Xml.dll" />
|
||||
<include name="../../../bin/XMLRPC.dll" />
|
||||
</references>
|
||||
</csc>
|
||||
<echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../../../bin/" />
|
||||
<mkdir dir="${project::get-base-directory()}/../../../bin/"/>
|
||||
<copy todir="${project::get-base-directory()}/../../../bin/">
|
||||
<fileset basedir="${project::get-base-directory()}/${build.dir}/" >
|
||||
<include name="*.dll"/>
|
||||
<include name="*.exe"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
</target>
|
||||
<target name="clean">
|
||||
<delete dir="${bin.dir}" failonerror="false" />
|
||||
<delete dir="${obj.dir}" failonerror="false" />
|
||||
</target>
|
||||
<target name="doc" description="Creates documentation.">
|
||||
</target>
|
||||
</project>
|
|
@ -237,7 +237,7 @@ namespace OpenSim.Region
|
|||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception)
|
||||
{
|
||||
return false; //Exception. For now, lets skip subdivision
|
||||
}
|
||||
|
@ -294,7 +294,7 @@ namespace OpenSim.Region
|
|||
startParcel = getParcel(start_x, start_y);
|
||||
endParcel = getParcel(end_x, end_y);
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception)
|
||||
{
|
||||
return false; //Error occured when trying to get the start and end parcels
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ namespace OpenSim.Region.Scenes
|
|||
/// </summary>
|
||||
public void SendInitialPosition()
|
||||
{
|
||||
this.ControllingClient.SendAvatarData(m_regionInfo, this.firstname, this.lastname, this.uuid, this.localid, this.Pos);
|
||||
this.ControllingClient.SendAvatarData(m_regionInfo, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -59,7 +59,6 @@ namespace OpenSim.Region.Scenes
|
|||
private AvatarWearable[] Wearables;
|
||||
private LLVector3 positionLastFrame = new LLVector3(0, 0, 0);
|
||||
private ulong m_regionHandle;
|
||||
private Dictionary<uint, IClientAPI> m_clientThreads;
|
||||
private bool childAvatar = false;
|
||||
private bool newForce = false;
|
||||
|
||||
|
@ -71,11 +70,10 @@ namespace OpenSim.Region.Scenes
|
|||
/// <param name="world"></param>
|
||||
/// <param name="clientThreads"></param>
|
||||
/// <param name="regionDat"></param>
|
||||
public Avatar(IClientAPI theClient, Scene world, Dictionary<uint, IClientAPI> clientThreads, RegionInfo reginfo)
|
||||
public Avatar(IClientAPI theClient, Scene world, RegionInfo reginfo)
|
||||
{
|
||||
|
||||
m_world = world;
|
||||
m_clientThreads = clientThreads;
|
||||
this.uuid = theClient.AgentId;
|
||||
|
||||
m_regionInfo = reginfo;
|
||||
|
@ -84,7 +82,7 @@ namespace OpenSim.Region.Scenes
|
|||
ControllingClient = theClient;
|
||||
this.firstname = ControllingClient.FirstName;
|
||||
this.lastname = ControllingClient.LastName;
|
||||
localid = this.m_world.NextLocalId;
|
||||
m_localId = m_world.NextLocalId;
|
||||
Pos = ControllingClient.StartPos;
|
||||
visualParams = new byte[218];
|
||||
for (int i = 0; i < 218; i++)
|
||||
|
@ -196,7 +194,7 @@ namespace OpenSim.Region.Scenes
|
|||
{
|
||||
LLVector3 pos = this.Pos;
|
||||
LLVector3 vel = this.Velocity;
|
||||
RemoteClient.SendAvatarTerseUpdate(this.m_regionHandle, 64096, this.localid, new LLVector3(pos.X, pos.Y, pos.Z), new LLVector3(vel.X, vel.Y, vel.Z));
|
||||
RemoteClient.SendAvatarTerseUpdate(this.m_regionHandle, 64096, this.LocalId, new LLVector3(pos.X, pos.Y, pos.Z), new LLVector3(vel.X, vel.Y, vel.Z));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -38,7 +38,6 @@ namespace OpenSim.Region.Scenes
|
|||
public abstract class Entity : IScriptReadonlyEntity
|
||||
{
|
||||
public libsecondlife.LLUUID uuid;
|
||||
public uint localid;
|
||||
public LLVector3 velocity;
|
||||
public Quaternion rotation;
|
||||
protected List<Entity> children;
|
||||
|
@ -128,13 +127,20 @@ namespace OpenSim.Region.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
protected uint m_localId;
|
||||
|
||||
public uint LocalId
|
||||
{
|
||||
get { return m_localId; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Entity (should not occur on it's own)
|
||||
/// </summary>
|
||||
public Entity()
|
||||
{
|
||||
uuid = new libsecondlife.LLUUID();
|
||||
localid = 0;
|
||||
|
||||
m_pos = new LLVector3();
|
||||
velocity = new LLVector3();
|
||||
rotation = new Quaternion();
|
||||
|
|
|
@ -136,7 +136,7 @@ namespace OpenSim.Region.Scenes
|
|||
this.primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
|
||||
this.primData.OwnerID = owner;
|
||||
this.primData.FullID = this.uuid = fullID;
|
||||
this.primData.LocalID = this.localid = localID;
|
||||
this.primData.LocalID = m_localId = localID;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -156,7 +156,7 @@ namespace OpenSim.Region.Scenes
|
|||
inventoryItems = new Dictionary<LLUUID, InventoryItem>();
|
||||
this.primData = PrimData.DefaultCube();
|
||||
this.primData.OwnerID = owner;
|
||||
this.primData.LocalID = this.localid = localID;
|
||||
this.primData.LocalID = m_localId = localID;
|
||||
this.Pos = this.primData.Position = position;
|
||||
|
||||
this.updateFlag = 1;
|
||||
|
@ -411,7 +411,7 @@ namespace OpenSim.Region.Scenes
|
|||
lPos = this.Pos;
|
||||
}
|
||||
|
||||
remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.localid, this.primData, lPos, new LLUUID("00000000-0000-0000-5005-000000000005"));
|
||||
remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.primData, lPos, new LLUUID("00000000-0000-0000-5005-000000000005"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -499,7 +499,7 @@ namespace OpenSim.Region.Scenes
|
|||
PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin;
|
||||
LLVector3 pos1 = addPacket.ObjectData.RayEnd;
|
||||
this.primData.FullID = this.uuid = LLUUID.Random();
|
||||
this.primData.LocalID = this.localid = (uint)(localID);
|
||||
this.primData.LocalID = m_localId = (uint)(localID);
|
||||
this.primData.Position = this.Pos = pos1;
|
||||
|
||||
this.updateFlag = 1;
|
||||
|
|
|
@ -212,7 +212,7 @@ namespace OpenSim.Region.Scenes
|
|||
{
|
||||
foreach (Entity ent in Entities.Values)
|
||||
{
|
||||
if (ent.localid == localID)
|
||||
if (ent.LocalId == localID)
|
||||
{
|
||||
((OpenSim.Region.Scenes.Primitive)ent).UpdatePosition(pos);
|
||||
break;
|
||||
|
|
|
@ -107,7 +107,7 @@ namespace OpenSim.Region.Scenes
|
|||
{
|
||||
if(this.scriptEngines.ContainsKey(scriptType))
|
||||
{
|
||||
this.scriptEngines[scriptType].LoadScript(script, scriptName, ent.localid);
|
||||
this.scriptEngines[scriptType].LoadScript(script, scriptName, ent.LocalId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -124,7 +124,7 @@ namespace OpenSim.Region.Scenes
|
|||
// Console.WriteLine("script- getting entity " + localID + " position");
|
||||
foreach (Entity entity in this.Entities.Values)
|
||||
{
|
||||
if (entity.localid == localID)
|
||||
if (entity.LocalId == localID)
|
||||
{
|
||||
res.X = entity.Pos.X;
|
||||
res.Y = entity.Pos.Y;
|
||||
|
@ -145,7 +145,7 @@ namespace OpenSim.Region.Scenes
|
|||
{
|
||||
foreach (Entity entity in this.Entities.Values)
|
||||
{
|
||||
if (entity.localid == localID && entity is Primitive)
|
||||
if (entity.LocalId == localID && entity is Primitive)
|
||||
{
|
||||
LLVector3 pos = entity.Pos;
|
||||
pos.X = x;
|
||||
|
@ -171,7 +171,7 @@ namespace OpenSim.Region.Scenes
|
|||
{
|
||||
if (entity is Avatar)
|
||||
{
|
||||
res = entity.localid;
|
||||
res = entity.LocalId;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
|
|
|
@ -564,7 +564,7 @@ namespace OpenSim.Region.Scenes
|
|||
try
|
||||
{
|
||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent");
|
||||
newAvatar = new Avatar(remoteClient, this, m_clientThreads, this.m_regInfo);
|
||||
newAvatar = new Avatar(remoteClient, this, this.m_regInfo);
|
||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Adding new avatar to world");
|
||||
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Starting RegionHandshake ");
|
||||
|
||||
|
|
|
@ -110,6 +110,12 @@
|
|||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\OpenSim.Region\OpenSim.Region.csproj">
|
||||
<Name>OpenSim.Region</Name>
|
||||
<Project>{196916AF-0000-0000-0000-000000000000}</Project>
|
||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Common\OpenSim.Servers\OpenSim.Servers.csproj">
|
||||
<Name>OpenSim.Servers</Name>
|
||||
<Project>{8BB20F0A-0000-0000-0000-000000000000}</Project>
|
||||
|
|
39
prebuild.xml
39
prebuild.xml
|
@ -540,7 +540,6 @@
|
|||
</Files>
|
||||
</Project>
|
||||
|
||||
|
||||
<Project name="OpenSim.RegionServer" path="OpenSim/OpenSim.RegionServer" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
|
@ -564,6 +563,7 @@
|
|||
<Reference name="OpenSim.Framework.Console"/>
|
||||
<Reference name="OpenSim.GenericConfig.Xml"/>
|
||||
<Reference name="OpenSim.Physics.Manager"/>
|
||||
<Reference name="OpenSim.Region"/>
|
||||
<Reference name="OpenSim.Servers"/>
|
||||
<Reference name="OpenSim.Caches"/>
|
||||
<Reference name="XMLRPC"/>
|
||||
|
@ -574,6 +574,7 @@
|
|||
</Project>
|
||||
|
||||
|
||||
|
||||
<Project name="OpenSim.Region" path="OpenSim/OpenSim.Region" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
|
@ -670,42 +671,12 @@
|
|||
<Reference name="XMLRPC"/>
|
||||
<Reference name="OpenSim.GridInterfaces.Local"/>
|
||||
<Reference name="OpenSim.Servers"/>
|
||||
<Reference name="OpenGrid.Framework.Communications"/>
|
||||
<Reference name="OpenSim.LocalCommunications"/>
|
||||
<Reference name="OpenSim.Caches"/>
|
||||
<Reference name="OpenSim.RegionServer"/>
|
||||
<Reference name="OpenSim.World"/>
|
||||
<Reference name="OpenSim.Region"/>
|
||||
|
||||
<Files>
|
||||
<Match pattern="*.cs" recurse="true"/>
|
||||
</Files>
|
||||
</Project>
|
||||
|
||||
<Project name="SimpleApp2" path="OpenSim/Examples/SimpleApp2" type="Exe">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
</Options>
|
||||
</Configuration>
|
||||
<Configuration name="Release">
|
||||
<Options>
|
||||
<OutputPath>../../../bin/</OutputPath>
|
||||
</Options>
|
||||
</Configuration>
|
||||
|
||||
<ReferencePath>../../../bin/</ReferencePath>
|
||||
|
||||
<Reference name="libsecondlife.dll"/>
|
||||
<Reference name="System" localCopy="false"/>
|
||||
<Reference name="System.Data.dll"/>
|
||||
<Reference name="System.Xml"/>
|
||||
|
||||
<Reference name="OpenSim.Framework.Console"/>
|
||||
<Reference name="OpenSim.Framework"/>
|
||||
<Reference name="XMLRPC"/>
|
||||
<Reference name="OpenSim.GridInterfaces.Local"/>
|
||||
<Reference name="OpenSim.Servers"/>
|
||||
<Reference name="OpenSim.Caches"/>
|
||||
<Reference name="OpenSim.RegionServer"/>
|
||||
<Reference name="OpenSim.World"/>
|
||||
|
||||
<Files>
|
||||
<Match pattern="*.cs" recurse="true"/>
|
||||
|
|
Loading…
Reference in New Issue