| 1612 | } |
| 1613 | |
| 1614 | GameValue ObjSetPosASL(const GameState* state, GameValuePar oper1, GameValuePar oper2) |
| 1615 | { |
| 1616 | Object* obj = GetObject(oper1); |
| 1617 | if (!obj) |
| 1618 | { |
| 1619 | return NOTHING; |
| 1620 | } |
| 1621 | |
| 1622 | Vector3 pos; |
| 1623 | if (!GetVector(pos, oper2)) |
| 1624 | { |
| 1625 | return NOTHING; |
| 1626 | } |
| 1627 | if (obj->GetType() == Primary || obj->GetType() == Network) |
| 1628 | { |
| 1629 | return NOTHING; |
| 1630 | } |
| 1631 | |
| 1632 | // let vehicle adjust position |
| 1633 | |
| 1634 | Matrix4 trans = obj->Transform(); |
| 1635 | trans.SetPosition(pos); |
| 1636 | |
| 1637 | EntityAI* veh = dyn_cast<EntityAI>(obj); |
| 1638 | if (veh) |
| 1639 | { |
| 1640 | veh->IsMoved(); |
| 1641 | } |
| 1642 | |
| 1643 | Person* soldier = dyn_cast<Person>(veh); |
| 1644 | if (soldier) |
| 1645 | { |
| 1646 | AIUnit* unit = soldier->Brain(); |
| 1647 | if (unit) |
| 1648 | { |
| 1649 | Transport* transport = unit->GetVehicleIn(); |
| 1650 | if (transport) |
| 1651 | { |
| 1652 | bool isFocused = unit == GWorld->FocusOn(); |
| 1653 | Matrix4 transform = soldier->Transform(); |
| 1654 | transform.SetPosition(pos); |
| 1655 | transport->GetOutFinished(unit); |
| 1656 | if (soldier == transport->Driver()) |
| 1657 | { |
| 1658 | transport->GetOutDriver(transform); |
| 1659 | if (unit->GetGroup()) |
| 1660 | { |
| 1661 | unit->GetGroup()->CalculateMaximalStrength(); |
| 1662 | } |
| 1663 | } |
| 1664 | else if (soldier == transport->Commander()) |
| 1665 | { |
| 1666 | transport->GetOutCommander(transform); |
| 1667 | } |
| 1668 | else if (soldier == transport->Gunner()) |
| 1669 | { |
| 1670 | transport->GetOutGunner(transform); |
| 1671 | } |
nothing calls this directly
no test coverage detected