From 560b674cb79ebd6b1794cf9922f7f3d36ab8750b Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Thu, 22 May 2025 00:24:07 +0100 Subject: [PATCH] polish: skin buttons --- .../helpers/rendering/batchSkinRenderer.ts | 6 +- apps/app-frontend/src/pages/Skins.vue | 45 ++++-- .../ui/src/components/skin/SkinButton.vue | 152 ++++++------------ .../components/skin/SkinLikeTextButton.vue | 13 +- 4 files changed, 90 insertions(+), 126 deletions(-) diff --git a/apps/app-frontend/src/helpers/rendering/batchSkinRenderer.ts b/apps/app-frontend/src/helpers/rendering/batchSkinRenderer.ts index f540c7e5d..e3cc5ab16 100644 --- a/apps/app-frontend/src/helpers/rendering/batchSkinRenderer.ts +++ b/apps/app-frontend/src/helpers/rendering/batchSkinRenderer.ts @@ -21,7 +21,7 @@ class BatchSkinRenderer { private bodyNode: THREE.Object3D | null = null private capeAttached: boolean = false - constructor(width: number = 215, height: number = 215 * 2) { + constructor(width: number = 360, height: number = 504) { const canvas = document.createElement('canvas') canvas.width = width canvas.height = height @@ -155,7 +155,7 @@ class BatchSkinRenderer { if (headPart) { const headPosition = new THREE.Vector3() headPart.getWorldPosition(headPosition) - lookAtTarget = [headPosition.x, headPosition.y, headPosition.z] + lookAtTarget = [headPosition.x, headPosition.y - 0.3, headPosition.z] } else { throw new Error("Failed to find 'Head' object in model.") } @@ -219,7 +219,7 @@ class BatchSkinRenderer { const group = new THREE.Group() group.add(model) - group.position.set(0, -0.5, 1.95) + group.position.set(0, 0.3, 1.95) group.scale.set(0.8, 0.8, 0.8) this.scene.add(group) diff --git a/apps/app-frontend/src/pages/Skins.vue b/apps/app-frontend/src/pages/Skins.vue index bc81ab091..d1d5dab8b 100644 --- a/apps/app-frontend/src/pages/Skins.vue +++ b/apps/app-frontend/src/pages/Skins.vue @@ -7,7 +7,8 @@ import { SkinLikeTextButton, Button } from '@modrinth/ui' -import {ref, computed, useTemplateRef, watch, onMounted, onUnmounted, inject, Ref} from 'vue' +import type { Ref} from 'vue'; +import {ref, computed, useTemplateRef, watch, onMounted, onUnmounted, inject} from 'vue' import EditSkinModal from '@/components/ui/skin/EditSkinModal.vue' import SelectCapeModal from '@/components/ui/skin/SelectCapeModal.vue' import { handleError } from '@/store/notifications' @@ -26,7 +27,7 @@ import type { RenderResult } from '@/helpers/rendering/batchSkinRenderer.ts' import { generateSkinPreviews, map } from '@/helpers/rendering/batchSkinRenderer.ts' import {handleSevereError} from "@/store/error"; import {trackEvent} from "@/helpers/analytics"; -import AccountsCard from "@/components/ui/AccountsCard.vue"; +import type AccountsCard from "@/components/ui/AccountsCard.vue"; const editSkinModal = useTemplateRef('editSkinModal') const selectCapeModal = useTemplateRef('selectCapeModal') @@ -178,8 +179,8 @@ watch( /> -
-
+
+

Skins

@@ -219,12 +220,12 @@ watch(
-
-
+
+

Saved skins

-
+
@@ -237,7 +238,7 @@ watch(
-
+

Default skins

-
+
Please sign into your Minecraft account to use the skin management features of the Modrinth app.

- - @@ -288,3 +289,17 @@ watch(
+ + diff --git a/packages/ui/src/components/skin/SkinButton.vue b/packages/ui/src/components/skin/SkinButton.vue index ba887d341..80190dcbd 100644 --- a/packages/ui/src/components/skin/SkinButton.vue +++ b/packages/ui/src/components/skin/SkinButton.vue @@ -21,7 +21,6 @@ const props = withDefaults(defineProps<{ editable: false, }) -const pressed = ref(false) const imagesLoaded = ref({ forward: Boolean(props.forwardImageSrc), backward: Boolean(props.backwardImageSrc) @@ -35,45 +34,44 @@ function onImageLoad(type: 'forward' | 'backward') { + +