void LoadCurrentPrims()
{
if (!Client.Network.Connected) return;
WorkPool.QueueUserWorkItem(sync =>
{
if (RenderSettings.PrimitiveRenderingEnabled)
{
List<Primitive> mainPrims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll((Primitive root) => root.ParentID == 0);
foreach (Primitive mainPrim in mainPrims)
{
UpdatePrimBlocking(mainPrim);
Client.Network.CurrentSim.ObjectsPrimitives
.FindAll((Primitive child) => child.ParentID == mainPrim.LocalID)
.ForEach((Primitive subPrim) => UpdatePrimBlocking(subPrim));
}
}
if (RenderSettings.AvatarRenderingEnabled)
{
List<Avatar> avis = Client.Network.CurrentSim.ObjectsAvatars.FindAll((Avatar a) => true);
foreach (Avatar avatar in avis)
{
UpdatePrimBlocking(avatar);
Client.Network.CurrentSim.ObjectsPrimitives
.FindAll((Primitive child) => child.ParentID == avatar.LocalID)
.ForEach((Primitive attachedPrim) =>
{
UpdatePrimBlocking(attachedPrim);
Client.Network.CurrentSim.ObjectsPrimitives
.FindAll((Primitive child) => child.ParentID == attachedPrim.LocalID)
.ForEach((Primitive attachedPrimChild) =>
{
UpdatePrimBlocking(attachedPrimChild);
});
});
}
}
});
}