Skip to content

Commit 43029a2

Browse files
feat: dynamic lights (#1049)
* Updated Makefile to improve the command update-protocol. Updated protocol to experimental branch * Added LigthSource tests and helper method * Regenerated playground-assets.api.md * Updated snapshots
1 parent 024c250 commit 43029a2

23 files changed

Lines changed: 265 additions & 75 deletions

Makefile

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,19 @@ install:
3232
make node_modules/.bin/protobuf/bin/protoc
3333

3434
update-protocol:
35-
npm i --save-exact @dcl/protocol@next
36-
cd packages/@dcl/sdk-commands; npm i --save-exact @dcl/protocol@next
35+
@PROTO_TAG=$(word 2,$(MAKECMDGOALS)); \
36+
if [ -z "$$PROTO_TAG" ]; then PROTO_TAG=next; fi; \
37+
if [ "$$PROTO_TAG" != "next" ] && [ "$$PROTO_TAG" != "experimental" ]; then \
38+
echo "$$PROTO_TAG is not a valid argument" && exit 1; \
39+
fi; \
40+
echo "Using protocol tag: $$PROTO_TAG"; \
41+
npm i --save-exact @dcl/protocol@$$PROTO_TAG; \
42+
(cd packages/@dcl/sdk-commands && npm i --save-exact @dcl/protocol@$$PROTO_TAG); \
3743
$(MAKE) sync-deps compile_apis
3844

45+
%:
46+
@:
47+
3948
update-renderer:
4049
cd packages/@dcl/sdk; npm i --save-exact @dcl/explorer@latest
4150

@@ -171,4 +180,4 @@ clean:
171180

172181
init-test-scene:
173182
git clone https://github.com/decentraland/sdk7-scene-template test-scene
174-
cd test-scene && npm i ./../packages/@dcl/sdk && npm i ./../packages/@dcl/sdk-commands && npm i ./../packages/@dcl/js-runtime
183+
cd test-scene && npm i ./../packages/@dcl/sdk && npm i ./../packages/@dcl/sdk-commands && npm i ./../packages/@dcl/js-runtime

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"bugs": "https://github.com/decentraland/js-sdk-toolchain/issues",
77
"dependencies": {
88
"@actions/core": "^1.10.0",
9-
"@dcl/protocol": "1.0.0-12891435340.commit-b3fea33",
9+
"@dcl/protocol": "1.0.0-13143749736.commit-5fbeb3c",
1010
"@dcl/quickjs-emscripten": "^0.21.0-3680274614.commit-1808aa1",
1111
"@dcl/ts-proto": "1.153.0",
1212
"@types/fs-extra": "^9.0.12",
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine'
2+
import { LightSource, PBLightSource_Point, PBLightSource_Spot, PBLightSource } from '../generated/index.gen'
3+
import {} from '../generated/LightSource.gen'
4+
5+
/**
6+
* @public
7+
*/
8+
export interface LightSourceHelper {
9+
/**
10+
* @returns a Light Source type
11+
*/
12+
Point: (point: PBLightSource_Point) => PBLightSource['type']
13+
14+
/**
15+
* @returns a Light Source type
16+
*/
17+
Spot: (spot: PBLightSource_Spot) => PBLightSource['type']
18+
}
19+
20+
/**
21+
* @public
22+
*/
23+
export interface LightSourceComponentDefinitionExtended
24+
extends LastWriteWinElementSetComponentDefinition<PBLightSource> {
25+
/**
26+
* LightSource helper with constructor
27+
*/
28+
Type: LightSourceHelper
29+
}
30+
31+
const LightSourceHelper: LightSourceHelper = {
32+
Point(point) {
33+
return {
34+
$case: 'point',
35+
point
36+
}
37+
},
38+
Spot(spot) {
39+
return {
40+
$case: 'spot',
41+
spot
42+
}
43+
}
44+
}
45+
46+
export function defineLightSourceComponent(
47+
engine: Pick<IEngine, 'defineComponentFromSchema'>
48+
): LightSourceComponentDefinitionExtended {
49+
const theComponent = LightSource(engine)
50+
51+
return {
52+
...theComponent,
53+
Type: LightSourceHelper
54+
}
55+
}

packages/@dcl/ecs/src/components/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { AudioStreamComponentDefinitionExtended, defineAudioStreamComponent } fr
1616
import { MediaState } from './generated/pb/decentraland/sdk/components/common/media_state.gen'
1717
import { defineVirtualCameraComponent, VirtualCameraComponentDefinitionExtended } from './extended/VirtualCamera'
1818
import { defineInputModifierComponent, InputModifierComponentDefinitionExtended } from './extended/InputModifier'
19+
import { defineLightSourceComponent, LightSourceComponentDefinitionExtended } from './extended/LightSource'
1920

2021
export * from './generated/index.gen'
2122

@@ -65,6 +66,10 @@ export const VirtualCamera: LwwComponentGetter<VirtualCameraComponentDefinitionE
6566
export const InputModifier: LwwComponentGetter<InputModifierComponentDefinitionExtended> = (engine) =>
6667
defineInputModifierComponent(engine)
6768

69+
/* @__PURE__*/
70+
export const LightSource: LwwComponentGetter<LightSourceComponentDefinitionExtended> = (engine) =>
71+
defineLightSourceComponent(engine)
72+
6873
/**
6974
* @alpha
7075
*/

packages/@dcl/ecs/src/components/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ export type { ISyncComponents, ISyncComponentsType } from './manual/SyncComponen
1212
export type { INetowrkEntity, INetowrkEntityType } from './manual/NetworkEntity'
1313
export type { INetowrkParent, INetowrkParentType } from './manual/NetworkParent'
1414
export type { InputModifierHelper, InputModifierComponentDefinitionExtended } from './extended/InputModifier'
15+
export type { LightSourceHelper, LightSourceComponentDefinitionExtended } from './extended/LightSource'

packages/@dcl/ecs/src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ import {
3333
INetowrkEntity,
3434
INetowrkParent,
3535
VirtualCameraComponentDefinitionExtended,
36-
InputModifierComponentDefinitionExtended
36+
InputModifierComponentDefinitionExtended,
37+
LightSourceComponentDefinitionExtended
3738
} from './components/types'
3839
import { NameComponent } from './components/manual/Name'
3940

@@ -49,6 +50,7 @@ export const Name: NameComponent = components.Name(engine)
4950
export const Tween: TweenComponentDefinitionExtended = /* @__PURE__*/ components.Tween(engine)
5051
export const VirtualCamera: VirtualCameraComponentDefinitionExtended = /* @__PURE__*/ components.VirtualCamera(engine)
5152
export const InputModifier: InputModifierComponentDefinitionExtended = /* @__PURE__*/ components.InputModifier(engine)
53+
export const LightSource: LightSourceComponentDefinitionExtended = /* @__PURE__*/ components.LightSource(engine)
5254

5355
/**
5456
* @alpha

packages/@dcl/playground-assets/etc/playground-assets.api.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ export const componentDefinitionByName: {
627627
"core::GltfContainer": LwwComponentGetter<LastWriteWinElementSetComponentDefinition<PBGltfContainer>>;
628628
"core::GltfContainerLoadingState": LwwComponentGetter<LastWriteWinElementSetComponentDefinition<PBGltfContainerLoadingState>>;
629629
"core::InputModifier": LwwComponentGetter<LastWriteWinElementSetComponentDefinition<PBInputModifier>>;
630+
"core::LightSource": LwwComponentGetter<LastWriteWinElementSetComponentDefinition<PBLightSource>>;
630631
"core::MainCamera": LwwComponentGetter<LastWriteWinElementSetComponentDefinition<PBMainCamera>>;
631632
"core::Material": LwwComponentGetter<LastWriteWinElementSetComponentDefinition<PBMaterial>>;
632633
"core::MeshCollider": LwwComponentGetter<LastWriteWinElementSetComponentDefinition<PBMeshCollider>>;
@@ -1556,6 +1557,24 @@ export interface LastWriteWinElementSetComponentDefinition<T> extends BaseCompon
15561557
getOrNull(entity: Entity): DeepReadonly<T> | null;
15571558
}
15581559

1560+
// Warning: (ae-missing-release-tag) "LightSource" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
1561+
//
1562+
// @public (undocumented)
1563+
export const LightSource: LightSourceComponentDefinitionExtended;
1564+
1565+
// @public (undocumented)
1566+
export interface LightSourceComponentDefinitionExtended extends LastWriteWinElementSetComponentDefinition<PBLightSource> {
1567+
Type: LightSourceHelper;
1568+
}
1569+
1570+
// @public (undocumented)
1571+
export interface LightSourceHelper {
1572+
// (undocumented)
1573+
Point: (point: PBLightSource_Point) => PBLightSource['type'];
1574+
// (undocumented)
1575+
Spot: (spot: PBLightSource_Spot) => PBLightSource['type'];
1576+
}
1577+
15591578
// @public
15601579
export type Listeners = {
15611580
onMouseDown?: Callback;
@@ -2404,6 +2423,66 @@ export namespace PBInputModifier_StandardInput {
24042423
export function encode(message: PBInputModifier_StandardInput, writer?: _m0.Writer): _m0.Writer;
24052424
}
24062425

2426+
// @public (undocumented)
2427+
export interface PBLightSource {
2428+
active?: boolean | undefined;
2429+
brightness?: number | undefined;
2430+
color?: PBColor3 | undefined;
2431+
range?: number | undefined;
2432+
// (undocumented)
2433+
type?: {
2434+
$case: "point";
2435+
point: PBLightSource_Point;
2436+
} | {
2437+
$case: "spot";
2438+
spot: PBLightSource_Spot;
2439+
} | undefined;
2440+
}
2441+
2442+
// @public (undocumented)
2443+
export namespace PBLightSource {
2444+
// (undocumented)
2445+
export function decode(input: _m0.Reader | Uint8Array, length?: number): PBLightSource;
2446+
// (undocumented)
2447+
export function encode(message: PBLightSource, writer?: _m0.Writer): _m0.Writer;
2448+
}
2449+
2450+
// @public (undocumented)
2451+
export interface PBLightSource_Point {
2452+
shadow?: PBLightSource_ShadowType | undefined;
2453+
}
2454+
2455+
// @public (undocumented)
2456+
export namespace PBLightSource_Point {
2457+
// (undocumented)
2458+
export function decode(input: _m0.Reader | Uint8Array, length?: number): PBLightSource_Point;
2459+
// (undocumented)
2460+
export function encode(message: PBLightSource_Point, writer?: _m0.Writer): _m0.Writer;
2461+
}
2462+
2463+
// @public (undocumented)
2464+
export const enum PBLightSource_ShadowType {
2465+
ST_HARD = 2,
2466+
ST_NONE = 0,
2467+
ST_SOFT = 1
2468+
}
2469+
2470+
// @public (undocumented)
2471+
export interface PBLightSource_Spot {
2472+
innerAngle?: number | undefined;
2473+
outerAngle?: number | undefined;
2474+
shadow?: PBLightSource_ShadowType | undefined;
2475+
shadowMaskTexture?: TextureUnion | undefined;
2476+
}
2477+
2478+
// @public (undocumented)
2479+
export namespace PBLightSource_Spot {
2480+
// (undocumented)
2481+
export function decode(input: _m0.Reader | Uint8Array, length?: number): PBLightSource_Spot;
2482+
// (undocumented)
2483+
export function encode(message: PBLightSource_Spot, writer?: _m0.Writer): _m0.Writer;
2484+
}
2485+
24072486
// @public (undocumented)
24082487
export interface PBMainCamera {
24092488
virtualCameraEntity?: number | undefined;

packages/@dcl/sdk-commands/package-lock.json

Lines changed: 9 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@dcl/sdk-commands/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"@dcl/inspector": "file:../inspector",
1414
"@dcl/linker-dapp": "^0.14.2",
1515
"@dcl/mini-comms": "1.0.1-20230216163137.commit-a4c75be",
16-
"@dcl/protocol": "1.0.0-12891435340.commit-b3fea33",
16+
"@dcl/protocol": "1.0.0-13143749736.commit-5fbeb3c",
1717
"@dcl/quests-client": "^1.0.3",
1818
"@dcl/quests-manager": "^0.1.4",
1919
"@dcl/rpc": "^1.1.1",

0 commit comments

Comments
 (0)