feat: engine utils, editor and asset prefix improvements
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import type { GameData, SceneNode } from '@engine/types'
|
||||
import { resolveAsset } from '@engine/utils'
|
||||
import { useGraphEditor } from './composables/useGraphEditor'
|
||||
import SceneGraph from './components/SceneGraph.vue'
|
||||
import NodeEditor from './components/NodeEditor.vue'
|
||||
@@ -21,7 +22,7 @@ const selectedScene = computed<SceneNode | null>(() => {
|
||||
const previewVideoUrl = computed(() => {
|
||||
const url = selectedScene.value?.videoUrl
|
||||
if (!url) return null
|
||||
return url.startsWith('/') ? url : '/' + url
|
||||
return resolveAsset(editor.gameData.value.assetBase || '', url)
|
||||
})
|
||||
|
||||
function newNode() {
|
||||
|
||||
6
engine/utils.ts
Normal file
6
engine/utils.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export function resolveAsset(base: string, path: string): string {
|
||||
if (!path || path.startsWith('http://') || path.startsWith('https://') || path.startsWith('data:')) return path
|
||||
const b = base.endsWith('/') ? base.slice(0, -1) : base
|
||||
const p = path.startsWith('/') ? path : '/' + path
|
||||
return b + p
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import { SaveSystem } from '@engine/systems/SaveSystem'
|
||||
import type { GameData } from '@engine/types'
|
||||
import { useGameStore } from '@/stores/gameStore'
|
||||
import { useI18n } from '@/composables/useI18n'
|
||||
import { resolveAsset } from '@engine/utils'
|
||||
|
||||
export function useGameEngine(videoEls: () => [HTMLVideoElement | null, HTMLVideoElement | null]) {
|
||||
const engine = new Engine()
|
||||
@@ -120,13 +121,6 @@ export function useGameEngine(videoEls: () => [HTMLVideoElement | null, HTMLVide
|
||||
store.setVideoTime(t)
|
||||
})
|
||||
|
||||
function resolveAsset(base: string, path: string): string {
|
||||
if (!path || path.startsWith('http://') || path.startsWith('https://') || path.startsWith('data:')) return path
|
||||
const b = base.endsWith('/') ? base.slice(0, -1) : base
|
||||
const p = path.startsWith('/') ? path : '/' + path
|
||||
return b + p
|
||||
}
|
||||
|
||||
function applyAssetBase(data: GameData) {
|
||||
const base = data.assetBase || ''
|
||||
if (!base) return
|
||||
|
||||
Reference in New Issue
Block a user