788 if (AMShiftX = 0) and (AMShiftY = 0) then |
788 if (AMShiftX = 0) and (AMShiftY = 0) then |
789 DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8); |
789 DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8); |
790 {$ENDIF} |
790 {$ENDIF} |
791 end; |
791 end; |
792 |
792 |
793 procedure DrawWater(Alpha: byte; OffsetY: LongInt); |
793 procedure DrawWater(Alpha: byte; OffsetY, OffsetX: LongInt); |
794 var VertexBuffer : array [0..3] of TVertex2f; |
794 var VertexBuffer : array [0..4] of TVertex2f; |
795 topy: LongInt; |
795 topy, lx, rx: LongInt; |
796 begin |
796 begin |
797 // Water |
797 // Water |
798 topy:= OffsetY + WorldDy + cWaterLine; |
798 topy:= OffsetY + WorldDy + cWaterLine; |
799 |
|
800 if topy > ViewBottomY then |
|
801 exit; |
|
802 |
799 |
803 if SuddenDeathDmg then |
800 if SuddenDeathDmg then |
804 begin |
801 begin |
805 SDWaterColorArray[0].a := Alpha; |
802 SDWaterColorArray[0].a := Alpha; |
806 SDWaterColorArray[1].a := Alpha; |
803 SDWaterColorArray[1].a := Alpha; |
816 end; |
813 end; |
817 |
814 |
818 if topy < 0 then |
815 if topy < 0 then |
819 topy:= 0; |
816 topy:= 0; |
820 |
817 |
821 glDisable(GL_TEXTURE_2D); |
818 // glDisable(GL_TEXTURE_2D); |
822 VertexBuffer[0].X:= -ViewWidth; |
819 |
823 VertexBuffer[0].Y:= topy; |
820 if (topy < ViewBottomY) and (WorldEdge <> weSea) then |
824 VertexBuffer[1].X:= ViewWidth; |
821 begin |
825 VertexBuffer[1].Y:= topy; |
822 VertexBuffer[0].X:= ViewLeftX; |
826 VertexBuffer[2].X:= ViewWidth; |
823 VertexBuffer[0].Y:= topy; |
827 VertexBuffer[2].Y:= ViewBottomY; |
824 VertexBuffer[1].X:= ViewRightX; |
828 VertexBuffer[3].X:= -ViewWidth; |
825 VertexBuffer[1].Y:= topy; |
829 VertexBuffer[3].Y:= ViewBottomY; |
826 VertexBuffer[2].X:= ViewRightX; |
830 |
827 VertexBuffer[2].Y:= ViewBottomY; |
831 DrawWaterBody(@VertexBuffer[0]); |
828 VertexBuffer[3].X:= ViewLeftX; |
|
829 VertexBuffer[3].Y:= ViewBottomY; |
|
830 DrawWaterBody(@VertexBuffer[0]); |
|
831 end; |
|
832 |
|
833 // water world edges? draw water body on the sides too |
|
834 if WorldEdge = weSea then |
|
835 begin |
|
836 |
|
837 lx:= LeftX + WorldDx - OffsetX; |
|
838 rx:= RightX + WorldDx + OffsetX; |
|
839 |
|
840 if topy < ViewBottomY then |
|
841 begin |
|
842 VertexBuffer[0].X:= lx; |
|
843 VertexBuffer[0].Y:= topy; |
|
844 VertexBuffer[1].X:= RightX; |
|
845 VertexBuffer[1].Y:= topy; |
|
846 VertexBuffer[2].X:= ViewRightX; |
|
847 VertexBuffer[2].Y:= ViewBottomY; |
|
848 VertexBuffer[3].X:= ViewLeftX; |
|
849 VertexBuffer[3].Y:= ViewBottomY; |
|
850 DrawWaterBody(@VertexBuffer[0]); |
|
851 end; |
|
852 |
|
853 if lx > ViewLeftX then |
|
854 begin |
|
855 VertexBuffer[0].X:= lx; |
|
856 VertexBuffer[0].Y:= ViewTopY; |
|
857 VertexBuffer[1].X:= lx; |
|
858 VertexBuffer[1].Y:= topy; |
|
859 VertexBuffer[2].X:= ViewLeftX; |
|
860 VertexBuffer[2].Y:= ViewBottomY; |
|
861 VertexBuffer[3].X:= ViewLeftX; |
|
862 VertexBuffer[3].Y:= ViewTopY; |
|
863 DrawWaterBody(@VertexBuffer[0]); |
|
864 end; |
|
865 |
|
866 |
|
867 if rx < ViewRightX then |
|
868 begin |
|
869 VertexBuffer[0].X:= rx; |
|
870 VertexBuffer[0].Y:= topy; |
|
871 VertexBuffer[1].X:= rx; |
|
872 VertexBuffer[1].Y:= ViewTopY; |
|
873 VertexBuffer[2].X:= ViewRightX; |
|
874 VertexBuffer[2].Y:= ViewTopY; |
|
875 VertexBuffer[3].X:= ViewRightX; |
|
876 VertexBuffer[3].Y:= ViewBottomY; |
|
877 DrawWaterBody(@VertexBuffer[0]); |
|
878 end; |
|
879 end; |
832 |
880 |
833 {$IFNDEF GL2} |
881 {$IFNDEF GL2} |
834 // must not be Tint() as color array seems to stay active and color reset is required |
882 // must not be Tint() as color array seems to stay active and color reset is required |
835 glColor4ub($FF, $FF, $FF, $FF); |
883 glColor4ub($FF, $FF, $FF, $FF); |
836 {$ENDIF} |
884 {$ENDIF} |
837 glEnable(GL_TEXTURE_2D); |
885 //glEnable(GL_TEXTURE_2D);} |
838 end; |
886 end; |
839 |
887 |
840 procedure DrawWaves(Dir, dX, dY: LongInt; tnt: Byte); |
888 procedure DrawWaves(Dir, dX, dY, oX: LongInt; tnt: Byte); |
841 var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; |
889 var VertexBuffer, TextureBuffer: array [0..7] of TVertex2f; |
842 lw, waves, shift: GLfloat; |
890 lw, waves, shift: GLfloat; |
843 sprite: TSprite; |
891 sprite: TSprite; |
844 topy: LongInt; |
892 topy: LongInt; |
845 begin |
893 begin |
846 |
894 |
|
895 dY:= -cWaveHeight + dy; |
|
896 ox:= -cWaveHeight + ox; |
|
897 |
847 topy:= cWaterLine + WorldDy + dY; |
898 topy:= cWaterLine + WorldDy + dY; |
848 |
899 |
849 if topY > ViewBottomY then |
900 if (WorldEdge <> weSea) and (topY > ViewBottomY) then |
850 exit; |
901 exit; |
851 |
902 |
852 if SuddenDeathDmg then |
903 if SuddenDeathDmg then |
853 sprite:= sprSDWater |
904 sprite:= sprSDWater |
854 else |
905 else |
855 sprite:= sprWater; |
906 sprite:= sprWater; |
856 |
907 |
857 cWaveWidth:= SpritesData[sprite].Width; |
908 cWaveWidth:= SpritesData[sprite].Width; |
858 |
909 |
859 lw:= ViewWidth; |
910 if WorldEdge = weSea then |
860 waves:= lw * 2 / cWaveWidth; |
911 lw:= playWidth div 2 |
|
912 else |
|
913 lw:= ViewWidth; |
861 |
914 |
862 if SuddenDeathDmg then |
915 if SuddenDeathDmg then |
863 Tint(LongInt(tnt) * SDWaterColorArray[2].r div 255 + 255 - tnt, |
916 Tint(LongInt(tnt) * SDWaterColorArray[2].r div 255 + 255 - tnt, |
864 LongInt(tnt) * SDWaterColorArray[2].g div 255 + 255 - tnt, |
917 LongInt(tnt) * SDWaterColorArray[2].g div 255 + 255 - tnt, |
865 LongInt(tnt) * SDWaterColorArray[2].b div 255 + 255 - tnt, |
918 LongInt(tnt) * SDWaterColorArray[2].b div 255 + 255 - tnt, |
872 255 |
925 255 |
873 ); |
926 ); |
874 |
927 |
875 glBindTexture(GL_TEXTURE_2D, SpritesData[sprite].Texture^.id); |
928 glBindTexture(GL_TEXTURE_2D, SpritesData[sprite].Texture^.id); |
876 |
929 |
877 VertexBuffer[0].X:= -lw; |
930 if WorldEdge <> weSea then |
878 VertexBuffer[0].Y:= cWaterLine + WorldDy + dY; |
931 begin |
879 VertexBuffer[1].X:= lw; |
932 if topY < ViewBottomY then |
880 VertexBuffer[1].Y:= VertexBuffer[0].Y; |
933 begin |
881 VertexBuffer[2].X:= lw; |
934 VertexBuffer[0].X:= -lw; |
882 VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprite].Height; |
935 VertexBuffer[0].Y:= cWaterLine + WorldDy + dY; |
883 VertexBuffer[3].X:= -lw; |
936 VertexBuffer[1].X:= lw; |
884 VertexBuffer[3].Y:= VertexBuffer[2].Y; |
937 VertexBuffer[1].Y:= VertexBuffer[0].Y; |
885 |
938 VertexBuffer[2].X:= lw; |
886 shift:= - lw / cWaveWidth; |
939 VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprite].Height; |
887 TextureBuffer[0].X:= shift + (( - WorldDx + LongInt(RealTicks shr 6) * Dir + dX) mod cWaveWidth) / (cWaveWidth - 1); |
940 VertexBuffer[3].X:= -lw; |
888 TextureBuffer[0].Y:= 0; |
941 VertexBuffer[3].Y:= VertexBuffer[2].Y; |
889 TextureBuffer[1].X:= TextureBuffer[0].X + waves; |
942 end; |
890 TextureBuffer[1].Y:= TextureBuffer[0].Y; |
943 |
891 TextureBuffer[2].X:= TextureBuffer[1].X; |
944 waves:= lw * 2 / cWaveWidth; |
892 TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry; |
945 shift:= - lw / cWaveWidth; |
893 TextureBuffer[3].X:= TextureBuffer[0].X; |
946 TextureBuffer[0].X:= shift + (( - WorldDx + LongInt(RealTicks shr 6) * Dir + dX) mod cWaveWidth) / (cWaveWidth - 1); |
894 TextureBuffer[3].Y:= TextureBuffer[2].Y; |
947 TextureBuffer[0].Y:= 0; |
895 |
948 TextureBuffer[1].X:= TextureBuffer[0].X + waves; |
896 |
949 TextureBuffer[1].Y:= TextureBuffer[0].Y; |
897 SetVertexPointer(@VertexBuffer[0], Length(VertexBuffer)); |
950 TextureBuffer[2].X:= TextureBuffer[1].X; |
898 SetTexCoordPointer(@TextureBuffer[0], Length(VertexBuffer)); |
951 TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry; |
899 |
952 TextureBuffer[3].X:= TextureBuffer[0].X; |
900 {$IFDEF GL2} |
953 TextureBuffer[3].Y:= TextureBuffer[2].Y; |
901 UpdateModelviewProjection; |
954 |
902 {$ENDIF} |
955 |
903 |
956 SetVertexPointer(@VertexBuffer[0], 4); |
904 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
957 SetTexCoordPointer(@TextureBuffer[0],4); |
|
958 |
|
959 {$IFDEF GL2} |
|
960 UpdateModelviewProjection; |
|
961 {$ENDIF} |
|
962 |
|
963 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
|
964 end |
|
965 else // weSea: with waterwalls |
|
966 begin |
|
967 topy := cWaterLine + WorldDy; |
|
968 |
|
969 // for GL_TRIANGLE_STRIP |
|
970 |
|
971 VertexBuffer[0].X:= LeftX + WorldDx - SpritesData[sprite].Height - ox; |
|
972 VertexBuffer[0].Y:= ViewTopY; |
|
973 VertexBuffer[1].X:= LeftX + WorldDx - ox; |
|
974 VertexBuffer[1].Y:= ViewTopY; |
|
975 VertexBuffer[2].X:= VertexBuffer[0].X; |
|
976 VertexBuffer[2].Y:= topy + SpritesData[sprite].Height + dy; |
|
977 VertexBuffer[3].X:= VertexBuffer[1].X; |
|
978 VertexBuffer[3].Y:= topy + dy; |
|
979 VertexBuffer[4].X:= RightX + WorldDx + SpritesData[sprite].Height + ox; |
|
980 VertexBuffer[4].Y:= topy + SpritesData[sprite].Height + dy; |
|
981 VertexBuffer[5].X:= RightX + WorldDx + ox; |
|
982 VertexBuffer[5].Y:= topy + dy; |
|
983 VertexBuffer[6].X:= VertexBuffer[4].X; |
|
984 VertexBuffer[6].Y:= ViewTopY; |
|
985 VertexBuffer[7].X:= VertexBuffer[5].X; |
|
986 VertexBuffer[7].Y:= ViewTopY; |
|
987 |
|
988 waves:= 2 * lw / cWaveWidth; |
|
989 shift:= - lw / cWaveWidth; |
|
990 TextureBuffer[3].X:= shift + ((LongInt(RealTicks shr 6) * Dir + ox) mod cWaveWidth) / (cWaveWidth - 1); |
|
991 TextureBuffer[3].Y:= 0; |
|
992 TextureBuffer[5].X:= TextureBuffer[3].X + waves; |
|
993 TextureBuffer[5].Y:= 0; |
|
994 TextureBuffer[4].X:= TextureBuffer[5].X; |
|
995 TextureBuffer[4].Y:= SpritesData[sprite].Texture^.ry; |
|
996 TextureBuffer[2].X:= TextureBuffer[3].X; |
|
997 TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry; |
|
998 |
|
999 waves:= (topy + dy - ViewTopY) / cWaveWidth; |
|
1000 |
|
1001 // left side |
|
1002 TextureBuffer[1].X:= TextureBuffer[3].X - waves; |
|
1003 TextureBuffer[1].Y:= 0; |
|
1004 TextureBuffer[0].X:= TextureBuffer[1].X; |
|
1005 TextureBuffer[0].Y:= SpritesData[sprite].Texture^.ry; |
|
1006 |
|
1007 // right side |
|
1008 TextureBuffer[7].X:= TextureBuffer[5].X + waves; |
|
1009 TextureBuffer[7].Y:= 0; |
|
1010 TextureBuffer[6].X:= TextureBuffer[7].X; |
|
1011 TextureBuffer[6].Y:= SpritesData[sprite].Texture^.ry; |
|
1012 |
|
1013 |
|
1014 SetVertexPointer(@VertexBuffer[0], 8); |
|
1015 SetTexCoordPointer(@TextureBuffer[0], 8); |
|
1016 |
|
1017 {$IFDEF GL2} |
|
1018 UpdateModelviewProjection; |
|
1019 {$ENDIF} |
|
1020 |
|
1021 glDrawArrays(GL_TRIANGLE_STRIP, 0, 8); |
|
1022 end; |
905 |
1023 |
906 untint; |
1024 untint; |
907 |
1025 |
908 {for i:= -1 to cWaterSprCount do |
1026 {for i:= -1 to cWaterSprCount do |
909 DrawSprite(sprWater, |
1027 DrawSprite(sprWater, |
1362 tdx, tdy: Double; |
1480 tdx, tdy: Double; |
1363 s: shortstring; |
1481 s: shortstring; |
1364 offsetX, offsetY, screenBottom: LongInt; |
1482 offsetX, offsetY, screenBottom: LongInt; |
1365 VertexBuffer: array [0..3] of TVertex2f; |
1483 VertexBuffer: array [0..3] of TVertex2f; |
1366 begin |
1484 begin |
|
1485 ScreenBottom:= (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine); |
|
1486 |
|
1487 // note: offsetY is negative! |
|
1488 offsetY:= 5 * max(-145,min(0, CWaterLine + WorldDy - ViewBottomY)); //10 * Min(0, -145 - ScreenBottom); |
|
1489 |
1367 if (cReducedQuality and rqNoBackground) = 0 then |
1490 if (cReducedQuality and rqNoBackground) = 0 then |
1368 begin |
1491 begin |
1369 // Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway |
1492 // Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway |
1370 ScreenBottom:= (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine); |
|
1371 offsetY:= 10 * Min(0, -145 - ScreenBottom); |
|
1372 SkyOffset:= offsetY div 35 + cWaveHeight; |
1493 SkyOffset:= offsetY div 35 + cWaveHeight; |
1373 HorizontOffset:= SkyOffset; |
1494 HorizontOffset:= SkyOffset; |
1374 if ScreenBottom > SkyOffset then |
1495 if ScreenBottom > SkyOffset then |
1375 HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); |
1496 HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); |
1376 |
1497 |
1390 DrawVisualGears(4); |
1511 DrawVisualGears(4); |
1391 |
1512 |
1392 if (cReducedQuality and rq2DWater) = 0 then |
1513 if (cReducedQuality and rq2DWater) = 0 then |
1393 begin |
1514 begin |
1394 // Waves |
1515 // Waves |
1395 DrawWater(255, SkyOffset); |
1516 DrawWater(255, SkyOffset, 0); |
1396 ChangeDepth(RM, -cStereo_Water_distant); |
1517 ChangeDepth(RM, -cStereo_Water_distant); |
1397 DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 64); |
1518 DrawWaves( 1, 0 - WorldDx div 32, offsetY div 35, -49, 64); |
1398 ChangeDepth(RM, -cStereo_Water_distant); |
1519 ChangeDepth(RM, -cStereo_Water_distant); |
1399 DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 48); |
1520 DrawWaves( -1, 25 + WorldDx div 25, offsetY div 38, -37, 48); |
1400 ChangeDepth(RM, -cStereo_Water_distant); |
1521 ChangeDepth(RM, -cStereo_Water_distant); |
1401 DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 32); |
1522 DrawWaves( 1, 75 - WorldDx div 19, offsetY div 45, -23, 32); |
1402 ChangeDepth(RM, -cStereo_Water_distant); |
1523 ChangeDepth(RM, -cStereo_Water_distant); |
1403 DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 24); |
1524 DrawWaves(-1, 100 + WorldDx div 14, offsetY div 70, -7, 24); |
1404 end |
1525 end |
1405 else |
1526 else |
1406 DrawWaves(-1, 100, - (cWaveHeight + (cWaveHeight shr 1)), 0); |
1527 DrawWaves(-1, 100, - cWaveHeight div 2, - cWaveHeight div 2, 0); |
1407 |
1528 |
1408 changeDepth(RM, cStereo_Land); |
1529 changeDepth(RM, cStereo_Land); |
1409 DrawVisualGears(5); |
1530 DrawVisualGears(5); |
1410 DrawLand(WorldDx, WorldDy); |
1531 DrawLand(WorldDx, WorldDy); |
1411 if WorldEdge = weWrap then |
1532 if WorldEdge = weWrap then |
1412 begin |
1533 begin |
1413 DrawLand(WorldDx - playWidth, WorldDy); |
1534 DrawLand(WorldDx - playWidth, WorldDy); |
1414 DrawLand(WorldDx + playWidth, WorldDy); |
1535 DrawLand(WorldDx + playWidth, WorldDy); |
1415 end; |
1536 end; |
1416 |
1537 |
1417 DrawWater(255, 0); |
1538 DrawWater(255, 0, 0); |
1418 |
1539 |
1419 (* |
1540 (* |
1420 // Attack bar |
1541 // Attack bar |
1421 if CurrentTeam <> nil then |
1542 if CurrentTeam <> nil then |
1422 case AttackBar of |
1543 case AttackBar of |
1461 DrawGears; |
1582 DrawGears; |
1462 DrawVisualGears(6); |
1583 DrawVisualGears(6); |
1463 |
1584 |
1464 |
1585 |
1465 if SuddenDeathDmg then |
1586 if SuddenDeathDmg then |
1466 DrawWater(SDWaterOpacity, 0) |
1587 DrawWater(SDWaterOpacity, 0, 0) |
1467 else |
1588 else |
1468 DrawWater(WaterOpacity, 0); |
1589 DrawWater(WaterOpacity, 0, 0); |
1469 |
1590 |
1470 // Waves |
1591 // Waves |
1471 ChangeDepth(RM, cStereo_Water_near); |
1592 ChangeDepth(RM, cStereo_Water_near); |
1472 DrawWaves( 1, 25 - WorldDx div 9, - cWaveHeight, 12); |
1593 DrawWaves( 1, 25 - WorldDx div 9, 0, 0, 12); |
1473 |
1594 |
1474 if (cReducedQuality and rq2DWater) = 0 then |
1595 if (cReducedQuality and rq2DWater) = 0 then |
1475 begin |
1596 begin |
1476 //DrawWater(WaterOpacity, - offsetY div 40); |
1597 //DrawWater(WaterOpacity, - offsetY div 40); |
1477 ChangeDepth(RM, cStereo_Water_near); |
1598 ChangeDepth(RM, cStereo_Water_near); |
1478 DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8); |
1599 DrawWaves(-1, 50 + WorldDx div 6, - offsetY div 40, 23, 8); |
1479 if SuddenDeathDmg then |
1600 if SuddenDeathDmg then |
1480 DrawWater(SDWaterOpacity, - offsetY div 20) |
1601 DrawWater(SDWaterOpacity, - offsetY div 20, 23) |
1481 else |
1602 else |
1482 DrawWater(WaterOpacity, - offsetY div 20); |
1603 DrawWater(WaterOpacity, - offsetY div 20, 23); |
1483 ChangeDepth(RM, cStereo_Water_near); |
1604 ChangeDepth(RM, cStereo_Water_near); |
1484 DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2); |
1605 DrawWaves( 1, 75 - WorldDx div 4, - offsetY div 20, 37, 2); |
1485 if SuddenDeathDmg then |
1606 if SuddenDeathDmg then |
1486 DrawWater(SDWaterOpacity, - offsetY div 10) |
1607 DrawWater(SDWaterOpacity, - offsetY div 10, 47) |
1487 else |
1608 else |
1488 DrawWater(WaterOpacity, - offsetY div 10); |
1609 DrawWater(WaterOpacity, - offsetY div 10, 47); |
1489 ChangeDepth(RM, cStereo_Water_near); |
1610 ChangeDepth(RM, cStereo_Water_near); |
1490 DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0); |
1611 DrawWaves( -1, 25 + WorldDx div 3, - offsetY div 10, 59, 0); |
1491 end |
1612 end |
1492 else |
1613 else |
1493 DrawWaves(-1, 50, - (cWaveHeight shr 1), 0); |
1614 DrawWaves(-1, 50, cWaveHeight div 2, cWaveHeight div 2, 0); |
1494 |
1615 |
1495 // everything after this ChangeDepth will be drawn outside the screen |
1616 // everything after this ChangeDepth will be drawn outside the screen |
1496 // note: negative parallax gears should last very little for a smooth stereo effect |
1617 // note: negative parallax gears should last very little for a smooth stereo effect |
1497 ChangeDepth(RM, cStereo_Outside); |
1618 ChangeDepth(RM, cStereo_Outside); |
1498 if WorldEdge = weWrap then |
1619 if WorldEdge = weWrap then |