SHARE
TWEET

Untitled

a guest Sep 24th, 2017 40 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. bool Entity::SetProperty(const char *_name, property_type_t _type, void *_value)
  2. {
  3.     bool overwritten = RemoveProperty(_name);
  4.     if (likely(_name != NULL)) {
  5.         property_t *prop = new property_t;
  6.         prop->type = _type;
  7.         switch (_type) {
  8.         case TYPE_STRING:
  9.             prop->value = (void*)newStr((const char *)_value);
  10.             break;
  11.         case TYPE_NUMBER: {
  12.             float *f = new float;
  13.             *f = *((float*)_value);
  14.             prop->value = (void*)f;
  15.             break;
  16.         }
  17.         case TYPE_BOOLEAN: {
  18.             bool *b = new bool;
  19.             *b = *((bool*)_value);
  20.             prop->value = (void*)b;
  21.             break;
  22.         }
  23.         case TYPE_RECT: {
  24.             Rect *p = (Rect*)_value;
  25.             Rect *r = new Rect;
  26.             r->w = p->w;
  27.             r->h = p->h;
  28.             r->d = p->d;
  29.             prop->value = (void*)r;
  30.             break;
  31.         }
  32.         case TYPE_VECTOR: {
  33.             Vector *p = (Vector*)_value;
  34.             Vector *v = new Vector();
  35.  
  36.             v->x = p->x;
  37.             v->y = p->y;
  38.             v->z = p->z;
  39.             printf("%s - beforesetp: %p\n", _name, prop->value);
  40.             prop->value = (void*)v;
  41.             printf("%s - setp: %p\n", _name, prop->value);
  42.             break;
  43.         }
  44.         case TYPE_NONE:
  45.             break;
  46.         }
  47.         return overwritten ^ m_properties.insert(_name, prop);
  48.     } else {
  49.         return false;
  50.     }
  51. }
RAW Paste Data
Top