520 |
|
objType ); |
521 |
|
painCave.isFatal = 1; |
522 |
|
simError(); |
523 |
+ |
} |
524 |
+ |
} |
525 |
+ |
|
526 |
+ |
double StuntDouble::getZangle(){ |
527 |
+ |
switch (objType) |
528 |
+ |
{ |
529 |
+ |
case OT_ATOM: |
530 |
+ |
sprintf( painCave.errMsg, |
531 |
+ |
"StuntDouble::getZangle was called for a regular atom.\n" |
532 |
+ |
"\tRegular Atoms don't have zAngles. Be smarter.\n"); |
533 |
+ |
painCave.isFatal = 0; |
534 |
+ |
simError(); |
535 |
+ |
// Return zeros. |
536 |
+ |
return 0; |
537 |
+ |
break; |
538 |
+ |
case OT_DATOM: |
539 |
+ |
return ((DirectionalAtom*)this)->getZangle(); |
540 |
+ |
break; |
541 |
+ |
case OT_RIGIDBODY: |
542 |
+ |
return ((RigidBody*)this)->getZangle(); |
543 |
+ |
break; |
544 |
+ |
default: |
545 |
+ |
sprintf( painCave.errMsg, |
546 |
+ |
"Unrecognized ObjType (%d) in StuntDouble::getZangle.\n", |
547 |
+ |
objType ); |
548 |
+ |
painCave.isFatal = 1; |
549 |
+ |
simError(); |
550 |
+ |
return 0; |
551 |
|
} |
552 |
|
} |
553 |
+ |
|
554 |
+ |
void StuntDouble::setZangle(double zAngle){ |
555 |
+ |
switch (objType) |
556 |
+ |
{ |
557 |
+ |
case OT_ATOM: |
558 |
+ |
sprintf( painCave.errMsg, |
559 |
+ |
"StuntDouble::setZangle was called for a regular atom.\n" |
560 |
+ |
"\tRegular Atoms don't have zAngles. Be smarter.\n"); |
561 |
+ |
painCave.isFatal = 1; |
562 |
+ |
simError(); |
563 |
+ |
break; |
564 |
+ |
case OT_DATOM: |
565 |
+ |
((DirectionalAtom*)this)->setZangle(zAngle); |
566 |
+ |
break; |
567 |
+ |
case OT_RIGIDBODY: |
568 |
+ |
((RigidBody*)this)->setZangle(zAngle); |
569 |
+ |
break; |
570 |
+ |
default: |
571 |
+ |
sprintf( painCave.errMsg, |
572 |
+ |
"Unrecognized ObjType (%d) in StuntDouble::setZangle.\n", |
573 |
+ |
objType ); |
574 |
+ |
painCave.isFatal = 1; |
575 |
+ |
simError(); |
576 |
+ |
} |
577 |
+ |
} |
578 |
+ |
|
579 |
+ |
void StuntDouble::addZangle(double zAngle){ |
580 |
+ |
switch (objType) |
581 |
+ |
{ |
582 |
+ |
case OT_ATOM: |
583 |
+ |
sprintf( painCave.errMsg, |
584 |
+ |
"StuntDouble::addZangle was called for a regular atom.\n" |
585 |
+ |
"\tRegular Atoms don't have zAngles. Be smarter.\n"); |
586 |
+ |
painCave.isFatal = 1; |
587 |
+ |
simError(); |
588 |
+ |
break; |
589 |
+ |
case OT_DATOM: |
590 |
+ |
((DirectionalAtom*)this)->addZangle(zAngle); |
591 |
+ |
break; |
592 |
+ |
case OT_RIGIDBODY: |
593 |
+ |
((RigidBody*)this)->addZangle(zAngle); |
594 |
+ |
break; |
595 |
+ |
default: |
596 |
+ |
sprintf( painCave.errMsg, |
597 |
+ |
"Unrecognized ObjType (%d) in StuntDouble::addZangle.\n", |
598 |
+ |
objType ); |
599 |
+ |
painCave.isFatal = 1; |
600 |
+ |
simError(); |
601 |
+ |
} |
602 |
+ |
} |
603 |
+ |
|
604 |
+ |
void StuntDouble::addProperty(GenericData* data){ |
605 |
+ |
map<string, GenericData*>::iterator result; |
606 |
+ |
result = properties.find(data->getID()); |
607 |
+ |
|
608 |
+ |
//we can't simply use properties[prop->getID()] = prop, |
609 |
+ |
//it will cause memory leak if we already contain a propery which has the same name of prop |
610 |
+ |
|
611 |
+ |
if(result != properties.end()){ |
612 |
+ |
delete (*result).second; |
613 |
+ |
(*result).second = data; |
614 |
+ |
} |
615 |
+ |
else |
616 |
+ |
properties[data->getID()] = data; |
617 |
+ |
|
618 |
+ |
|
619 |
+ |
} |
620 |
+ |
void StuntDouble::removeProperty(const string& propName){ |
621 |
+ |
map<string, GenericData*>::iterator result; |
622 |
+ |
|
623 |
+ |
result = properties.find(propName); |
624 |
+ |
|
625 |
+ |
if(result != properties.end()) |
626 |
+ |
properties.erase(result); |
627 |
+ |
|
628 |
+ |
} |
629 |
+ |
GenericData* StuntDouble::getProperty(const string& propName){ |
630 |
+ |
map<string, GenericData*>::iterator result; |
631 |
+ |
|
632 |
+ |
|
633 |
+ |
result = properties.find(propName); |
634 |
+ |
|
635 |
+ |
if(result != properties.end()) |
636 |
+ |
return (*result).second; |
637 |
+ |
else |
638 |
+ |
return NULL; |
639 |
+ |
} |