more parallelization
This commit is contained in:
parent
131c41aa9a
commit
97b45ed0bf
1 changed files with 74 additions and 54 deletions
128
Server/Item.cs
128
Server/Item.cs
|
|
@ -1353,22 +1353,22 @@ namespace Server
|
||||||
|
|
||||||
if ( oldLocation.m_X != 0 )
|
if ( oldLocation.m_X != 0 )
|
||||||
{
|
{
|
||||||
Packet remPacket = null;
|
|
||||||
|
|
||||||
IPooledEnumerable eable = m_Map.GetClientsInRange( oldLocation, GetMaxUpdateRange() );
|
IPooledEnumerable eable = m_Map.GetClientsInRange( oldLocation, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach ( NetState state in eable ) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( m.InRange( oldLocation, GetUpdateRange( m ) ) )
|
if ( m.InRange( oldLocation, GetUpdateRange( m ) ) ) {
|
||||||
{
|
state.Send( this.RemovePacket );
|
||||||
if ( remPacket == null )
|
|
||||||
remPacket = this.RemovePacket;
|
|
||||||
|
|
||||||
state.Send( remPacket );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
}
|
}
|
||||||
|
|
@ -1398,13 +1398,19 @@ namespace Server
|
||||||
{
|
{
|
||||||
IPooledEnumerable eable = m_Map.GetClientsInRange( m_Location, GetMaxUpdateRange() );
|
IPooledEnumerable eable = m_Map.GetClientsInRange( m_Location, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach (NetState state in eable) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( m.CanSee( this ) && m.InRange( m_Location, GetUpdateRange( m ) ) )
|
if ( m.CanSee( this ) && m.InRange( m_Location, GetUpdateRange( m ) ) )
|
||||||
SendInfoTo( state );
|
SendInfoTo( state );
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
}
|
}
|
||||||
|
|
@ -1420,22 +1426,22 @@ namespace Server
|
||||||
|
|
||||||
if ( oldLocation.m_X != 0 )
|
if ( oldLocation.m_X != 0 )
|
||||||
{
|
{
|
||||||
Packet removeThis = null;
|
|
||||||
|
|
||||||
eable = m_Map.GetClientsInRange( oldLocation, GetMaxUpdateRange() );
|
eable = m_Map.GetClientsInRange( oldLocation, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach (NetState state in eable) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( !m.InRange( location, GetUpdateRange( m ) ) )
|
if ( !m.InRange( location, GetUpdateRange( m ) ) ) {
|
||||||
{
|
state.Send( this.RemovePacket );
|
||||||
if ( removeThis == null )
|
|
||||||
removeThis = this.RemovePacket;
|
|
||||||
|
|
||||||
state.Send( removeThis );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
}
|
}
|
||||||
|
|
@ -1449,13 +1455,19 @@ namespace Server
|
||||||
|
|
||||||
eable = m_Map.GetClientsInRange( m_Location, GetMaxUpdateRange() );
|
eable = m_Map.GetClientsInRange( m_Location, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach (NetState state in eable) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( m.CanSee( this ) && m.InRange( m_Location, GetUpdateRange( m ) ) )
|
if ( m.CanSee( this ) && m.InRange( m_Location, GetUpdateRange( m ) ) )
|
||||||
SendInfoTo( state );
|
SendInfoTo( state );
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
|
|
||||||
|
|
@ -1813,23 +1825,24 @@ namespace Server
|
||||||
|
|
||||||
if ( m_Map != null )
|
if ( m_Map != null )
|
||||||
{
|
{
|
||||||
Packet removeThis = null;
|
|
||||||
Point3D worldLoc = GetWorldLocation();
|
Point3D worldLoc = GetWorldLocation();
|
||||||
|
|
||||||
IPooledEnumerable eable = m_Map.GetClientsInRange( worldLoc, GetMaxUpdateRange() );
|
IPooledEnumerable eable = m_Map.GetClientsInRange( worldLoc, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach (NetState state in eable) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( !m.CanSee( this ) && m.InRange( worldLoc, GetUpdateRange( m ) ) )
|
if ( !m.CanSee( this ) && m.InRange( worldLoc, GetUpdateRange( m ) ) ) {
|
||||||
{
|
state.Send( this.RemovePacket );
|
||||||
if ( removeThis == null )
|
|
||||||
removeThis = this.RemovePacket;
|
|
||||||
|
|
||||||
state.Send( removeThis );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
}
|
}
|
||||||
|
|
@ -3599,22 +3612,22 @@ namespace Server
|
||||||
|
|
||||||
if ( m_Location.m_X != 0 )
|
if ( m_Location.m_X != 0 )
|
||||||
{
|
{
|
||||||
Packet removeThis = null;
|
|
||||||
|
|
||||||
eable = m_Map.GetClientsInRange( oldLocation, GetMaxUpdateRange() );
|
eable = m_Map.GetClientsInRange( oldLocation, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach (NetState state in eable) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( !m.InRange( value, GetUpdateRange( m ) ) )
|
if ( !m.InRange( value, GetUpdateRange( m ) ) ) {
|
||||||
{
|
state.Send( this.RemovePacket );
|
||||||
if ( removeThis == null )
|
|
||||||
removeThis = this.RemovePacket;
|
|
||||||
|
|
||||||
state.Send( removeThis );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
}
|
}
|
||||||
|
|
@ -3627,13 +3640,19 @@ namespace Server
|
||||||
|
|
||||||
eable = m_Map.GetClientsInRange( m_Location, GetMaxUpdateRange() );
|
eable = m_Map.GetClientsInRange( m_Location, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach (NetState state in eable) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( m.CanSee( this ) && m.InRange( m_Location, GetUpdateRange( m ) ) && ( !state.HighSeas || !m_NoMoveHS || ( m_DeltaFlags & ItemDelta.Update ) != 0 || !m.InRange( oldLoc, GetUpdateRange( m ) ) ) )
|
if ( m.CanSee( this ) && m.InRange( m_Location, GetUpdateRange( m ) ) && ( !state.HighSeas || !m_NoMoveHS || ( m_DeltaFlags & ItemDelta.Update ) != 0 || !m.InRange( oldLoc, GetUpdateRange( m ) ) ) )
|
||||||
SendInfoTo( state );
|
SendInfoTo( state );
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
|
|
||||||
|
|
@ -4186,23 +4205,24 @@ namespace Server
|
||||||
{
|
{
|
||||||
if ( !Deleted && m_Map != null )
|
if ( !Deleted && m_Map != null )
|
||||||
{
|
{
|
||||||
Packet p = null;
|
|
||||||
Point3D worldLoc = GetWorldLocation();
|
Point3D worldLoc = GetWorldLocation();
|
||||||
|
|
||||||
IPooledEnumerable eable = m_Map.GetClientsInRange( worldLoc, GetMaxUpdateRange() );
|
IPooledEnumerable eable = m_Map.GetClientsInRange( worldLoc, GetMaxUpdateRange() );
|
||||||
|
|
||||||
foreach ( NetState state in eable )
|
#if Framework_4_0
|
||||||
{
|
Parallel.ForEach( eable.Cast<NetState>(), state => {
|
||||||
|
#else
|
||||||
|
foreach (NetState state in eable) {
|
||||||
|
#endif
|
||||||
Mobile m = state.Mobile;
|
Mobile m = state.Mobile;
|
||||||
|
|
||||||
if ( m.InRange( worldLoc, GetUpdateRange( m ) ) )
|
if ( m.InRange( worldLoc, GetUpdateRange( m ) ) ) {
|
||||||
{
|
state.Send( this.RemovePacket );
|
||||||
if ( p == null )
|
|
||||||
p = this.RemovePacket;
|
|
||||||
|
|
||||||
state.Send( p );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if Framework_4_0
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
eable.Free();
|
eable.Free();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue