From 55f3c138354101664df80b1ce48416de6adf2da0 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 25 May 2023 10:47:14 -0400 Subject: physics layout fixes for window resizing and for resetting walls properly --- .../nodes/PhysicsBox/PhysicsSimulationBox.tsx | 80 +++++++++++----------- 1 file changed, 41 insertions(+), 39 deletions(-) (limited to 'src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx') diff --git a/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx b/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx index f4acba2a6..be8dbbd40 100644 --- a/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx +++ b/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx @@ -6,7 +6,7 @@ import QuestionMarkIcon from '@mui/icons-material/QuestionMark'; import ReplayIcon from '@mui/icons-material/Replay'; import { Box, Button, Checkbox, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, FormControl, FormControlLabel, FormGroup, IconButton, LinearProgress, Stack } from '@mui/material'; import Typography from '@mui/material/Typography'; -import { computed, IReactionDisposer, reaction } from 'mobx'; +import { action, computed, IReactionDisposer, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import { NumListCast } from '../../../../fields/Doc'; import { List } from '../../../../fields/List'; @@ -76,6 +76,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { const simulationType = this.simulationType; const mode = this.simulationMode; @@ -237,8 +239,6 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { this.dataDoc.simulation_showComponentForces = false; this.dataDoc.mass1_velocityYstart = 0; @@ -619,7 +620,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { @@ -662,6 +663,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { this.dataDoc.simulation_showComponentForces = false; this.dataDoc.mass1_forcesUpdated = JSON.stringify([this.gravityForce(this.mass1)]); @@ -671,10 +673,11 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { let xPos = (this.xMax + this.xMin) / 2 - this.mass1Radius; let yPos = this.yMin + 200; @@ -696,10 +699,11 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { this.dataDoc.simulation_showComponentForces = false; this.dataDoc.mass1_positionYstart = (this.yMax + this.yMin) / 2; @@ -728,8 +732,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { this.dataDoc.spring_lengthStart = length; }; + resetRequest = () => this._simReset; render() { const commonWeightProps = { pause: this.pause, paused: BoolCast(this.dataDoc.simulation_paused), panelWidth: this.props.PanelWidth, panelHeight: this.props.PanelHeight, + resetRequest: this.resetRequest, xMax: this.xMax, xMin: this.xMin, yMax: this.yMax, @@ -830,7 +835,6 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent -
+
{this.dataDoc.simulation_paused && this.simulationMode != 'Tutorial' && ( @@ -930,7 +934,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent )} {this.dataDoc.simulation_paused && this.simulationMode != 'Tutorial' && ( - (this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset)}> + this._simReset++)}> )} @@ -1291,11 +1295,11 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent
@@ -1427,7 +1431,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent (this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset)} + effect={action(() => this._simReset++)} radianEquivalent={false} mode={'Freeform'} labelWidth={'7em'} @@ -1441,7 +1445,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent (this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset)} + effect={action(() => this._simReset++)} radianEquivalent={false} mode="Freeform" labelWidth={'7em'} @@ -1455,11 +1459,11 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { + effect={action((val: number) => { this.dataDoc.mass1_positionYstart = this.springLengthRest + val; this.dataDoc.spring_lengthStart = this.springLengthRest + val; - this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset; - }} + this._simReset++; + })} radianEquivalent={false} mode="Freeform" labelWidth={'7em'} @@ -1477,10 +1481,10 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { + effect={action((val: number) => { this.changeWedgeBasedOnNewAngle(val); - this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset; - }} + this._simReset++; + })} radianEquivalent={true} mode={'Freeform'} labelWidth={'2em'} @@ -1498,13 +1502,13 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { + effect={action((val: number) => { this.updateForcesWithFriction(val); if (val < NumCast(this.dataDoc.coefficientOfKineticFriction)) { this.dataDoc.soefficientOfKineticFriction = val; } - this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset; - }} + this._simReset++; + })} mode={'Freeform'} labelWidth={'2em'} /> @@ -1521,9 +1525,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { - this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset; - }} + effect={action(() => this._simReset++)} mode={'Freeform'} labelWidth={'2em'} /> @@ -1556,7 +1558,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { + effect={action(value => { this.dataDoc.pendulum_angleStart = value; this.dataDoc.pendulum_lengthStart = this.dataDoc.pendulum_length; if (this.simulationType == 'Pendulum') { @@ -1589,9 +1591,9 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { + effect={action(value => { if (this.simulationType == 'Pendulum') { this.dataDoc.pendulum_angleStart = this.pendulumAngle; this.dataDoc.pendulum_lengthStart = value; - this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset; + this._simReset++; } - }} + })} radianEquivalent={false} mode="Freeform" labelWidth="5em" @@ -1768,10 +1770,10 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { + effect={action(value => { this.dataDoc.mass1_velocityXstart = value; - this.dataDoc.simulation_reset = !this.dataDoc.simulation_reset; - }} + this._simReset++; + })} small={true} mode="Freeform" /> -- cgit v1.2.3-70-g09d2