@vyr/three-browser 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/package.json +25 -0
  2. package/src/common/index.ts +2 -0
  3. package/src/common/provider.ts +14 -0
  4. package/src/common/validate.ts +10 -0
  5. package/src/fragment/GeoMapFragment.vue +129 -0
  6. package/src/fragment/InstancedMeshFragment.vue +29 -0
  7. package/src/fragment/MeshFragment.vue +98 -0
  8. package/src/fragment/ModelFragment.vue +28 -0
  9. package/src/fragment/NodeFragment.vue +93 -0
  10. package/src/fragment/ParticleFragment.vue +147 -0
  11. package/src/fragment/PointsFragment.vue +34 -0
  12. package/src/fragment/SpriteFragment.vue +38 -0
  13. package/src/fragment/TextFragment.vue +98 -0
  14. package/src/fragment/animation/AnimationActionFragment.vue +110 -0
  15. package/src/fragment/geometry/BoxGeometryFragment.vue +44 -0
  16. package/src/fragment/geometry/BufferGeometryFragment.vue +26 -0
  17. package/src/fragment/geometry/CircleGeometryFragment.vue +35 -0
  18. package/src/fragment/geometry/CylinderGeometryFragment.vue +60 -0
  19. package/src/fragment/geometry/ExtrudeGeometryFragment.vue +111 -0
  20. package/src/fragment/geometry/PlaneGeometryFragment.vue +35 -0
  21. package/src/fragment/geometry/RingGeometryFragment.vue +45 -0
  22. package/src/fragment/geometry/SphereGeometryFragment.vue +51 -0
  23. package/src/fragment/geometry/SurfaceGeometryFragment.vue +18 -0
  24. package/src/fragment/geometry/TubeGeometryFragment.vue +65 -0
  25. package/src/fragment/light/AmbientLightFragment.vue +27 -0
  26. package/src/fragment/light/DirectionalLightFragment.vue +86 -0
  27. package/src/fragment/light/HemisphereLightFragment.vue +34 -0
  28. package/src/fragment/light/PointLightFragment.vue +68 -0
  29. package/src/fragment/light/RectAreaLightFragment.vue +48 -0
  30. package/src/fragment/light/SpotLightFragment.vue +96 -0
  31. package/src/fragment/material/MaterialFragment.vue +53 -0
  32. package/src/fragment/material/MeshBasicMaterialFragment.vue +126 -0
  33. package/src/fragment/material/MeshPhongMaterialFragment.vue +263 -0
  34. package/src/fragment/material/MeshStandardMaterialFragment.vue +256 -0
  35. package/src/fragment/material/PointsMaterialFragment.vue +81 -0
  36. package/src/fragment/material/ShaderMaterialFragment.vue +61 -0
  37. package/src/fragment/material/ShadowMaterialFragment.vue +49 -0
  38. package/src/fragment/material/SpriteMaterialFragment.vue +79 -0
  39. package/src/fragment/texture/TextureFragment.vue +131 -0
  40. package/src/index.ts +4 -0
  41. package/src/locale/Language.ts +10 -0
  42. package/src/locale/LanguageProvider.ts +655 -0
  43. package/src/locale/index.ts +2 -0
  44. package/src/option/Animation.ts +17 -0
  45. package/src/option/Geometry.ts +22 -0
  46. package/src/option/Material.ts +42 -0
  47. package/src/option/Mesh.ts +10 -0
  48. package/src/option/Shadow.ts +18 -0
  49. package/src/option/Texture.ts +55 -0
  50. package/src/option/index.ts +6 -0
  51. package/src/service/footer/action/geometry/index.ts +73 -0
  52. package/src/service/footer/action/index.ts +9 -0
  53. package/src/service/footer/action/material/index.ts +70 -0
  54. package/src/service/footer/action/texture/index.ts +63 -0
  55. package/src/service/global/index.ts +1 -0
  56. package/src/service/global/scripts/index.ts +12 -0
  57. package/src/service/index.ts +79 -0
  58. package/src/service/inspector/GeoMapViewer.vue +32 -0
  59. package/src/service/inspector/HTMLConvertViewer.vue +31 -0
  60. package/src/service/inspector/InstanceMeshViewer.vue +33 -0
  61. package/src/service/inspector/MeshViewer.vue +33 -0
  62. package/src/service/inspector/ModelViewer.vue +34 -0
  63. package/src/service/inspector/NodeViewer.vue +30 -0
  64. package/src/service/inspector/ParticleViewer.vue +37 -0
  65. package/src/service/inspector/PerspectiveCameraViewer.vue +62 -0
  66. package/src/service/inspector/PointsViewer.vue +33 -0
  67. package/src/service/inspector/ServiceViewer.vue +92 -0
  68. package/src/service/inspector/SpriteViewer.vue +34 -0
  69. package/src/service/inspector/TextViewer.vue +34 -0
  70. package/src/service/inspector/animation/AnimationActionViewer.vue +31 -0
  71. package/src/service/inspector/geometry/BoxGeometryViewer.vue +32 -0
  72. package/src/service/inspector/geometry/BufferGeometryViewer.vue +33 -0
  73. package/src/service/inspector/geometry/CircleGeometryViewer.vue +32 -0
  74. package/src/service/inspector/geometry/CylinderGeometryViewer.vue +32 -0
  75. package/src/service/inspector/geometry/ExtrudeGeometryViewer.vue +32 -0
  76. package/src/service/inspector/geometry/PlaneGeometryViewer.vue +32 -0
  77. package/src/service/inspector/geometry/RingGeometryViewer.vue +32 -0
  78. package/src/service/inspector/geometry/SphereGeometryViewer.vue +32 -0
  79. package/src/service/inspector/geometry/SurfaceGeometryViewer.vue +32 -0
  80. package/src/service/inspector/geometry/TubeGeometryViewer.vue +32 -0
  81. package/src/service/inspector/index.ts +50 -0
  82. package/src/service/inspector/light/AmbientLightViewer.vue +33 -0
  83. package/src/service/inspector/light/DirectionalLightViewer.vue +33 -0
  84. package/src/service/inspector/light/HemisphereLightViewer.vue +33 -0
  85. package/src/service/inspector/light/PointLightViewer.vue +33 -0
  86. package/src/service/inspector/light/RectAreaLightViewer.vue +33 -0
  87. package/src/service/inspector/light/SpotLightViewer.vue +33 -0
  88. package/src/service/inspector/material/MeshBasicMaterialViewer.vue +34 -0
  89. package/src/service/inspector/material/MeshPhongMaterialViewer.vue +34 -0
  90. package/src/service/inspector/material/MeshStandardMaterialViewer.vue +34 -0
  91. package/src/service/inspector/material/PointsMaterialViewer.vue +33 -0
  92. package/src/service/inspector/material/ShaderMaterialViewer.vue +34 -0
  93. package/src/service/inspector/material/ShadowMaterialViewer.vue +34 -0
  94. package/src/service/inspector/material/SpriteMaterialViewer.vue +34 -0
  95. package/src/service/inspector/texture/TextureViewer.vue +32 -0
  96. package/src/service/sidebar/asset/action/AddAnimationAction.ts +66 -0
  97. package/src/service/sidebar/asset/action/AddLightAction.ts +66 -0
  98. package/src/service/sidebar/asset/action/index.ts +7 -0
  99. package/src/service/sidebar/scene/action/AddAnimationAction.ts +64 -0
  100. package/src/service/sidebar/scene/action/AddLightAction.ts +66 -0
  101. package/src/service/sidebar/scene/action/index.ts +7 -0
  102. package/src/shims-vue.d.ts +10 -0
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@vyr/three-browser",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "main": "./src/index.ts",
6
+ "author": "",
7
+ "license": "MIT",
8
+ "dependencies": {
9
+ "@vyr/locale": "0.0.1",
10
+ "@vyr/runtime": "0.0.1",
11
+ "@vyr/engine": "0.0.1",
12
+ "@vyr/design": "0.0.1",
13
+ "@vyr/builtin": "0.0.1",
14
+ "@vyr/three": "0.0.1",
15
+ "vue": "3.5.22"
16
+ },
17
+ "files": [
18
+ "package.json",
19
+ "src/"
20
+ ],
21
+ "vyr": {
22
+ "type": "browser",
23
+ "order": 1000
24
+ }
25
+ }
@@ -0,0 +1,2 @@
1
+ export * from './validate'
2
+ export * from './provider'
@@ -0,0 +1,14 @@
1
+ import { provide, inject, Ref } from "vue";
2
+ import { Descriptor } from "@vyr/engine";
3
+
4
+ const providerKey = Symbol()
5
+
6
+ const providerDescriptor = (descriptor: Ref<Descriptor | null>) => {
7
+ provide(providerKey, descriptor)
8
+ }
9
+
10
+ const useDescriptor = <T extends Descriptor = Descriptor>() => {
11
+ return inject(providerKey) as Ref<T>
12
+ }
13
+
14
+ export { providerDescriptor, useDescriptor }
@@ -0,0 +1,10 @@
1
+ import { Descriptor } from "@vyr/engine"
2
+
3
+ const instanceofArray = (Class: typeof Descriptor, instances: Descriptor[]) => {
4
+ for (const instance of instances) {
5
+ if (instance instanceof Class) return true
6
+ }
7
+ return false
8
+ }
9
+
10
+ export { instanceofArray }
@@ -0,0 +1,129 @@
1
+ <template>
2
+ <vyr-row>
3
+ <vyr-label :label="language.get('inspector.Node.material.type')">
4
+ <vyr-col>
5
+ <vyr-select :model-value="typeof descriptor.material === 'string' ? 1 : 2" :data="Mesh.typeOptions"
6
+ @update:modelValue="changeMode"></vyr-select>
7
+ </vyr-col>
8
+ </vyr-label>
9
+ </vyr-row>
10
+ <template v-if="typeof descriptor.material === 'string'">
11
+ <vyr-row>
12
+ <vyr-label :label="language.get('inspector.Node.material')">
13
+ <vyr-col>
14
+ <vyr-input v-model="descriptor.material" :clearable="true" dragkey="material" :draggable="draggable"
15
+ trigger="blur"></vyr-input>
16
+ </vyr-col>
17
+ </vyr-label>
18
+ </vyr-row>
19
+ </template>
20
+ <template v-else>
21
+ <vyr-row>
22
+ <vyr-label :label="language.get('inspector.Node.material.index')">
23
+ <vyr-col>
24
+ <vyr-select v-model="currentIndex" :data="materialOptions" :addable="true" :removable="true"
25
+ @add="addMaterial" @remove="removeMaterial"></vyr-select>
26
+ </vyr-col>
27
+ </vyr-label>
28
+ </vyr-row>
29
+ <vyr-row>
30
+ <vyr-label :label="language.get('inspector.Node.material')">
31
+ <vyr-col>
32
+ <vyr-input v-model="descriptor.material[currentIndex].url" :clearable="true"
33
+ :dragkey="`material[${currentIndex}].url`" :draggable="draggable" trigger="blur"></vyr-input>
34
+ </vyr-col>
35
+ </vyr-label>
36
+ </vyr-row>
37
+ </template>
38
+ <vyr-row>
39
+ <vyr-label :label="language.get('inspector.GeoMap.borderMaterial')">
40
+ <vyr-col>
41
+ <vyr-input v-model="descriptor.borderMaterial" :clearable="true" dragkey="borderMaterial"
42
+ :draggable="draggable" trigger="blur"></vyr-input>
43
+ </vyr-col>
44
+ </vyr-label>
45
+ </vyr-row>
46
+ <vyr-row>
47
+ <vyr-label :label="language.get('inspector.GeoMap.shadowMaterial')">
48
+ <vyr-col>
49
+ <vyr-input v-model="descriptor.shadowMaterial" :clearable="true" dragkey="shadowMaterial"
50
+ :draggable="draggable" trigger="blur"></vyr-input>
51
+ </vyr-col>
52
+ </vyr-label>
53
+ </vyr-row>
54
+ <vyr-row>
55
+ <vyr-label :label="language.get('inspector.GeoMap.geojsonRegion')">
56
+ <vyr-col>
57
+ <vyr-input v-model="descriptor.geojsonRegion" :clearable="true" dragkey="geojsonRegion"
58
+ :draggable="draggable" trigger="blur"></vyr-input>
59
+ </vyr-col>
60
+ </vyr-label>
61
+ </vyr-row>
62
+ <vyr-row>
63
+ <vyr-label :label="language.get('inspector.GeoMap.geojsonBorder')">
64
+ <vyr-col>
65
+ <vyr-input v-model="descriptor.geojsonBorder" :clearable="true" dragkey="geojsonBorder"
66
+ :draggable="draggable" trigger="blur"></vyr-input>
67
+ </vyr-col>
68
+ </vyr-label>
69
+ </vyr-row>
70
+ <vyr-row>
71
+ <vyr-label :label="language.get('inspector.GeoMap.label')">
72
+ <vyr-col>
73
+ <vyr-input v-model="descriptor.label" :clearable="true" dragkey="label" :draggable="draggable"
74
+ trigger="blur"></vyr-input>
75
+ </vyr-col>
76
+ </vyr-label>
77
+ </vyr-row>
78
+ <slot></slot>
79
+ </template>
80
+
81
+ <script lang="ts" setup>
82
+ import { computed, ref } from 'vue';
83
+ import { DraggableService, runtime } from '@vyr/runtime';
84
+ import { VyrInput, VyrRow, VyrCol, VyrLabel, VyrSelect } from '@vyr/design';
85
+ import { GeoMapDescriptor } from '@vyr/three';
86
+ import { language } from '../locale'
87
+ import { useDescriptor } from '../common';
88
+ import { Mesh } from '../option';
89
+
90
+ const draggableService = runtime.get<DraggableService>('draggable')
91
+ const draggable = computed(() => draggableService.get(draggableService.key.inspector))
92
+
93
+ const descriptor = useDescriptor<GeoMapDescriptor>()
94
+ const materialOptions = computed(() => {
95
+ const options: { label: string; value: number }[] = []
96
+ if (typeof descriptor.value.material === 'string') return options
97
+
98
+ for (let i = 0; i < descriptor.value.material.length; i++) {
99
+ options.push({ label: i + '', value: i })
100
+ }
101
+
102
+ return options
103
+ })
104
+ const currentIndex = ref(0)
105
+
106
+ const changeMode = (type: number) => {
107
+ if (type === 1) {
108
+ if (typeof descriptor.value.material === 'string') return
109
+ descriptor.value.material = descriptor.value.material.length > 0 ? descriptor.value.material[0].url : ''
110
+ } else {
111
+ if (typeof descriptor.value.material !== 'string') return
112
+ descriptor.value.material = descriptor.value.material ? [{ url: descriptor.value.material }] : []
113
+ }
114
+ }
115
+
116
+ const addMaterial = () => {
117
+ if (typeof descriptor.value.material === 'string') return
118
+ descriptor.value.material.push({ url: '' })
119
+ }
120
+
121
+ const removeMaterial = (i: number) => {
122
+ if (Array.isArray(descriptor.value.material)) {
123
+ descriptor.value.material.splice(i, 1)
124
+ if (currentIndex.value === i) currentIndex.value = 0
125
+ }
126
+ }
127
+ </script>
128
+
129
+ <style lang="less" scoped></style>
@@ -0,0 +1,29 @@
1
+ <template>
2
+ <mesh-fragment>
3
+ <vyr-row>
4
+ <vyr-label :label="language.get('inspector.InstancedMesh.setting')">
5
+ <vyr-col>
6
+ <vyr-input v-model="descriptor.setting" :clearable="true" dragkey="setting" :draggable="draggable"
7
+ trigger="blur"></vyr-input>
8
+ </vyr-col>
9
+ </vyr-label>
10
+ </vyr-row>
11
+ </mesh-fragment>
12
+ </template>
13
+
14
+ <script lang="ts" setup>
15
+ import { computed } from 'vue'
16
+ import { DraggableService, runtime } from '@vyr/runtime';
17
+ import { VyrInput, VyrRow, VyrCol, VyrLabel } from '@vyr/design';
18
+ import { InstancedMeshDescriptor } from '@vyr/three';
19
+ import { language } from '../locale'
20
+ import { useDescriptor } from '../common';
21
+ import MeshFragment from './MeshFragment.vue';
22
+
23
+ const draggableService = runtime.get<DraggableService>('draggable')
24
+ const draggable = computed(() => draggableService.get(draggableService.key.inspector))
25
+
26
+ const descriptor = useDescriptor<InstancedMeshDescriptor>()
27
+ </script>
28
+
29
+ <style lang="less" scoped></style>
@@ -0,0 +1,98 @@
1
+ <template>
2
+ <vyr-row>
3
+ <vyr-label :label="language.get('inspector.Node.material.type')">
4
+ <vyr-col>
5
+ <vyr-select :model-value="typeof descriptor.material === 'string' ? 1 : 2" :data="Mesh.typeOptions"
6
+ @update:modelValue="changeMode"></vyr-select>
7
+ </vyr-col>
8
+ </vyr-label>
9
+ </vyr-row>
10
+ <template v-if="typeof descriptor.material === 'string'">
11
+ <vyr-row>
12
+ <vyr-label :label="language.get('inspector.Node.material')">
13
+ <vyr-col>
14
+ <vyr-input v-model="descriptor.material" :clearable="true" dragkey="material" :draggable="draggable"
15
+ trigger="blur"></vyr-input>
16
+ </vyr-col>
17
+ </vyr-label>
18
+ </vyr-row>
19
+ </template>
20
+ <template v-else>
21
+ <vyr-row>
22
+ <vyr-label :label="language.get('inspector.Node.material.index')">
23
+ <vyr-col>
24
+ <vyr-select v-model="currentIndex" :data="materialOptions" :addable="true" :removable="true"
25
+ @add="addMaterial" @remove="removeMaterial"></vyr-select>
26
+ </vyr-col>
27
+ </vyr-label>
28
+ </vyr-row>
29
+ <vyr-row>
30
+ <vyr-label :label="language.get('inspector.Node.material')">
31
+ <vyr-col>
32
+ <vyr-input v-model="descriptor.material[currentIndex].url" :clearable="true"
33
+ :dragkey="`material[${currentIndex}].url`" :draggable="draggable" trigger="blur"></vyr-input>
34
+ </vyr-col>
35
+ </vyr-label>
36
+ </vyr-row>
37
+ </template>
38
+ <vyr-row>
39
+ <vyr-label :label="language.get('inspector.Node.geometry')">
40
+ <vyr-col>
41
+ <vyr-input v-model="descriptor.geometry" :clearable="true" dragkey="geometry" :draggable="draggable"
42
+ trigger="blur"></vyr-input>
43
+ </vyr-col>
44
+ </vyr-label>
45
+ </vyr-row>
46
+ <slot></slot>
47
+ </template>
48
+
49
+ <script lang="ts" setup>
50
+ import { computed, ref } from 'vue';
51
+ import { DraggableService, runtime } from '@vyr/runtime';
52
+ import { VyrInput, VyrRow, VyrCol, VyrLabel, VyrSelect } from '@vyr/design';
53
+ import { MeshDescriptor } from '@vyr/three';
54
+ import { language } from '../locale'
55
+ import { useDescriptor } from '../common';
56
+ import { Mesh } from '../option';
57
+
58
+ defineProps<{ }>()
59
+ const draggableService = runtime.get<DraggableService>('draggable')
60
+ const draggable = computed(() => draggableService.get(draggableService.key.inspector))
61
+
62
+ const descriptor = useDescriptor<MeshDescriptor>()
63
+ const materialOptions = computed(() => {
64
+ const options: { label: string; value: number }[] = []
65
+ if (typeof descriptor.value.material === 'string') return options
66
+
67
+ for (let i = 0; i < descriptor.value.material.length; i++) {
68
+ options.push({ label: i + '', value: i })
69
+ }
70
+
71
+ return options
72
+ })
73
+ const currentIndex = ref(0)
74
+
75
+ const changeMode = (type: number) => {
76
+ if (type === 1) {
77
+ if (typeof descriptor.value.material === 'string') return
78
+ descriptor.value.material = descriptor.value.material.length > 0 ? descriptor.value.material[0].url : ''
79
+ } else {
80
+ if (typeof descriptor.value.material !== 'string') return
81
+ descriptor.value.material = descriptor.value.material ? [{ url: descriptor.value.material }] : []
82
+ }
83
+ }
84
+
85
+ const addMaterial = () => {
86
+ if (typeof descriptor.value.material === 'string') return
87
+ descriptor.value.material.push({ url: '' })
88
+ }
89
+
90
+ const removeMaterial = (i: number) => {
91
+ if (Array.isArray(descriptor.value.material)) {
92
+ descriptor.value.material.splice(i, 1)
93
+ if (currentIndex.value === i) currentIndex.value = 0
94
+ }
95
+ }
96
+ </script>
97
+
98
+ <style lang="less" scoped></style>
@@ -0,0 +1,28 @@
1
+ <template>
2
+ <vyr-row>
3
+ <vyr-label :label="language.get('inspector.Model.url')">
4
+ <vyr-col>
5
+ <vyr-input v-model="descriptor.url" :clearable="true" dragkey="url" :draggable="draggable"
6
+ trigger="blur"></vyr-input>
7
+ </vyr-col>
8
+ </vyr-label>
9
+ </vyr-row>
10
+ </template>
11
+
12
+
13
+ <script lang="ts" setup>
14
+ import { computed } from 'vue'
15
+ import { DraggableService, runtime } from '@vyr/runtime';
16
+ import { VyrInput, VyrRow, VyrCol, VyrLabel } from '@vyr/design';
17
+ import { ModelDescriptor } from '@vyr/three';
18
+ import { language } from '../locale'
19
+ import { useDescriptor } from '../common';
20
+
21
+ const draggableService = runtime.get<DraggableService>('draggable')
22
+ const draggable = computed(() => draggableService.get(draggableService.key.inspector))
23
+
24
+ const descriptor = useDescriptor<ModelDescriptor>()
25
+
26
+ </script>
27
+
28
+ <style lang="less" scoped></style>
@@ -0,0 +1,93 @@
1
+ <template>
2
+ <vyr-row>
3
+ <vyr-label :label="language.get('inspector.Node.layer')">
4
+ <vyr-col>
5
+ <vyr-input-number v-model="descriptor.layer" :clearable="false" :step="1" :min="0" :allow-null="false"
6
+ :default-value="0"></vyr-input-number>
7
+ </vyr-col>
8
+ </vyr-label>
9
+ </vyr-row>
10
+ <vyr-row>
11
+ <vyr-label :label="language.get('inspector.Node.renderOrder')">
12
+ <vyr-col>
13
+ <vyr-input-number v-model="descriptor.renderOrder" :clearable="false" :step="1" :allow-null="false"
14
+ :default-value="0"></vyr-input-number>
15
+ </vyr-col>
16
+ </vyr-label>
17
+ </vyr-row>
18
+ <vyr-row>
19
+ <vyr-label :label="language.get('inspector.Node.position')">
20
+ <vyr-col :span="8">
21
+ <vyr-input-number v-model="descriptor.position.x" :clearable="false" :allow-null="false"
22
+ :default-value="0"></vyr-input-number>
23
+ </vyr-col>
24
+ <vyr-col :span="8">
25
+ <vyr-input-number v-model="descriptor.position.y" :clearable="false" :allow-null="false"
26
+ :default-value="0"></vyr-input-number>
27
+ </vyr-col>
28
+ <vyr-col :span="8">
29
+ <vyr-input-number v-model="descriptor.position.z" :clearable="false" :allow-null="false"
30
+ :default-value="0"></vyr-input-number>
31
+ </vyr-col>
32
+ </vyr-label>
33
+ </vyr-row>
34
+ <vyr-row>
35
+ <vyr-label :label="language.get('inspector.Node.rotation')">
36
+ <vyr-col :span="8">
37
+ <vyr-input-number v-model="descriptor.rotation.x" :clearable="false" :allow-null="false"
38
+ :default-value="0"></vyr-input-number>
39
+ </vyr-col>
40
+ <vyr-col :span="8">
41
+ <vyr-input-number v-model="descriptor.rotation.y" :clearable="false" :allow-null="false"
42
+ :default-value="0"></vyr-input-number>
43
+ </vyr-col>
44
+ <vyr-col :span="8">
45
+ <vyr-input-number v-model="descriptor.rotation.z" :clearable="false" :allow-null="false"
46
+ :default-value="0"></vyr-input-number>
47
+ </vyr-col>
48
+ </vyr-label>
49
+ </vyr-row>
50
+ <vyr-row>
51
+ <vyr-label :label="language.get('inspector.Node.scale')">
52
+ <vyr-col :span="8">
53
+ <vyr-input-number v-model="descriptor.scale.x" :clearable="false" :allow-null="false"
54
+ :default-value="1"></vyr-input-number>
55
+ </vyr-col>
56
+ <vyr-col :span="8">
57
+ <vyr-input-number v-model="descriptor.scale.y" :clearable="false" :allow-null="false"
58
+ :default-value="1"></vyr-input-number>
59
+ </vyr-col>
60
+ <vyr-col :span="8">
61
+ <vyr-input-number v-model="descriptor.scale.z" :clearable="false" :allow-null="false"
62
+ :default-value="1"></vyr-input-number>
63
+ </vyr-col>
64
+ </vyr-label>
65
+ </vyr-row>
66
+ <vyr-row>
67
+ <vyr-label :label="language.get('inspector.Node.castShadow')">
68
+ <vyr-col>
69
+ <vyr-select v-model="descriptor.castShadow" :data="option.stateOptions"></vyr-select>
70
+ </vyr-col>
71
+ </vyr-label>
72
+ </vyr-row>
73
+ <vyr-row>
74
+ <vyr-label :label="language.get('inspector.Node.receiveShadow')">
75
+ <vyr-col>
76
+ <vyr-select v-model="descriptor.receiveShadow" :data="option.stateOptions"></vyr-select>
77
+ </vyr-col>
78
+ </vyr-label>
79
+ </vyr-row>
80
+ </template>
81
+
82
+
83
+ <script lang="ts" setup>
84
+ import { NodeDescriptor } from '@vyr/engine';
85
+ import { VyrSelect, VyrInputNumber, VyrRow, VyrCol, VyrLabel } from '@vyr/design';
86
+ import { option } from '@vyr/builtin'
87
+ import { language } from '../locale'
88
+ import { useDescriptor } from '../common';
89
+
90
+ const descriptor = useDescriptor<NodeDescriptor>()
91
+ </script>
92
+
93
+ <style lang="less" scoped></style>
@@ -0,0 +1,147 @@
1
+ <template>
2
+ <vyr-row>
3
+ <vyr-label :label="language.get('inspector.Particle.count')">
4
+ <vyr-col>
5
+ <vyr-input-number v-model="descriptor.count" :allow-null="false"></vyr-input-number>
6
+ </vyr-col>
7
+ </vyr-label>
8
+ </vyr-row>
9
+ <vyr-row>
10
+ <vyr-label :label="language.get('inspector.Particle.duration')">
11
+ <vyr-col>
12
+ <vyr-input-number v-model="descriptor.duration" :allow-null="false" :min="0"></vyr-input-number>
13
+ </vyr-col>
14
+ </vyr-label>
15
+ </vyr-row>
16
+ <vyr-row>
17
+ <vyr-label :label="language.get('inspector.Particle.track')">
18
+ <vyr-col>
19
+ <vyr-input v-model="descriptor.track" :clearable="true" :draggable="draggable" trigger="blur"
20
+ dragkey="track"></vyr-input>
21
+ </vyr-col>
22
+ </vyr-label>
23
+ </vyr-row>
24
+ <vyr-row>
25
+ <vyr-label :label="language.get('inspector.Particle.size')">
26
+ <vyr-col :span="12">
27
+ <vyr-input-number v-model="descriptor.minSize" :clearable="false" :allow-null="false"
28
+ :default-value="0"></vyr-input-number>
29
+ </vyr-col>
30
+ <vyr-col :span="12">
31
+ <vyr-input-number v-model="descriptor.maxSize" :clearable="false" :allow-null="false"
32
+ :default-value="0"></vyr-input-number>
33
+ </vyr-col>
34
+ </vyr-label>
35
+ </vyr-row>
36
+ <vyr-row>
37
+ <vyr-label :label="language.get('inspector.Particle.minTrackOffset')">
38
+ <vyr-col :span="8">
39
+ <vyr-input-number v-model="descriptor.minTrackOffset.x" :clearable="false" :allow-null="false"
40
+ :default-value="0"></vyr-input-number>
41
+ </vyr-col>
42
+ <vyr-col :span="8">
43
+ <vyr-input-number v-model="descriptor.minTrackOffset.y" :clearable="false" :allow-null="false"
44
+ :default-value="0"></vyr-input-number>
45
+ </vyr-col>
46
+ <vyr-col :span="8">
47
+ <vyr-input-number v-model="descriptor.minTrackOffset.z" :clearable="false" :allow-null="false"
48
+ :default-value="0"></vyr-input-number>
49
+ </vyr-col>
50
+ </vyr-label>
51
+ </vyr-row>
52
+ <vyr-row>
53
+ <vyr-label :label="language.get('inspector.Particle.maxTrackOffset')">
54
+ <vyr-col :span="8">
55
+ <vyr-input-number v-model="descriptor.maxTrackOffset.x" :clearable="false" :allow-null="false"
56
+ :default-value="0"></vyr-input-number>
57
+ </vyr-col>
58
+ <vyr-col :span="8">
59
+ <vyr-input-number v-model="descriptor.maxTrackOffset.y" :clearable="false" :allow-null="false"
60
+ :default-value="0"></vyr-input-number>
61
+ </vyr-col>
62
+ <vyr-col :span="8">
63
+ <vyr-input-number v-model="descriptor.maxTrackOffset.z" :clearable="false" :allow-null="false"
64
+ :default-value="0"></vyr-input-number>
65
+ </vyr-col>
66
+ </vyr-label>
67
+ </vyr-row>
68
+ <vyr-row>
69
+ <vyr-label :label="language.get('inspector.Particle.minTrackRotation')">
70
+ <vyr-col :span="8">
71
+ <vyr-input-number v-model="descriptor.minTrackRotation.x" :clearable="false" :allow-null="false"
72
+ :default-value="0"></vyr-input-number>
73
+ </vyr-col>
74
+ <vyr-col :span="8">
75
+ <vyr-input-number v-model="descriptor.minTrackRotation.y" :clearable="false" :allow-null="false"
76
+ :default-value="0"></vyr-input-number>
77
+ </vyr-col>
78
+ <vyr-col :span="8">
79
+ <vyr-input-number v-model="descriptor.minTrackRotation.z" :clearable="false" :allow-null="false"
80
+ :default-value="0"></vyr-input-number>
81
+ </vyr-col>
82
+ </vyr-label>
83
+ </vyr-row>
84
+ <vyr-row>
85
+ <vyr-label :label="language.get('inspector.Particle.maxTrackRotation')">
86
+ <vyr-col :span="8">
87
+ <vyr-input-number v-model="descriptor.maxTrackRotation.x" :clearable="false" :allow-null="false"
88
+ :default-value="0"></vyr-input-number>
89
+ </vyr-col>
90
+ <vyr-col :span="8">
91
+ <vyr-input-number v-model="descriptor.maxTrackRotation.y" :clearable="false" :allow-null="false"
92
+ :default-value="0"></vyr-input-number>
93
+ </vyr-col>
94
+ <vyr-col :span="8">
95
+ <vyr-input-number v-model="descriptor.maxTrackRotation.z" :clearable="false" :allow-null="false"
96
+ :default-value="0"></vyr-input-number>
97
+ </vyr-col>
98
+ </vyr-label>
99
+ </vyr-row>
100
+ <vyr-row>
101
+ <vyr-label :label="language.get('inspector.Particle.minTrackScale')">
102
+ <vyr-col :span="8">
103
+ <vyr-input-number v-model="descriptor.minTrackScale.x" :clearable="false" :allow-null="false"
104
+ :default-value="0"></vyr-input-number>
105
+ </vyr-col>
106
+ <vyr-col :span="8">
107
+ <vyr-input-number v-model="descriptor.minTrackScale.y" :clearable="false" :allow-null="false"
108
+ :default-value="0"></vyr-input-number>
109
+ </vyr-col>
110
+ <vyr-col :span="8">
111
+ <vyr-input-number v-model="descriptor.minTrackScale.z" :clearable="false" :allow-null="false"
112
+ :default-value="0"></vyr-input-number>
113
+ </vyr-col>
114
+ </vyr-label>
115
+ </vyr-row>
116
+ <vyr-row>
117
+ <vyr-label :label="language.get('inspector.Particle.maxTrackScale')">
118
+ <vyr-col :span="8">
119
+ <vyr-input-number v-model="descriptor.maxTrackScale.x" :clearable="false" :allow-null="false"
120
+ :default-value="0"></vyr-input-number>
121
+ </vyr-col>
122
+ <vyr-col :span="8">
123
+ <vyr-input-number v-model="descriptor.maxTrackScale.y" :clearable="false" :allow-null="false"
124
+ :default-value="0"></vyr-input-number>
125
+ </vyr-col>
126
+ <vyr-col :span="8">
127
+ <vyr-input-number v-model="descriptor.maxTrackScale.z" :clearable="false" :allow-null="false"
128
+ :default-value="0"></vyr-input-number>
129
+ </vyr-col>
130
+ </vyr-label>
131
+ </vyr-row>
132
+ </template>
133
+
134
+ <script lang="ts" setup>
135
+ import { computed } from 'vue'
136
+ import { DraggableService, runtime } from '@vyr/runtime';
137
+ import { VyrInput, VyrRow, VyrCol, VyrLabel, VyrInputNumber } from '@vyr/design';
138
+ import { ParticleDescriptor } from '@vyr/three';
139
+ import { language } from '../locale'
140
+ import { useDescriptor } from '../common';
141
+
142
+ const draggableService = runtime.get<DraggableService>('draggable')
143
+ const draggable = computed(() => draggableService.get(draggableService.key.inspector))
144
+ const descriptor = useDescriptor<ParticleDescriptor>()
145
+ </script>
146
+
147
+ <style lang="less" scoped></style>
@@ -0,0 +1,34 @@
1
+ <template>
2
+ <slot name="header"></slot>
3
+ <vyr-row>
4
+ <vyr-label :label="language.get('inspector.Node.material')">
5
+ <vyr-col>
6
+ <vyr-input v-model="descriptor.material" :clearable="true" dragkey="material" :draggable="draggable"
7
+ trigger="blur"></vyr-input>
8
+ </vyr-col>
9
+ </vyr-label>
10
+ </vyr-row>
11
+ <vyr-row>
12
+ <vyr-label :label="language.get('inspector.Node.geometry')">
13
+ <vyr-col>
14
+ <vyr-input v-model="descriptor.geometry" :clearable="true" dragkey="geometry" :draggable="draggable"
15
+ trigger="blur"></vyr-input>
16
+ </vyr-col>
17
+ </vyr-label>
18
+ </vyr-row>
19
+ </template>
20
+
21
+ <script lang="ts" setup>
22
+ import { computed } from 'vue'
23
+ import { DraggableService, runtime } from '@vyr/runtime';
24
+ import { VyrInput, VyrRow, VyrCol, VyrLabel } from '@vyr/design';
25
+ import { PointsDescriptor } from '@vyr/three';
26
+ import { language } from '../locale'
27
+ import { useDescriptor } from '../common';
28
+
29
+ const draggableService = runtime.get<DraggableService>('draggable')
30
+ const draggable = computed(() => draggableService.get(draggableService.key.inspector))
31
+ const descriptor = useDescriptor<PointsDescriptor>()
32
+ </script>
33
+
34
+ <style lang="less" scoped></style>
@@ -0,0 +1,38 @@
1
+ <template>
2
+ <slot name="header"></slot>
3
+ <vyr-row>
4
+ <vyr-label :label="language.get('inspector.Node.material')">
5
+ <vyr-col>
6
+ <vyr-input v-model="descriptor.material" :clearable="true" dragkey="material" :draggable="draggable"
7
+ trigger="blur"></vyr-input>
8
+ </vyr-col>
9
+ </vyr-label>
10
+ </vyr-row>
11
+ <vyr-row>
12
+ <vyr-label :label="language.get('inspector.Sprite.center')">
13
+ <vyr-col :span="12">
14
+ <vyr-input-number v-model="descriptor.center.x" :clearable="false" :allow-null="false"
15
+ :default-value="0"></vyr-input-number>
16
+ </vyr-col>
17
+ <vyr-col :span="12">
18
+ <vyr-input-number v-model="descriptor.center.y" :clearable="false" :allow-null="false"
19
+ :default-value="0"></vyr-input-number>
20
+ </vyr-col>
21
+ </vyr-label>
22
+ </vyr-row>
23
+ </template>
24
+
25
+ <script lang="ts" setup>
26
+ import { computed } from 'vue'
27
+ import { DraggableService, runtime } from '@vyr/runtime';
28
+ import { VyrInput, VyrRow, VyrCol, VyrLabel, VyrInputNumber } from '@vyr/design';
29
+ import { SpriteDescriptor } from '@vyr/three';
30
+ import { language } from '../locale'
31
+ import { useDescriptor } from '../common';
32
+
33
+ const draggableService = runtime.get<DraggableService>('draggable')
34
+ const draggable = computed(() => draggableService.get(draggableService.key.inspector))
35
+ const descriptor = useDescriptor<SpriteDescriptor>()
36
+ </script>
37
+
38
+ <style lang="less" scoped></style>