feat: enhance avatar merging effect with dynamic island representation in ProfileMetaballOverlay
This commit is contained in:
@@ -200,7 +200,35 @@ fun ProfileMetaballOverlay(
|
|||||||
modifier = modifier.fillMaxSize(),
|
modifier = modifier.fillMaxSize(),
|
||||||
cutoff = ProfileMetaballConstants.CUTOFF
|
cutoff = ProfileMetaballConstants.CUTOFF
|
||||||
) {
|
) {
|
||||||
// Avatar blob only - NO fake island
|
// Camera/Island blob - small circle at Dynamic Island position
|
||||||
|
// Only show when avatar is close enough to merge (create the droplet effect)
|
||||||
|
val showDroplet = collapseProgress > 0.3f && avatarState.showBlob
|
||||||
|
if (showDroplet) {
|
||||||
|
val islandSize = 40.dp // Small circle representing camera/island
|
||||||
|
val islandY = statusBarHeight / 2 - islandSize / 2 // Center of status bar
|
||||||
|
|
||||||
|
MetaEntity(
|
||||||
|
modifier = Modifier.offset(
|
||||||
|
x = (screenWidth - islandSize) / 2,
|
||||||
|
y = islandY
|
||||||
|
),
|
||||||
|
blur = ProfileMetaballConstants.BLUR_RADIUS,
|
||||||
|
metaContent = {
|
||||||
|
// Small black circle at camera position
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.size(islandSize)
|
||||||
|
.background(
|
||||||
|
color = Color.Black,
|
||||||
|
shape = RoundedCornerShape(islandSize / 2) // Perfect circle
|
||||||
|
)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
content = {} // No visible content, just the blur shape
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Avatar blob - moves up and shrinks on collapse
|
||||||
if (avatarState.showBlob) {
|
if (avatarState.showBlob) {
|
||||||
MetaEntity(
|
MetaEntity(
|
||||||
modifier = Modifier.offset(x = avatarState.x, y = avatarState.y),
|
modifier = Modifier.offset(x = avatarState.x, y = avatarState.y),
|
||||||
|
|||||||
Reference in New Issue
Block a user