| 599 | } |
| 600 | |
| 601 | void CExplosive::FindNormal(Fvector& normal) |
| 602 | { |
| 603 | collide::rq_result RQ; |
| 604 | |
| 605 | Fvector pos, dir; |
| 606 | dir.set(0, -1.f, 0); |
| 607 | cast_game_object()->Center(pos); |
| 608 | |
| 609 | BOOL result = Level().ObjectSpace.RayPick(pos, dir, cast_game_object()->Radius(), collide::rqtBoth, RQ, NULL); |
| 610 | if (!result || RQ.O) |
| 611 | { |
| 612 | normal.set(0, 1, 0); |
| 613 | //если лежим на статике |
| 614 | //найти треугольник и вычислить нормаль по нему |
| 615 | } |
| 616 | else |
| 617 | { |
| 618 | Fvector* pVerts = Level().ObjectSpace.GetStaticVerts(); |
| 619 | CDB::TRI* pTri = Level().ObjectSpace.GetStaticTris() + RQ.element; |
| 620 | normal.mknormal(pVerts[pTri->verts[0]], pVerts[pTri->verts[1]], pVerts[pTri->verts[2]]); |
| 621 | } |
| 622 | } |
| 623 | |
| 624 | void CExplosive::StartLight() |
| 625 | { |