void OnEnable() { Clear(); SpriteMaterialManager.RegisterRenderMode(this); }
private int groupPrimitive(int priCount, ref int visTriangles) { subMeshCount = 0; int vertexIdx = 0; Texture lastTex = null; uint lastTexId = 0; int triangleCnt = 0; int startIdx = 0; SpriteRenderMode lastSRM = SpriteRenderMode.None; SpritePrimitive primitive = null; int visPriCount = 0; for (int pi = 0; pi < priCount; pi++) { primitive = _primitives[pi]; if (lastSRM != primitive.renderMode || lastTexId != primitive.texId) { if (lastTexId != 0) { SubMeshInfo info = subMeshs[subMeshCount]; info.indexBase = startIdx; info.triangleCnt = triangleCnt; info.mat = SpriteMaterialManager.GetMaterial(lastSRM, lastTex); subMeshCount++; startIdx = (vertexIdx >> 2) * 6; visTriangles += triangleCnt; triangleCnt = 0; } lastTexId = primitive.texId; lastTex = primitive.texture; lastSRM = primitive.renderMode; } int c = primitive.size << 2; for (int i = 0; i < c; i++) { int idx = vertexIdx + i; vertices[idx] = primitive.position[i]; UVs[idx] = primitive.uv[i]; colors[idx] = primitive.color[i]; } vertexIdx += c; triangleCnt += (c >> 1); visPriCount++; } { SubMeshInfo _info = subMeshs[subMeshCount]; _info.indexBase = startIdx; _info.triangleCnt = triangleCnt; _info.mat = SpriteMaterialManager.GetMaterial(lastSRM, lastTex); visTriangles += triangleCnt; } subMeshCount++; return(visPriCount); }
void OnDisable() { SpriteMaterialManager.UnregisterRenderMode(this); }