Universe.Region.SceneObjectGroup.UpdatePrimFlags C# (CSharp) Метод

UpdatePrimFlags() публичный Метод

Update prim flags for this group.
public UpdatePrimFlags ( uint localID, bool UsePhysics, bool IsTemporary, bool IsPhantom, bool IsVolumeDetect, ObjectFlagUpdatePacket blocks ) : void
localID uint
UsePhysics bool
IsTemporary bool
IsPhantom bool
IsVolumeDetect bool
blocks ObjectFlagUpdatePacket
Результат void
        public void UpdatePrimFlags(uint localID, bool UsePhysics, bool IsTemporary, bool IsPhantom, bool IsVolumeDetect,
                                    ObjectFlagUpdatePacket.ExtraPhysicsBlock[] blocks)
        {
            ISceneChildEntity selectionPart = GetChildPart(localID);

            if (IsTemporary)
            {
                // Remove from database and parcel prim count
                // Temporary objects arn't saved to the database ever, so we don't need to do anything
            }

            if (selectionPart != null)
            {
                foreach (SceneObjectPart part in m_partsList)
                {
                    IOpenRegionSettingsModule WSModule = Scene.RequestModuleInterface<IOpenRegionSettingsModule>();
                    if (WSModule != null)
                    {
                        if (WSModule.MaximumPhysPrimScale == -1)
                            break;

                        if (part.Scale.X > WSModule.MaximumPhysPrimScale ||
                            part.Scale.Y > WSModule.MaximumPhysPrimScale ||
                            part.Scale.Z > WSModule.MaximumPhysPrimScale)
                        {
                            UsePhysics = false; // Reset physics
                            break;
                        }
                    }
                }

                bool needsPhysicalRebuild = ((SceneObjectPart) selectionPart).UpdatePrimFlags(UsePhysics, IsTemporary,
                                                                                              IsPhantom, IsVolumeDetect,
                                                                                              blocks);

                foreach (SceneObjectPart part in m_partsList.Where(part => selectionPart != part))
                {
                    if (needsPhysicalRebuild)
                        part.UpdatePrimFlags(UsePhysics, IsTemporary, IsPhantom, IsVolumeDetect, null);
                    else
                        needsPhysicalRebuild = part.UpdatePrimFlags(UsePhysics, IsTemporary, IsPhantom,
                                                                    IsVolumeDetect, null);
                }

                if (needsPhysicalRebuild)
                    RebuildPhysicalRepresentation(true, null);
            }
        }
SceneObjectGroup