public static (IModelMotion, IKingdomTexture[]) BBSMeshLoader(GraphicsDevice graphics, string FilePath, IModelMotion Model, IKingdomTexture[] Textures) { const float Scale = 100.0f; var file = File.OpenRead(FilePath); Pmo pmo = Pmo.Read(file); Model = new PmoParser(pmo, Scale); List <Tim2KingdomTexture> BbsTextures = new List <Tim2KingdomTexture>(); Textures = new IKingdomTexture[pmo.header.TextureCount]; for (int i = 0; i < pmo.header.TextureCount; i++) { BbsTextures.Add(new Tim2KingdomTexture(pmo.texturesData[i], graphics)); Textures[i] = BbsTextures[i]; } return(Model, Textures); }
public static void SetRenderTexture(this KingdomShader shader, EffectPass pass, IKingdomTexture texture) { if (shader.Texture0 != texture.Texture2D) { shader.Texture0 = texture.Texture2D; switch (texture.AddressU) { case ModelTexture.TextureWrapMode.Clamp: shader.TextureRegionU = KingdomShader.DefaultTextureRegion; shader.TextureWrapModeU = TextureWrapMode.Clamp; break; case ModelTexture.TextureWrapMode.Repeat: shader.TextureRegionU = KingdomShader.DefaultTextureRegion; shader.TextureWrapModeU = TextureWrapMode.Repeat; break; case ModelTexture.TextureWrapMode.RegionClamp: shader.TextureRegionU = texture.RegionU; shader.TextureWrapModeU = TextureWrapMode.Clamp; break; case ModelTexture.TextureWrapMode.RegionRepeat: shader.TextureRegionU = texture.RegionU; shader.TextureWrapModeU = TextureWrapMode.Repeat; break; } switch (texture.AddressV) { case ModelTexture.TextureWrapMode.Clamp: shader.TextureRegionV = KingdomShader.DefaultTextureRegion; shader.TextureWrapModeV = TextureWrapMode.Clamp; break; case ModelTexture.TextureWrapMode.Repeat: shader.TextureRegionV = KingdomShader.DefaultTextureRegion; shader.TextureWrapModeV = TextureWrapMode.Repeat; break; case ModelTexture.TextureWrapMode.RegionClamp: shader.TextureRegionV = texture.RegionV; shader.TextureWrapModeV = TextureWrapMode.Clamp; break; case ModelTexture.TextureWrapMode.RegionRepeat: shader.TextureRegionV = texture.RegionV; shader.TextureWrapModeV = TextureWrapMode.Repeat; break; } pass.Apply(); } }