private void ReadTexture(BinaryReader reader, string prefabName) { TextureFormat format = TextureFormat.RGBAHalf; if (SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.OpenGLES2) { //todo format = TextureFormat.RGBA32; } int count = reader.ReadInt32(); int blockWidth = reader.ReadInt32(); int blockHeight = reader.ReadInt32(); AnimationTexture aniTexture = new AnimationTexture(); aniTexture.boneTexture = new Texture2D[count]; aniTexture.name = prefabName; aniTexture.blockWidth = blockWidth; aniTexture.blockHeight = blockHeight; animationTextureList.Add(aniTexture); for (int i = 0; i != count; ++i) { int textureWidth = reader.ReadInt32(); int textureHeight = reader.ReadInt32(); int byteLength = reader.ReadInt32(); byte[] b = new byte[byteLength]; b = reader.ReadBytes(byteLength); Texture2D texture = new Texture2D(textureWidth, textureHeight, format, false); texture.LoadRawTextureData(b); texture.filterMode = FilterMode.Point; texture.Apply(); aniTexture.boneTexture[i] = texture; } }
int GetPackageCount(VertexCache vertexCache) { int packageCount = 1; if (vertexCache.boneTextureIndex >= 0) { AnimationTexture texture = animationTextureList[vertexCache.boneTextureIndex]; packageCount = texture.boneTexture.Length; } return(packageCount); }
private int FindTexture_internal(string name) { for (int i = 0; i != animationTextureList.Count; ++i) { AnimationTexture texture = animationTextureList[i] as AnimationTexture; if (texture.name == name) { return(i); } } return(-1); }
public void PreparePackageMaterial(InstancingPackage package, VertexCache vertexCache, int aniTextureIndex) { if (vertexCache.boneTextureIndex < 0) { return; } for (int i = 0; i != package.subMeshCount; ++i) { AnimationTexture texture = animationTextureList[vertexCache.boneTextureIndex]; package.material[i].SetTexture("_boneTexture", texture.boneTexture[aniTextureIndex]); package.material[i].SetInt("_boneTextureWidth", texture.boneTexture[aniTextureIndex].width); package.material[i].SetInt("_boneTextureHeight", texture.boneTexture[aniTextureIndex].height); package.material[i].SetInt("_boneTextureBlockWidth", texture.blockWidth); package.material[i].SetInt("_boneTextureBlockHeight", texture.blockHeight); } }