Skip to content

Commit 5dee03d

Browse files
committed
particle frames now supports ParticleEmitterFrameConfig
1 parent a992826 commit 5dee03d

File tree

3 files changed

+43
-6
lines changed

3 files changed

+43
-6
lines changed

src/components/EmitterConfig/expansionPanelFrame.tsx

+36-5
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,21 @@ import {
77
Grid,
88
} from '@material-ui/core';
99
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
10-
import Select from '../Select';
11-
import { blendModes, frames } from '../../constants';
10+
import { inject, observer } from 'mobx-react';
11+
import { EMITTER_STORE, EmitterStoreProp } from 'src/stores';
12+
import Switch from '../Switch';
13+
import TextField from '../TextField';
14+
import MultipleInput from '../MultipleInput';
15+
import { selectComponent } from '../Select';
16+
import { frames } from 'src/constants';
17+
import _get from 'lodash/get';
1218

13-
class ExpansionPanelFrame extends Component {
19+
@inject(EMITTER_STORE)
20+
@observer
21+
class ExpansionPanelFrame extends Component<EmitterStoreProp> {
1422
render() {
23+
const { emitterStore } = this.props;
24+
const { currentEmitterConfig } = emitterStore!;
1525
return (
1626
<ExpansionPanel>
1727
<ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>
@@ -20,10 +30,31 @@ class ExpansionPanelFrame extends Component {
2030
<ExpansionPanelDetails>
2131
<Grid container spacing={16}>
2232
<Grid item xs={6}>
23-
<Select configName="blendMode" options={blendModes} />
33+
<Switch
34+
configName="frame>cycle"
35+
label="Cycle"
36+
disabled={currentEmitterConfig.frame.frames.length < 2}
37+
/>
2438
</Grid>
2539
<Grid item xs={6}>
26-
<Select configName="frame" options={frames} />
40+
<TextField
41+
configName="frame>quantity"
42+
type="number"
43+
label="Quantity"
44+
disabled={!currentEmitterConfig.frame.cycle}
45+
/>
46+
</Grid>
47+
<Grid item xs={12}>
48+
<MultipleInput configName="frame>frames">
49+
{(params: any) => {
50+
const { configName } = params;
51+
return selectComponent({
52+
...params,
53+
options: frames,
54+
value: _get(currentEmitterConfig, configName.split('>')),
55+
});
56+
}}
57+
</MultipleInput>
2758
</Grid>
2859
</Grid>
2960
</ExpansionPanelDetails>

src/components/Select/index.tsx

+6
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,10 @@ class Select extends Component<Props & EmitterStoreProp> {
4545
}
4646
}
4747

48+
const selectComponent = (params: any) => {
49+
return <Select {...params} />;
50+
};
51+
52+
export { selectComponent };
53+
4854
export default Select;

src/constants/emitterConfig.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const emitterConfig = {
1010
on: true,
1111
particleBringToTop: true,
1212
radial: true,
13-
frame: frames[0].value,
13+
frame: { frames: [frames[0].value], cycle: false, quantity: 1 },
1414
frequency: 0,
1515
gravityX: 0,
1616
gravityY: 0,

0 commit comments

Comments
 (0)