| 1610 | } |
| 1611 | |
| 1612 | void River::_generateSegments() |
| 1613 | { |
| 1614 | mSegments.clear(); |
| 1615 | |
| 1616 | for ( U32 i = 0; i < mSlices.size() - 1; i++ ) |
| 1617 | { |
| 1618 | RiverSegment seg( &mSlices[i], &mSlices[i+1] ); |
| 1619 | |
| 1620 | mSegments.push_back( seg ); |
| 1621 | } |
| 1622 | |
| 1623 | /* |
| 1624 | #ifdef TORQUE_DEBUG |
| 1625 | |
| 1626 | for ( U32 i = 0; i < mSegments.size(); i++ ) |
| 1627 | { |
| 1628 | const RiverSegment &segment = mSegments[i]; |
| 1629 | PlaneF normal0 = MathUtils::mTriangleNormal( segment.slice0->p0, segment.slice1->p0, segment.slice1->p2 ); |
| 1630 | PlaneF normal1 = MathUtils::mTriangleNormal( segment.slice0->p0, segment.slice1->p2, segment.slice0->p2 ); |
| 1631 | AssertFatal( true || normal0 != normal1, "River::generateSegments, segment is not coplanar!" ); |
| 1632 | } |
| 1633 | |
| 1634 | #endif // TORQUE_DEBUG |
| 1635 | */ |
| 1636 | |
| 1637 | // We have to go back and generate normals for each slice |
| 1638 | // to be used in calculation of the reflect plane. |
| 1639 | // The slice-normal we calculate are relative to the surface normal |
| 1640 | // of the segments adjacent to the slice. |
| 1641 | /* |
| 1642 | if ( mSlices.size() >= 2 ) |
| 1643 | { |
| 1644 | mSlices[0].normal = mSegments[0].getSurfaceNormal(); |
| 1645 | for ( U32 i = 1; i < mSlices.size() - 1; i++ ) |
| 1646 | { |
| 1647 | mSlices[i].normal = ( mSegments[i-1].getSurfaceNormal() + mSegments[i].getSurfaceNormal() ) / 2; |
| 1648 | } |
| 1649 | mSlices.last().normal = mSegments.last().getSurfaceNormal(); |
| 1650 | } |
| 1651 | */ |
| 1652 | |
| 1653 | _generateVerts(); |
| 1654 | } |
| 1655 | |
| 1656 | void River::_generateVerts() |
| 1657 | { |