diff --git a/src/components/SceneDesigner/AnnotationPoint.vue b/src/components/SceneDesigner/AnnotationPoint.vue new file mode 100644 index 0000000..999d270 --- /dev/null +++ b/src/components/SceneDesigner/AnnotationPoint.vue @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/src/components/SceneDesigner/GameObject.vue b/src/components/SceneDesigner/GameObject.vue new file mode 100644 index 0000000..facb0ea --- /dev/null +++ b/src/components/SceneDesigner/GameObject.vue @@ -0,0 +1,46 @@ + + + \ No newline at end of file diff --git a/src/components/SceneDesigner/Scene.vue b/src/components/SceneDesigner/Scene.vue new file mode 100644 index 0000000..866cb8c --- /dev/null +++ b/src/components/SceneDesigner/Scene.vue @@ -0,0 +1,48 @@ + + + \ No newline at end of file diff --git a/src/components/SceneDesigner/SceneDesigner.vue b/src/components/SceneDesigner/SceneDesigner.vue index fce21c2..4267e46 100644 --- a/src/components/SceneDesigner/SceneDesigner.vue +++ b/src/components/SceneDesigner/SceneDesigner.vue @@ -1,40 +1,93 @@ \ No newline at end of file diff --git a/src/components/SceneDesigner/SvgAvatar.vue b/src/components/SceneDesigner/SvgAvatar.vue deleted file mode 100644 index a94bbcd..0000000 --- a/src/components/SceneDesigner/SvgAvatar.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/SceneDesigner/SvgIcon.vue b/src/components/SceneDesigner/SvgIcon.vue new file mode 100644 index 0000000..9af461d --- /dev/null +++ b/src/components/SceneDesigner/SvgIcon.vue @@ -0,0 +1,16 @@ + + + \ No newline at end of file diff --git a/src/components/SceneDesigner/SvgRectangle.vue b/src/components/SceneDesigner/SvgRectangle.vue new file mode 100644 index 0000000..52e03bb --- /dev/null +++ b/src/components/SceneDesigner/SvgRectangle.vue @@ -0,0 +1,35 @@ + + + \ No newline at end of file diff --git a/src/components/SceneDesigner/SvgScene.vue b/src/components/SceneDesigner/SvgScene.vue deleted file mode 100644 index a6ebdb8..0000000 --- a/src/components/SceneDesigner/SvgScene.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - \ No newline at end of file diff --git a/src/gameEngine/index.js b/src/lib/gameEngine.js similarity index 100% rename from src/gameEngine/index.js rename to src/lib/gameEngine.js diff --git a/src/lib/utils.js b/src/lib/utils.js new file mode 100644 index 0000000..a49b4fb --- /dev/null +++ b/src/lib/utils.js @@ -0,0 +1,57 @@ +const epsilon = 0.1; + +export default { + blobToBase64: blob => { + const reader = new FileReader(); + reader.readAsDataURL(blob); + return new Promise(resolve => { + reader.onloadend = () => { + resolve(reader.result); + }; + }); + }, + + adjustMinMax(r){ + return { + x1: Math.min(r.x1, r.x2), x2: Math.max(r.x1, r.x2), + y1: Math.min(r.y1, r.y2), y2: Math.max(r.y1, r.y2) + } + }, + + intersectPointRect(p, r){ + //r = this.adjustMinMax(r); + return p[0] >= r.x1 && p[0] <= r.x2 && p[1] >= r.y1 && p[1] <= r.y2; + }, + + intersectPointLine(p, l){ + //l = this.adjustMinMax(l); + let dx = l.x2 - l.x1, dy = l.y2 - l.y1; + let c = dy / dx; + return this.intersectPointRect(p, l) && c * p[0] - p[1] <= epsilon + }, + + intersectLineRect(l, r){ + return this.intersectPointRect([l.x1, l.y1], r) || + this.intersectPointRect([l.x2, l.y2], r); + }, + + intersectRectRect(r1, r2){ + return this.intersectPointRect([r1.x1, r1.y1], r2) || + this.intersectPointRect([r1.x1, r1.y2], r2) || + this.intersectPointRect([r1.x2, r1.y1], r2) || + this.intersectPointRect([r1.x2, r1.y2], r2); + }, + + round(n, p = 2){ + let pp = Math.pow(10, p); + return Math.round(n*pp)/pp; + }, + + deg2rad(deg){ + return deg * (Math.PI / 180); + }, + + rad2deg(rad){ + return rad * 180 / Math.PI; + } +} \ No newline at end of file diff --git a/src/pages/game-objects/[[id]].vue b/src/pages/game-objects/[[id]].vue index 6c15181..a5e8658 100644 --- a/src/pages/game-objects/[[id]].vue +++ b/src/pages/game-objects/[[id]].vue @@ -38,7 +38,7 @@ \ No newline at end of file diff --git a/src/plugins/api.js b/src/plugins/api.js index d859fea..fafc10b 100644 --- a/src/plugins/api.js +++ b/src/plugins/api.js @@ -1,7 +1,8 @@ import axios from 'axios'; const $ax = axios.create({ - baseURL: '/api/' + baseURL: '/api/', + //transformRequest: data=> }) export default { @@ -20,6 +21,20 @@ export default { async remove(id){ return await $ax.delete(`/game-object/${id}`) } + }, + scenario:{ + async save(data){ + return await $ax.put('/scenario', data); + }, + async load(id){ + return await $ax.get(`/scenario/${id}`); + }, + async search(query){ + return await $ax.post('/scenario', query); + }, + async remove(id){ + return await $ax.delete(`/scenario/${id}`) + } } } }