mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 02:36:00 +08:00
several changes related to culling option
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user