MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xEntCollideWalls

Function xEntCollideWalls

src/SB/Core/x/xEnt.cpp:1791–1899  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1789}
1790
1791void xEntCollideWalls(xEnt* p, xScene* sc, F32 dt)
1792{
1793 xCollis* coll;
1794 xEnt* cent;
1795 U8 idx, sidx;
1796 F32 sbr;
1797
1798 if (p->bound.type == XBOUND_TYPE_SPHERE)
1799 {
1800 sbr = p->bound.sph.r;
1801 }
1802 else
1803 {
1804 sbr = 0.7f;
1805 }
1806
1807 if (p->collis->pen & 0x8)
1808 {
1809 idx = p->collis->npc_eidx;
1810 sidx = p->collis->npc_sidx;
1811
1812 while (sidx < idx)
1813 {
1814 coll = &p->collis->colls[sidx];
1815 cent = (xEnt*)coll->optr;
1816
1817 if (!(coll->flags & 0x2) && coll->dist < sbr &&
1818 ((p->collis->depenq) ? p->collis->depenq(p, cent, sc, dt, coll) :
1819 cent->penby & p->collType))
1820 {
1821 if (0.0f != coll->depen.x || 0.0f != coll->depen.z)
1822 {
1823 coll->depen.y = 0.0f;
1824 }
1825
1826 xEntAddToPos(p, &coll->depen);
1827 }
1828
1829 sidx++;
1830 }
1831 }
1832
1833 if (p->collis->pen & 0x4)
1834 {
1835 idx = p->collis->dyn_eidx;
1836 sidx = p->collis->dyn_sidx;
1837
1838 while (sidx < idx)
1839 {
1840 coll = &p->collis->colls[sidx];
1841 cent = (xEnt*)coll->optr;
1842
1843 if (!(coll->flags & 0x2) && coll->dist < sbr &&
1844 ((p->collis->depenq) ? p->collis->depenq(p, cent, sc, dt, coll) :
1845 cent->penby & p->collType))
1846 {
1847 coll->depen.y = 0.0f;
1848

Callers 1

xEntCollideFunction · 0.70

Calls 1

xEntAddToPosFunction · 0.85

Tested by

no test coverage detected