| 467 | } |
| 468 | |
| 469 | void zEntHangable_FollowUpdate(zEntHangable* ent) |
| 470 | { |
| 471 | xVec3* center; |
| 472 | xVec3 delta; |
| 473 | xVec3 pivot; |
| 474 | |
| 475 | if (ent->follow == NULL) |
| 476 | { |
| 477 | return; |
| 478 | } |
| 479 | |
| 480 | xEntHangableAsset* hang = (xEntHangableAsset *)(&ent->asset[1]); |
| 481 | |
| 482 | center = (xVec3*)(&ent->follow->model->Mat->pos); |
| 483 | pivot.x = center->x; |
| 484 | pivot.y = center->y + hang->pivotOffset; |
| 485 | pivot.z = center->z; |
| 486 | |
| 487 | delta.x = pivot.x - ent->pivot.x; |
| 488 | delta.y = pivot.y - ent->pivot.y; |
| 489 | delta.z = pivot.z - ent->pivot.z; |
| 490 | |
| 491 | ent->pivot = pivot; |
| 492 | |
| 493 | if (globals.player.HangEnt == ent) |
| 494 | { |
| 495 | globals.player.HangPivot = pivot; |
| 496 | globals.player.ent.model->Mat->pos.x += delta.x; |
| 497 | globals.player.ent.model->Mat->pos.y += delta.y; |
| 498 | globals.player.ent.model->Mat->pos.z += delta.z; |
| 499 | } |
| 500 | |
| 501 | ent->endpos.x += delta.x; |
| 502 | ent->endpos.y += delta.y; |
| 503 | ent->endpos.z += delta.z; |
| 504 | |
| 505 | center = (xVec3*)(&ent->model->Mat->pos); |
| 506 | center->x += delta.x; |
| 507 | center = (xVec3*)(&ent->model->Mat->pos); |
| 508 | center->y += delta.y; |
| 509 | center = (xVec3*)(&ent->model->Mat->pos); |
| 510 | center->z += delta.z; |
| 511 | |
| 512 | if (ent->shaggy != NULL) |
| 513 | { |
| 514 | center = (xVec3*)(&ent->shaggy->model->Mat->pos); |
| 515 | center->x += delta.x; |
| 516 | center = (xVec3*)(&ent->shaggy->model->Mat->pos); |
| 517 | center->y += delta.y; |
| 518 | center = (xVec3*)(&ent->shaggy->model->Mat->pos); |
| 519 | center->z += delta.z; |
| 520 | } |
| 521 | } |
| 522 | |
| 523 | void zEntHangable_SetFollow(zEntHangable* ent, zEnt* b) |
| 524 | { |
no outgoing calls
no test coverage detected