ModularPowersuits/src/main/scala/net/machinemuse/utils/render/RMonad.scala

108 lines
2.7 KiB
Scala

//package net.machinemuse.utils.render
//
//import net.minecraft.client.renderer.{GLAllocation, OpenGlHelper, RenderHelper}
//import org.lwjgl.opengl.GL11
//
///**
// * Library for working with rendering.
// *
// * (c) 2013 Byron Shelden
// * Edited by Claire Semple
// */
//trait Render[A] {
// def run(): A
//
// import Render._
//
// def compile(): Render[A] = Render.compile(this)
//
// def map[B](f: A => B) = mk {
// f(run())
// }
//
// def flatMap[B](f: A => Render[B]) = mk {
// f(run()).run()
// }
//}
//
//object Render {
// private def mk[A](act: => A): Render[A] = new Render[A] {
// def run() = act
// }
//
// def apply[A](act: => A): Render[A] = mk(act)
//
// def liftIO[A](act: => A): Render[A] = mk(act)
//
// def pure[A](a: => A): Render[A] = mk(a)
//
// def withPushedMatrix[A](r: Render[A]): Render[A] = mk {
// GL11.glPushMatrix()
// val a = r.run()
// GL11.glPopMatrix()
// a
// }
//
// def fromBuffer[A](buf: TextureBuffer)(r: Render[A]): Render[A] = mk {
// buf.bindRead()
// // MuseLogger.logDebug("Bound buffer for reading")
// val a = r.run()
// // MuseLogger.logDebug("Unbound buffer for reading")
// buf.unbindRead()
// a
// }
//
// def toBuffer[A](buf: TextureBuffer)(r: Render[A]): Render[A] = mk {
// buf.bindWrite()
// // MuseLogger.logDebug("Bound buffer for writing")
// val a = r.run()
// // MuseLogger.logDebug("Unbound buffer for writing")
// buf.unbindWrite()
// a
// }
//
// def withPushedAttrib[A](mask: Int)(r: Render[A]): Render[A] = mk {
// GL11.glPushAttrib(mask)
// val a = r.run()
// GL11.glPopAttrib()
// a
// }
//
//
// /**
// * Compiles the given render into a display list.
// *
// * Note that the yield from the compiled render is captured and used as the yield of the call action.
// *
// * @return a render action that invokes the compiled display list.
// */
// def compile[A](r: Render[A]): Render[A] = {
// val listIndex = GLAllocation.generateDisplayLists(1)
// GL11.glNewList(listIndex, GL11.GL_COMPILE)
// val a = r.run()
// GL11.glEndList()
//
// mk {
// GL11.glCallList(listIndex)
// a
// }
// }
//
// def withGlow[A](r: Render[A]): Render[A] = {
// for {
// saved <- Render.liftIO {
// (OpenGlHelper.lastBrightnessX, OpenGlHelper.lastBrightnessY)
// }
// _ <- Render {
// GL11.glPushAttrib(GL11.GL_LIGHTING_BIT)
// RenderHelper.disableStandardItemLighting()
// OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F)
// }
// a <- r
// _ <- Render {
// OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, saved._1, saved._2)
// GL11.glPopAttrib()
// }
// } yield (a)
// }
//}