@dcl/protocol 1.0.0-21456739795.commit-eae3f8b → 1.0.0-21486653842.commit-5bf1921

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 (89) hide show
  1. package/out-js/decentraland/common/texture.gen.d.ts +18 -0
  2. package/out-js/decentraland/common/texture.gen.js +104 -4
  3. package/out-js/decentraland/common/texture.gen.js.map +1 -1
  4. package/out-js/decentraland/kernel/apis/restricted_actions.gen.d.ts +70 -0
  5. package/out-js/decentraland/kernel/apis/restricted_actions.gen.js +228 -1
  6. package/out-js/decentraland/kernel/apis/restricted_actions.gen.js.map +1 -1
  7. package/out-js/decentraland/kernel/comms/rfc4/comms.gen.d.ts +4 -0
  8. package/out-js/decentraland/kernel/comms/rfc4/comms.gen.js +41 -3
  9. package/out-js/decentraland/kernel/comms/rfc4/comms.gen.js.map +1 -1
  10. package/out-js/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  11. package/out-js/decentraland/sdk/components/avatar_equipped_data.gen.js +19 -2
  12. package/out-js/decentraland/sdk/components/avatar_equipped_data.gen.js.map +1 -1
  13. package/out-js/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +41 -0
  14. package/out-js/decentraland/sdk/components/avatar_modifier_area.gen.js +241 -3
  15. package/out-js/decentraland/sdk/components/avatar_modifier_area.gen.js.map +1 -1
  16. package/out-js/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  17. package/out-js/decentraland/sdk/components/avatar_shape.gen.js +19 -1
  18. package/out-js/decentraland/sdk/components/avatar_shape.gen.js.map +1 -1
  19. package/out-js/decentraland/sdk/components/camera_mode_area.gen.d.ts +35 -1
  20. package/out-js/decentraland/sdk/components/camera_mode_area.gen.js +172 -3
  21. package/out-js/decentraland/sdk/components/camera_mode_area.gen.js.map +1 -1
  22. package/out-js/decentraland/sdk/components/common/input_action.gen.d.ts +3 -0
  23. package/out-js/decentraland/sdk/components/common/input_action.gen.js +18 -0
  24. package/out-js/decentraland/sdk/components/common/input_action.gen.js.map +1 -1
  25. package/out-js/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  26. package/out-js/decentraland/sdk/components/gltf_container_loading_state.gen.js +90 -3
  27. package/out-js/decentraland/sdk/components/gltf_container_loading_state.gen.js.map +1 -1
  28. package/out-js/decentraland/sdk/components/gltf_node.gen.d.ts +66 -0
  29. package/out-js/decentraland/sdk/components/gltf_node.gen.js +69 -0
  30. package/out-js/decentraland/sdk/components/gltf_node.gen.js.map +1 -0
  31. package/out-js/decentraland/sdk/components/gltf_node_state.gen.d.ts +43 -0
  32. package/out-js/decentraland/sdk/components/gltf_node_state.gen.js +122 -0
  33. package/out-js/decentraland/sdk/components/gltf_node_state.gen.js.map +1 -0
  34. package/out-js/decentraland/sdk/components/material.gen.d.ts +20 -0
  35. package/out-js/decentraland/sdk/components/material.gen.js +86 -2
  36. package/out-js/decentraland/sdk/components/material.gen.js.map +1 -1
  37. package/out-js/decentraland/sdk/components/mesh_collider.gen.d.ts +18 -0
  38. package/out-js/decentraland/sdk/components/mesh_collider.gen.js +90 -4
  39. package/out-js/decentraland/sdk/components/mesh_collider.gen.js.map +1 -1
  40. package/out-js/decentraland/sdk/components/mesh_renderer.gen.d.ts +19 -3
  41. package/out-js/decentraland/sdk/components/mesh_renderer.gen.js +90 -4
  42. package/out-js/decentraland/sdk/components/mesh_renderer.gen.js.map +1 -1
  43. package/out-js/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
  44. package/out-js/decentraland/sdk/components/ui_text.gen.js +30 -1
  45. package/out-js/decentraland/sdk/components/ui_text.gen.js.map +1 -1
  46. package/out-js/decentraland/sdk/components/ui_transform.gen.d.ts +33 -0
  47. package/out-js/decentraland/sdk/components/ui_transform.gen.js +176 -3
  48. package/out-js/decentraland/sdk/components/ui_transform.gen.js.map +1 -1
  49. package/out-ts/decentraland/common/texture.gen.ts +119 -4
  50. package/out-ts/decentraland/kernel/apis/restricted_actions.gen.ts +242 -0
  51. package/out-ts/decentraland/kernel/comms/rfc4/comms.gen.ts +46 -1
  52. package/out-ts/decentraland/sdk/components/avatar_equipped_data.gen.ts +20 -1
  53. package/out-ts/decentraland/sdk/components/avatar_modifier_area.gen.ts +292 -1
  54. package/out-ts/decentraland/sdk/components/avatar_shape.gen.ts +23 -1
  55. package/out-ts/decentraland/sdk/components/camera_mode_area.gen.ts +218 -2
  56. package/out-ts/decentraland/sdk/components/common/input_action.gen.ts +18 -0
  57. package/out-ts/decentraland/sdk/components/gltf_container_loading_state.gen.ts +108 -2
  58. package/out-ts/decentraland/sdk/components/gltf_node.gen.ts +116 -0
  59. package/out-ts/decentraland/sdk/components/gltf_node_state.gen.ts +139 -0
  60. package/out-ts/decentraland/sdk/components/material.gen.ts +102 -1
  61. package/out-ts/decentraland/sdk/components/mesh_collider.gen.ts +99 -0
  62. package/out-ts/decentraland/sdk/components/mesh_renderer.gen.ts +100 -3
  63. package/out-ts/decentraland/sdk/components/ui_text.gen.ts +40 -1
  64. package/out-ts/decentraland/sdk/components/ui_transform.gen.ts +193 -0
  65. package/package.json +6 -3
  66. package/proto/decentraland/common/texture.proto +8 -1
  67. package/proto/decentraland/kernel/apis/restricted_actions.proto +22 -0
  68. package/proto/decentraland/kernel/comms/rfc4/comms.proto +4 -2
  69. package/proto/decentraland/sdk/components/avatar_equipped_data.proto +2 -1
  70. package/proto/decentraland/sdk/components/avatar_modifier_area.proto +21 -0
  71. package/proto/decentraland/sdk/components/avatar_shape.proto +1 -0
  72. package/proto/decentraland/sdk/components/camera_layer.proto +30 -0
  73. package/proto/decentraland/sdk/components/camera_layers.proto +11 -0
  74. package/proto/decentraland/sdk/components/camera_mode_area.proto +22 -3
  75. package/proto/decentraland/sdk/components/common/input_action.proto +3 -0
  76. package/proto/decentraland/sdk/components/global_light.proto +22 -0
  77. package/proto/decentraland/sdk/components/gltf_container_loading_state.proto +13 -0
  78. package/proto/decentraland/sdk/components/gltf_node.proto +42 -0
  79. package/proto/decentraland/sdk/components/gltf_node_state.proto +20 -0
  80. package/proto/decentraland/sdk/components/material.proto +13 -1
  81. package/proto/decentraland/sdk/components/mesh_collider.proto +7 -0
  82. package/proto/decentraland/sdk/components/mesh_renderer.proto +8 -3
  83. package/proto/decentraland/sdk/components/primary_pointer_info.proto +5 -0
  84. package/proto/decentraland/sdk/components/texture_camera.proto +46 -0
  85. package/proto/decentraland/sdk/components/ui_canvas.proto +16 -0
  86. package/proto/decentraland/sdk/components/ui_scroll_result.proto +12 -0
  87. package/proto/decentraland/sdk/components/ui_text.proto +3 -0
  88. package/proto/decentraland/sdk/components/ui_transform.proto +20 -0
  89. package/public/sdk-components.proto +2 -0
@@ -113,6 +113,9 @@ export enum PointerEventType {
113
113
  PET_DOWN = 1,
114
114
  PET_HOVER_ENTER = 2,
115
115
  PET_HOVER_LEAVE = 3,
116
+ PET_DRAG_LOCKED = 4,
117
+ PET_DRAG = 5,
118
+ PET_DRAG_END = 6,
116
119
  UNRECOGNIZED = -1,
117
120
  }
118
121
 
@@ -130,6 +133,15 @@ export function pointerEventTypeFromJSON(object: any): PointerEventType {
130
133
  case 3:
131
134
  case "PET_HOVER_LEAVE":
132
135
  return PointerEventType.PET_HOVER_LEAVE;
136
+ case 4:
137
+ case "PET_DRAG_LOCKED":
138
+ return PointerEventType.PET_DRAG_LOCKED;
139
+ case 5:
140
+ case "PET_DRAG":
141
+ return PointerEventType.PET_DRAG;
142
+ case 6:
143
+ case "PET_DRAG_END":
144
+ return PointerEventType.PET_DRAG_END;
133
145
  case -1:
134
146
  case "UNRECOGNIZED":
135
147
  default:
@@ -147,6 +159,12 @@ export function pointerEventTypeToJSON(object: PointerEventType): string {
147
159
  return "PET_HOVER_ENTER";
148
160
  case PointerEventType.PET_HOVER_LEAVE:
149
161
  return "PET_HOVER_LEAVE";
162
+ case PointerEventType.PET_DRAG_LOCKED:
163
+ return "PET_DRAG_LOCKED";
164
+ case PointerEventType.PET_DRAG:
165
+ return "PET_DRAG";
166
+ case PointerEventType.PET_DRAG_END:
167
+ return "PET_DRAG_END";
150
168
  case PointerEventType.UNRECOGNIZED:
151
169
  default:
152
170
  return "UNRECOGNIZED";
@@ -10,10 +10,29 @@ export const protobufPackage = "decentraland.sdk.components";
10
10
  */
11
11
  export interface PBGltfContainerLoadingState {
12
12
  currentState: LoadingState;
13
+ /** all node paths in the gltf, which can be used with a GltfNode to inspect and modify the gltf contents */
14
+ nodePaths: string[];
15
+ /** all meshes in the gltf. unnamed meshes will be auto-assigned a name of the form `MeshX` or `MeshX/PrimitiveY` */
16
+ meshNames: string[];
17
+ /**
18
+ * where X is the mesh index and Y is the primitive index (and there is more than 1 primitive). note this may
19
+ * conflict with manually named meshes - to avoid any issues make sure all your meshes are explicitly named.
20
+ */
21
+ materialNames: string[];
22
+ /**
23
+ * X is the material index. note this may conflict with manually named materials - to avoid any issues make
24
+ * sure all your materials are explicitly named.
25
+ */
26
+ skinNames: string[];
27
+ /**
28
+ * X is the skin index. note this may conflict with manually named skins - to avoid any issues make sure all
29
+ * your skins are explicitly named.
30
+ */
31
+ animationNames: string[];
13
32
  }
14
33
 
15
34
  function createBasePBGltfContainerLoadingState(): PBGltfContainerLoadingState {
16
- return { currentState: 0 };
35
+ return { currentState: 0, nodePaths: [], meshNames: [], materialNames: [], skinNames: [], animationNames: [] };
17
36
  }
18
37
 
19
38
  export namespace PBGltfContainerLoadingState {
@@ -21,6 +40,21 @@ export namespace PBGltfContainerLoadingState {
21
40
  if (message.currentState !== 0) {
22
41
  writer.uint32(8).int32(message.currentState);
23
42
  }
43
+ for (const v of message.nodePaths) {
44
+ writer.uint32(18).string(v!);
45
+ }
46
+ for (const v of message.meshNames) {
47
+ writer.uint32(26).string(v!);
48
+ }
49
+ for (const v of message.materialNames) {
50
+ writer.uint32(34).string(v!);
51
+ }
52
+ for (const v of message.skinNames) {
53
+ writer.uint32(42).string(v!);
54
+ }
55
+ for (const v of message.animationNames) {
56
+ writer.uint32(50).string(v!);
57
+ }
24
58
  return writer;
25
59
  }
26
60
 
@@ -38,6 +72,41 @@ export namespace PBGltfContainerLoadingState {
38
72
 
39
73
  message.currentState = reader.int32() as any;
40
74
  continue;
75
+ case 2:
76
+ if (tag !== 18) {
77
+ break;
78
+ }
79
+
80
+ message.nodePaths.push(reader.string());
81
+ continue;
82
+ case 3:
83
+ if (tag !== 26) {
84
+ break;
85
+ }
86
+
87
+ message.meshNames.push(reader.string());
88
+ continue;
89
+ case 4:
90
+ if (tag !== 34) {
91
+ break;
92
+ }
93
+
94
+ message.materialNames.push(reader.string());
95
+ continue;
96
+ case 5:
97
+ if (tag !== 42) {
98
+ break;
99
+ }
100
+
101
+ message.skinNames.push(reader.string());
102
+ continue;
103
+ case 6:
104
+ if (tag !== 50) {
105
+ break;
106
+ }
107
+
108
+ message.animationNames.push(reader.string());
109
+ continue;
41
110
  }
42
111
  if ((tag & 7) === 4 || tag === 0) {
43
112
  break;
@@ -48,12 +117,44 @@ export namespace PBGltfContainerLoadingState {
48
117
  }
49
118
 
50
119
  export function fromJSON(object: any): PBGltfContainerLoadingState {
51
- return { currentState: isSet(object.currentState) ? loadingStateFromJSON(object.currentState) : 0 };
120
+ return {
121
+ currentState: isSet(object.currentState) ? loadingStateFromJSON(object.currentState) : 0,
122
+ nodePaths: Array.isArray(object?.nodePaths) ? object.nodePaths.map((e: any) => String(e)) : [],
123
+ meshNames: Array.isArray(object?.meshNames) ? object.meshNames.map((e: any) => String(e)) : [],
124
+ materialNames: Array.isArray(object?.materialNames) ? object.materialNames.map((e: any) => String(e)) : [],
125
+ skinNames: Array.isArray(object?.skinNames) ? object.skinNames.map((e: any) => String(e)) : [],
126
+ animationNames: Array.isArray(object?.animationNames) ? object.animationNames.map((e: any) => String(e)) : [],
127
+ };
52
128
  }
53
129
 
54
130
  export function toJSON(message: PBGltfContainerLoadingState): unknown {
55
131
  const obj: any = {};
56
132
  message.currentState !== undefined && (obj.currentState = loadingStateToJSON(message.currentState));
133
+ if (message.nodePaths) {
134
+ obj.nodePaths = message.nodePaths.map((e) => e);
135
+ } else {
136
+ obj.nodePaths = [];
137
+ }
138
+ if (message.meshNames) {
139
+ obj.meshNames = message.meshNames.map((e) => e);
140
+ } else {
141
+ obj.meshNames = [];
142
+ }
143
+ if (message.materialNames) {
144
+ obj.materialNames = message.materialNames.map((e) => e);
145
+ } else {
146
+ obj.materialNames = [];
147
+ }
148
+ if (message.skinNames) {
149
+ obj.skinNames = message.skinNames.map((e) => e);
150
+ } else {
151
+ obj.skinNames = [];
152
+ }
153
+ if (message.animationNames) {
154
+ obj.animationNames = message.animationNames.map((e) => e);
155
+ } else {
156
+ obj.animationNames = [];
157
+ }
57
158
  return obj;
58
159
  }
59
160
 
@@ -68,6 +169,11 @@ export namespace PBGltfContainerLoadingState {
68
169
  ): PBGltfContainerLoadingState {
69
170
  const message = createBasePBGltfContainerLoadingState();
70
171
  message.currentState = object.currentState ?? 0;
172
+ message.nodePaths = object.nodePaths?.map((e) => e) || [];
173
+ message.meshNames = object.meshNames?.map((e) => e) || [];
174
+ message.materialNames = object.materialNames?.map((e) => e) || [];
175
+ message.skinNames = object.skinNames?.map((e) => e) || [];
176
+ message.animationNames = object.animationNames?.map((e) => e) || [];
71
177
  return message;
72
178
  }
73
179
  }
@@ -0,0 +1,116 @@
1
+ /* eslint-disable */
2
+ import _m0 from "protobufjs/minimal";
3
+
4
+ export const protobufPackage = "decentraland.sdk.components";
5
+
6
+ /**
7
+ * a GltfNode links a scene entity with a node from within a gltf, allowing the scene to inspect it or modify it.
8
+ * This component must be added to a direct child of an entity with a PBGltfContainer component, or
9
+ * to a direct child of another entity with a GltfNode component, and the referenced gltf node must be a descendent of the gltf node
10
+ * in the parent.
11
+ * The name must match the path of one of the nodes within the Gltf. These are available on the GltfContainerLoadingState component.
12
+ *
13
+ * The renderer will attach a PBGltfNodeState to the entity describing the state. Once the state is `GNS_READY`,
14
+ * - the `Transform` will be updated to match the position of the node within the gltf (relative to the gltf root, or the parent node),
15
+ * - a `MeshRenderer` with a GltfMesh mesh type will be added (if the gltf node has a mesh).
16
+ * - a `MeshCollider` with a GltfMesh mesh type will be added (if the gltf node has a collider).
17
+ * - a `Material` component including a GltfMaterial reference will be added (if the gltf node has a material).
18
+ *
19
+ * After creation, if an animation moves the node, the `Transform` will be updated.
20
+ *
21
+ * From the scene, you can modify various components to alter the gltf node:
22
+ * - modifying the `Transform` position/rotation/scale will move the node. The position is interpreted relative to the gltf root (or parent node),
23
+ * regardless of any intermediate gltf node hierarchy.
24
+ * If an animation is playing, the animation takes priority and the scene entity's position will be updated to match the animation.
25
+ * - `Visibility` can be added to hide or show the node and it's children in the gltf hierarchy.
26
+ * - `MeshRenderer` can be added/modified/removed to create/modify/remove a mesh on the node.
27
+ * - `MeshCollider` can be added/modified/removed to create/modify/remove a collider on the node.
28
+ * - `Material` can be added or modified to change the material properties. If the gltf node has a material, the original material will be
29
+ * used as a base, and any gltf features (e.g. occlusion maps) from the gtlf spec that the renderer supports but that are not exposed in the
30
+ * PBMaterial will be maintained.
31
+ *
32
+ * The scene can add additional entities as children to the gltf node, but structural modifications of the gltf are not possible:
33
+ * - changing the scene hierarchy will not change the gltf node hierarchy. Moving the entity out of the gltf will sever the link and
34
+ * change the state to `GNS_FAILED`.
35
+ * - deleting the scene entity will not delete the gltf node.
36
+ *
37
+ * Removing the GltfNode will revert any changes to the original gltf. If the GltfNode component is removed and the mesh/collider/material
38
+ * are not removed, this will result in a duplication of these components as the previously-linked entity will retain it's components and
39
+ * the gltf node will also be displayed.
40
+ */
41
+ export interface PBGltfNode {
42
+ /** the path of the target node in the Gltf. */
43
+ path: string;
44
+ }
45
+
46
+ function createBasePBGltfNode(): PBGltfNode {
47
+ return { path: "" };
48
+ }
49
+
50
+ export namespace PBGltfNode {
51
+ export function encode(message: PBGltfNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
52
+ if (message.path !== "") {
53
+ writer.uint32(10).string(message.path);
54
+ }
55
+ return writer;
56
+ }
57
+
58
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): PBGltfNode {
59
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
60
+ let end = length === undefined ? reader.len : reader.pos + length;
61
+ const message = createBasePBGltfNode();
62
+ while (reader.pos < end) {
63
+ const tag = reader.uint32();
64
+ switch (tag >>> 3) {
65
+ case 1:
66
+ if (tag !== 10) {
67
+ break;
68
+ }
69
+
70
+ message.path = reader.string();
71
+ continue;
72
+ }
73
+ if ((tag & 7) === 4 || tag === 0) {
74
+ break;
75
+ }
76
+ reader.skipType(tag & 7);
77
+ }
78
+ return message;
79
+ }
80
+
81
+ export function fromJSON(object: any): PBGltfNode {
82
+ return { path: isSet(object.path) ? String(object.path) : "" };
83
+ }
84
+
85
+ export function toJSON(message: PBGltfNode): unknown {
86
+ const obj: any = {};
87
+ message.path !== undefined && (obj.path = message.path);
88
+ return obj;
89
+ }
90
+
91
+ export function create<I extends Exact<DeepPartial<PBGltfNode>, I>>(base?: I): PBGltfNode {
92
+ return PBGltfNode.fromPartial(base ?? {});
93
+ }
94
+
95
+ export function fromPartial<I extends Exact<DeepPartial<PBGltfNode>, I>>(object: I): PBGltfNode {
96
+ const message = createBasePBGltfNode();
97
+ message.path = object.path ?? "";
98
+ return message;
99
+ }
100
+ }
101
+
102
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
103
+
104
+ export type DeepPartial<T> = T extends Builtin ? T
105
+ : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
106
+ : T extends { $case: string } ? { [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]> } & { $case: T["$case"] }
107
+ : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
108
+ : Partial<T>;
109
+
110
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
111
+ export type Exact<P, I extends P> = P extends Builtin ? P
112
+ : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
113
+
114
+ function isSet(value: any): boolean {
115
+ return value !== null && value !== undefined;
116
+ }
@@ -0,0 +1,139 @@
1
+ /* eslint-disable */
2
+ import _m0 from "protobufjs/minimal";
3
+
4
+ export const protobufPackage = "decentraland.sdk.components";
5
+
6
+ export enum GltfNodeStateValue {
7
+ GNSV_PENDING = 0,
8
+ GNSV_FAILED = 1,
9
+ GNSV_READY = 2,
10
+ UNRECOGNIZED = -1,
11
+ }
12
+
13
+ export function gltfNodeStateValueFromJSON(object: any): GltfNodeStateValue {
14
+ switch (object) {
15
+ case 0:
16
+ case "GNSV_PENDING":
17
+ return GltfNodeStateValue.GNSV_PENDING;
18
+ case 1:
19
+ case "GNSV_FAILED":
20
+ return GltfNodeStateValue.GNSV_FAILED;
21
+ case 2:
22
+ case "GNSV_READY":
23
+ return GltfNodeStateValue.GNSV_READY;
24
+ case -1:
25
+ case "UNRECOGNIZED":
26
+ default:
27
+ return GltfNodeStateValue.UNRECOGNIZED;
28
+ }
29
+ }
30
+
31
+ export function gltfNodeStateValueToJSON(object: GltfNodeStateValue): string {
32
+ switch (object) {
33
+ case GltfNodeStateValue.GNSV_PENDING:
34
+ return "GNSV_PENDING";
35
+ case GltfNodeStateValue.GNSV_FAILED:
36
+ return "GNSV_FAILED";
37
+ case GltfNodeStateValue.GNSV_READY:
38
+ return "GNSV_READY";
39
+ case GltfNodeStateValue.UNRECOGNIZED:
40
+ default:
41
+ return "UNRECOGNIZED";
42
+ }
43
+ }
44
+
45
+ /**
46
+ * The state of a linked gltf node.
47
+ * If the state is GNSV_FAILED, the renderer may describe the failure in the error string.
48
+ */
49
+ export interface PBGltfNodeState {
50
+ state: GltfNodeStateValue;
51
+ error?: string | undefined;
52
+ }
53
+
54
+ function createBasePBGltfNodeState(): PBGltfNodeState {
55
+ return { state: 0, error: undefined };
56
+ }
57
+
58
+ export namespace PBGltfNodeState {
59
+ export function encode(message: PBGltfNodeState, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
60
+ if (message.state !== 0) {
61
+ writer.uint32(8).int32(message.state);
62
+ }
63
+ if (message.error !== undefined) {
64
+ writer.uint32(18).string(message.error);
65
+ }
66
+ return writer;
67
+ }
68
+
69
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): PBGltfNodeState {
70
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
71
+ let end = length === undefined ? reader.len : reader.pos + length;
72
+ const message = createBasePBGltfNodeState();
73
+ while (reader.pos < end) {
74
+ const tag = reader.uint32();
75
+ switch (tag >>> 3) {
76
+ case 1:
77
+ if (tag !== 8) {
78
+ break;
79
+ }
80
+
81
+ message.state = reader.int32() as any;
82
+ continue;
83
+ case 2:
84
+ if (tag !== 18) {
85
+ break;
86
+ }
87
+
88
+ message.error = reader.string();
89
+ continue;
90
+ }
91
+ if ((tag & 7) === 4 || tag === 0) {
92
+ break;
93
+ }
94
+ reader.skipType(tag & 7);
95
+ }
96
+ return message;
97
+ }
98
+
99
+ export function fromJSON(object: any): PBGltfNodeState {
100
+ return {
101
+ state: isSet(object.state) ? gltfNodeStateValueFromJSON(object.state) : 0,
102
+ error: isSet(object.error) ? String(object.error) : undefined,
103
+ };
104
+ }
105
+
106
+ export function toJSON(message: PBGltfNodeState): unknown {
107
+ const obj: any = {};
108
+ message.state !== undefined && (obj.state = gltfNodeStateValueToJSON(message.state));
109
+ message.error !== undefined && (obj.error = message.error);
110
+ return obj;
111
+ }
112
+
113
+ export function create<I extends Exact<DeepPartial<PBGltfNodeState>, I>>(base?: I): PBGltfNodeState {
114
+ return PBGltfNodeState.fromPartial(base ?? {});
115
+ }
116
+
117
+ export function fromPartial<I extends Exact<DeepPartial<PBGltfNodeState>, I>>(object: I): PBGltfNodeState {
118
+ const message = createBasePBGltfNodeState();
119
+ message.state = object.state ?? 0;
120
+ message.error = object.error ?? undefined;
121
+ return message;
122
+ }
123
+ }
124
+
125
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
126
+
127
+ export type DeepPartial<T> = T extends Builtin ? T
128
+ : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
129
+ : T extends { $case: string } ? { [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]> } & { $case: T["$case"] }
130
+ : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
131
+ : Partial<T>;
132
+
133
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
134
+ export type Exact<P, I extends P> = P extends Builtin ? P
135
+ : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
136
+
137
+ function isSet(value: any): boolean {
138
+ return value !== null && value !== undefined;
139
+ }
@@ -61,6 +61,14 @@ export interface PBMaterial {
61
61
  | { $case: "unlit"; unlit: PBMaterial_UnlitMaterial }
62
62
  | { $case: "pbr"; pbr: PBMaterial_PbrMaterial }
63
63
  | undefined;
64
+ /**
65
+ * A gltf material that may provide additional features not supported by the PbMaterial fields.
66
+ * If both gltf and material fields are provided, the gltf will be used only for extended features not
67
+ * supported by the PbMaterial.
68
+ * If this is provided and the `material` field is not provided, the renderer will update the material
69
+ * field with data that reflects the gltf material once it is loaded.
70
+ */
71
+ gltf?: PBMaterial_GltfMaterial | undefined;
64
72
  }
65
73
 
66
74
  export interface PBMaterial_UnlitMaterial {
@@ -145,8 +153,13 @@ export interface PBMaterial_PbrMaterial {
145
153
  directIntensity?: number | undefined;
146
154
  }
147
155
 
156
+ export interface PBMaterial_GltfMaterial {
157
+ gltfSrc: string;
158
+ name: string;
159
+ }
160
+
148
161
  function createBasePBMaterial(): PBMaterial {
149
- return { material: undefined };
162
+ return { material: undefined, gltf: undefined };
150
163
  }
151
164
 
152
165
  export namespace PBMaterial {
@@ -159,6 +172,9 @@ export namespace PBMaterial {
159
172
  PBMaterial_PbrMaterial.encode(message.material.pbr, writer.uint32(18).fork()).ldelim();
160
173
  break;
161
174
  }
175
+ if (message.gltf !== undefined) {
176
+ PBMaterial_GltfMaterial.encode(message.gltf, writer.uint32(26).fork()).ldelim();
177
+ }
162
178
  return writer;
163
179
  }
164
180
 
@@ -183,6 +199,13 @@ export namespace PBMaterial {
183
199
 
184
200
  message.material = { $case: "pbr", pbr: PBMaterial_PbrMaterial.decode(reader, reader.uint32()) };
185
201
  continue;
202
+ case 3:
203
+ if (tag !== 26) {
204
+ break;
205
+ }
206
+
207
+ message.gltf = PBMaterial_GltfMaterial.decode(reader, reader.uint32());
208
+ continue;
186
209
  }
187
210
  if ((tag & 7) === 4 || tag === 0) {
188
211
  break;
@@ -199,6 +222,7 @@ export namespace PBMaterial {
199
222
  : isSet(object.pbr)
200
223
  ? { $case: "pbr", pbr: PBMaterial_PbrMaterial.fromJSON(object.pbr) }
201
224
  : undefined,
225
+ gltf: isSet(object.gltf) ? PBMaterial_GltfMaterial.fromJSON(object.gltf) : undefined,
202
226
  };
203
227
  }
204
228
 
@@ -208,6 +232,7 @@ export namespace PBMaterial {
208
232
  (obj.unlit = message.material?.unlit ? PBMaterial_UnlitMaterial.toJSON(message.material?.unlit) : undefined);
209
233
  message.material?.$case === "pbr" &&
210
234
  (obj.pbr = message.material?.pbr ? PBMaterial_PbrMaterial.toJSON(message.material?.pbr) : undefined);
235
+ message.gltf !== undefined && (obj.gltf = message.gltf ? PBMaterial_GltfMaterial.toJSON(message.gltf) : undefined);
211
236
  return obj;
212
237
  }
213
238
 
@@ -223,6 +248,9 @@ export namespace PBMaterial {
223
248
  if (object.material?.$case === "pbr" && object.material?.pbr !== undefined && object.material?.pbr !== null) {
224
249
  message.material = { $case: "pbr", pbr: PBMaterial_PbrMaterial.fromPartial(object.material.pbr) };
225
250
  }
251
+ message.gltf = (object.gltf !== undefined && object.gltf !== null)
252
+ ? PBMaterial_GltfMaterial.fromPartial(object.gltf)
253
+ : undefined;
226
254
  return message;
227
255
  }
228
256
  }
@@ -638,6 +666,79 @@ export namespace PBMaterial_PbrMaterial {
638
666
  }
639
667
  }
640
668
 
669
+ function createBasePBMaterial_GltfMaterial(): PBMaterial_GltfMaterial {
670
+ return { gltfSrc: "", name: "" };
671
+ }
672
+
673
+ export namespace PBMaterial_GltfMaterial {
674
+ export function encode(message: PBMaterial_GltfMaterial, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
675
+ if (message.gltfSrc !== "") {
676
+ writer.uint32(10).string(message.gltfSrc);
677
+ }
678
+ if (message.name !== "") {
679
+ writer.uint32(18).string(message.name);
680
+ }
681
+ return writer;
682
+ }
683
+
684
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): PBMaterial_GltfMaterial {
685
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
686
+ let end = length === undefined ? reader.len : reader.pos + length;
687
+ const message = createBasePBMaterial_GltfMaterial();
688
+ while (reader.pos < end) {
689
+ const tag = reader.uint32();
690
+ switch (tag >>> 3) {
691
+ case 1:
692
+ if (tag !== 10) {
693
+ break;
694
+ }
695
+
696
+ message.gltfSrc = reader.string();
697
+ continue;
698
+ case 2:
699
+ if (tag !== 18) {
700
+ break;
701
+ }
702
+
703
+ message.name = reader.string();
704
+ continue;
705
+ }
706
+ if ((tag & 7) === 4 || tag === 0) {
707
+ break;
708
+ }
709
+ reader.skipType(tag & 7);
710
+ }
711
+ return message;
712
+ }
713
+
714
+ export function fromJSON(object: any): PBMaterial_GltfMaterial {
715
+ return {
716
+ gltfSrc: isSet(object.gltfSrc) ? String(object.gltfSrc) : "",
717
+ name: isSet(object.name) ? String(object.name) : "",
718
+ };
719
+ }
720
+
721
+ export function toJSON(message: PBMaterial_GltfMaterial): unknown {
722
+ const obj: any = {};
723
+ message.gltfSrc !== undefined && (obj.gltfSrc = message.gltfSrc);
724
+ message.name !== undefined && (obj.name = message.name);
725
+ return obj;
726
+ }
727
+
728
+ export function create<I extends Exact<DeepPartial<PBMaterial_GltfMaterial>, I>>(base?: I): PBMaterial_GltfMaterial {
729
+ return PBMaterial_GltfMaterial.fromPartial(base ?? {});
730
+ }
731
+
732
+ export function fromPartial<I extends Exact<DeepPartial<PBMaterial_GltfMaterial>, I>>(
733
+ object: I,
734
+ ): PBMaterial_GltfMaterial {
735
+ const message = createBasePBMaterial_GltfMaterial();
736
+ message.gltfSrc = object.gltfSrc ?? "";
737
+ message.name = object.name ?? "";
738
+ return message;
739
+ }
740
+ }
741
+
641
742
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
642
743
 
643
744
  export type DeepPartial<T> = T extends Builtin ? T