Skip to content

Commit 6153de0

Browse files
committed
Can Customize Unstick Force
1 parent 874fb4d commit 6153de0

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

fission/src/systems/preferences/PreferenceTypes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ export type RobotPreferences = {
130130
ejector: EjectorPreferences
131131
driveVelocity: number
132132
driveAcceleration: number
133+
unstickForce: number
133134
sequentialConfig?: SequentialBehaviorPreferences[]
134135
simConfig?: SimConfigData
135136
}
@@ -192,6 +193,7 @@ export function defaultRobotPreferences(): RobotPreferences {
192193
},
193194
driveVelocity: 0,
194195
driveAcceleration: 0,
196+
unstickForce: 8000,
195197
}
196198
}
197199

fission/src/systems/simulation/synthesis_brain/SynthesisBrain.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,8 @@ class SynthesisBrain extends Brain {
141141
return
142142
}
143143

144-
const unstickForce = new JOLT.Vec3(0, 8000, 0)
145-
body.AddForce(unstickForce)
146-
147-
console.log("Unstick force applied to robot")
144+
const unstickForce = new JOLT.Vec3(0, PreferencesSystem.getRobotPreferences(this._assemblyName).unstickForce, 0)
145+
body.AddForce(unstickForce)
148146
}
149147

150148
public disable(): void {

fission/src/ui/panels/configuring/assembly-config/interfaces/SubsystemRowInterface.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,12 @@ const SubsystemRowInterface: React.FC<SubsystemRowProps> = ({ robot, driver, seq
4141
const [force, setForce] = useState<number>(
4242
((driver as SliderDriver) || (driver as HingeDriver) || (driver as WheelDriver)).maxForce
4343
)
44+
const [unstickForce, setUnstickForce] = useState<number>(
45+
PreferencesSystem.getRobotPreferences(robot.assemblyName).unstickForce
46+
)
4447

4548
const onChange = useCallback(
46-
(vel: number, force: number) => {
49+
(vel: number, force: number, unstick: number) => {
4750
if (driver instanceof WheelDriver) {
4851
const wheelDrivers = robot?.mechanism
4952
? World.simulationSystem
@@ -81,6 +84,7 @@ const SubsystemRowInterface: React.FC<SubsystemRowProps> = ({ robot, driver, seq
8184
;((driver as SliderDriver) || (driver as HingeDriver)).maxForce = force
8285
}
8386

87+
PreferencesSystem.getRobotPreferences(robot.assemblyName).unstickForce = unstick
8488
PreferencesSystem.savePreferences()
8589
},
8690
[driver, robot.mechanism, robot.assemblyName]
@@ -101,7 +105,7 @@ const SubsystemRowInterface: React.FC<SubsystemRowProps> = ({ robot, driver, seq
101105
format={{ minimumFractionDigits: 2, maximumFractionDigits: 2 }}
102106
onChange={(_, velocity: number | number[]) => {
103107
setVelocity(velocity as number)
104-
onChange(velocity as number, force)
108+
onChange(velocity as number, force, unstickForce)
105109
}}
106110
step={0.01}
107111
/>
@@ -115,7 +119,7 @@ const SubsystemRowInterface: React.FC<SubsystemRowProps> = ({ robot, driver, seq
115119
format={{ minimumFractionDigits: 2, maximumFractionDigits: 2 }}
116120
onChange={(_, force: number | number[]) => {
117121
setForce(force as number)
118-
onChange(velocity, force as number)
122+
onChange(velocity, force as number, unstickForce)
119123
}}
120124
step={0.01}
121125
/>
@@ -130,6 +134,17 @@ const SubsystemRowInterface: React.FC<SubsystemRowProps> = ({ robot, driver, seq
130134
}}
131135
/>
132136
)}
137+
<Slider
138+
min={0}
139+
max={15000}
140+
value={unstickForce}
141+
label="Unstick Force"
142+
onChange={(_, value: number | number[]) => {
143+
setUnstickForce(value as number)
144+
onChange(velocity, force, value as number)
145+
}}
146+
step={100}
147+
/>
133148
</Stack>
134149
</Box>
135150
<SectionDivider />

0 commit comments

Comments
 (0)