Ejemplo n.º 1
0
        public static void CopyToVolume(OpsContext context, VolumeTexture newTexture, string srcArg, Filter filter)
        {
            if (srcArg == null || srcArg.Length == 0)
            {
                return;
            }

            ArrayList srcList = context.FindTextures(srcArg);

            if (srcList == null || srcList.Count == 0)
            {
                throw new OpsException("Could not find source texture: " + srcArg);
            }

            if (((OpsTexture)srcList[0]).Texture is VolumeTexture)
            {
                VolumeLoader.FromVolume(newTexture.GetVolumeLevel(0), ((VolumeTexture)((OpsTexture)srcList[0]).Texture).GetVolumeLevel(0), filter, 0);
            }
            else
            {
                for (int i = 0; i < srcList.Count; i++)
                {
                    OpsTexture src = srcList[i] as OpsTexture;

                    if (!(src.Texture is Texture))
                    {
                        throw new OpsException("Source texture pattern is not 1 volume texture or all 2D textures: " + srcArg);
                    }

                    OpsTextureHelper.LoadVolumeSliceFromSurface(newTexture, 0, i, filter, ((Texture)src.Texture).GetSurfaceLevel(0));
                }
            }

            newTexture.GenerateMipSubLevels();
        }
Ejemplo n.º 2
0
        //IOpsCommand
        public void Run(OpsContext context, OpsStatement statement)
        {
            UnloadArguments args = statement.Arguments as UnloadArguments;


            if (args.Type == ContentType.GENERIC || args.Type == ContentType.MODELS)
            {
                ArrayList models = context.FindModels(args.Src);
                foreach (OpsModel model in models)
                {
                    OpsConsole.WriteLine("Unloading model: '{0}'", model.Name);
                    context.RemoveModel(model.Name);
                }
            }

            if (args.Type == ContentType.GENERIC || args.Type == ContentType.TEXTURES)
            {
                ArrayList textures = context.FindTextures(args.Src);
                foreach (OpsTexture texture in textures)
                {
                    OpsConsole.WriteLine("Unloading texture: '{0}'", texture.Name);
                    context.RemoveTexture(texture.Name);
                }
            }
        }
Ejemplo n.º 3
0
        public void Run(OpsContext context, OpsStatement statement)
        {
            Splice2dArgs args = statement.Arguments as Splice2dArgs;

            ArrayList srcList = statement.GetContent(context);

            if (srcList.Count != 1)
            {
                throw new OpsException("Could not find the source texture.  1 is require but found " + srcList.Count);
            }

            OpsTexture srcContainer = ((OpsTexture)srcList[0]);

            if (!(srcContainer.Texture is Texture))
            {
                throw new OpsException("Source texture is not 2D");
            }

            Texture srcTexture = srcContainer.Texture as Texture;

            OpsConsole.WriteLine("Splicing texture:{0} into one or more textures", srcContainer.Name);


            ArrayList dstContainers = context.FindTextures(args.Dst);

            foreach (OpsTexture dstContainer in dstContainers)
            {
                if (dstContainer.Texture is Texture)
                {
                    Texture dstTexture = dstContainer.Texture as Texture;

                    SurfaceLoader.FromSurface(dstTexture.GetSurfaceLevel(args.Mips), srcTexture.GetSurfaceLevel(0), Filter.Dither | Filter.Triangle | (srcContainer.SRGB?Filter.SrgbIn:0) | (dstContainer.SRGB?Filter.SrgbOut:0), 0);
                }
                else if (dstContainer.Texture is VolumeTexture)
                {
                    VolumeTexture dstTexture = dstContainer.Texture as VolumeTexture;

                    OpsTextureHelper.LoadVolumeSliceFromSurface(dstTexture, args.Mips, args.Volume, Filter.Dither | Filter.Triangle | (srcContainer.SRGB?Filter.SrgbIn:0) | (dstContainer.SRGB?Filter.SrgbOut:0), srcTexture.GetSurfaceLevel(0));
                }
                else if (dstContainer.Texture is CubeTexture)
                {
                    CubeTexture dstTexture = dstContainer.Texture as CubeTexture;

                    SurfaceLoader.FromSurface(dstTexture.GetCubeMapSurface(args.Face, args.Mips), srcTexture.GetSurfaceLevel(0), Filter.Dither | Filter.Triangle | (srcContainer.SRGB?Filter.SrgbIn:0) | (dstContainer.SRGB?Filter.SrgbOut:0), 0);
                }
            }
        }
Ejemplo n.º 4
0
        public void Run(OpsContext context, OpsStatement statement)
        {
            Splice2dArgs args = statement.Arguments as Splice2dArgs;
            
            ArrayList srcList = statement.GetContent(context);
            if(srcList.Count != 1)
                throw new OpsException("Could not find the source texture.  1 is require but found " + srcList.Count);

            OpsTexture srcContainer = ((OpsTexture)srcList[0]);

            if(!(srcContainer.Texture is Texture))
                throw new OpsException("Source texture is not 2D");

            Texture srcTexture = srcContainer.Texture as Texture;

            OpsConsole.WriteLine( "Splicing texture:{0} into one or more textures", srcContainer.Name );


            ArrayList dstContainers = context.FindTextures(args.Dst);

            foreach( OpsTexture dstContainer in dstContainers)
            {
                if(dstContainer.Texture is Texture)
                {
                    Texture dstTexture = dstContainer.Texture as Texture;

                    SurfaceLoader.FromSurface(dstTexture.GetSurfaceLevel(args.Mips), srcTexture.GetSurfaceLevel(0), Filter.Dither|Filter.Triangle| (srcContainer.SRGB?Filter.SrgbIn:0)| (dstContainer.SRGB?Filter.SrgbOut:0), 0); 
                }
                else if(dstContainer.Texture is VolumeTexture)
                {
                    VolumeTexture dstTexture = dstContainer.Texture as VolumeTexture;

                    OpsTextureHelper.LoadVolumeSliceFromSurface(dstTexture, args.Mips, args.Volume, Filter.Dither|Filter.Triangle| (srcContainer.SRGB?Filter.SrgbIn:0)| (dstContainer.SRGB?Filter.SrgbOut:0), srcTexture.GetSurfaceLevel(0) );

                }
                else if(dstContainer.Texture is CubeTexture)
                {
                    CubeTexture dstTexture = dstContainer.Texture as CubeTexture;

                    SurfaceLoader.FromSurface(dstTexture.GetCubeMapSurface(args.Face, args.Mips), srcTexture.GetSurfaceLevel(0), Filter.Dither|Filter.Triangle| (srcContainer.SRGB?Filter.SrgbIn:0)| (dstContainer.SRGB?Filter.SrgbOut:0), 0);
                }
            }
        }
Ejemplo n.º 5
0
        public static void CopyToVolume(OpsContext context, VolumeTexture newTexture, string srcArg, Filter filter )
        {
            if(srcArg == null || srcArg.Length == 0)
                return;

            ArrayList srcList = context.FindTextures(srcArg);
                
            if(srcList == null || srcList.Count == 0)
                throw new OpsException("Could not find source texture: "+srcArg );
            
            if(((OpsTexture)srcList[0]).Texture is VolumeTexture )
            {
                VolumeLoader.FromVolume(newTexture.GetVolumeLevel(0), ((VolumeTexture)((OpsTexture)srcList[0]).Texture).GetVolumeLevel(0), filter, 0);    
            }
            else
            {
                for( int i = 0; i < srcList.Count; i++)
                {
                    OpsTexture src = srcList[i] as OpsTexture;

                    if(!(src.Texture is Texture))
                        throw new OpsException("Source texture pattern is not 1 volume texture or all 2D textures: "+srcArg);

                    OpsTextureHelper.LoadVolumeSliceFromSurface(newTexture, 0, i, filter, ((Texture)src.Texture).GetSurfaceLevel(0) );
                }
            }

            newTexture.GenerateMipSubLevels();
        }