Skip to content
This repository was archived by the owner on Dec 12, 2022. It is now read-only.

Commit 9eed092

Browse files
committed
A subcomponent of #6, add individual light properties
1 parent 7d0a2e8 commit 9eed092

4 files changed

Lines changed: 143 additions & 13 deletions

File tree

src/app/data/lights.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
import transform from './object-transform.js';
2+
import renderable from './object-renderable.js';
3+
4+
const base = [{
5+
name: 'Color',
6+
prop: 'color',
7+
type: 'color',
8+
}, {
9+
name: 'Intensity',
10+
prop: 'intensity',
11+
type: 'number',
12+
}];
13+
14+
const objectProps = [
15+
transform,
16+
renderable,
17+
];
18+
19+
const castShadow = {
20+
name: 'Cast Shadow',
21+
prop: 'castShadow',
22+
type: 'boolean',
23+
default: false,
24+
};
25+
26+
const target = {
27+
name: 'Target',
28+
prop: 'target',
29+
type: 'vec3',
30+
};
31+
32+
const decay = {
33+
name: 'Decay',
34+
prop: 'decay',
35+
type: 'number',
36+
default: 1,
37+
};
38+
const distance = {
39+
name: 'Distance',
40+
prop: 'distance',
41+
type: 'number',
42+
default: 0,
43+
};
44+
const power = {
45+
name: 'Power',
46+
prop: 'power',
47+
type: 'number',
48+
default: Math.PI * 4,
49+
};
50+
51+
const Light = {
52+
type: 'light',
53+
props: [
54+
...base,
55+
...objectProps
56+
],
57+
}
58+
59+
export default {
60+
Light: Light,
61+
AmbientLight: Light,
62+
DirectionalLight: {
63+
type: 'object',
64+
props: [
65+
...base,
66+
castShadow,
67+
target,
68+
...objectProps,
69+
],
70+
},
71+
HemisphereLight: {
72+
type: 'object',
73+
props: [
74+
...base,
75+
castShadow,
76+
{
77+
name: 'Ground Color',
78+
prop: 'groundColor',
79+
type: 'color'
80+
},
81+
...objectProps,
82+
],
83+
},
84+
PointLight: {
85+
type: 'object',
86+
props: [
87+
...base,
88+
castShadow,
89+
decay,
90+
distance,
91+
power,
92+
...objectProps,
93+
],
94+
},
95+
RectAreaLight: {
96+
type: 'object',
97+
props: [
98+
...base,
99+
castShadow,
100+
{
101+
name: 'Width',
102+
prop: 'width',
103+
type: 'number'
104+
}, {
105+
name: 'Height',
106+
prop: 'height',
107+
type: 'number'
108+
},
109+
...objectProps,
110+
],
111+
},
112+
SpotLight: {
113+
type: 'object',
114+
props: [
115+
...base,
116+
castShadow,
117+
{
118+
name: 'Angle',
119+
prop: 'angle',
120+
type: 'angle',
121+
default: Math.PI/3,
122+
min: 0,
123+
max: Math.PI/2,
124+
},
125+
decay,
126+
distance,
127+
power,
128+
{
129+
name: 'Penumbra',
130+
prop: 'penumbra',
131+
type: 'number',
132+
default: 0,
133+
min: 0,
134+
max: 1,
135+
},
136+
target,
137+
...objectProps,
138+
],
139+
},
140+
};

src/app/data/objects.js

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ const GeometryRenderable = {
2727
]
2828
}
2929

30-
const Light = {
31-
type: 'light',
32-
props: object,
33-
}
34-
3530
const Scene = {
3631
type: 'scene',
3732
props: object,
@@ -60,14 +55,6 @@ export default {
6055
LineSegments: GeometryRenderable,
6156
Points: GeometryRenderable,
6257

63-
AmbientLight: Light,
64-
DirectionalLight: Light,
65-
HemisphereLight: Light,
66-
PointLight: Light,
67-
RectAreaLight: Light,
68-
SpotLight: Light,
69-
70-
ArrowHelper: Helper,
7158
AxesHelper: Helper,
7259
BoxHelper: Helper,
7360
Box3Helper: Helper,

src/app/elements/ParametersViewElement.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { LitElement, html } from '../../../web_modules/lit-element.js'
22
import ObjectTypes from '../data/objects.js';
3+
import LightTypes from '../data/lights.js';
34
import MaterialTypes from '../data/materials.js';
45
import GeometryTypes from '../data/geometry.js';
56
import TextureTypes from '../data/textures.js';
@@ -114,6 +115,7 @@ export default class ParametersViewElement extends LitElement {
114115

115116
if (entityData) {
116117
let definition = ObjectTypes[entityData.baseType] ||
118+
LightTypes[entityData.baseType] ||
117119
MaterialTypes[entityData.baseType] ||
118120
GeometryTypes[entityData.baseType] ||
119121
TextureTypes[entityData.baseType];

src/app/elements/values/KeyValueElement.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export default class KeyValueElement extends LitElement {
108108
break;
109109
case 'number':
110110
case 'int':
111+
case 'angle':
111112
valueElement = html`<number-input
112113
.id="${this._id}"
113114
.value="${this.value}"

0 commit comments

Comments
 (0)