diff --git a/CHANGELOG.md b/CHANGELOG.md index d121df725..84c96a896 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.5.0] + +### Player Animation Viewer + +* Spire now has an player animation viewer that can be used standalone and in things like a Spell editor where there are casting and target animations when spells are casted +* Special thanks to DeadZergling for all of his effort putting together these high quality preview videos + +[![](https://img.youtube.com/vi/_WLjso1d9p8/0.jpg)](https://www.youtube.com/watch?v=_WLjso1d9p8) + ## [1.4.0] ### Emitter Viewer diff --git a/frontend/src/app/asset-maps/player-animations.json b/frontend/src/app/asset-maps/player-animations.json new file mode 100644 index 000000000..3effa7db7 --- /dev/null +++ b/frontend/src/app/asset-maps/player-animations.json @@ -0,0 +1 @@ +[{"type":"directory","name":"./assets/player-animations","contents":[{"name":"./assets/player-animations/101.mp4"},{"name":"./assets/player-animations/102.mp4"},{"name":"./assets/player-animations/103.mp4"},{"name":"./assets/player-animations/105.mp4"},{"name":"./assets/player-animations/106.mp4"},{"name":"./assets/player-animations/107.mp4"},{"name":"./assets/player-animations/108.mp4"},{"name":"./assets/player-animations/109.mp4"},{"name":"./assets/player-animations/10.mp4"},{"name":"./assets/player-animations/112.mp4"},{"name":"./assets/player-animations/118.mp4"},{"name":"./assets/player-animations/119.mp4"},{"name":"./assets/player-animations/11.mp4"},{"name":"./assets/player-animations/120.mp4"},{"name":"./assets/player-animations/122.mp4"},{"name":"./assets/player-animations/127.mp4"},{"name":"./assets/player-animations/128.mp4"},{"name":"./assets/player-animations/12.mp4"},{"name":"./assets/player-animations/13.mp4"},{"name":"./assets/player-animations/14.mp4"},{"name":"./assets/player-animations/157.mp4"},{"name":"./assets/player-animations/15.mp4"},{"name":"./assets/player-animations/162.mp4"},{"name":"./assets/player-animations/16.mp4"},{"name":"./assets/player-animations/170.mp4"},{"name":"./assets/player-animations/173.mp4"},{"name":"./assets/player-animations/178.mp4"},{"name":"./assets/player-animations/19.mp4"},{"name":"./assets/player-animations/1.mp4"},{"name":"./assets/player-animations/20.mp4"},{"name":"./assets/player-animations/21.mp4"},{"name":"./assets/player-animations/22.mp4"},{"name":"./assets/player-animations/23.mp4"},{"name":"./assets/player-animations/24.mp4"},{"name":"./assets/player-animations/25.mp4"},{"name":"./assets/player-animations/26.mp4"},{"name":"./assets/player-animations/27.mp4"},{"name":"./assets/player-animations/28.mp4"},{"name":"./assets/player-animations/29.mp4"},{"name":"./assets/player-animations/2.mp4"},{"name":"./assets/player-animations/30.mp4"},{"name":"./assets/player-animations/31.mp4"},{"name":"./assets/player-animations/33.mp4"},{"name":"./assets/player-animations/34.mp4"},{"name":"./assets/player-animations/35.mp4"},{"name":"./assets/player-animations/36.mp4"},{"name":"./assets/player-animations/37.mp4"},{"name":"./assets/player-animations/38.mp4"},{"name":"./assets/player-animations/39.mp4"},{"name":"./assets/player-animations/3.mp4"},{"name":"./assets/player-animations/40.mp4"},{"name":"./assets/player-animations/41.mp4"},{"name":"./assets/player-animations/42.mp4"},{"name":"./assets/player-animations/43.mp4"},{"name":"./assets/player-animations/44.mp4"},{"name":"./assets/player-animations/45.mp4"},{"name":"./assets/player-animations/46.mp4"},{"name":"./assets/player-animations/47.mp4"},{"name":"./assets/player-animations/48.mp4"},{"name":"./assets/player-animations/49.mp4"},{"name":"./assets/player-animations/4.mp4"},{"name":"./assets/player-animations/50.mp4"},{"name":"./assets/player-animations/51.mp4"},{"name":"./assets/player-animations/52.mp4"},{"name":"./assets/player-animations/53.mp4"},{"name":"./assets/player-animations/54.mp4"},{"name":"./assets/player-animations/55.mp4"},{"name":"./assets/player-animations/56.mp4"},{"name":"./assets/player-animations/57.mp4"},{"name":"./assets/player-animations/58.mp4"},{"name":"./assets/player-animations/59.mp4"},{"name":"./assets/player-animations/5.mp4"},{"name":"./assets/player-animations/60.mp4"},{"name":"./assets/player-animations/61.mp4"},{"name":"./assets/player-animations/62.mp4"},{"name":"./assets/player-animations/63.mp4"},{"name":"./assets/player-animations/64.mp4"},{"name":"./assets/player-animations/65.mp4"},{"name":"./assets/player-animations/66.mp4"},{"name":"./assets/player-animations/67.mp4"},{"name":"./assets/player-animations/68.mp4"},{"name":"./assets/player-animations/69.mp4"},{"name":"./assets/player-animations/6.mp4"},{"name":"./assets/player-animations/70.mp4"},{"name":"./assets/player-animations/73.mp4"},{"name":"./assets/player-animations/74.mp4"},{"name":"./assets/player-animations/75.mp4"},{"name":"./assets/player-animations/76.mp4"},{"name":"./assets/player-animations/77.mp4"},{"name":"./assets/player-animations/78.mp4"},{"name":"./assets/player-animations/7.mp4"},{"name":"./assets/player-animations/80.mp4"},{"name":"./assets/player-animations/81.mp4"},{"name":"./assets/player-animations/82.mp4"},{"name":"./assets/player-animations/83.mp4"},{"name":"./assets/player-animations/84.mp4"},{"name":"./assets/player-animations/85.mp4"},{"name":"./assets/player-animations/86.mp4"},{"name":"./assets/player-animations/87.mp4"},{"name":"./assets/player-animations/88.mp4"},{"name":"./assets/player-animations/89.mp4"},{"name":"./assets/player-animations/8.mp4"},{"name":"./assets/player-animations/90.mp4"},{"name":"./assets/player-animations/91.mp4"},{"name":"./assets/player-animations/92.mp4"},{"name":"./assets/player-animations/93.mp4"},{"name":"./assets/player-animations/94.mp4"},{"name":"./assets/player-animations/95.mp4"},{"name":"./assets/player-animations/96.mp4"},{"name":"./assets/player-animations/9.mp4"}]},{"type":"report","directories":0,"files":110}] diff --git a/frontend/src/components/layout/Navbar.vue b/frontend/src/components/layout/Navbar.vue index 1d25d8d85..9effc3da9 100644 --- a/frontend/src/components/layout/Navbar.vue +++ b/frontend/src/components/layout/Navbar.vue @@ -15,13 +15,13 @@ - - ... - + + + + + + + @@ -82,7 +82,7 @@ - @@ -260,6 +260,7 @@ export default { { title: "Race Viewer", to: ROUTE.RACE_VIEWER, icon: "ra ra-monster-skull mr-1" }, { title: "Item Model Viewer", to: ROUTE.ITEM_VIEWER, icon: "ra ra-crossed-swords mr-1" }, { title: "Item Icon Viewer", to: ROUTE.ITEM_ICON_VIEWER, icon: "ra ra-burning-eye mr-1" }, + { title: "Player Animations", to: ROUTE.PLAYER_ANIMATION_VIEWER, icon: "ra ra-player-dodge mr-1", isNew: true }, { title: "Emitter Viewer", to: ROUTE.EMITTER_VIEWER, icon: "ra ra-droplet-splash mr-1", isNew: true }, { title: "Spell Animation Viewer", to: ROUTE.SPELL_ANIMATION_VIEWER, icon: "ra ra-dragon mr-1" } ] diff --git a/frontend/src/constants/app.ts b/frontend/src/constants/app.ts index 8f9ca618e..2ef77cb2c 100644 --- a/frontend/src/constants/app.ts +++ b/frontend/src/constants/app.ts @@ -28,6 +28,7 @@ export const App = { ASSET_SPELL_ICONS_BASE_URL: ASSET_CDN_BASE_URL_INT + 'assets/spell_icons/', ASSET_SPELL_ANIMATIONS: ASSET_CDN_BASE_URL_INT + 'assets/spell_animations/', ASSET_EMITTER_CLIPS: ASSET_CDN_BASE_URL_INT + 'assets/emitters/', + ASSET_PLAYER_ANIMATION_CLIPS: ASSET_CDN_BASE_URL_INT + 'assets/player-animations/', ASSET_EXPANSION_ICON_SMALL_URL: ASSET_CDN_BASE_URL_INT + 'assets/expansion-icons-small/', ASSET_WALLPAPER_URL: ASSET_CDN_BASE_URL_INT + 'assets/wallpaper/', ASSET_INVENTORY_SLOT_URL: ASSET_CDN_BASE_URL_INT + 'assets/inventory/', diff --git a/frontend/src/router.ts b/frontend/src/router.ts index 7ac713235..deda35900 100644 --- a/frontend/src/router.ts +++ b/frontend/src/router.ts @@ -39,6 +39,11 @@ export default new Router({ component: () => import('./views/viewers/SpellAnimationViewer.vue'), meta: {title: "Spell Animation Viewer"}, }, + { + path: ROUTE.PLAYER_ANIMATION_VIEWER, + component: () => import('./views/viewers/PlayerAnimationViewer.vue'), + meta: {title: "Player Animation Viewer"}, + }, { path: ROUTE.EMITTER_VIEWER, component: () => import('./views/viewers/EmitterViewer.vue'), diff --git a/frontend/src/routes.ts b/frontend/src/routes.ts index cf1fe0c28..efaf3fe00 100644 --- a/frontend/src/routes.ts +++ b/frontend/src/routes.ts @@ -2,6 +2,7 @@ export const ROUTE = { ITEM_ICON_VIEWER: "/item-icon-viewer", SPELL_ANIMATION_VIEWER: "/spell-animation-viewer", EMITTER_VIEWER: "/emitter-viewer", + PLAYER_ANIMATION_VIEWER: "/player-animation-viewer", QUEST_API_EXPLORER: "/quest-api-explorer", SPELLS_LIST: "/spells", SPELL_EDIT: "/spell/%s", diff --git a/frontend/src/views/viewers/EmitterViewer.vue b/frontend/src/views/viewers/EmitterViewer.vue index 12b766884..cee5b2a0d 100644 --- a/frontend/src/views/viewers/EmitterViewer.vue +++ b/frontend/src/views/viewers/EmitterViewer.vue @@ -24,7 +24,7 @@
{{ preview }}
-
Videos courtesy of DeadZergling <3
+
Videos courtesy of DeadZergling <3
diff --git a/frontend/src/views/viewers/PlayerAnimationViewer.vue b/frontend/src/views/viewers/PlayerAnimationViewer.vue new file mode 100644 index 000000000..0debb40bf --- /dev/null +++ b/frontend/src/views/viewers/PlayerAnimationViewer.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/package-lock.json b/package-lock.json index a90028ba7..c414d6b29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "spire", - "version": "1.3.0", + "version": "1.5.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 82a480257..e446173e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "spire", - "version": "1.4.0", + "version": "1.5.0", "repository": { "type": "git", "url": "https://github.com/Akkadius/spire.git"