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(); }
//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); } } }
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); } } }
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); } } }
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(); }