| 1551 | */ |
| 1552 | |
| 1553 | void GetObjectCoords (int objtype, SHORT objnum, SHORT *xpos, SHORT *ypos) |
| 1554 | { |
| 1555 | SHORT n; |
| 1556 | LONG accx, accy, num; |
| 1557 | Thing *pThing; |
| 1558 | Vertex *pVertex; |
| 1559 | LineDef *pLineDef; |
| 1560 | Vertex *pv1; |
| 1561 | Vertex *pv2; |
| 1562 | |
| 1563 | switch (objtype) |
| 1564 | { |
| 1565 | case OBJ_THINGS: |
| 1566 | assert (objnum >= 0 && objnum < NumThings); |
| 1567 | pThing = &Things[objnum]; |
| 1568 | |
| 1569 | *xpos = pThing->xpos; |
| 1570 | *ypos = pThing->ypos; |
| 1571 | break; |
| 1572 | |
| 1573 | case OBJ_VERTEXES: |
| 1574 | assert_vnum(objnum); |
| 1575 | pVertex = &Vertexes[objnum]; |
| 1576 | |
| 1577 | *xpos = pVertex->x; |
| 1578 | *ypos = pVertex->y; |
| 1579 | break; |
| 1580 | |
| 1581 | case OBJ_LINEDEFS: |
| 1582 | assert_ldnum(objnum); |
| 1583 | pLineDef = &LineDefs[objnum]; |
| 1584 | pv1 = &Vertexes[pLineDef->start]; |
| 1585 | pv2 = &Vertexes[pLineDef->end]; |
| 1586 | |
| 1587 | *xpos = (pv1->x + pv2->x) / 2; |
| 1588 | *ypos = (pv1->y + pv2->y) / 2; |
| 1589 | break; |
| 1590 | |
| 1591 | case OBJ_SIDEDEFS: |
| 1592 | assert (objnum >= 0 && objnum < NumSideDefs); |
| 1593 | for (n = 0; n < NumLineDefs; n++) |
| 1594 | { |
| 1595 | pLineDef = &LineDefs[n]; |
| 1596 | if ( pLineDef->sidedef1 == objnum || pLineDef->sidedef2 == objnum) |
| 1597 | { |
| 1598 | pv1 = &Vertexes[pLineDef->start]; |
| 1599 | pv2 = &Vertexes[pLineDef->end]; |
| 1600 | |
| 1601 | *xpos = (pv1->x + pv2->x) / 2; |
| 1602 | *ypos = (pv1->y + pv2->y) / 2; |
| 1603 | return; |
| 1604 | } |
| 1605 | } |
| 1606 | *xpos = (MapMinX + MapMaxX) / 2; |
| 1607 | *ypos = (MapMinY + MapMaxY) / 2; |
| 1608 | break; |
| 1609 | |
| 1610 | case OBJ_SECTORS: |