Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool Entity::SetProperty(const char *_name, property_type_t _type, void *_value)
- {
- bool overwritten = RemoveProperty(_name);
- if (likely(_name != NULL)) {
- property_t *prop = new property_t;
- prop->type = _type;
- switch (_type) {
- case TYPE_STRING:
- prop->value = (void*)newStr((const char *)_value);
- break;
- case TYPE_NUMBER: {
- float *f = new float;
- *f = *((float*)_value);
- prop->value = (void*)f;
- break;
- }
- case TYPE_BOOLEAN: {
- bool *b = new bool;
- *b = *((bool*)_value);
- prop->value = (void*)b;
- break;
- }
- case TYPE_RECT: {
- Rect *p = (Rect*)_value;
- Rect *r = new Rect;
- r->w = p->w;
- r->h = p->h;
- r->d = p->d;
- prop->value = (void*)r;
- break;
- }
- case TYPE_VECTOR: {
- Vector *p = (Vector*)_value;
- Vector *v = new Vector();
- v->x = p->x;
- v->y = p->y;
- v->z = p->z;
- printf("%s - beforesetp: %p\n", _name, prop->value);
- prop->value = (void*)v;
- printf("%s - setp: %p\n", _name, prop->value);
- break;
- }
- case TYPE_NONE:
- break;
- }
- return overwritten ^ m_properties.insert(_name, prop);
- } else {
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement