Ejemplo n.º 1
0
static void
bodyVelocityCallback(cpBody *body, cpVect gravity, cpFloat damping, cpFloat dt) {
  VALUE vbody    = (VALUE)(body->data);
  VALUE block    = rb_iv_get(vbody, "velocity_func");
  VALUE vgravity = VNEW(gravity);
  VALUE vdamping = rb_float_new(damping);
  VALUE vdt      = rb_float_new(dt);
  rb_funcall(block, rb_intern("call"), 4, vbody, vgravity, vdamping, vdt);
}
Ejemplo n.º 2
0
static VALUE
rb_cpCentroidForPoly(VALUE self,  VALUE arr) {
  Check_Type(arr, T_ARRAY);
  long numVerts   = RARRAY_LEN(arr);
  VALUE *ary_ptr = RARRAY_PTR(arr);
  cpVect verts[numVerts];

  for(long i = 0; i < numVerts; i++)
    verts[i] = *VGET(ary_ptr[i]);

  return VNEW(cpCentroidForPoly(numVerts, verts));
}
Ejemplo n.º 3
0
Archivo: npcheck.c Proyecto: rolk/ug
static int Gather_VectorFlags (DDD_OBJ obj, void *data)
{
  VECTOR *pv = (VECTOR *)obj;
  INT *idata = (INT *)data;

  idata[0] = VECSKIP(pv);
  idata[1] = VCLASS(pv);
  idata[2] = VNCLASS(pv);
  idata[3] = NEW_DEFECT(pv);
  idata[4] = FINE_GRID_DOF(pv);
  idata[5] = VTYPE(pv);
  idata[6] = VOTYPE(pv);
  idata[7] = VDATATYPE(pv);
  idata[8] = VNEW(pv);
  idata[9] = VECTORSIDE(pv);
  idata[10] = VPART(pv);

  return (0);
}
Ejemplo n.º 4
0
static VALUE
rb_cpBBWrapVect(VALUE self, VALUE v)
{
    return VNEW(cpBBWrapVect(*BBGET(self), *VGET(v)));
}
Ejemplo n.º 5
0
Archivo: npcheck.c Proyecto: rolk/ug
static int Scatter_VectorFlags (DDD_OBJ obj, void *data)
{
  VECTOR *pv = (VECTOR *)obj;
  INT *idata = (INT *)data;

  if (idata[0] != VECSKIP(pv)) {
    printf(PFMT "ERROR:"
           " VECSKIP not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VECSKIP(pv),idata[0]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[1] != VCLASS(pv)) {
    printf(PFMT "ERROR:"
           " VCLASS not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VCLASS(pv),idata[1]);
    ASSERT(0);
  }
  if (idata[2] != VNCLASS(pv)) {
    printf(PFMT "ERROR:"
           " VNCLASS not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VNCLASS(pv),idata[2]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[3] != NEW_DEFECT(pv)) {
    printf(PFMT "ERROR:"
           " NEW_DEFECT not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),NEW_DEFECT(pv),idata[3]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[4] != FINE_GRID_DOF(pv)) {
    printf(PFMT "ERROR:"
           " FINE_GRID_DOF not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),FINE_GRID_DOF(pv),idata[4]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[5] != VTYPE(pv)) {
    printf(PFMT "ERROR:"
           " VTYPE not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VTYPE(pv),idata[5]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[6] != VOTYPE(pv)) {
    printf(PFMT "ERROR:"
           " VOTYPE not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VOTYPE(pv),idata[6]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[7] != VDATATYPE(pv)) {
    printf(PFMT "ERROR:"
           " VDATATYPE not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VDATATYPE(pv),idata[7]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[8] != VNEW(pv)) {
    printf(PFMT "ERROR:"
           " VNEW not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VNEW(pv),idata[8]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[9] != VECTORSIDE(pv)) {
    printf(PFMT "ERROR:"
           " VECTORSIDE not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VECTORSIDE(pv),idata[9]);
    pcheck++;
    ASSERT(0);
  }
  if (idata[10] != VPART(pv)) {
    printf(PFMT "ERROR:"
           " VPART not matches vec="
           VINDEX_FMTX " %d master %d\n",me,
           VINDEX_PRTX(pv),VPART(pv),idata[10]);
    pcheck++;
    ASSERT(0);
  }

  return (0);
}
Ejemplo n.º 6
0
static VALUE
rb_cpBodyWorld2Local(VALUE self, VALUE v) {
  return VNEW(cpBodyWorld2Local(BODY(self), *VGET(v)));
}