internal void DetachSprite(int idx) { int lastIdx = activePrimitiveCount - 1; SpriteTransform tmpSprTransform = spriteTransforms[idx]; if (tmpSprTransform.overrideSprite != null) { OverrideSprite os = new OverrideSprite(); os.pathHash = spriteTransforms[idx].component._fullPathHash; os.sprite = spriteTransforms[idx].overrideSprite; overrideList.Add(os); } tmpSprTransform.overrideHash = 0; tmpSprTransform.overrideSprite = null; if (lastIdx != idx) { SpritePrimitive tmpPri = primitives[idx]; spriteTransforms[idx] = spriteTransforms[lastIdx]; spriteTransforms[idx].id = idx; primitives[idx] = primitives[lastIdx]; tmpSprTransform.id = lastIdx; spriteTransforms[lastIdx] = tmpSprTransform; primitives[lastIdx] = tmpPri; } activePrimitiveCount--; _activePrimitiveCount.value = activePrimitiveCount; }
internal void DetachSprite( int idx ) { int lastIdx = activePrimitiveCount - 1; SpriteTransform tmpSprTransform = spriteTransforms[idx]; if (tmpSprTransform.overrideSprite != null && tmpSprTransform.component != null) { OverrideSprite os = new OverrideSprite(); os.pathHash = tmpSprTransform.component._fullPathHash; os.sprite = tmpSprTransform.overrideSprite; overrideList.Add(os); } tmpSprTransform.parent = null; tmpSprTransform.firstChild = null; tmpSprTransform.lastChild = null; tmpSprTransform.next = null; tmpSprTransform.prve = null; tmpSprTransform.component = null; tmpSprTransform.searchHash = 0; tmpSprTransform.overrideSprite = null; tmpSprTransform.sprite = null; //if (tmpSprTransform.primitive != null) //{ // tmpSprTransform.primitive.texture = null; // tmpSprTransform.primitive.texId = 0; //} if (lastIdx != idx) { SpritePrimitive tmpPri = primitives[idx]; spriteTransforms[idx] = spriteTransforms[lastIdx]; spriteTransforms[idx].id = idx; primitives[idx] = primitives[lastIdx]; tmpSprTransform.id = lastIdx; spriteTransforms[lastIdx] = tmpSprTransform; primitives[lastIdx] = tmpPri; } activePrimitiveCount--; _activePrimitiveCount.value = activePrimitiveCount; }