Stuff info for a guided missile
| 5496 | |
| 5497 | // Stuff info for a guided missile |
| 5498 | int MultiStuffGuidedInfo(int slot, uint8_t *data) { |
| 5499 | int count = 0; |
| 5500 | int size_offset; |
| 5501 | object *obj = Players[slot].guided_obj; |
| 5502 | |
| 5503 | if (Players[slot].guided_obj == NULL) |
| 5504 | return 0; |
| 5505 | |
| 5506 | size_offset = START_DATA(MP_GUIDED_INFO, data, &count); |
| 5507 | |
| 5508 | MultiAddByte(slot, data, &count); |
| 5509 | MultiAddByte(0, data, &count); |
| 5510 | |
| 5511 | // Do position |
| 5512 | MultiAddPositionData(&obj->pos, data, &count); |
| 5513 | |
| 5514 | // Do orientation |
| 5515 | angvec angs; |
| 5516 | vm_ExtractAnglesFromMatrix(&angs, &obj->orient); |
| 5517 | |
| 5518 | MultiAddShort(angs.p, data, &count); |
| 5519 | MultiAddShort(angs.h, data, &count); |
| 5520 | MultiAddShort(angs.b, data, &count); |
| 5521 | |
| 5522 | // Do roomnumber and terrain flag |
| 5523 | |
| 5524 | MultiAddShort(CELLNUM(obj->roomnum), data, &count); |
| 5525 | |
| 5526 | if (OBJECT_OUTSIDE(obj)) |
| 5527 | MultiAddByte(1, data, &count); |
| 5528 | else |
| 5529 | MultiAddByte(0, data, &count); |
| 5530 | |
| 5531 | // Do velocity |
| 5532 | vector *vel = &obj->mtype.phys_info.velocity; |
| 5533 | vector *rotvel = &obj->mtype.phys_info.rotvel; |
| 5534 | |
| 5535 | MultiAddShort(vel->x * 128.0, data, &count); |
| 5536 | MultiAddShort(vel->y * 128.0, data, &count); |
| 5537 | MultiAddShort(vel->z * 128.0, data, &count); |
| 5538 | |
| 5539 | END_DATA(count, data, size_offset); |
| 5540 | |
| 5541 | return count; |
| 5542 | } |
| 5543 | |
| 5544 | // Guided missile release |
| 5545 | void MultiDoMissileRelease(int slot, uint8_t *data) { |
no test coverage detected