From cbdc7e6b9ca345c472fbe9ecef391f89d1aed4c7 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Wed, 6 Apr 2016 20:42:46 +0200 Subject: Fix CSG. --- src/console.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/console.c') 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"; } -- cgit