several changes related to culling option

This commit is contained in:
UbitUmarov
2016-08-07 14:30:27 +01:00
parent 83d6722d31
commit ff0ccf9c67
3 changed files with 117 additions and 137 deletions

View File

@@ -585,10 +585,10 @@ namespace OpenSim.Framework
public float dwell;
}
public class IEntityUpdate
public class EntityUpdate
{
private ISceneEntity m_entity;
private uint m_flags;
private PrimUpdateFlags m_flags;
private int m_updateTime;
public ISceneEntity Entity
@@ -596,7 +596,7 @@ namespace OpenSim.Framework
get { return m_entity; }
}
public uint Flags
public PrimUpdateFlags Flags
{
get { return m_flags; }
}
@@ -606,23 +606,31 @@ namespace OpenSim.Framework
get { return m_updateTime; }
}
public virtual void Update(IEntityUpdate update)
public virtual void Update(EntityUpdate update)
{
m_flags |= update.Flags;
PrimUpdateFlags updateFlags = update.Flags;
if(updateFlags.HasFlag(PrimUpdateFlags.CancelKill))
m_flags = PrimUpdateFlags.FullUpdate;
else if(m_flags.HasFlag(PrimUpdateFlags.Kill))
return;
else if(updateFlags.HasFlag(PrimUpdateFlags.Kill))
m_flags = PrimUpdateFlags.Kill;
else
m_flags |= updateFlags;
// Use the older of the updates as the updateTime
if (Util.EnvironmentTickCountCompare(UpdateTime, update.UpdateTime) > 0)
m_updateTime = update.UpdateTime;
}
public IEntityUpdate(ISceneEntity entity, uint flags)
public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags)
{
m_entity = entity;
m_flags = flags;
m_updateTime = Util.EnvironmentTickCount();
}
public IEntityUpdate(ISceneEntity entity, uint flags, Int32 updateTime)
public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, Int32 updateTime)
{
m_entity = entity;
m_flags = flags;
@@ -630,29 +638,6 @@ namespace OpenSim.Framework
}
}
public class EntityUpdate : IEntityUpdate
{
private float m_timeDilation;
public float TimeDilation
{
get { return m_timeDilation; }
}
public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation)
: base(entity, (uint)flags)
{
// Flags = flags;
m_timeDilation = timedilation;
}
public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation, Int32 updateTime)
: base(entity,(uint)flags,updateTime)
{
m_timeDilation = timedilation;
}
}
public class PlacesReplyData
{
public UUID OwnerID;
@@ -701,9 +686,12 @@ namespace OpenSim.Framework
ExtraData = 1 << 20,
Sound = 1 << 21,
Joint = 1 << 22,
FullUpdate = UInt32.MaxValue
FullUpdate = 0x3fffffff,
CancelKill = 0x7fffffff,
Kill = 0x80000000
}
/* included in .net 4.0
public static class PrimUpdateFlagsExtensions
{
public static bool HasFlag(this PrimUpdateFlags updateFlags, PrimUpdateFlags flag)
@@ -711,7 +699,7 @@ namespace OpenSim.Framework
return (updateFlags & flag) == flag;
}
}
*/
public interface IClientAPI
{
Vector3 StartPos { get; set; }

View File

@@ -113,7 +113,7 @@ namespace OpenSim.Framework
/// <summary>
/// Enqueue an item into the specified priority queue
/// </summary>
public bool Enqueue(uint pqueue, IEntityUpdate value)
public bool Enqueue(uint pqueue, EntityUpdate value)
{
LookupItem lookup;
@@ -154,7 +154,7 @@ namespace OpenSim.Framework
/// oldest item from the next queue in order to provide fair access to
/// all of the queues
/// </summary>
public bool TryDequeue(out IEntityUpdate value, out Int32 timeinqueue)
public bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue)
{
// If there is anything in imediate queues, return it first no
// matter what else. Breaks fairness. But very useful.
@@ -212,7 +212,7 @@ namespace OpenSim.Framework
}
timeinqueue = 0;
value = default(IEntityUpdate);
value = default(EntityUpdate);
return false;
}
@@ -270,8 +270,8 @@ namespace OpenSim.Framework
#region MinHeapItem
private struct MinHeapItem : IComparable<MinHeapItem>
{
private IEntityUpdate value;
internal IEntityUpdate Value {
private EntityUpdate value;
internal EntityUpdate Value {
get {
return this.value;
}
@@ -307,7 +307,7 @@ namespace OpenSim.Framework
this.pqueue = pqueue;
}
internal MinHeapItem(uint pqueue, UInt64 entryorder, IEntityUpdate value)
internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value)
{
this.entrytime = Util.EnvironmentTickCount();
this.entryorder = entryorder;