public static EntityUpdate Get(ISceneEntity entity, PrimUpdateFlags flags, bool sendfam, bool sendobj) { lock (m_poollock) { if (m_poolPtr >= 0) { EntityUpdate eu = m_pool[m_poolPtr]; m_pool[m_poolPtr] = null; m_poolPtr--; //if (m_min > m_poolPtr) // m_min = m_poolPtr; eu.Entity = entity; eu.Flags = flags; ObjectPropertyUpdateFlags tmp = 0; if (sendfam) { tmp |= ObjectPropertyUpdateFlags.Family; } if (sendobj) { tmp |= ObjectPropertyUpdateFlags.Object; } eu.PropsFlags = tmp; return(eu); } } return(new EntityUpdate(entity, flags, sendfam, sendobj)); }
public void UpdateFromNew(EntityUpdate newupdate, int pqueue) { m_propsFlags |= newupdate.PropsFlags; PrimUpdateFlags newFlags = newupdate.Flags; if ((newFlags & PrimUpdateFlags.UpdateProbe) != 0) { m_flags &= ~PrimUpdateFlags.UpdateProbe; } if ((newFlags & PrimUpdateFlags.CancelKill) != 0) { if ((newFlags & PrimUpdateFlags.UpdateProbe) != 0) { m_flags = PrimUpdateFlags.UpdateProbe; } else { newFlags = PrimUpdateFlags.FullUpdatewithAnim; } } else { m_flags |= newFlags; } PriorityQueue = pqueue; }
public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, bool sendfam, bool sendobj) { m_entity = entity; m_flags = flags; if (sendfam) { m_propsFlags |= ObjectPropertyUpdateFlags.Family; } if (sendobj) { m_propsFlags |= ObjectPropertyUpdateFlags.Object; } }