public class OpenGLUtils { private static IntBuffer viewport = GLAllocation.createDirectIntBuffer(16); private static FloatBuffer modelview = GLAllocation.createDirectFloatBuffer(16); private static FloatBuffer projection = GLAllocation.createDirectFloatBuffer(16); private static FloatBuffer objectCoords = GLAllocation.createDirectFloatBuffer(3); public static void updateMatrices() { GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelview); GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, projection); GL11.glGetInteger(GL11.GL_VIEWPORT, viewport); } public static Vec3 unproject(float winX, float winY, float winZ) { GLU.gluUnProject(winX, winY, winZ, modelview, projection, viewport, objectCoords); float objectX = objectCoords.get(0); float objectY = objectCoords.get(1); float objectZ = objectCoords.get(2); return Vec3.createVectorHelper(objectX, objectY, objectZ); } }
@SubscribeEvent @SideOnly(Side.CLIENT) public void renderLast(RenderWorldLastEvent evt) { // TODO: while the urbanist is deactivated, this code can be dormant. // it happens to be very expensive at run time, so we need some way // to operate it only when relevant (e.g. in the cycle following a // click request). if (NONRELEASED_BLOCKS) { return; } /** * Note (SpaceToad): Why on earth this thing eventually worked out is a mystery to me. In * particular, all the examples I got computed y in a different way. Anyone with further OpenGL * understanding would be welcome to explain. * * <p>Anyway, the purpose of this code is to store the block position pointed by the mouse at * each frame, relative to the entity that has the camera. * * <p>It got heavily inspire from the two following sources: * http://nehe.gamedev.net/article/using_gluunproject/16013/ #ActiveRenderInfo.updateRenderInfo. * * <p>See EntityUrbanist#rayTraceMouse for a usage example. */ if (modelviewF == null) { modelviewF = GLAllocation.createDirectFloatBuffer(16); projectionF = GLAllocation.createDirectFloatBuffer(16); viewport = GLAllocation.createDirectIntBuffer(16); } GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelviewF); GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, projectionF); GL11.glGetInteger(GL11.GL_VIEWPORT, viewport); float f = (viewport.get(0) + viewport.get(2)) / 2; float f1 = (viewport.get(1) + viewport.get(3)) / 2; float x = Mouse.getX(); float y = Mouse.getY(); // TODO: Minecraft seems to instist to have this winZ re-created at // each frame - looks like a memory leak to me but I couldn't use a // static variable instead, as for the rest. FloatBuffer winZ = GLAllocation.createDirectFloatBuffer(1); GL11.glReadPixels((int) x, (int) y, 1, 1, GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, winZ); GLU.gluUnProject(x, y, winZ.get(), modelviewF, projectionF, viewport, pos); diffX = pos.get(0); diffY = pos.get(1); diffZ = pos.get(2); }
@SideOnly(Side.CLIENT) public class RenderDimDoor extends TileEntitySpecialRenderer { FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); public RenderDimDoor() { if (properties == null) properties = DDProperties.instance(); } private static DDProperties properties = null; /** Renders the dimdoor. */ public void renderDimDoorTileEntity( TileEntityDimDoor tile, double x, double y, double z, float par8) { try { dimDoor .class .cast(Block.blocksList[properties.DimensionalDoorID]) .updateAttatchedTile(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord) .getFullMetadata(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord); } catch (Exception e) { e.printStackTrace(); } // float playerX = (float)this.tileEntityRenderer.playerX; // float playerY = (float)this.tileEntityRenderer.playerY; // float playerZ = (float)this.tileEntityRenderer.playerZ; // float distance = (float) tile.getDistanceFrom(playerX, playerY, playerZ); GL11.glDisable(GL11.GL_LIGHTING); Random rand = new Random(31100L); float var13 = 0.75F; for (int count = 0; count < 16; ++count) { GL11.glPushMatrix(); float var15 = (float) (16 - count); float var16 = 0.2625F; float var17 = 1.0F / (var15 + 1.0F); if (count == 0) { this.bindTextureByName("/RIFT.png"); var17 = 0.1F; var15 = 25.0F; var16 = 0.125F; GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); } if (count == 1) { this.bindTextureByName("/WARP.png"); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); var16 = .5F; } float startY = (float) (+(y + (double) var13)); float ratioY = startY + ActiveRenderInfo.objectY; float ratioY2 = startY + var15 + ActiveRenderInfo.objectY; float yConverted = ratioY / ratioY2; float startZ = (float) (+(z + (double) var13)); float ratioZ = startZ + ActiveRenderInfo.objectZ; float ratioZ2 = startZ + var15 + ActiveRenderInfo.objectZ; float zConverted = ratioZ / ratioZ2; float startX = (float) (+(x + (double) var13)); float ratioX = startX + ActiveRenderInfo.objectX; float ratioX2 = startX + var15 + ActiveRenderInfo.objectX; float xConverted = ratioX / ratioX2; yConverted += (float) (y + (double) var13); xConverted += (float) (x + (double) var13); zConverted += (float) (z + (double) var13); GL11.glTranslatef((float) (Minecraft.getSystemTime() % 200000L) / 200000.0F, 0, 0.0F); GL11.glTranslatef(0, (float) (Minecraft.getSystemTime() % 200000L) / 200000.0F, 0.0F); GL11.glTranslatef(0, 0, (float) (Minecraft.getSystemTime() % 200000L) / 200000.0F); GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); switch ((tile.orientation % 4) + 4) { case 4: GL11.glTexGen( GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); GL11.glTexGen( GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); GL11.glTexGen( GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); GL11.glTexGen( GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); break; case 5: GL11.glTexGen( GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); GL11.glTexGen( GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); GL11.glTexGen( GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); GL11.glTexGen( GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); break; case 6: GL11.glTexGen( GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); GL11.glTexGen( GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); GL11.glTexGen( GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); GL11.glTexGen( GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); break; case 7: GL11.glTexGen( GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); GL11.glTexGen( GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); GL11.glTexGen( GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); GL11.glTexGen( GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); break; } GL11.glEnable(GL11.GL_TEXTURE_GEN_S); GL11.glEnable(GL11.GL_TEXTURE_GEN_T); GL11.glEnable(GL11.GL_TEXTURE_GEN_R); GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); GL11.glLoadIdentity(); GL11.glTranslatef( 0.0F, (float) (Minecraft.getSystemTime() % 200000L) / 200000.0F * var15, 0.0F); GL11.glScalef(var16, var16, var16); GL11.glTranslatef(0.5F, 0.5F, 0.5F); GL11.glRotatef((float) (count * count * 4321 + count * 9) * 2.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.5F, 0.5F, 0.5F); Tessellator var24 = Tessellator.instance; var24.startDrawingQuads(); float var21 = rand.nextFloat() * 0.5F + 0.1F; float var22 = rand.nextFloat() * 0.4F + 0.4F; float var23 = rand.nextFloat() * 0.6F + 0.5F; if (count == 0) { var23 = 1.0F; var22 = 1.0F; yConverted = 1.0F; } var24.setColorRGBA_F(var21 * var17, var22 * var17, var23 * var17, 1.0F); if (tile.openOrClosed) { switch (tile.orientation) { case 0: var24.addVertex(x + .01F, y - 1, z); var24.addVertex(x + .01, y - 1, z + 1.0D); var24.addVertex(x + .01, y + 1, z + 1.0D); var24.addVertex(x + .01, y + 1, z); break; case 1: var24.addVertex(x, y + 1, z + .01); var24.addVertex(x + 1, y + 1, z + .01); var24.addVertex(x + 1, y - 1, z + .01); var24.addVertex(x, y - 1, z + .01); break; case 2: // var24.addVertex(x + .99, y + 1, z); var24.addVertex(x + .99, y + 1, z + 1.0D); var24.addVertex(x + .99, y - 1, z + 1.0D); var24.addVertex(x + .99, y - 1, z); break; case 3: var24.addVertex(x, y - 1, z + .99); var24.addVertex(x + 1, y - 1, z + .99); var24.addVertex(x + 1, y + 1, z + .99); var24.addVertex(x, y + 1, z + .99); break; case 4: // // GL11.glTranslatef(); var24.addVertex(x + .15F, y - 1, z); var24.addVertex(x + .15, y - 1, z + 1.0D); var24.addVertex(x + .15, y + 1, z + 1.0D); var24.addVertex(x + .15, y + 1, z); break; case 5: var24.addVertex(x, y + 1, z + .15); var24.addVertex(x + 1, y + 1, z + .15); var24.addVertex(x + 1, y - 1, z + .15); var24.addVertex(x, y - 1, z + .15); break; case 6: // var24.addVertex(x + .85, y + 1, z); var24.addVertex(x + .85, y + 1, z + 1.0D); var24.addVertex(x + .85, y - 1, z + 1.0D); var24.addVertex(x + .85, y - 1, z); break; case 7: var24.addVertex(x, y - 1, z + .85); var24.addVertex(x + 1, y - 1, z + .85); var24.addVertex(x + 1, y + 1, z + .85); var24.addVertex(x, y + 1, z + .85); break; default: break; } } var24.draw(); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); } GL11.glDisable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_TEXTURE_GEN_S); GL11.glDisable(GL11.GL_TEXTURE_GEN_T); GL11.glDisable(GL11.GL_TEXTURE_GEN_R); GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); GL11.glEnable(GL11.GL_LIGHTING); } private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) { this.field_76908_a.clear(); this.field_76908_a.put(par1).put(par2).put(par3).put(par4); this.field_76908_a.flip(); return this.field_76908_a; } public void renderTileEntityAt( TileEntity par1TileEntity, double par2, double par4, double par6, float par8) { if (properties.DoorRenderingEnabled) { this.renderDimDoorTileEntity((TileEntityDimDoor) par1TileEntity, par2, par4, par6, par8); } } }
public class ClippingHelperImpl extends ClippingHelper { private static ClippingHelperImpl instance = new ClippingHelperImpl(); private FloatBuffer projectionMatrixBuffer = GLAllocation.createDirectFloatBuffer(16); private FloatBuffer modelviewMatrixBuffer = GLAllocation.createDirectFloatBuffer(16); private FloatBuffer field_78564_h = GLAllocation.createDirectFloatBuffer(16); private static final String __OBFID = "CL_00000975"; /** Initialises the ClippingHelper object then returns an instance of it. */ public static ClippingHelper getInstance() { instance.init(); return instance; } /** Normalize the frustum. */ private void normalize(float[][] p_78559_1_, int p_78559_2_) { float var3 = MathHelper.sqrt_float( p_78559_1_[p_78559_2_][0] * p_78559_1_[p_78559_2_][0] + p_78559_1_[p_78559_2_][1] * p_78559_1_[p_78559_2_][1] + p_78559_1_[p_78559_2_][2] * p_78559_1_[p_78559_2_][2]); p_78559_1_[p_78559_2_][0] /= var3; p_78559_1_[p_78559_2_][1] /= var3; p_78559_1_[p_78559_2_][2] /= var3; p_78559_1_[p_78559_2_][3] /= var3; } private void init() { this.projectionMatrixBuffer.clear(); this.modelviewMatrixBuffer.clear(); this.field_78564_h.clear(); GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, this.projectionMatrixBuffer); GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, this.modelviewMatrixBuffer); this.projectionMatrixBuffer.flip().limit(16); this.projectionMatrixBuffer.get(this.projectionMatrix); this.modelviewMatrixBuffer.flip().limit(16); this.modelviewMatrixBuffer.get(this.modelviewMatrix); this.clippingMatrix[0] = this.modelviewMatrix[0] * this.projectionMatrix[0] + this.modelviewMatrix[1] * this.projectionMatrix[4] + this.modelviewMatrix[2] * this.projectionMatrix[8] + this.modelviewMatrix[3] * this.projectionMatrix[12]; this.clippingMatrix[1] = this.modelviewMatrix[0] * this.projectionMatrix[1] + this.modelviewMatrix[1] * this.projectionMatrix[5] + this.modelviewMatrix[2] * this.projectionMatrix[9] + this.modelviewMatrix[3] * this.projectionMatrix[13]; this.clippingMatrix[2] = this.modelviewMatrix[0] * this.projectionMatrix[2] + this.modelviewMatrix[1] * this.projectionMatrix[6] + this.modelviewMatrix[2] * this.projectionMatrix[10] + this.modelviewMatrix[3] * this.projectionMatrix[14]; this.clippingMatrix[3] = this.modelviewMatrix[0] * this.projectionMatrix[3] + this.modelviewMatrix[1] * this.projectionMatrix[7] + this.modelviewMatrix[2] * this.projectionMatrix[11] + this.modelviewMatrix[3] * this.projectionMatrix[15]; this.clippingMatrix[4] = this.modelviewMatrix[4] * this.projectionMatrix[0] + this.modelviewMatrix[5] * this.projectionMatrix[4] + this.modelviewMatrix[6] * this.projectionMatrix[8] + this.modelviewMatrix[7] * this.projectionMatrix[12]; this.clippingMatrix[5] = this.modelviewMatrix[4] * this.projectionMatrix[1] + this.modelviewMatrix[5] * this.projectionMatrix[5] + this.modelviewMatrix[6] * this.projectionMatrix[9] + this.modelviewMatrix[7] * this.projectionMatrix[13]; this.clippingMatrix[6] = this.modelviewMatrix[4] * this.projectionMatrix[2] + this.modelviewMatrix[5] * this.projectionMatrix[6] + this.modelviewMatrix[6] * this.projectionMatrix[10] + this.modelviewMatrix[7] * this.projectionMatrix[14]; this.clippingMatrix[7] = this.modelviewMatrix[4] * this.projectionMatrix[3] + this.modelviewMatrix[5] * this.projectionMatrix[7] + this.modelviewMatrix[6] * this.projectionMatrix[11] + this.modelviewMatrix[7] * this.projectionMatrix[15]; this.clippingMatrix[8] = this.modelviewMatrix[8] * this.projectionMatrix[0] + this.modelviewMatrix[9] * this.projectionMatrix[4] + this.modelviewMatrix[10] * this.projectionMatrix[8] + this.modelviewMatrix[11] * this.projectionMatrix[12]; this.clippingMatrix[9] = this.modelviewMatrix[8] * this.projectionMatrix[1] + this.modelviewMatrix[9] * this.projectionMatrix[5] + this.modelviewMatrix[10] * this.projectionMatrix[9] + this.modelviewMatrix[11] * this.projectionMatrix[13]; this.clippingMatrix[10] = this.modelviewMatrix[8] * this.projectionMatrix[2] + this.modelviewMatrix[9] * this.projectionMatrix[6] + this.modelviewMatrix[10] * this.projectionMatrix[10] + this.modelviewMatrix[11] * this.projectionMatrix[14]; this.clippingMatrix[11] = this.modelviewMatrix[8] * this.projectionMatrix[3] + this.modelviewMatrix[9] * this.projectionMatrix[7] + this.modelviewMatrix[10] * this.projectionMatrix[11] + this.modelviewMatrix[11] * this.projectionMatrix[15]; this.clippingMatrix[12] = this.modelviewMatrix[12] * this.projectionMatrix[0] + this.modelviewMatrix[13] * this.projectionMatrix[4] + this.modelviewMatrix[14] * this.projectionMatrix[8] + this.modelviewMatrix[15] * this.projectionMatrix[12]; this.clippingMatrix[13] = this.modelviewMatrix[12] * this.projectionMatrix[1] + this.modelviewMatrix[13] * this.projectionMatrix[5] + this.modelviewMatrix[14] * this.projectionMatrix[9] + this.modelviewMatrix[15] * this.projectionMatrix[13]; this.clippingMatrix[14] = this.modelviewMatrix[12] * this.projectionMatrix[2] + this.modelviewMatrix[13] * this.projectionMatrix[6] + this.modelviewMatrix[14] * this.projectionMatrix[10] + this.modelviewMatrix[15] * this.projectionMatrix[14]; this.clippingMatrix[15] = this.modelviewMatrix[12] * this.projectionMatrix[3] + this.modelviewMatrix[13] * this.projectionMatrix[7] + this.modelviewMatrix[14] * this.projectionMatrix[11] + this.modelviewMatrix[15] * this.projectionMatrix[15]; this.frustum[0][0] = this.clippingMatrix[3] - this.clippingMatrix[0]; this.frustum[0][1] = this.clippingMatrix[7] - this.clippingMatrix[4]; this.frustum[0][2] = this.clippingMatrix[11] - this.clippingMatrix[8]; this.frustum[0][3] = this.clippingMatrix[15] - this.clippingMatrix[12]; this.normalize(this.frustum, 0); this.frustum[1][0] = this.clippingMatrix[3] + this.clippingMatrix[0]; this.frustum[1][1] = this.clippingMatrix[7] + this.clippingMatrix[4]; this.frustum[1][2] = this.clippingMatrix[11] + this.clippingMatrix[8]; this.frustum[1][3] = this.clippingMatrix[15] + this.clippingMatrix[12]; this.normalize(this.frustum, 1); this.frustum[2][0] = this.clippingMatrix[3] + this.clippingMatrix[1]; this.frustum[2][1] = this.clippingMatrix[7] + this.clippingMatrix[5]; this.frustum[2][2] = this.clippingMatrix[11] + this.clippingMatrix[9]; this.frustum[2][3] = this.clippingMatrix[15] + this.clippingMatrix[13]; this.normalize(this.frustum, 2); this.frustum[3][0] = this.clippingMatrix[3] - this.clippingMatrix[1]; this.frustum[3][1] = this.clippingMatrix[7] - this.clippingMatrix[5]; this.frustum[3][2] = this.clippingMatrix[11] - this.clippingMatrix[9]; this.frustum[3][3] = this.clippingMatrix[15] - this.clippingMatrix[13]; this.normalize(this.frustum, 3); this.frustum[4][0] = this.clippingMatrix[3] - this.clippingMatrix[2]; this.frustum[4][1] = this.clippingMatrix[7] - this.clippingMatrix[6]; this.frustum[4][2] = this.clippingMatrix[11] - this.clippingMatrix[10]; this.frustum[4][3] = this.clippingMatrix[15] - this.clippingMatrix[14]; this.normalize(this.frustum, 4); this.frustum[5][0] = this.clippingMatrix[3] + this.clippingMatrix[2]; this.frustum[5][1] = this.clippingMatrix[7] + this.clippingMatrix[6]; this.frustum[5][2] = this.clippingMatrix[11] + this.clippingMatrix[10]; this.frustum[5][3] = this.clippingMatrix[15] + this.clippingMatrix[14]; this.normalize(this.frustum, 5); } }
public class ClippingHelperImpl extends ClippingHelper { private static ClippingHelperImpl instance = new ClippingHelperImpl(); private FloatBuffer projectionMatrixBuffer = GLAllocation.createDirectFloatBuffer(16); private FloatBuffer modelviewMatrixBuffer = GLAllocation.createDirectFloatBuffer(16); private FloatBuffer field_78564_h = GLAllocation.createDirectFloatBuffer(16); private static final String __OBFID = "CL_00000975"; /** Initialises the ClippingHelper object then returns an instance of it. */ public static ClippingHelper getInstance() { instance.init(); return instance; } private void func_180547_a(float[] p_180547_1_) { float var2 = MathHelper.sqrt_float( p_180547_1_[0] * p_180547_1_[0] + p_180547_1_[1] * p_180547_1_[1] + p_180547_1_[2] * p_180547_1_[2]); p_180547_1_[0] /= var2; p_180547_1_[1] /= var2; p_180547_1_[2] /= var2; p_180547_1_[3] /= var2; } public void init() { this.projectionMatrixBuffer.clear(); this.modelviewMatrixBuffer.clear(); this.field_78564_h.clear(); GlStateManager.getFloat(2983, this.projectionMatrixBuffer); GlStateManager.getFloat(2982, this.modelviewMatrixBuffer); float[] var1 = this.field_178625_b; float[] var2 = this.field_178626_c; this.projectionMatrixBuffer.flip().limit(16); this.projectionMatrixBuffer.get(var1); this.modelviewMatrixBuffer.flip().limit(16); this.modelviewMatrixBuffer.get(var2); this.clippingMatrix[0] = var2[0] * var1[0] + var2[1] * var1[4] + var2[2] * var1[8] + var2[3] * var1[12]; this.clippingMatrix[1] = var2[0] * var1[1] + var2[1] * var1[5] + var2[2] * var1[9] + var2[3] * var1[13]; this.clippingMatrix[2] = var2[0] * var1[2] + var2[1] * var1[6] + var2[2] * var1[10] + var2[3] * var1[14]; this.clippingMatrix[3] = var2[0] * var1[3] + var2[1] * var1[7] + var2[2] * var1[11] + var2[3] * var1[15]; this.clippingMatrix[4] = var2[4] * var1[0] + var2[5] * var1[4] + var2[6] * var1[8] + var2[7] * var1[12]; this.clippingMatrix[5] = var2[4] * var1[1] + var2[5] * var1[5] + var2[6] * var1[9] + var2[7] * var1[13]; this.clippingMatrix[6] = var2[4] * var1[2] + var2[5] * var1[6] + var2[6] * var1[10] + var2[7] * var1[14]; this.clippingMatrix[7] = var2[4] * var1[3] + var2[5] * var1[7] + var2[6] * var1[11] + var2[7] * var1[15]; this.clippingMatrix[8] = var2[8] * var1[0] + var2[9] * var1[4] + var2[10] * var1[8] + var2[11] * var1[12]; this.clippingMatrix[9] = var2[8] * var1[1] + var2[9] * var1[5] + var2[10] * var1[9] + var2[11] * var1[13]; this.clippingMatrix[10] = var2[8] * var1[2] + var2[9] * var1[6] + var2[10] * var1[10] + var2[11] * var1[14]; this.clippingMatrix[11] = var2[8] * var1[3] + var2[9] * var1[7] + var2[10] * var1[11] + var2[11] * var1[15]; this.clippingMatrix[12] = var2[12] * var1[0] + var2[13] * var1[4] + var2[14] * var1[8] + var2[15] * var1[12]; this.clippingMatrix[13] = var2[12] * var1[1] + var2[13] * var1[5] + var2[14] * var1[9] + var2[15] * var1[13]; this.clippingMatrix[14] = var2[12] * var1[2] + var2[13] * var1[6] + var2[14] * var1[10] + var2[15] * var1[14]; this.clippingMatrix[15] = var2[12] * var1[3] + var2[13] * var1[7] + var2[14] * var1[11] + var2[15] * var1[15]; float[] var3 = this.frustum[0]; var3[0] = this.clippingMatrix[3] - this.clippingMatrix[0]; var3[1] = this.clippingMatrix[7] - this.clippingMatrix[4]; var3[2] = this.clippingMatrix[11] - this.clippingMatrix[8]; var3[3] = this.clippingMatrix[15] - this.clippingMatrix[12]; this.func_180547_a(var3); float[] var4 = this.frustum[1]; var4[0] = this.clippingMatrix[3] + this.clippingMatrix[0]; var4[1] = this.clippingMatrix[7] + this.clippingMatrix[4]; var4[2] = this.clippingMatrix[11] + this.clippingMatrix[8]; var4[3] = this.clippingMatrix[15] + this.clippingMatrix[12]; this.func_180547_a(var4); float[] var5 = this.frustum[2]; var5[0] = this.clippingMatrix[3] + this.clippingMatrix[1]; var5[1] = this.clippingMatrix[7] + this.clippingMatrix[5]; var5[2] = this.clippingMatrix[11] + this.clippingMatrix[9]; var5[3] = this.clippingMatrix[15] + this.clippingMatrix[13]; this.func_180547_a(var5); float[] var6 = this.frustum[3]; var6[0] = this.clippingMatrix[3] - this.clippingMatrix[1]; var6[1] = this.clippingMatrix[7] - this.clippingMatrix[5]; var6[2] = this.clippingMatrix[11] - this.clippingMatrix[9]; var6[3] = this.clippingMatrix[15] - this.clippingMatrix[13]; this.func_180547_a(var6); float[] var7 = this.frustum[4]; var7[0] = this.clippingMatrix[3] - this.clippingMatrix[2]; var7[1] = this.clippingMatrix[7] - this.clippingMatrix[6]; var7[2] = this.clippingMatrix[11] - this.clippingMatrix[10]; var7[3] = this.clippingMatrix[15] - this.clippingMatrix[14]; this.func_180547_a(var7); float[] var8 = this.frustum[5]; var8[0] = this.clippingMatrix[3] + this.clippingMatrix[2]; var8[1] = this.clippingMatrix[7] + this.clippingMatrix[6]; var8[2] = this.clippingMatrix[11] + this.clippingMatrix[10]; var8[3] = this.clippingMatrix[15] + this.clippingMatrix[14]; this.func_180547_a(var8); } }
public abstract class RenderLocusPoint extends ChromaRenderBase { @Override public final void renderTileEntityAt( TileEntity tile, double par2, double par4, double par6, float par8) { GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_BLEND); GL11.glDepthMask(false); GL11.glColor4f(1, 1, 1, 1); GL11.glTranslated(par2, par4, par6); if (MinecraftForgeClient.getRenderPass() == 1 || !tile.hasWorldObj()) this.renderCore((TileEntityLocusPoint) tile, par2, par4, par6, par8); this.doOtherRendering((TileEntityLocusPoint) tile, par8); GL11.glPopAttrib(); GL11.glPopMatrix(); } protected abstract void doOtherRendering(TileEntityLocusPoint tile, float par8); private void renderCore( TileEntityLocusPoint tile, double par2, double par4, double par6, float par8) { Tessellator v5 = Tessellator.instance; // this.renderStaticTexture(par2, par4, par6, par8); // BlendMode.ADDITIVEDARK.apply(); BlendMode.ADDITIVE2.apply(); GL11.glPushMatrix(); GL11.glTranslated(0.5, 0.5, 0.5); RenderManager rm = RenderManager.instance; if (tile.hasWorldObj()) { GL11.glRotatef(-rm.playerViewY, 0.0F, 1.0F, 0.0F); GL11.glRotatef(rm.playerViewX, 1.0F, 0.0F, 0.0F); } else { GL11.glTranslated(0.55, 0.5, 0.5); GL11.glRotatef(45, 0, 1, 0); GL11.glRotatef(-30, 1, 0, 0); } // ReikaJavaLibrary.pConsole(te.getEnergy()); ReikaTextureHelper.bindTexture(ChromatiCraft.class, "Textures/aurapoint2-grid.png"); for (int i = 0; i < 3; i++) { int alpha = 255 - i * 64; // 255; int tick = (int) ((System.currentTimeMillis() / 250) % 80); // (tile.getTicksExisted()*(i*3+1))%80;//+par8; double u = (tick % 8) / 8D; // tick/80D;//0;//0.125; double v = (tick / 8) / 10D; // 0;//(int)(tick/20)/4D;//0.125; double du = u + 1 / 8D; // u+1/80D;//u+1;//0.9375; double dv = v + 1 / 10D; // v+1;//0.9375; double s = 1 - i * 0.25; // for (double s = 0.5; s >= 0.25; s -= 0.0625) { GL11.glPushMatrix(); double s1 = tile.isInWorld() ? s : s; GL11.glScaled(s1, s1, s1); /* GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); /* double d = 0.5; GL11.glTranslated(d, d, d); GL11.glRotated(rm.playerViewY, 0, 0, 1); GL11.glTranslated(-d, -d, -d); */ if (tile.isInWorld()) { double d = 0.5; GL11.glTranslated(d, d, d); double dx = tile.xCoord + 0.5 - RenderManager.renderPosX; double dy = tile.yCoord + 0.5 - RenderManager.renderPosY; double dz = tile.zCoord + 0.5 - RenderManager.renderPosZ; double[] angs = ReikaPhysicsHelper.cartesianToPolar(dx, dy, dz); GL11.glTranslated(-d, -d, -d); GL11.glRotated(angs[2], 0, 0, 1); } // GL11.glMatrixMode(GL11.GL_MODELVIEW); v5.startDrawingQuads(); v5.setBrightness(240); int color = ReikaColorAPI.getColorWithBrightnessMultiplier(tile.getRenderColor(), alpha / 255F); v5.setColorRGBA_I(color, alpha); v5.addVertexWithUV(-1, -1, 0, u, v); v5.addVertexWithUV(1, -1, 0, du, v); v5.addVertexWithUV(1, 1, 0, du, dv); v5.addVertexWithUV(-1, 1, 0, u, dv); v5.draw(); // GL11.glMatrixMode(GL11.GL_TEXTURE); // GL11.glPopMatrix(); // GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPopMatrix(); // } } double s = 0.5; GL11.glScaled(s, s, s); /* ReikaTextureHelper.bindTexture(ChromatiCraft.class, "Textures/Dimension Bump Maps/gray.png"); u = 0; v = 0; du = 1; dv = 1; GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); GL11.glRotated(angs[2], 0, 1, 0); GL11.glRotated(90-angs[1], 1, 0, 0); GL11.glMatrixMode(GL11.GL_MODELVIEW); v5.startDrawingQuads(); v5.setColorRGBA_I(this.getColor(), alpha); v5.addVertexWithUV(-1, -1, 0, u, v); v5.addVertexWithUV(1, -1, 0, du, v); v5.addVertexWithUV(1, 1, 0, du, dv); v5.addVertexWithUV(-1, 1, 0, u, dv); v5.draw(); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); */ GL11.glPopMatrix(); } private static final Random staticRand = new Random(31100L); FloatBuffer fBuffer = GLAllocation.createDirectFloatBuffer(16); private void renderStaticTexture(double par2, double par4, double par6, float ptick) { float f1 = (float) field_147501_a.field_147560_j; float f2 = (float) field_147501_a.field_147561_k; float f3 = (float) field_147501_a.field_147558_l; staticRand.setSeed(31100L); float f4 = 1.001F; // 0.75F;//+i*0.125F; GL11.glPushMatrix(); float f5 = 16; float f6 = 0.0625F; float f7 = 1.0F / (f5 + 1.0F); float f8 = (float) (-(par4 + f4)); float f9 = f8 + ActiveRenderInfo.objectY; float f10 = f8 + f5 + ActiveRenderInfo.objectY; float f11 = f9 / f10; f11 += (float) (par4 + f4); // GL11.glTranslatef(f1, f11, f3); GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR); GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.genBuffer(1.0F, 0.0F, 0.0F, 0.0F)); GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.genBuffer(0.0F, 0.0F, 1.0F, 0.0F)); GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.genBuffer(0.0F, 0.0F, 0.0F, 1.0F)); GL11.glTexGen(GL11.GL_Q, GL11.GL_EYE_PLANE, this.genBuffer(0.0F, 1.0F, 0.0F, 0.0F)); GL11.glEnable(GL11.GL_TEXTURE_GEN_S); GL11.glEnable(GL11.GL_TEXTURE_GEN_T); GL11.glEnable(GL11.GL_TEXTURE_GEN_R); GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); GL11.glLoadIdentity(); GL11.glTranslatef(0.0F, Minecraft.getSystemTime() % 700000L / 700000.0F, 0.0F); GL11.glScalef(f6, f6, f6); GL11.glTranslatef(0.5F, 0.5F, 0.0F); GL11.glTranslatef(-0.5F, -0.5F, 0.0F); // GL11.glTranslatef(-f1, -f3, -f2); f9 = f8 + ActiveRenderInfo.objectY; GL11.glTranslatef(ActiveRenderInfo.objectX * f5 / f9, ActiveRenderInfo.objectZ * f5 / f9, -f2); Tessellator v5 = Tessellator.instance; v5.startDrawingQuads(); f11 = staticRand.nextFloat() * 0.5F + 0.1F; float f12 = staticRand.nextFloat() * 0.5F + 0.4F; float f13 = staticRand.nextFloat() * 0.5F + 0.5F; f7 = 1; f13 = 1.0F; f12 = 1.0F; f11 = 1.0F; // v5.setColorRGBA_F(e.getRed()*f7/255F, e.getGreen()*f7/255F, e.getBlue()*f7/255F, 1); v5.setColorRGBA_F(f11 * f7, f12 * f7, f13 * f7, 1.0F); v5.addVertex(par2, par4 + f4, par6); v5.addVertex(par2, par4 + f4, par6 + 1.0D); v5.addVertex(par2 + 1.0D, par4 + f4, par6 + 1.0D); v5.addVertex(par2 + 1.0D, par4 + f4, par6); v5.draw(); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glDisable(GL11.GL_TEXTURE_GEN_S); GL11.glDisable(GL11.GL_TEXTURE_GEN_T); GL11.glDisable(GL11.GL_TEXTURE_GEN_R); GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); } private FloatBuffer genBuffer(float v1, float v2, float v3, float v4) { fBuffer.clear(); fBuffer.put(v1).put(v2).put(v3).put(v4); fBuffer.flip(); return fBuffer; } }