summaryrefslogtreecommitdiff
path: root/src/console.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/console.c')
-rw-r--r--src/console.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/console.c b/src/console.c
index 9c7cebb..4edaf2e 100644
--- a/src/console.c
+++ b/src/console.c
@@ -163,7 +163,43 @@ char *cmd_csg_clear(char *arg)
char *cmd_csg_push(char *arg)
{
- itc_chan_push(&con_sim->ctl, PHY_CMD_CSG_PUSH, NULL);
+ char *shape_str;
+ phy_csg_shape shape;
+ phy_csg_step *step;
+
+ shape_str = con_var_get("csg_shape");
+
+ shape = CSG_SPHERE;
+
+ if (shape_str) {
+ if (!strcmp(shape_str, "cylinder-z"))
+ shape = CSG_CYLINDER_Z;
+ }
+
+ step = malloc(sizeof(phy_csg_step));
+ assert(step);
+
+ step->shape = shape;
+ step->value = con_var_get_float("csg_v");
+
+ switch (shape) {
+ case CSG_SPHERE:
+ step->x[0] = con_var_get_float("csg_x");
+ step->x[1] = con_var_get_float("csg_y");
+ step->x[2] = con_var_get_float("csg_z");
+ step->d[0] = con_var_get_float("csg_r");
+ break;
+
+ case CSG_CYLINDER_Z:
+ step->x[0] = con_var_get_float("csg_x");
+ step->x[1] = con_var_get_float("csg_y");
+ step->x[2] = con_var_get_float("csg_z");
+ step->d[0] = con_var_get_float("csg_r");
+ step->d[1] = con_var_get_float("csg_h");
+ break;
+ }
+
+ itc_chan_push(&con_sim->ctl, PHY_CMD_CSG_PUSH, step);
return "Wykonano operację na przenikalności elektrycznej";
}