All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cwinter.codecraft.graphics.model.ModelBuilder.scala Maven / Gradle / Ivy

package cwinter.codecraft.graphics.model

import cwinter.codecraft.graphics.engine.GraphicsContext


private[codecraft] trait ModelBuilder[TStatic, TDynamic] {
  def signature: TStatic

  def getModel(context: GraphicsContext): Model[TDynamic] =
    if (isCacheable) context.modelCache.getOrElseUpdate(signature)(optimized.buildModel(context))
    else buildModel(context)

  protected def buildModel(context: GraphicsContext): Model[TDynamic]

  def isCacheable: Boolean = true

  def optimized: ModelBuilder[TStatic, TDynamic] = this

  def wireParameters[SDynamic](projection: SDynamic => TDynamic) =
    ProjectedParamsModelBuilder(this, projection)
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy