@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
@@ -0,0 +1,22 @@
1
+ import { language } from '../locale'
2
+
3
+ const cylinderOptions = [
4
+ { label: language.get('option.Geometry.cylinder.true'), value: true },
5
+ { label: language.get('option.Geometry.cylinder.false'), value: false },
6
+ ]
7
+
8
+ const extrudeUvOptions = [
9
+ { label: language.get('option.Geometry.extrudeUv.true'), value: true },
10
+ { label: language.get('option.Geometry.extrudeUv.false'), value: false },
11
+ ]
12
+
13
+ const tubeOptions = [
14
+ { label: language.get('option.Geometry.tube.true'), value: true },
15
+ { label: language.get('option.Geometry.tube.false'), value: false },
16
+ ]
17
+
18
+ export {
19
+ cylinderOptions,
20
+ extrudeUvOptions,
21
+ tubeOptions,
22
+ }
@@ -0,0 +1,42 @@
1
+ import { MaterialCombine, MaterialNormalMapType, MaterialSide, MaterialDlending,MaterialDepthFunc } from '@vyr/three'
2
+ import { language } from '../locale'
3
+
4
+ const combineOptions = [
5
+ { label: language.get('option.Material.combine.multiply'), value: MaterialCombine.MultiplyOperation },
6
+ { label: language.get('option.Material.combine.blend'), value: MaterialCombine.MixOperation },
7
+ { label: language.get('option.Material.combine.add'), value: MaterialCombine.AddOperation },
8
+ ]
9
+ const normalTypeOptions = [
10
+ { label: language.get('option.Material.normalType.tangentialSpace'), value: MaterialNormalMapType.TangentSpaceNormalMap },
11
+ { label: language.get('option.Material.normalType.objectSpace'), value: MaterialNormalMapType.ObjectSpaceNormalMap },
12
+ ]
13
+
14
+ const sideOptions = [
15
+ { label: language.get('option.Material.side.back'), value: MaterialSide.BackSide },
16
+ { label: language.get('option.Material.side.front'), value: MaterialSide.FrontSide },
17
+ { label: language.get('option.Material.side.double'), value: MaterialSide.DoubleSide },
18
+ ]
19
+ const blendingOptions = [
20
+ { label: language.get('option.Material.blending.disabled'), value: MaterialDlending.NoBlending },
21
+ { label: language.get('option.Material.blending.normal'), value: MaterialDlending.NormalBlending },
22
+ { label: language.get('option.Material.blending.overlay'), value: MaterialDlending.AdditiveBlending },
23
+ { label: language.get('option.Material.blending.subtractive'), value: MaterialDlending.SubtractiveBlending },
24
+ { label: language.get('option.Material.blending.multiplicative'), value: MaterialDlending.MultiplyBlending },
25
+ ]
26
+ const depthFuncOptions = [
27
+ { label: language.get('option.Material.depthFunc.never'), value: MaterialDepthFunc.NeverDepth },
28
+ { label: language.get('option.Material.depthFunc.always'), value: MaterialDepthFunc.AlwaysDepth },
29
+ { label: language.get('option.Material.depthFunc.less'), value: MaterialDepthFunc.LessDepth },
30
+ { label: language.get('option.Material.depthFunc.less/equal'), value: MaterialDepthFunc.LessEqualDepth },
31
+ { label: language.get('option.Material.depthFunc.greater/equal'), value: MaterialDepthFunc.GreaterEqualDepth },
32
+ { label: language.get('option.Material.depthFunc.greater'), value: MaterialDepthFunc.GreaterDepth },
33
+ { label: language.get('option.Material.depthFunc.notEqual'), value: MaterialDepthFunc.NotEqualDepth },
34
+ ]
35
+
36
+ export {
37
+ combineOptions,
38
+ normalTypeOptions,
39
+ sideOptions,
40
+ blendingOptions,
41
+ depthFuncOptions,
42
+ }
@@ -0,0 +1,10 @@
1
+ import { language } from '../locale'
2
+
3
+ const typeOptions = [
4
+ { label: language.get('option.Mesh.type.one'), value: 1 },
5
+ { label: language.get('option.Mesh.type.multiple'), value: 2 },
6
+ ]
7
+
8
+ export {
9
+ typeOptions,
10
+ }
@@ -0,0 +1,18 @@
1
+ import { SceneShadow } from '@vyr/three'
2
+ import { language } from '../locale'
3
+
4
+ const typeOptions = [
5
+ { label: language.get('option.shadow.type.basicShadowMap'), value: SceneShadow.BasicShadowMap },
6
+ { label: language.get('option.shadow.type.PCFShadowMap'), value: SceneShadow.PCFShadowMap },
7
+ { label: language.get('option.shadow.type.PCFSoftShadowMap'), value: SceneShadow.PCFSoftShadowMap },
8
+ { label: language.get('option.shadow.type.VSMShadowMap'), value: SceneShadow.VSMShadowMap },
9
+ ]
10
+ const updateOptions = [
11
+ { label: language.get('option.shadow.update.manual'), value: false },
12
+ { label: language.get('option.shadow.update.auto'), value: true },
13
+ ]
14
+
15
+ export {
16
+ typeOptions,
17
+ updateOptions,
18
+ }
@@ -0,0 +1,55 @@
1
+ import { TextureMapping, TextureWrap, TextureFType, TextureFormat, TextureColorSpace } from '@vyr/three'
2
+ import { language } from '../locale'
3
+
4
+ const mappingOptions = [
5
+ { label: language.get('option.Texture.mapping.UVMapping'), value: TextureMapping.UVMapping },
6
+ { label: language.get('option.Texture.mapping.cubeReflectionMapping'), value: TextureMapping.CubeReflectionMapping },
7
+ { label: language.get('option.Texture.mapping.cubeRefractionMapping'), value: TextureMapping.CubeRefractionMapping },
8
+ { label: language.get('option.Texture.mapping.equirectangularReflectionMapping'), value: TextureMapping.EquirectangularReflectionMapping },
9
+ { label: language.get('option.Texture.mapping.equirectangularRefractionMapping'), value: TextureMapping.EquirectangularRefractionMapping },
10
+ { label: language.get('option.Texture.mapping.cubeUVReflectionMapping'), value: TextureMapping.CubeUVReflectionMapping },
11
+ ]
12
+ const wrapOptions = [
13
+ { label: language.get('option.Texture.wrap.repeatWrapping'), value: TextureWrap.RepeatWrapping },
14
+ { label: language.get('option.Texture.wrap.clampToEdgeWrapping'), value: TextureWrap.ClampToEdgeWrapping },
15
+ { label: language.get('option.Texture.wrap.mirroredRepeatWrapping'), value: TextureWrap.MirroredRepeatWrapping },
16
+ ]
17
+ const ftypeOptions = [
18
+ { label: language.get('option.Texture.ftype.unsignedByteType'), value: TextureFType.UnsignedByteType },
19
+ { label: language.get('option.Texture.ftype.byteType'), value: TextureFType.ByteType },
20
+ { label: language.get('option.Texture.ftype.shortType'), value: TextureFType.ShortType },
21
+ { label: language.get('option.Texture.ftype.unsignedShortType'), value: TextureFType.UnsignedShortType },
22
+ { label: language.get('option.Texture.ftype.intType'), value: TextureFType.IntType },
23
+ { label: language.get('option.Texture.ftype.unsignedIntType'), value: TextureFType.UnsignedIntType },
24
+ { label: language.get('option.Texture.ftype.floatType'), value: TextureFType.FloatType },
25
+ { label: language.get('option.Texture.ftype.halfFloatType'), value: TextureFType.HalfFloatType },
26
+ { label: language.get('option.Texture.ftype.unsignedShort4444Type'), value: TextureFType.UnsignedShort4444Type },
27
+ { label: language.get('option.Texture.ftype.unsignedShort5551Type'), value: TextureFType.UnsignedShort5551Type },
28
+ { label: language.get('option.Texture.ftype.unsignedInt248Type'), value: TextureFType.UnsignedInt248Type },
29
+ { label: language.get('option.Texture.ftype.unsignedInt5999Type'), value: TextureFType.UnsignedInt5999Type },
30
+ ]
31
+ const formatOptions = [
32
+ { label: language.get('option.Texture.format.alphaFormat'), value: TextureFormat.AlphaFormat },
33
+ { label: language.get('option.Texture.format.redFormat'), value: TextureFormat.RedFormat },
34
+ { label: language.get('option.Texture.format.redIntegerFormat'), value: TextureFormat.RedIntegerFormat },
35
+ { label: language.get('option.Texture.format.RGFormat'), value: TextureFormat.RGFormat },
36
+ { label: language.get('option.Texture.format.RGIntegerFormat'), value: TextureFormat.RGIntegerFormat },
37
+ { label: language.get('option.Texture.format.RGBFormat'), value: TextureFormat.RGBFormat },
38
+ { label: language.get('option.Texture.format.RGBAFormat'), value: TextureFormat.RGBAFormat },
39
+ { label: language.get('option.Texture.format.RGBAIntegerFormat'), value: TextureFormat.RGBAIntegerFormat },
40
+ { label: language.get('option.Texture.format.depthFormat'), value: TextureFormat.DepthFormat },
41
+ { label: language.get('option.Texture.format.depthStencilFormat'), value: TextureFormat.DepthStencilFormat },
42
+ ]
43
+ const colorSpaceOptions = [
44
+ { label: language.get('option.Texture.colorSpace.no'), value: TextureColorSpace.NoColorSpace },
45
+ { label: language.get('option.Texture.colorSpace.SRGB'), value: TextureColorSpace.SRGBColorSpace },
46
+ { label: language.get('option.Texture.colorSpace.linearSRGB'), value: TextureColorSpace.LinearSRGBColorSpace },
47
+ ]
48
+
49
+ export {
50
+ mappingOptions,
51
+ wrapOptions,
52
+ ftypeOptions,
53
+ formatOptions,
54
+ colorSpaceOptions,
55
+ }
@@ -0,0 +1,6 @@
1
+ export * as Animation from './Animation'
2
+ export * as Geometry from './Geometry'
3
+ export * as Material from './Material'
4
+ export * as Texture from './Texture'
5
+ export * as Mesh from './Mesh'
6
+ export * as Shadow from './Shadow'
@@ -0,0 +1,73 @@
1
+ import { Action, DataService, runtime } from "@vyr/runtime";
2
+ import { Category, Descriptor } from "@vyr/engine";
3
+ import { defineScheme } from '@vyr/service-rpc';
4
+ import { BoxGeometryDescriptor, BufferGeometryDescriptor, CircleGeometryDescriptor, CylinderGeometryDescriptor, ExtrudeGeometryDescriptor, PlaneGeometryDescriptor, RingGeometryDescriptor, SphereGeometryDescriptor, SurfaceGeometryDescriptor, TubeGeometryDescriptor } from "@vyr/three";
5
+ import { language } from '../../../../locale'
6
+
7
+ class AddGeometryAction extends Action {
8
+ static id = 'footer.AddGeometry'
9
+ static generate = (label: string, Class: typeof Descriptor) => {
10
+ class ClassAction extends Action {
11
+ static id = `footer.${Class.type}`
12
+ label = label
13
+ update() {
14
+ this.show = true
15
+ this.disabled = false
16
+ }
17
+ validator() {
18
+ return false
19
+ }
20
+ execute() {
21
+ const dataService = runtime.get<DataService>('data')
22
+ const modifyValue = dataService.footer.status.mouseRegion === 'directory' ? dataService.footer.status.mouseItem : dataService.footer.directory
23
+ dataService.footer.status.modifyMode = 'add'
24
+ dataService.footer.status.modifyModeAdd = 'file'
25
+ dataService.footer.status.modifyContent = new Class().serialization()
26
+ dataService.footer.status.modifySuffix = Category.geometrySuffix
27
+ dataService.footer.status.modifyValue = modifyValue
28
+ }
29
+ }
30
+ return new ClassAction()
31
+ }
32
+ label = language.get('footer.action.addGeometry.label')
33
+ order = 5
34
+
35
+ constructor() {
36
+ super()
37
+ this.children.push(
38
+ AddGeometryAction.generate(language.get('descriptor.type.BoxGeometry'), BoxGeometryDescriptor),
39
+ AddGeometryAction.generate(language.get('descriptor.type.CircleGeometry'), CircleGeometryDescriptor),
40
+ AddGeometryAction.generate(language.get('descriptor.type.CylinderGeometry'), CylinderGeometryDescriptor),
41
+ AddGeometryAction.generate(language.get('descriptor.type.PlaneGeometry'), PlaneGeometryDescriptor),
42
+ AddGeometryAction.generate(language.get('descriptor.type.RingGeometry'), RingGeometryDescriptor),
43
+ AddGeometryAction.generate(language.get('descriptor.type.SphereGeometry'), SphereGeometryDescriptor),
44
+ AddGeometryAction.generate(language.get('descriptor.type.ExtrudeGeometry'), ExtrudeGeometryDescriptor),
45
+ AddGeometryAction.generate(language.get('descriptor.type.SurfaceGeometry'), SurfaceGeometryDescriptor),
46
+ AddGeometryAction.generate(language.get('descriptor.type.TubeGeometry'), TubeGeometryDescriptor),
47
+ AddGeometryAction.generate(language.get('descriptor.type.BufferGeometry'), BufferGeometryDescriptor),
48
+ )
49
+ }
50
+ update() {
51
+ this.show = false
52
+ this.disabled = true
53
+
54
+ const dataService = runtime.get<DataService>('data')
55
+ if (dataService.footer.status.mouseRegion === 'directory') {
56
+ if (dataService.footer.status.mouseItem === null) return
57
+ if (dataService.footer.status.mouseItem.scheme !== defineScheme.static) return
58
+ } else if (dataService.footer.status.mouseRegion === 'manifest') {
59
+ if (dataService.footer.status.mouseItem !== null) return
60
+ if (dataService.footer.directory.scheme !== defineScheme.static) return
61
+ }
62
+
63
+ this.show = true
64
+
65
+ this.disabled = false
66
+ }
67
+ validator() {
68
+ return false
69
+ }
70
+ execute() { }
71
+ }
72
+
73
+ export { AddGeometryAction }
@@ -0,0 +1,9 @@
1
+ import { AddMaterialAction } from "./material";
2
+ import { AddGeometryAction } from "./geometry";
3
+ import { AddTextureAction } from "./texture";
4
+
5
+ export default [
6
+ AddMaterialAction,
7
+ AddGeometryAction,
8
+ AddTextureAction,
9
+ ]
@@ -0,0 +1,70 @@
1
+ import { Action, DataService, runtime } from "@vyr/runtime";
2
+ import { Category, Descriptor } from "@vyr/engine";
3
+ import { defineScheme } from '@vyr/service-rpc'
4
+ import { MeshBasicMaterialDescriptor, MeshPhongMaterialDescriptor, MeshStandardMaterialDescriptor, PointsMaterialDescriptor, ShaderMaterialDescriptor, ShadowMaterialDescriptor, SpriteMaterialDescriptor } from "@vyr/three";
5
+ import { language } from '../../../../locale'
6
+
7
+ class AddMaterialAction extends Action {
8
+ static id = 'footer.AddMaterial'
9
+ static generate = (label: string, Class: typeof Descriptor) => {
10
+ class ClassAction extends Action {
11
+ static id = `footer.${Class.type}`
12
+ label = label
13
+ update() {
14
+ this.show = true
15
+ this.disabled = false
16
+ }
17
+ validator() {
18
+ return false
19
+ }
20
+ execute() {
21
+ const dataService = runtime.get<DataService>('data')
22
+ const modifyValue = dataService.footer.status.mouseRegion === 'directory' ? dataService.footer.status.mouseItem : dataService.footer.directory
23
+ dataService.footer.status.modifyMode = 'add'
24
+ dataService.footer.status.modifyModeAdd = 'file'
25
+ dataService.footer.status.modifyContent = new Class().serialization()
26
+ dataService.footer.status.modifySuffix = Category.materialSuffix
27
+ dataService.footer.status.modifyValue = modifyValue
28
+ }
29
+ }
30
+ return new ClassAction()
31
+ }
32
+ label = language.get('footer.action.addMaterial.label')
33
+ order = 5
34
+
35
+ constructor() {
36
+ super()
37
+ this.children.push(
38
+ AddMaterialAction.generate(language.get('descriptor.type.MeshBasicMaterial'), MeshBasicMaterialDescriptor),
39
+ AddMaterialAction.generate(language.get('descriptor.type.MeshPhongMaterial'), MeshPhongMaterialDescriptor),
40
+ AddMaterialAction.generate(language.get('descriptor.type.MeshStandardMaterial'), MeshStandardMaterialDescriptor),
41
+ AddMaterialAction.generate(language.get('descriptor.type.PointsMaterial'), PointsMaterialDescriptor),
42
+ AddMaterialAction.generate(language.get('descriptor.type.SpriteMaterial'), SpriteMaterialDescriptor),
43
+ AddMaterialAction.generate(language.get('descriptor.type.ShadowMaterial'), ShadowMaterialDescriptor),
44
+ AddMaterialAction.generate(language.get('descriptor.type.ShaderMaterial'), ShaderMaterialDescriptor),
45
+ )
46
+ }
47
+
48
+ update() {
49
+ this.show = false
50
+ this.disabled = true
51
+
52
+ const dataService = runtime.get<DataService>('data')
53
+ if (dataService.footer.status.mouseRegion === 'directory') {
54
+ if (dataService.footer.status.mouseItem === null) return
55
+ if (dataService.footer.status.mouseItem.scheme !== defineScheme.static) return
56
+ } else if (dataService.footer.status.mouseRegion === 'manifest') {
57
+ if (dataService.footer.status.mouseItem !== null) return
58
+ if (dataService.footer.directory.scheme !== defineScheme.static) return
59
+ }
60
+
61
+ this.show = true
62
+ this.disabled = false
63
+ }
64
+ validator() {
65
+ return false
66
+ }
67
+ execute() { }
68
+ }
69
+
70
+ export { AddMaterialAction }
@@ -0,0 +1,63 @@
1
+ import { runtime, Action, DataService } from '@vyr/runtime'
2
+ import { Category, Descriptor } from '@vyr/engine'
3
+ import { defineScheme } from '@vyr/service-rpc'
4
+ import { TextureDescriptor } from '@vyr/three'
5
+ import { language } from '../../../../locale'
6
+
7
+ class AddTextureAction extends Action {
8
+ static id = 'footer.AddTexture'
9
+ static generate = (label: string, Class: typeof Descriptor) => {
10
+ class ClassAction extends Action {
11
+ static id = `footer.${Class.type}`
12
+ label = label
13
+ update() {
14
+ this.show = true
15
+ this.disabled = false
16
+ }
17
+ validator() {
18
+ return false
19
+ }
20
+ execute() {
21
+ const dataService = runtime.get<DataService>('data')
22
+ const modifyValue = dataService.footer.status.mouseRegion === 'directory' ? dataService.footer.status.mouseItem : dataService.footer.directory
23
+ dataService.footer.status.modifyMode = 'add'
24
+ dataService.footer.status.modifyModeAdd = 'file'
25
+ dataService.footer.status.modifyContent = new Class().serialization()
26
+ dataService.footer.status.modifySuffix = Category.textureSuffix
27
+ dataService.footer.status.modifyValue = modifyValue
28
+ }
29
+ }
30
+ return new ClassAction()
31
+ }
32
+ label = language.get('footer.action.addTexture.label')
33
+ order = 5
34
+
35
+ constructor() {
36
+ super()
37
+ this.children.push(
38
+ AddTextureAction.generate(language.get('descriptor.type.Texture'), TextureDescriptor)
39
+ )
40
+ }
41
+ update() {
42
+ this.show = false
43
+ this.disabled = true
44
+
45
+ const dataService = runtime.get<DataService>('data')
46
+ if (dataService.footer.status.mouseRegion === 'directory') {
47
+ if (dataService.footer.status.mouseItem === null) return
48
+ if (dataService.footer.status.mouseItem.scheme !== defineScheme.static) return
49
+ } else if (dataService.footer.status.mouseRegion === 'manifest') {
50
+ if (dataService.footer.status.mouseItem !== null) return
51
+ if (dataService.footer.directory.scheme !== defineScheme.static) return
52
+ }
53
+
54
+ this.show = true
55
+ this.disabled = false
56
+ }
57
+ validator() {
58
+ return false
59
+ }
60
+ execute() { }
61
+ }
62
+
63
+ export { AddTextureAction }
@@ -0,0 +1 @@
1
+ export * from './scripts'
@@ -0,0 +1,12 @@
1
+ import { language, executePreset } from "@vyr/three";
2
+
3
+ const scripts = [
4
+ {
5
+ label: language.get(executePreset.GeoMap.drilldown.scriptable as any),
6
+ value: executePreset.GeoMap.drilldown.scriptable,
7
+ },
8
+ ]
9
+
10
+ export {
11
+ scripts
12
+ }
@@ -0,0 +1,79 @@
1
+ import { SetupService } from '@vyr/service'
2
+ import { ShortcutkeyService, InspectorService, runtime, DataService } from '@vyr/runtime'
3
+ import { NodeDescriptor } from '@vyr/engine'
4
+ import { SceneServiceDescriptor, GeoMapDescriptor, HTMLConvertDescriptor, InstancedMeshDescriptor, MeshDescriptor, ModelDescriptor, OrthographicCameraDescriptor, ParticleDescriptor, PerspectiveCameraDescriptor, PointsDescriptor, SpriteDescriptor, TextDescriptor } from '@vyr/three'
5
+ import { language } from '../locale'
6
+ import sidebarSceneAction from './sidebar/scene/action'
7
+ import sidebarAssetAction from './sidebar/asset/action'
8
+ import inspectorViewer from './inspector'
9
+ import footerAction from './footer/action'
10
+ import * as global from './global'
11
+
12
+ const setup: SetupService['setup'] = async () => {
13
+ const dataService = runtime.get<DataService>('data')
14
+ const shortcutkeyService = runtime.get<ShortcutkeyService>('shortcutkey')
15
+
16
+ const footer = shortcutkeyService.get('footer')
17
+ for (const Action of footerAction) footer.add(new Action())
18
+
19
+ const sidebar = shortcutkeyService.get('sidebar')
20
+ const collection = [...sidebarSceneAction, ...sidebarAssetAction]
21
+ for (const Action of collection) sidebar.add(new Action())
22
+
23
+ const addServiceAction = sidebar.get('sidebar.scene.AddService')
24
+ if (addServiceAction) {
25
+ //@ts-ignore
26
+ const generate = addServiceAction.generate
27
+ addServiceAction.children.push(
28
+ generate(language.get('descriptor.type.SceneService'), SceneServiceDescriptor),
29
+ // generate(language.get('descriptor.type.ComposerService'), ComposerServiceDescriptor),
30
+ )
31
+ }
32
+
33
+ const sceneAddNodeAction = sidebar.get('sidebar.scene.AddNode')
34
+ if (sceneAddNodeAction) {
35
+ //@ts-ignore
36
+ const generate = sceneAddNodeAction.generate
37
+ sceneAddNodeAction.children.push(
38
+ generate(language.get('descriptor.type.Node'), NodeDescriptor),
39
+ generate(language.get('descriptor.type.Text'), TextDescriptor),
40
+ generate(language.get('descriptor.type.Points'), PointsDescriptor),
41
+ generate(language.get('descriptor.type.Mesh'), MeshDescriptor),
42
+ generate(language.get('descriptor.type.InstancedMesh'), InstancedMeshDescriptor),
43
+ generate(language.get('descriptor.type.Sprite'), SpriteDescriptor),
44
+ generate(language.get('descriptor.type.Particle'), ParticleDescriptor),
45
+ generate(language.get('descriptor.type.GeoMap'), GeoMapDescriptor),
46
+ generate(language.get('descriptor.type.Model'), ModelDescriptor),
47
+ generate(language.get('descriptor.type.HTMLConvert'), HTMLConvertDescriptor),
48
+ // generate(language.get('descriptor.type.Pass'), PassDescriptor),
49
+ generate(language.get('descriptor.type.PerspectiveCamera'), PerspectiveCameraDescriptor),
50
+ generate(language.get('descriptor.type.OrthographicCamera'), OrthographicCameraDescriptor),
51
+ )
52
+ }
53
+
54
+ const assetAddNodeAction = sidebar.get('sidebar.asset.AddNode')
55
+ if (assetAddNodeAction) {
56
+ //@ts-ignore
57
+ const generate = assetAddNodeAction.generate
58
+ assetAddNodeAction.children.push(
59
+ generate(language.get('descriptor.type.Node'), NodeDescriptor),
60
+ generate(language.get('descriptor.type.Text'), TextDescriptor),
61
+ generate(language.get('descriptor.type.Points'), PointsDescriptor),
62
+ generate(language.get('descriptor.type.Mesh'), MeshDescriptor),
63
+ generate(language.get('descriptor.type.InstancedMesh'), InstancedMeshDescriptor),
64
+ generate(language.get('descriptor.type.Sprite'), SpriteDescriptor),
65
+ generate(language.get('descriptor.type.Particle'), ParticleDescriptor),
66
+ generate(language.get('descriptor.type.GeoMap'), GeoMapDescriptor),
67
+ generate(language.get('descriptor.type.Model'), ModelDescriptor),
68
+ generate(language.get('descriptor.type.HTMLConvert'), HTMLConvertDescriptor),
69
+ // generate(language.get('descriptor.type.Pass'), PassDescriptor),
70
+ )
71
+ }
72
+
73
+ const inspectorService = runtime.get<InspectorService>('inspector')
74
+ for (const viewer of inspectorViewer) inspectorService.set(viewer.type, viewer.import)
75
+
76
+ for (const script of global.scripts) dataService.addScripte(script)
77
+ }
78
+
79
+ export { setup }
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <vyr-card v-if="descriptor" :title="language.get('descriptor.type.GeoMap')" :scroll="true">
3
+ <base-fragment :raw="raw"></base-fragment>
4
+ <node-fragment></node-fragment>
5
+ <geo-map-fragment></geo-map-fragment>
6
+ </vyr-card>
7
+ </template>
8
+
9
+ <script lang="ts" setup>
10
+ import { Ref, ref, watch } from 'vue'
11
+ import { Descriptor } from '@vyr/engine';
12
+ import { GeoMapDescriptor } from '@vyr/three';
13
+ import { VyrCard, } from '@vyr/design';
14
+ import { BaseFragment, providerDescriptor as builtinProviderDescriptor } from '@vyr/builtin'
15
+ import { language } from '../../locale'
16
+ import { providerDescriptor } from '../../common';
17
+ import NodeFragment from '../../fragment/NodeFragment.vue';
18
+ import GeoMapFragment from '../../fragment/GeoMapFragment.vue';
19
+
20
+ const props = defineProps<{ raw: string, uuid: string }>()
21
+ const descriptor = ref(null) as Ref<GeoMapDescriptor | null>
22
+ const watchEditItem = (cur: string) => {
23
+ if (!cur) return descriptor.value = null
24
+ descriptor.value = Descriptor.get<GeoMapDescriptor>(cur)
25
+ }
26
+ watch(() => props.uuid, watchEditItem, { immediate: true })
27
+
28
+ providerDescriptor(descriptor)
29
+ builtinProviderDescriptor(descriptor)
30
+ </script>
31
+
32
+ <style lang="less" scoped></style>
@@ -0,0 +1,31 @@
1
+ <template>
2
+ <vyr-card v-if="descriptor" :title="language.get('descriptor.type.HTMLConvert')" :scroll="true">
3
+ <base-fragment :raw="raw"></base-fragment>
4
+ <node-fragment></node-fragment>
5
+ </vyr-card>
6
+ </template>
7
+
8
+
9
+ <script lang="ts" setup>
10
+ import { Ref, ref, watch } from 'vue'
11
+ import { Descriptor } from '@vyr/engine';
12
+ import { HTMLConvertDescriptor } from '@vyr/three';
13
+ import { VyrCard, } from '@vyr/design';
14
+ import { BaseFragment, providerDescriptor as builtinProviderDescriptor } from '@vyr/builtin'
15
+ import { language } from '../../locale'
16
+ import { providerDescriptor } from '../../common';
17
+ import NodeFragment from '../../fragment/NodeFragment.vue';
18
+
19
+ const props = defineProps<{ raw: string, uuid: string }>()
20
+ const descriptor = ref(null) as Ref<HTMLConvertDescriptor | null>
21
+ const watchEditItem = (cur: string) => {
22
+ if (!cur) return descriptor.value = null
23
+ descriptor.value = Descriptor.get<HTMLConvertDescriptor>(cur)
24
+ }
25
+ watch(() => props.uuid, watchEditItem, { immediate: true })
26
+
27
+ providerDescriptor(descriptor)
28
+ builtinProviderDescriptor(descriptor)
29
+ </script>
30
+
31
+ <style lang="less" scoped></style>
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <vyr-card v-if="descriptor" :title="language.get('descriptor.type.InstancedMesh')" :scroll="true">
3
+ <base-fragment :raw="raw"></base-fragment>
4
+ <node-fragment></node-fragment>
5
+ <instanced-mesh-fragment></instanced-mesh-fragment>
6
+ </vyr-card>
7
+ </template>
8
+
9
+
10
+ <script lang="ts" setup>
11
+ import { Ref, ref, watch } from 'vue'
12
+ import { Descriptor } from '@vyr/engine';
13
+ import { InstancedMeshDescriptor } from '@vyr/three';
14
+ import { VyrCard, } from '@vyr/design';
15
+ import { BaseFragment, providerDescriptor as builtinProviderDescriptor } from '@vyr/builtin'
16
+ import { language } from '../../locale'
17
+ import { providerDescriptor } from '../../common';
18
+ import NodeFragment from '../../fragment/NodeFragment.vue';
19
+ import InstancedMeshFragment from '../../fragment/InstancedMeshFragment.vue';
20
+
21
+ const props = defineProps<{ raw: string, uuid: string }>()
22
+ const descriptor = ref(null) as Ref<InstancedMeshDescriptor | null>
23
+ const watchEditItem = (cur: string) => {
24
+ if (!cur) return descriptor.value = null
25
+ descriptor.value = Descriptor.get<InstancedMeshDescriptor>(cur)
26
+ }
27
+ watch(() => props.uuid, watchEditItem, { immediate: true })
28
+
29
+ providerDescriptor(descriptor)
30
+ builtinProviderDescriptor(descriptor)
31
+ </script>
32
+
33
+ <style lang="less" scoped></style>
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <vyr-card v-if="descriptor" :title="language.get('descriptor.type.Mesh')" :scroll="true">
3
+ <base-fragment :raw="raw"></base-fragment>
4
+ <node-fragment></node-fragment>
5
+ <mesh-fragment></mesh-fragment>
6
+ </vyr-card>
7
+ </template>
8
+
9
+
10
+ <script lang="ts" setup>
11
+ import { Ref, ref, watch } from 'vue'
12
+ import { Descriptor } from '@vyr/engine';
13
+ import { MeshDescriptor } from '@vyr/three';
14
+ import { VyrCard, } from '@vyr/design';
15
+ import { BaseFragment, providerDescriptor as builtinProviderDescriptor } from '@vyr/builtin'
16
+ import { language } from '../../locale'
17
+ import { providerDescriptor } from '../../common';
18
+ import NodeFragment from '../../fragment/NodeFragment.vue';
19
+ import MeshFragment from '../../fragment/MeshFragment.vue';
20
+
21
+ const props = defineProps<{ raw: string, uuid: string }>()
22
+ const descriptor = ref(null) as Ref<MeshDescriptor | null>
23
+ const watchEditItem = (cur: string) => {
24
+ if (!cur) return descriptor.value = null
25
+ descriptor.value = Descriptor.get<MeshDescriptor>(cur)
26
+ }
27
+ watch(() => props.uuid, watchEditItem, { immediate: true })
28
+
29
+ providerDescriptor(descriptor)
30
+ builtinProviderDescriptor(descriptor)
31
+ </script>
32
+
33
+ <style lang="less" scoped></style>
@@ -0,0 +1,34 @@
1
+ <template>
2
+ <vyr-card v-if="descriptor" :title="language.get('descriptor.type.Model')" :scroll="true">
3
+ <base-fragment :raw="raw"></base-fragment>
4
+ <node-fragment></node-fragment>
5
+ <model-fragment></model-fragment>
6
+ </vyr-card>
7
+ </template>
8
+
9
+
10
+ <script lang="ts" setup>
11
+ import { Ref, ref, watch } from 'vue'
12
+ import { Descriptor } from '@vyr/engine';
13
+ import { ModelDescriptor } from '@vyr/three';
14
+ import { VyrCard, } from '@vyr/design';
15
+ import { BaseFragment, providerDescriptor as builtinProviderDescriptor } from '@vyr/builtin'
16
+ import { language } from '../../locale'
17
+ import { providerDescriptor } from '../../common';
18
+ import NodeFragment from '../../fragment/NodeFragment.vue';
19
+ import ModelFragment from '../../fragment/ModelFragment.vue';
20
+
21
+ const props = defineProps<{ raw: string, uuid: string }>()
22
+
23
+ const descriptor = ref(null) as Ref<ModelDescriptor | null>
24
+ const watchEditItem = (cur: string) => {
25
+ if (!cur) return descriptor.value = null
26
+ descriptor.value = Descriptor.get<ModelDescriptor>(cur)
27
+ }
28
+ watch(() => props.uuid, watchEditItem, { immediate: true })
29
+
30
+ providerDescriptor(descriptor)
31
+ builtinProviderDescriptor(descriptor)
32
+ </script>
33
+
34
+ <style lang="less" scoped></style>