|
@@ -34,7 +34,8 @@ import { Vector3 } from 'babylonjs/Maths/math.vector';
|
|
|
import { AbstractMesh } from 'babylonjs/Meshes/abstractMesh';
|
|
|
import { MeshParticleEmitter } from 'babylonjs/Particles/EmitterTypes/meshParticleEmitter';
|
|
|
import { MeshEmitterGridComponent } from './meshEmitterGridComponent';
|
|
|
-import { FactorGradientGridComponent } from './factorGradientGridComponent';
|
|
|
+import { ValueGradientGridComponent, GradientGridMode } from './valueGradientGridComponent';
|
|
|
+import { Color3, Color4 } from 'babylonjs/Maths/math.color';
|
|
|
|
|
|
interface IParticleSystemPropertyGridComponentProps {
|
|
|
globalState: GlobalState;
|
|
@@ -284,36 +285,64 @@ export class ParticleSystemPropertyGridComponent extends React.Component<IPartic
|
|
|
</LineContainerComponent>
|
|
|
<LineContainerComponent globalState={this.props.globalState} title="EMISSION">
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Rate" target={system} propertyName="emitRate" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getEmitRateGradients()!}
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getEmitRateGradients()!}
|
|
|
label="Velocity gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#emit-rate-over-time"
|
|
|
onCreateRequired={() => {
|
|
|
system.addEmitRateGradient(0, 50, 50);
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addEmitRateGradient(0, 50, 50);`
|
|
|
+ });
|
|
|
}}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getEmitRateGradients()"
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Min emit power" target={system} propertyName="minEmitPower" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Max emit power" target={system} propertyName="maxEmitPower" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getVelocityGradients()!}
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getVelocityGradients()!}
|
|
|
label="Velocity gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#velocity-over-time"
|
|
|
onCreateRequired={() => {
|
|
|
system.addVelocityGradient(0, 0.1, 0.1);
|
|
|
- }}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getLimitVelocityGradients()!}
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addVelocityGradient(0, 0.1, 0.1);`
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getVelocityGradients()"
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getLimitVelocityGradients()!}
|
|
|
label="Limit velocity gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#limit-velocity-over-time"
|
|
|
onCreateRequired={() => {
|
|
|
system.addLimitVelocityGradient(0, 0.1, 0.1);
|
|
|
- }}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getDragGradients()!}
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addLimitVelocityGradient(0, 0.1, 0.1);`
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getLimitVelocityGradients()"
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getDragGradients()!}
|
|
|
label="Drag gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#drag-factor"
|
|
|
onCreateRequired={() => {
|
|
|
system.addDragGradient(0, 0.1, 0.1);
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addDragGradient(0, 0.1, 0.1);`
|
|
|
+ });
|
|
|
}}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getDragGradients()"
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
</LineContainerComponent>
|
|
|
<LineContainerComponent globalState={this.props.globalState} title="SIZE">
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Min size" target={system} propertyName="minSize" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
@@ -322,32 +351,54 @@ export class ParticleSystemPropertyGridComponent extends React.Component<IPartic
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Max scale X" target={system} propertyName="maxScaleX" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Min scale Y" target={system} propertyName="minScaleY" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Max scale Y" target={system} propertyName="maxScaleY" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getStartSizeGradients()!}
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getStartSizeGradients()!}
|
|
|
label="Start size gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#start-size-over-time"
|
|
|
onCreateRequired={() => {
|
|
|
system.addStartSizeGradient(0, 1, 1);
|
|
|
- }}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addStartSizeGradient(0, 1, 1);`
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getStartSizeGradients()"
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getSizeGradients()!}
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getSizeGradients()!}
|
|
|
label="Size gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#size"
|
|
|
onCreateRequired={() => {
|
|
|
system.addSizeGradient(0, 1, 1);
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addSizeGradient(0, 1, 1);`
|
|
|
+ });
|
|
|
}}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getSizeGradients()"
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
</LineContainerComponent>
|
|
|
<LineContainerComponent globalState={this.props.globalState} title="LIFETIME">
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Min lifetime" target={system} propertyName="minLifeTime" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Max lifetime" target={system} propertyName="maxLifeTime" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getLifeTimeGradients()!}
|
|
|
+ <FloatLineComponent lockObject={this.props.lockObject} label="Target stop duration" target={system} propertyName="targetStopDuration" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getLifeTimeGradients()!}
|
|
|
label="Lifetime gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#lifetime"
|
|
|
onCreateRequired={() => {
|
|
|
system.addLifeTimeGradient(0, 1, 1);
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addLifeTimeGradient(0, 1, 1);`
|
|
|
+ });
|
|
|
}}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getLifeTimeGradients()"
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
</LineContainerComponent>
|
|
|
<LineContainerComponent globalState={this.props.globalState} title="COLORS">
|
|
|
<Color4LineComponent label="Color 1" target={system} propertyName="color1"
|
|
@@ -356,33 +407,85 @@ export class ParticleSystemPropertyGridComponent extends React.Component<IPartic
|
|
|
onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<Color4LineComponent label="Color dead" target={system} propertyName="colorDead"
|
|
|
onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getColorRemapGradients()!}
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getColorGradients()!}
|
|
|
+ label="Color gradients"
|
|
|
+ docLink="https://doc.babylonjs.com/babylon101/particles#particle-colors"
|
|
|
+ onCreateRequired={() => {
|
|
|
+ system.addColorGradient(0, new Color4(0, 0, 0, 1), new Color4(1, 1, 1, 1));
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addColorGradient(0, new BABYLON.Color4(0, 0, 0, 1), new BABYLON.Color4(1, 1, 1, 1));`
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getColorGradients()"
|
|
|
+ mode={GradientGridMode.Color4}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
+
|
|
|
+ <CheckBoxLineComponent label="Use ramp grandients" target={system} propertyName="useRampGradients"/>
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getRampGradients()!}
|
|
|
+ label="Ramp gradients"
|
|
|
+ docLink="https://doc.babylonjs.com/babylon101/particles#ramp-gradients"
|
|
|
+ onCreateRequired={() => {
|
|
|
+ system.addRampGradient(0, Color3.White());
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addRampGradient(0, BABYLON.Color3.White());`
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ mode={GradientGridMode.Color3}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getRampGradients()"
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
+
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getColorRemapGradients()!}
|
|
|
label="Color remap gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#ramp-gradients"
|
|
|
onCreateRequired={() => {
|
|
|
system.addColorRemapGradient(0, 1, 1);
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addColorRemapGradient(0, 1, 1);`
|
|
|
+ });
|
|
|
}}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getAlphaRemapGradients()!}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getColorRemapGradients()"
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getAlphaRemapGradients()!}
|
|
|
label="Alpha remap gradients"
|
|
|
docLink="https://doc.babylonjs.com/babylon101/particles#ramp-gradients"
|
|
|
onCreateRequired={() => {
|
|
|
system.addAlphaRemapGradient(0, 1, 1);
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addAlphaRemapGradient(0, 1, 1);`
|
|
|
+ });
|
|
|
}}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getAlphaRemapGradients()"
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
</LineContainerComponent>
|
|
|
<LineContainerComponent globalState={this.props.globalState} title="ROTATION">
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Min angular speed" target={system} propertyName="minAngularSpeed" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Max angular speed" target={system} propertyName="maxAngularSpeed" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Min initial rotation" target={system} propertyName="minInitialRotation" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
<FloatLineComponent lockObject={this.props.lockObject} label="Max initial rotation" target={system} propertyName="maxInitialRotation" onPropertyChangedObservable={this.props.onPropertyChangedObservable} />
|
|
|
- <FactorGradientGridComponent globalState={this.props.globalState} gradients={system.getAngularSpeedGradients()!}
|
|
|
+ <ValueGradientGridComponent globalState={this.props.globalState} gradients={system.getAngularSpeedGradients()!}
|
|
|
label="Angular speed gradients"
|
|
|
docLink="hhttps://doc.babylonjs.com/babylon101/particles#rotation"
|
|
|
onCreateRequired={() => {
|
|
|
system.addAngularSpeedGradient(0, 0.1, 0.1);
|
|
|
- }}
|
|
|
- lockObject={this.props.lockObject} onPropertyChangedObservable={this.props.onPropertyChangedObservable}/>
|
|
|
+ this.props.globalState.onCodeChangedObservable.notifyObservers({
|
|
|
+ object: system,
|
|
|
+ code: `TARGET.addAngularSpeedGradient(0, 0.1, 0.1);`
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ host={system}
|
|
|
+ codeRecorderPropertyName="getAngularSpeedGradients()"
|
|
|
+ mode={GradientGridMode.Factor}
|
|
|
+ lockObject={this.props.lockObject}/>
|
|
|
</LineContainerComponent>
|
|
|
</div>
|
|
|
);
|