| .. | .. |
|---|
| 192 | 192 | |
|---|
| 193 | 193 | /// INTERFACE |
|---|
| 194 | 194 | |
|---|
| 195 | + public boolean IsBoxMode() |
|---|
| 196 | + { |
|---|
| 197 | + return BOXMODE; |
|---|
| 198 | + } |
|---|
| 199 | + |
|---|
| 195 | 200 | public void ClearDepth() |
|---|
| 196 | 201 | { |
|---|
| 197 | 202 | GetGL().glClear(GetGL().GL_DEPTH_BUFFER_BIT); |
|---|
| .. | .. |
|---|
| 566 | 571 | } |
|---|
| 567 | 572 | } |
|---|
| 568 | 573 | |
|---|
| 574 | + /** |
|---|
| 575 | + * <code>draw</code> renders a <code>TriMesh</code> object including |
|---|
| 576 | + * it's normals, colors, textures and vertices. |
|---|
| 577 | + * |
|---|
| 578 | + * @see Renderer#draw(TriMesh) |
|---|
| 579 | + * @param tris |
|---|
| 580 | + * the mesh to render. |
|---|
| 581 | + */ |
|---|
| 582 | + public void DrawParticles(TriMesh geo, Object3D shape, boolean selected, boolean rotate) // TriMesh tris) |
|---|
| 583 | + { |
|---|
| 584 | + CameraPane display = this; |
|---|
| 585 | + |
|---|
| 586 | + float r = display.modelParams0[0]; |
|---|
| 587 | + float g = display.modelParams0[1]; |
|---|
| 588 | + float b = display.modelParams0[2]; |
|---|
| 589 | + float opacity = display.modelParams5[1]; |
|---|
| 590 | + |
|---|
| 591 | + //final GL gl = GLU.getCurrentGL(); |
|---|
| 592 | + GL gl = display.GetGL(); // getGL(); |
|---|
| 593 | + |
|---|
| 594 | + FloatBuffer vertBuf = geo.vertBuf; |
|---|
| 595 | + |
|---|
| 596 | + int v = vertBuf.capacity(); |
|---|
| 597 | + |
|---|
| 598 | + int count = 0; |
|---|
| 599 | + |
|---|
| 600 | + boolean cf = gl.glIsEnabled(gl.GL_CULL_FACE); |
|---|
| 601 | + gl.glEnable(gl.GL_CULL_FACE); |
|---|
| 602 | + // gl.glScalef(1.0f/1024,1.0f/1024,1.0f/1024); |
|---|
| 603 | + for (int i=0; i<v/3; i++) |
|---|
| 604 | + { |
|---|
| 605 | + int index3 = i*3; |
|---|
| 606 | + |
|---|
| 607 | + if (geo.sizeBuf.get(index3+1) == 0) |
|---|
| 608 | + continue; |
|---|
| 609 | + |
|---|
| 610 | + count++; |
|---|
| 611 | + |
|---|
| 612 | + int index4 = i*4; |
|---|
| 613 | + |
|---|
| 614 | + float tx = vertBuf.get(index3); |
|---|
| 615 | + float ty = vertBuf.get(index3+1); |
|---|
| 616 | + float tz = vertBuf.get(index3+2); |
|---|
| 617 | + |
|---|
| 618 | + // if (tx == 0 && ty == 0 && tz == 0) |
|---|
| 619 | + // continue; |
|---|
| 620 | + |
|---|
| 621 | + gl.glMatrixMode(gl.GL_TEXTURE); |
|---|
| 622 | + gl.glPushMatrix(); |
|---|
| 623 | + |
|---|
| 624 | + float[] texmat = geo.texmat; |
|---|
| 625 | + texmat[12] = texmat[13] = texmat[14] = i; |
|---|
| 626 | + |
|---|
| 627 | + gl.glMultMatrixf(texmat, 0); |
|---|
| 628 | + |
|---|
| 629 | + gl.glMatrixMode(gl.GL_MODELVIEW); |
|---|
| 630 | + gl.glPushMatrix(); |
|---|
| 631 | + |
|---|
| 632 | + gl.glTranslatef(tx,ty,tz); |
|---|
| 633 | + |
|---|
| 634 | + if (rotate) |
|---|
| 635 | + gl.glRotatef(i, 0, 1, 0); |
|---|
| 636 | + |
|---|
| 637 | + float size = geo.sizeBuf.get(index3) / 100; |
|---|
| 638 | + gl.glScalef(size,size,size); |
|---|
| 639 | + |
|---|
| 640 | + float cr = geo.colorBuf.get(index4); |
|---|
| 641 | + float cg = geo.colorBuf.get(index4+1); |
|---|
| 642 | + float cb = geo.colorBuf.get(index4+2); |
|---|
| 643 | + float ca = geo.colorBuf.get(index4+3); |
|---|
| 644 | + |
|---|
| 645 | + display.modelParams0[0] = r * cr; |
|---|
| 646 | + display.modelParams0[1] = g * cg; |
|---|
| 647 | + display.modelParams0[2] = b * cb; |
|---|
| 648 | + |
|---|
| 649 | + display.modelParams5[1] = opacity * ca; |
|---|
| 650 | + |
|---|
| 651 | + gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 0, display.modelParams0, 0); |
|---|
| 652 | + gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 5, display.modelParams5, 0); |
|---|
| 653 | + |
|---|
| 654 | + RandomNode.globalseed = (int)geo.sizeBuf.get(index3+2); // i; |
|---|
| 655 | + RandomNode.globalseed2 = RandomNode.globalseed; |
|---|
| 656 | + |
|---|
| 657 | +// gl.glColor4f(cr,cg,cb,ca); |
|---|
| 658 | + // gl.glScalef(1024/16,1024/16,1024/16); |
|---|
| 659 | + shape.Draw/*Node*/(display,null,selected,false); // blocked |
|---|
| 660 | + // gl.glScalef(16.0f/1024,16.0f/1024,16.0f/1024); |
|---|
| 661 | + //gl.glTranslatef(-tx,-ty,-tz); |
|---|
| 662 | + gl.glPopMatrix(); |
|---|
| 663 | + |
|---|
| 664 | + gl.glMatrixMode(gl.GL_TEXTURE); |
|---|
| 665 | + gl.glPopMatrix(); |
|---|
| 666 | + } |
|---|
| 667 | + // gl.glScalef(1024,1024,1024); |
|---|
| 668 | + if (!cf) |
|---|
| 669 | + gl.glDisable(gl.GL_CULL_FACE); |
|---|
| 670 | + |
|---|
| 671 | + display.modelParams0[0] = r; |
|---|
| 672 | + display.modelParams0[1] = g; |
|---|
| 673 | + display.modelParams0[2] = b; |
|---|
| 674 | + |
|---|
| 675 | + display.modelParams5[1] = opacity; |
|---|
| 676 | + |
|---|
| 677 | + gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 0, display.modelParams0, 0); |
|---|
| 678 | + gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 5, display.modelParams5, 0); |
|---|
| 679 | + |
|---|
| 680 | + gl.glMatrixMode(gl.GL_MODELVIEW); |
|---|
| 681 | + |
|---|
| 682 | +// System.err.println("total = " + v/3 + "; displayed = " + count); |
|---|
| 683 | + if (true) |
|---|
| 684 | + return; |
|---|
| 685 | + |
|---|
| 686 | +//// if (!tris.predraw(this)) |
|---|
| 687 | +//// { |
|---|
| 688 | +//// return; |
|---|
| 689 | +//// } |
|---|
| 690 | +//// if (Debug.stats) |
|---|
| 691 | +//// { |
|---|
| 692 | +//// StatCollector.addStat(StatType.STAT_TRIANGLE_COUNT, tris.getTriangleCount()); |
|---|
| 693 | +//// StatCollector.addStat(StatType.STAT_VERTEX_COUNT, tris.getVertexCount()); |
|---|
| 694 | +//// StatCollector.addStat(StatType.STAT_GEOM_COUNT, 1); |
|---|
| 695 | +//// } |
|---|
| 696 | +//// |
|---|
| 697 | +//// if (tris.getDisplayListID() != -1) |
|---|
| 698 | +//// { |
|---|
| 699 | +//// renderDisplayList(tris); |
|---|
| 700 | +//// return; |
|---|
| 701 | +//// } |
|---|
| 702 | +//// |
|---|
| 703 | +//// if (!generatingDisplayList) |
|---|
| 704 | +//// { |
|---|
| 705 | +//// applyStates(tris.states, tris); |
|---|
| 706 | +//// } |
|---|
| 707 | +//// if (Debug.stats) |
|---|
| 708 | +//// { |
|---|
| 709 | +//// StatCollector.startStat(StatType.STAT_RENDER_TIMER); |
|---|
| 710 | +//// } |
|---|
| 711 | +//// boolean transformed = doTransforms(tris); |
|---|
| 712 | +// |
|---|
| 713 | +// int glMode = GL.GL_TRIANGLES; |
|---|
| 714 | +// switch (getMode()) |
|---|
| 715 | +// { |
|---|
| 716 | +// case Triangles: |
|---|
| 717 | +// glMode = GL.GL_TRIANGLES; |
|---|
| 718 | +// break; |
|---|
| 719 | +// case Strip: |
|---|
| 720 | +// glMode = GL.GL_TRIANGLE_STRIP; |
|---|
| 721 | +// break; |
|---|
| 722 | +// case Fan: |
|---|
| 723 | +// glMode = GL.GL_TRIANGLE_FAN; |
|---|
| 724 | +// break; |
|---|
| 725 | +// } |
|---|
| 726 | +// |
|---|
| 727 | +// if (!predrawGeometry(gl)) |
|---|
| 728 | +// { |
|---|
| 729 | +// // make sure only the necessary indices are sent through on old |
|---|
| 730 | +// // cards. |
|---|
| 731 | +// IntBuffer indices = this.getIndexBuffer(); |
|---|
| 732 | +// if (indices == null) |
|---|
| 733 | +// { |
|---|
| 734 | +// logger.severe("missing indices on geometry object: " + this.toString()); |
|---|
| 735 | +// } else |
|---|
| 736 | +// { |
|---|
| 737 | +// indices.rewind(); |
|---|
| 738 | +// indices.limit(this.getMaxIndex()); |
|---|
| 739 | +// |
|---|
| 740 | +// gl.glDrawElements(glMode, indices.limit(), GL.GL_UNSIGNED_INT, indices); // TODO Check <count> and assumed <type> of GL_UNSIGNED_INT |
|---|
| 741 | +// |
|---|
| 742 | +// indices.clear(); |
|---|
| 743 | +// } |
|---|
| 744 | +// } else |
|---|
| 745 | +// { |
|---|
| 746 | +// gl.glDrawElements(glMode, this.getIndexBuffer().limit(), |
|---|
| 747 | +// GL.GL_UNSIGNED_INT, 0); |
|---|
| 748 | +// } |
|---|
| 749 | +// |
|---|
| 750 | +//// postdrawGeometry(tris); |
|---|
| 751 | +//// if (transformed) |
|---|
| 752 | +//// { |
|---|
| 753 | +//// undoTransforms(tris); |
|---|
| 754 | +//// } |
|---|
| 755 | +//// |
|---|
| 756 | +//// if (Debug.stats) |
|---|
| 757 | +//// { |
|---|
| 758 | +//// StatCollector.endStat(StatType.STAT_RENDER_TIMER); |
|---|
| 759 | +//// } |
|---|
| 760 | +//// tris.postdraw(this); |
|---|
| 761 | + } |
|---|
| 762 | + |
|---|
| 569 | 763 | /// INTERFACE |
|---|
| 570 | 764 | |
|---|
| 571 | 765 | void SetColor(Object3D obj, Vertex p0) |
|---|
| .. | .. |
|---|
| 16 | 16 | frame = 0; |
|---|
| 17 | 17 | } |
|---|
| 18 | 18 | |
|---|
| 19 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 19 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 20 | 20 | { |
|---|
| 21 | 21 | while (realframe == 0) |
|---|
| 22 | 22 | { |
|---|
| .. | .. |
|---|
| 136 | 136 | } |
|---|
| 137 | 137 | private static float[] glMat = new float[16]; |
|---|
| 138 | 138 | |
|---|
| 139 | | - static public void drawOpenGL(CameraPane display, Transform trans, CollisionShape shape, Vector3f color, int debugMode) { |
|---|
| 139 | + static public void drawOpenGL(iCameraPane display, Transform trans, CollisionShape shape, Vector3f color, int debugMode) { |
|---|
| 140 | 140 | ObjectPool<Transform> transformsPool = ObjectPool.get(Transform.class); |
|---|
| 141 | 141 | ObjectPool<Vector3f> vectorsPool = ObjectPool.get(Vector3f.class); |
|---|
| 142 | 142 | |
|---|
| 143 | 143 | //System.out.println("shape="+shape+" type="+BroadphaseNativeTypes.forValue(shape.getShapeType())); |
|---|
| 144 | 144 | |
|---|
| 145 | | - GL gl = display.getGL(); |
|---|
| 145 | + GL gl = display.GetGL(); |
|---|
| 146 | 146 | |
|---|
| 147 | 147 | gl.glPushMatrix(); |
|---|
| 148 | 148 | trans.getOpenGLMatrix(glMat); |
|---|
| .. | .. |
|---|
| 550 | 550 | private static Map<SphereKey, Integer> sphereDisplayLists = new HashMap<SphereKey, Integer>(); |
|---|
| 551 | 551 | private static SphereKey sphereKey = new SphereKey(); |
|---|
| 552 | 552 | |
|---|
| 553 | | - static public void drawSphere(CameraPane display, float radius, int slices, int stacks) |
|---|
| 553 | + static public void drawSphere(iCameraPane display, float radius, int slices, int stacks) |
|---|
| 554 | 554 | { |
|---|
| 555 | | - GL gl = display.getGL(); |
|---|
| 555 | + GL gl = display.GetGL(); |
|---|
| 556 | 556 | |
|---|
| 557 | 557 | sphereKey.radius = radius; |
|---|
| 558 | 558 | Integer glList = sphereDisplayLists.get(sphereKey); |
|---|
| .. | .. |
|---|
| 622 | 622 | private static Map<CylinderKey, Integer> cylinderDisplayLists = new HashMap<CylinderKey, Integer>(); |
|---|
| 623 | 623 | private static CylinderKey cylinderKey = new CylinderKey(); |
|---|
| 624 | 624 | |
|---|
| 625 | | - static public void drawCylinder(CameraPane display, float radius, float halfHeight, int upAxis) |
|---|
| 625 | + static public void drawCylinder(iCameraPane display, float radius, float halfHeight, int upAxis) |
|---|
| 626 | 626 | { |
|---|
| 627 | | - GL gl = display.getGL(); |
|---|
| 627 | + GL gl = display.GetGL(); |
|---|
| 628 | 628 | |
|---|
| 629 | 629 | gl.glPushMatrix(); |
|---|
| 630 | 630 | switch (upAxis) |
|---|
| .. | .. |
|---|
| 314 | 314 | bRep = null; |
|---|
| 315 | 315 | } |
|---|
| 316 | 316 | |
|---|
| 317 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 317 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 318 | 318 | { |
|---|
| 319 | 319 | // super.DrawNode(display,root,selected); |
|---|
| 320 | 320 | |
|---|
| .. | .. |
|---|
| 451 | 451 | int startvertex; |
|---|
| 452 | 452 | int currentobject; |
|---|
| 453 | 453 | |
|---|
| 454 | | - public void renderme(CameraPane display) |
|---|
| 454 | + public void renderme(iCameraPane display) |
|---|
| 455 | 455 | { |
|---|
| 456 | | - GL gl = display!=null?display.getGL():null; |
|---|
| 456 | + GL gl = display!=null?display.GetGL():null; |
|---|
| 457 | 457 | |
|---|
| 458 | 458 | // gl0 = gl; |
|---|
| 459 | 459 | if (GetDynamicsWorld() != null) |
|---|
| .. | .. |
|---|
| 796 | 796 | } |
|---|
| 797 | 797 | } |
|---|
| 798 | 798 | |
|---|
| 799 | | - public void drawCube(CameraPane display, float extent) |
|---|
| 799 | + public void drawCube(iCameraPane display, float extent) |
|---|
| 800 | 800 | { |
|---|
| 801 | | - GL gl = display.getGL(); |
|---|
| 801 | + GL gl = display.GetGL(); |
|---|
| 802 | 802 | |
|---|
| 803 | 803 | extent = extent * 0.5f; |
|---|
| 804 | 804 | |
|---|
| .. | .. |
|---|
| 838 | 838 | |
|---|
| 839 | 839 | private /*static*/ float[] glMat = new float[16]; |
|---|
| 840 | 840 | |
|---|
| 841 | | - public void drawOpenGL(CameraPane display, Transform trans, CollisionShape shape, Vector3f color, int debugMode) |
|---|
| 841 | + public void drawOpenGL(iCameraPane display, Transform trans, CollisionShape shape, Vector3f color, int debugMode) |
|---|
| 842 | 842 | { |
|---|
| 843 | 843 | GL gl = null; // display.getGL(); |
|---|
| 844 | 844 | |
|---|
| .. | .. |
|---|
| 1522 | 1522 | private static Map<SphereKey, Integer> sphereDisplayLists = new HashMap<SphereKey, Integer>(); |
|---|
| 1523 | 1523 | private static SphereKey sphereKey = new SphereKey(); |
|---|
| 1524 | 1524 | |
|---|
| 1525 | | - public void drawSphere(CameraPane display, float radius, int slices, int stacks) |
|---|
| 1525 | + public void drawSphere(iCameraPane display, float radius, int slices, int stacks) |
|---|
| 1526 | 1526 | { |
|---|
| 1527 | | - GL gl = display.getGL(); |
|---|
| 1527 | + GL gl = display.GetGL(); |
|---|
| 1528 | 1528 | |
|---|
| 1529 | 1529 | sphereKey.radius = radius; |
|---|
| 1530 | 1530 | Integer glList = sphereDisplayLists.get(sphereKey); |
|---|
| .. | .. |
|---|
| 1594 | 1594 | private static Map<CylinderKey, Integer> cylinderDisplayLists = new HashMap<CylinderKey, Integer>(); |
|---|
| 1595 | 1595 | private static CylinderKey cylinderKey = new CylinderKey(); |
|---|
| 1596 | 1596 | |
|---|
| 1597 | | - public void drawCylinder(CameraPane display, float radius, float halfHeight, int upAxis) |
|---|
| 1597 | + public void drawCylinder(iCameraPane display, float radius, float halfHeight, int upAxis) |
|---|
| 1598 | 1598 | { |
|---|
| 1599 | | - GL gl = display.getGL(); |
|---|
| 1599 | + GL gl = display.GetGL(); |
|---|
| 1600 | 1600 | |
|---|
| 1601 | 1601 | gl.glPushMatrix(); |
|---|
| 1602 | 1602 | switch (upAxis) |
|---|
| .. | .. |
|---|
| 75 | 75 | { |
|---|
| 76 | 76 | static final long serialVersionUID = 0; |
|---|
| 77 | 77 | |
|---|
| 78 | | - abstract void DrawParticles(CameraPane display, Object3D geo, boolean selected, boolean rotate); |
|---|
| 78 | + abstract void DrawParticles(iCameraPane display, Object3D geo, boolean selected, boolean rotate); |
|---|
| 79 | 79 | |
|---|
| 80 | 80 | private static final Logger logger = Logger.getLogger(Geometry.class.getName()); |
|---|
| 81 | 81 | // private static final long serialVersionUID = 1; |
|---|
| .. | .. |
|---|
| 135 | 135 | |
|---|
| 136 | 136 | // ObjectArrayList<Transform> initialmatrices; |
|---|
| 137 | 137 | |
|---|
| 138 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 138 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 139 | 139 | { |
|---|
| 140 | 140 | //if (support == null) |
|---|
| 141 | 141 | // System.err.println("DrawNode Merge # " + ((Mocap)object).frame); |
|---|
| .. | .. |
|---|
| 42 | 42 | morphobject.count = 1; // hide |
|---|
| 43 | 43 | } |
|---|
| 44 | 44 | |
|---|
| 45 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 45 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 46 | 46 | { |
|---|
| 47 | 47 | //System.err.println("Frame # " + frame); |
|---|
| 48 | 48 | |
|---|
| .. | .. |
|---|
| 344 | 344 | } |
|---|
| 345 | 345 | } |
|---|
| 346 | 346 | |
|---|
| 347 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 347 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 348 | 348 | { |
|---|
| 349 | | - if (display.DrawMode() == display.SELECTION || display.BOXMODE) |
|---|
| 349 | + if (display.DrawMode() == display.SELECTION || display.IsBoxMode()) |
|---|
| 350 | 350 | return; // hum... |
|---|
| 351 | 351 | |
|---|
| 352 | 352 | Object3D geo = test; |
|---|
| .. | .. |
|---|
| 108 | 108 | |
|---|
| 109 | 109 | float totalms = 0; |
|---|
| 110 | 110 | |
|---|
| 111 | | - void drawSelf(CameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked) |
|---|
| 111 | + void drawSelf(iCameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked) |
|---|
| 112 | 112 | { |
|---|
| 113 | 113 | if (Globals.isLIVE() && live && display.DrawMode() == display.SHADOW) // FUCK |
|---|
| 114 | 114 | { |
|---|
| .. | .. |
|---|
| 1785 | 1785 | return live; |
|---|
| 1786 | 1786 | } |
|---|
| 1787 | 1787 | |
|---|
| 1788 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 1788 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 1789 | 1789 | { |
|---|
| 1790 | 1790 | if (CameraPane.ABORTED) |
|---|
| 1791 | 1791 | { |
|---|
| .. | .. |
|---|
| 46 | 46 | |
|---|
| 47 | 47 | transient boolean toggleneutral; |
|---|
| 48 | 48 | |
|---|
| 49 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 49 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 50 | 50 | { |
|---|
| 51 | 51 | //System.err.println("Frame # " + frame); |
|---|
| 52 | 52 | |
|---|
| .. | .. |
|---|
| 70 | 70 | */ |
|---|
| 71 | 71 | public class TriMesh extends Geometry implements Serializable |
|---|
| 72 | 72 | { |
|---|
| 73 | + /** |
|---|
| 74 | + * <code>draw</code> renders a <code>TriMesh</code> object including |
|---|
| 75 | + * it's normals, colors, textures and vertices. |
|---|
| 76 | + * |
|---|
| 77 | + * @see Renderer#draw(TriMesh) |
|---|
| 78 | + * @param tris |
|---|
| 79 | + * the mesh to render. |
|---|
| 80 | + */ |
|---|
| 81 | + void DrawParticles(iCameraPane display, Object3D geo, boolean selected, boolean rotate) // TriMesh tris) |
|---|
| 82 | + { |
|---|
| 83 | + display.DrawParticles(this, geo, selected, rotate); |
|---|
| 84 | + } |
|---|
| 85 | + |
|---|
| 73 | 86 | static final long serialVersionUID = 0; |
|---|
| 74 | 87 | |
|---|
| 75 | 88 | boolean IsStatic() |
|---|
| 76 | 89 | { |
|---|
| 77 | 90 | return false; |
|---|
| 78 | 91 | } |
|---|
| 92 | + |
|---|
| 79 | 93 | private static final Logger logger = Logger.getLogger(TriMesh.class.getName()); |
|---|
| 94 | + |
|---|
| 80 | 95 | // private static final long serialVersionUID = 2L; |
|---|
| 81 | 96 | public enum Mode |
|---|
| 82 | 97 | { |
|---|
| .. | .. |
|---|
| 270 | 285 | |
|---|
| 271 | 286 | float[] texmat = { 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 }; |
|---|
| 272 | 287 | |
|---|
| 273 | | - // super.DrawNode(...); |
|---|
| 274 | | - /** |
|---|
| 275 | | - * <code>draw</code> renders a <code>TriMesh</code> object including |
|---|
| 276 | | - * it's normals, colors, textures and vertices. |
|---|
| 277 | | - * |
|---|
| 278 | | - * @see Renderer#draw(TriMesh) |
|---|
| 279 | | - * @param tris |
|---|
| 280 | | - * the mesh to render. |
|---|
| 281 | | - */ |
|---|
| 282 | | - void DrawParticles(CameraPane display, Object3D geo, boolean selected, boolean rotate) // TriMesh tris) |
|---|
| 283 | | - { |
|---|
| 284 | | - float r = display.modelParams0[0]; |
|---|
| 285 | | - float g = display.modelParams0[1]; |
|---|
| 286 | | - float b = display.modelParams0[2]; |
|---|
| 287 | | - float opacity = display.modelParams5[1]; |
|---|
| 288 | | - |
|---|
| 289 | | - //final GL gl = GLU.getCurrentGL(); |
|---|
| 290 | | - GL gl = display.GetGL(); // getGL(); |
|---|
| 291 | | - |
|---|
| 292 | | - int v = vertBuf.capacity(); |
|---|
| 293 | | - |
|---|
| 294 | | - int count = 0; |
|---|
| 295 | | - |
|---|
| 296 | | - boolean cf = gl.glIsEnabled(gl.GL_CULL_FACE); |
|---|
| 297 | | - gl.glEnable(gl.GL_CULL_FACE); |
|---|
| 298 | | - // gl.glScalef(1.0f/1024,1.0f/1024,1.0f/1024); |
|---|
| 299 | | - for (int i=0; i<v/3; i++) |
|---|
| 300 | | - { |
|---|
| 301 | | - int index3 = i*3; |
|---|
| 302 | | - |
|---|
| 303 | | - if (sizeBuf.get(index3+1) == 0) |
|---|
| 304 | | - continue; |
|---|
| 305 | | - |
|---|
| 306 | | - count++; |
|---|
| 307 | | - |
|---|
| 308 | | - int index4 = i*4; |
|---|
| 309 | | - |
|---|
| 310 | | - float tx = vertBuf.get(index3); |
|---|
| 311 | | - float ty = vertBuf.get(index3+1); |
|---|
| 312 | | - float tz = vertBuf.get(index3+2); |
|---|
| 313 | | - |
|---|
| 314 | | - // if (tx == 0 && ty == 0 && tz == 0) |
|---|
| 315 | | - // continue; |
|---|
| 316 | | - |
|---|
| 317 | | - gl.glMatrixMode(gl.GL_TEXTURE); |
|---|
| 318 | | - gl.glPushMatrix(); |
|---|
| 319 | | - texmat[12] = texmat[13] = texmat[14] = i; |
|---|
| 320 | | - |
|---|
| 321 | | - gl.glMultMatrixf(texmat, 0); |
|---|
| 322 | | - |
|---|
| 323 | | - gl.glMatrixMode(gl.GL_MODELVIEW); |
|---|
| 324 | | - gl.glPushMatrix(); |
|---|
| 325 | | - |
|---|
| 326 | | - gl.glTranslatef(tx,ty,tz); |
|---|
| 327 | | - |
|---|
| 328 | | - if (rotate) |
|---|
| 329 | | - gl.glRotatef(i, 0, 1, 0); |
|---|
| 330 | | - |
|---|
| 331 | | - float size = sizeBuf.get(index3) / 100; |
|---|
| 332 | | - gl.glScalef(size,size,size); |
|---|
| 333 | | - |
|---|
| 334 | | - float cr = colorBuf.get(index4); |
|---|
| 335 | | - float cg = colorBuf.get(index4+1); |
|---|
| 336 | | - float cb = colorBuf.get(index4+2); |
|---|
| 337 | | - float ca = colorBuf.get(index4+3); |
|---|
| 338 | | - |
|---|
| 339 | | - display.modelParams0[0] = r * cr; |
|---|
| 340 | | - display.modelParams0[1] = g * cg; |
|---|
| 341 | | - display.modelParams0[2] = b * cb; |
|---|
| 342 | | - |
|---|
| 343 | | - display.modelParams5[1] = opacity * ca; |
|---|
| 344 | | - |
|---|
| 345 | | - gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 0, display.modelParams0, 0); |
|---|
| 346 | | - gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 5, display.modelParams5, 0); |
|---|
| 347 | | - |
|---|
| 348 | | - RandomNode.globalseed = (int)sizeBuf.get(index3+2); // i; |
|---|
| 349 | | - RandomNode.globalseed2 = RandomNode.globalseed; |
|---|
| 350 | | - |
|---|
| 351 | | -// gl.glColor4f(cr,cg,cb,ca); |
|---|
| 352 | | - // gl.glScalef(1024/16,1024/16,1024/16); |
|---|
| 353 | | - geo.Draw/*Node*/(display,null,selected,false); // blocked |
|---|
| 354 | | - // gl.glScalef(16.0f/1024,16.0f/1024,16.0f/1024); |
|---|
| 355 | | - //gl.glTranslatef(-tx,-ty,-tz); |
|---|
| 356 | | - gl.glPopMatrix(); |
|---|
| 357 | | - |
|---|
| 358 | | - gl.glMatrixMode(gl.GL_TEXTURE); |
|---|
| 359 | | - gl.glPopMatrix(); |
|---|
| 360 | | - } |
|---|
| 361 | | - // gl.glScalef(1024,1024,1024); |
|---|
| 362 | | - if (!cf) |
|---|
| 363 | | - gl.glDisable(gl.GL_CULL_FACE); |
|---|
| 364 | | - |
|---|
| 365 | | - display.modelParams0[0] = r; |
|---|
| 366 | | - display.modelParams0[1] = g; |
|---|
| 367 | | - display.modelParams0[2] = b; |
|---|
| 368 | | - |
|---|
| 369 | | - display.modelParams5[1] = opacity; |
|---|
| 370 | | - |
|---|
| 371 | | - gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 0, display.modelParams0, 0); |
|---|
| 372 | | - gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 5, display.modelParams5, 0); |
|---|
| 373 | | - |
|---|
| 374 | | - gl.glMatrixMode(gl.GL_MODELVIEW); |
|---|
| 375 | | - |
|---|
| 376 | | -// System.err.println("total = " + v/3 + "; displayed = " + count); |
|---|
| 377 | | - if (true) |
|---|
| 378 | | - return; |
|---|
| 379 | | - |
|---|
| 380 | | -//// if (!tris.predraw(this)) |
|---|
| 381 | | -//// { |
|---|
| 382 | | -//// return; |
|---|
| 383 | | -//// } |
|---|
| 384 | | -//// if (Debug.stats) |
|---|
| 385 | | -//// { |
|---|
| 386 | | -//// StatCollector.addStat(StatType.STAT_TRIANGLE_COUNT, tris.getTriangleCount()); |
|---|
| 387 | | -//// StatCollector.addStat(StatType.STAT_VERTEX_COUNT, tris.getVertexCount()); |
|---|
| 388 | | -//// StatCollector.addStat(StatType.STAT_GEOM_COUNT, 1); |
|---|
| 389 | | -//// } |
|---|
| 390 | | -//// |
|---|
| 391 | | -//// if (tris.getDisplayListID() != -1) |
|---|
| 392 | | -//// { |
|---|
| 393 | | -//// renderDisplayList(tris); |
|---|
| 394 | | -//// return; |
|---|
| 395 | | -//// } |
|---|
| 396 | | -//// |
|---|
| 397 | | -//// if (!generatingDisplayList) |
|---|
| 398 | | -//// { |
|---|
| 399 | | -//// applyStates(tris.states, tris); |
|---|
| 400 | | -//// } |
|---|
| 401 | | -//// if (Debug.stats) |
|---|
| 402 | | -//// { |
|---|
| 403 | | -//// StatCollector.startStat(StatType.STAT_RENDER_TIMER); |
|---|
| 404 | | -//// } |
|---|
| 405 | | -//// boolean transformed = doTransforms(tris); |
|---|
| 406 | | -// |
|---|
| 407 | | -// int glMode = GL.GL_TRIANGLES; |
|---|
| 408 | | -// switch (getMode()) |
|---|
| 409 | | -// { |
|---|
| 410 | | -// case Triangles: |
|---|
| 411 | | -// glMode = GL.GL_TRIANGLES; |
|---|
| 412 | | -// break; |
|---|
| 413 | | -// case Strip: |
|---|
| 414 | | -// glMode = GL.GL_TRIANGLE_STRIP; |
|---|
| 415 | | -// break; |
|---|
| 416 | | -// case Fan: |
|---|
| 417 | | -// glMode = GL.GL_TRIANGLE_FAN; |
|---|
| 418 | | -// break; |
|---|
| 419 | | -// } |
|---|
| 420 | | -// |
|---|
| 421 | | -// if (!predrawGeometry(gl)) |
|---|
| 422 | | -// { |
|---|
| 423 | | -// // make sure only the necessary indices are sent through on old |
|---|
| 424 | | -// // cards. |
|---|
| 425 | | -// IntBuffer indices = this.getIndexBuffer(); |
|---|
| 426 | | -// if (indices == null) |
|---|
| 427 | | -// { |
|---|
| 428 | | -// logger.severe("missing indices on geometry object: " + this.toString()); |
|---|
| 429 | | -// } else |
|---|
| 430 | | -// { |
|---|
| 431 | | -// indices.rewind(); |
|---|
| 432 | | -// indices.limit(this.getMaxIndex()); |
|---|
| 433 | | -// |
|---|
| 434 | | -// gl.glDrawElements(glMode, indices.limit(), GL.GL_UNSIGNED_INT, indices); // TODO Check <count> and assumed <type> of GL_UNSIGNED_INT |
|---|
| 435 | | -// |
|---|
| 436 | | -// indices.clear(); |
|---|
| 437 | | -// } |
|---|
| 438 | | -// } else |
|---|
| 439 | | -// { |
|---|
| 440 | | -// gl.glDrawElements(glMode, this.getIndexBuffer().limit(), |
|---|
| 441 | | -// GL.GL_UNSIGNED_INT, 0); |
|---|
| 442 | | -// } |
|---|
| 443 | | -// |
|---|
| 444 | | -//// postdrawGeometry(tris); |
|---|
| 445 | | -//// if (transformed) |
|---|
| 446 | | -//// { |
|---|
| 447 | | -//// undoTransforms(tris); |
|---|
| 448 | | -//// } |
|---|
| 449 | | -//// |
|---|
| 450 | | -//// if (Debug.stats) |
|---|
| 451 | | -//// { |
|---|
| 452 | | -//// StatCollector.endStat(StatType.STAT_RENDER_TIMER); |
|---|
| 453 | | -//// } |
|---|
| 454 | | -//// tris.postdraw(this); |
|---|
| 455 | | - } |
|---|
| 456 | | - |
|---|
| 457 | 288 | final boolean supportsVBO = false; |
|---|
| 458 | 289 | private FloatBuffer prevVerts; |
|---|
| 459 | 290 | |
|---|
| .. | .. |
|---|
| 484 | 484 | |
|---|
| 485 | 485 | } |
|---|
| 486 | 486 | |
|---|
| 487 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 487 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 488 | 488 | { |
|---|
| 489 | 489 | // super.DrawNode(display,root,selected); |
|---|
| 490 | 490 | |
|---|
| .. | .. |
|---|
| 526 | 526 | return debugMode; |
|---|
| 527 | 527 | } |
|---|
| 528 | 528 | |
|---|
| 529 | | - public void renderme0(CameraPane display) |
|---|
| 529 | + public void renderme0(iCameraPane display) |
|---|
| 530 | 530 | { |
|---|
| 531 | 531 | //updateCamera(); |
|---|
| 532 | | - GL gl = display.getGL(); |
|---|
| 532 | + GL gl = display.GetGL(); |
|---|
| 533 | 533 | |
|---|
| 534 | 534 | if (dynamicsWorld != null) { |
|---|
| 535 | 535 | int numObjects = dynamicsWorld.getNumCollisionObjects(); |
|---|
| .. | .. |
|---|
| 755 | 755 | |
|---|
| 756 | 756 | // // to be implemented by the demo |
|---|
| 757 | 757 | // @Override |
|---|
| 758 | | - public void renderme(CameraPane display) |
|---|
| 758 | + public void renderme(iCameraPane display) |
|---|
| 759 | 759 | { |
|---|
| 760 | 760 | // updateCamera(); |
|---|
| 761 | 761 | |
|---|
| .. | .. |
|---|
| 484 | 484 | } |
|---|
| 485 | 485 | |
|---|
| 486 | 486 | |
|---|
| 487 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 487 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
|---|
| 488 | 488 | { |
|---|
| 489 | 489 | // ?????? if (size() > 0) |
|---|
| 490 | 490 | // { |
|---|
| .. | .. |
|---|
| 543 | 543 | } |
|---|
| 544 | 544 | |
|---|
| 545 | 545 | // serial lost |
|---|
| 546 | | - void DrawNode0(CameraPane display) |
|---|
| 546 | + void DrawNode0(iCameraPane display) |
|---|
| 547 | 547 | { |
|---|
| 548 | 548 | super.DrawNode(display, null, false); |
|---|
| 549 | 549 | } |
|---|
| 550 | 550 | |
|---|
| 551 | 551 | |
|---|
| 552 | | - void DrawNode/*notused*/(CameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 552 | + void DrawNode/*notused*/(iCameraPane display, Object3D /*Composite*/ root, boolean selected) |
|---|
| 553 | 553 | { |
|---|
| 554 | 554 | // assert displaylist == -1; |
|---|
| 555 | 555 | |
|---|
| .. | .. |
|---|
| 5 | 5 | static final public int SELECTION = 1; |
|---|
| 6 | 6 | static final public int SHADOW = 2; |
|---|
| 7 | 7 | static final public int OCCLUSION = 3; |
|---|
| 8 | | - |
|---|
| 8 | + |
|---|
| 9 | + boolean IsBoxMode(); |
|---|
| 10 | + |
|---|
| 9 | 11 | void ClearDepth(); |
|---|
| 10 | 12 | |
|---|
| 11 | 13 | void DepthTest(boolean depthtest); |
|---|
| .. | .. |
|---|
| 50 | 52 | void ReleaseTextures(cTexture tex); |
|---|
| 51 | 53 | |
|---|
| 52 | 54 | void DrawFace(Object3D obj, Vertex pv, Vertex qv, Vertex rv, Face face); |
|---|
| 55 | + |
|---|
| 56 | + void DrawParticles(TriMesh geo, Object3D shape, boolean selected, boolean rotate); |
|---|
| 53 | 57 | } |
|---|