Example #1
0
 public DAEExport(RadegastInstance instance, Primitive requestedPrim)
 {
     Instance             = instance;
     ImageFormat          = "PNG";
     ConsolidateMaterials = true;
     SkipTransparentFaces = true;
     Mesher = new MeshmerizerR();
     Init(Client.Network.CurrentSim, requestedPrim);
 }
Example #2
0
        public frmPrimWorkshop(METAboltInstance instance, uint rootLocalID)
            : base(instance)
        {
            this.RootPrimLocalID = rootLocalID;

            InitializeComponent();
            Disposed            += new EventHandler(frmPrimWorkshop_Disposed);
            AutoSavePosition     = true;
            UseMultiSampling     = cbAA.Checked = instance.GlobalSettings["use_multi_sampling"];
            cbAA.CheckedChanged += cbAA_CheckedChanged;

            this.instance = instance;

            renderer      = new MeshmerizerR();
            textRendering = new TextRendering(instance);

            Client.Objects.TerseObjectUpdate     += new EventHandler <TerseObjectUpdateEventArgs>(Objects_TerseObjectUpdate);
            Client.Objects.ObjectUpdate          += new EventHandler <PrimEventArgs>(Objects_ObjectUpdate);
            Client.Objects.ObjectDataBlockUpdate += new EventHandler <ObjectDataBlockUpdateEventArgs>(Objects_ObjectDataBlockUpdate);
        }
Example #3
0
 public RenderTerrain(RadegastInstance instance)
 {
     this.Instance = instance;
     renderer      = new MeshmerizerR();
 }
Example #4
0
 public RenderTerrain(METAboltInstance instance)
 {
     this.Instance = instance;
     renderer      = new MeshmerizerR();
 }
Example #5
0
        /// <summary>
        ///     Creates a faceted mesh from a primitive.
        /// </summary>
        /// <param name="Client">the client to use for meshing</param>
        /// <param name="primitive">the primitive to convert</param>
        /// <param name="mesher">the mesher to use</param>
        /// <param name="facetedMesh">a reference to an output facted mesh object</param>
        /// <param name="millisecondsTimeout">the services timeout</param>
        /// <returns>true if the mesh could be created successfully</returns>
        public static bool MakeFacetedMesh(GridClient Client, Primitive primitive, MeshmerizerR mesher,
                                           ref FacetedMesh facetedMesh,
                                           uint millisecondsTimeout)
        {
            if (primitive.Sculpt == null || primitive.Sculpt.SculptTexture.Equals(UUID.Zero))
            {
                facetedMesh = mesher.GenerateFacetedMesh(primitive, DetailLevel.Highest);
                return(true);
            }
            if (!primitive.Sculpt.Type.Equals(SculptType.Mesh))
            {
                byte[] assetData = null;
                switch (!Client.Assets.Cache.HasAsset(primitive.Sculpt.SculptTexture))
                {
                case true:
                    Locks.ClientInstanceAssetsLock.EnterReadLock();
                    var ImageDownloadedEvent = new ManualResetEventSlim(false);
                    Client.Assets.RequestImage(primitive.Sculpt.SculptTexture, (state, args) =>
                    {
                        if (!state.Equals(TextureRequestState.Finished))
                        {
                            return;
                        }
                        assetData = args.AssetData;
                        ImageDownloadedEvent.Set();
                    });
                    if (!ImageDownloadedEvent.Wait((int)millisecondsTimeout))
                    {
                        Locks.ClientInstanceAssetsLock.ExitReadLock();
                        return(false);
                    }
                    Locks.ClientInstanceAssetsLock.ExitReadLock();
                    break;

                default:
                    assetData = Client.Assets.Cache.GetCachedAssetBytes(primitive.Sculpt.SculptTexture);
                    break;
                }
                Image        image;
                ManagedImage managedImage;
                switch (!OpenJPEG.DecodeToImage(assetData, out managedImage))
                {
                case true:
                    return(false);

                default:
                    if ((managedImage.Channels & ManagedImage.ImageChannels.Alpha) != 0)
                    {
                        managedImage.ConvertChannels(managedImage.Channels & ~ManagedImage.ImageChannels.Alpha);
                    }
                    image = LoadTGAClass.LoadTGA(new MemoryStream(managedImage.ExportTGA()));
                    break;
                }
                facetedMesh = mesher.GenerateFacetedSculptMesh(primitive, (Bitmap)image, DetailLevel.Highest);
                return(true);
            }
            FacetedMesh localFacetedMesh    = null;
            var         MeshDownloadedEvent = new ManualResetEventSlim(false);

            Locks.ClientInstanceAssetsLock.EnterReadLock();
            Client.Assets.RequestMesh(primitive.Sculpt.SculptTexture, (success, meshAsset) =>
            {
                FacetedMesh.TryDecodeFromAsset(primitive, meshAsset, DetailLevel.Highest, out localFacetedMesh);
                MeshDownloadedEvent.Set();
            });

            if (!MeshDownloadedEvent.Wait((int)millisecondsTimeout))
            {
                Locks.ClientInstanceAssetsLock.ExitReadLock();
                return(false);
            }
            Locks.ClientInstanceAssetsLock.ExitReadLock();

            switch (localFacetedMesh != null)
            {
            case true:
                facetedMesh = localFacetedMesh;
                return(true);

            default:
                return(false);
            }
        }