/**
 * Copyright(c) Live2D Inc. All rights reserved.
 *
 * Use of this source code is governed by the Live2D Open Software license
 * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
 */ import { CubismMatrix44 } from '../math/cubismmatrix44' ; import { CubismModel } from '../model/cubismmodel' ; /**
 * モデル描画を処理するレンダラ
 *
 * サブクラスに環境依存の描画命令を記述する。
 */ export abstract class CubismRenderer { return public static create ( ) { return null ; } /**
     * レンダラのインスタンスを解放する
     */ public static delete ( renderer ) { renderer = null ; } param model public initialize ( model ) { this . _model = model ; } /**
     * モデルを描画する
     */ public drawModel ( ) { if ( this . getModel ( ) == null ) return ; this . doDrawModel ( ) ; } param matrix44 public setMvpMatrix ( matrix44 ) { this . _mvpMatrix4x4 . setMatrix ( matrix44 . getArray ( ) ) ; } return public getMvpMatrix ( ) { return this . _mvpMatrix4x4 ; } param red param green param blue param alpha public setModelColor ( red , green , blue , alpha ) { if ( red < 0.0 ) { red = 0.0 ; } else if ( red > 1.0 ) { red = 1.0 ; } if ( green < 0.0 ) { green = 0.0 ; } else if ( green > 1.0 ) { green = 1.0 ; } if ( blue < 0.0 ) { blue = 0.0 ; } else if ( blue > 1.0 ) { blue = 1.0 ; } if ( alpha < 0.0 ) { alpha = 0.0 ; } else if ( alpha > 1.0 ) { alpha = 1.0 ; } this . _modelColor . R = red ; this . _modelColor . G = green ; this . _modelColor . B = blue ; this . _modelColor . A = alpha ; } return public getModelColor ( ) { return JSON . parse ( JSON . stringify ( this . _modelColor ) ) ; } /**
     * 乗算済みαの有効・無効をセットする
     * 有効にするならtrue、無効にするならfalseをセットする
     */ public setIsPremultipliedAlpha ( enable ) { this . _isPremultipliedAlpha = enable ; } return return public isPremultipliedAlpha ( ) { return this . _isPremultipliedAlpha ; } /**
     * カリング（片面描画）の有効・無効をセットする。
     * 有効にするならtrue、無効にするならfalseをセットする
     */ public setIsCulling ( culling ) { this . _isCulling = culling ; } return return public isCulling ( ) { return this . _isCulling ; } param n public setAnisotropy ( n ) { this . _anisortopy = n ; } return public getAnisotropy ( ) { return this . _anisortopy ; } return public getModel ( ) { return this . _model ; } /**
     * コンストラクタ
     */ protected constructor ( ) { this . _isCulling = false ; this . _isPremultipliedAlpha = false ; this . _anisortopy = 0.0 ; this . _model = null ; this . _modelColor = new CubismTextureColor ( ) ; this . _mvpMatrix4x4 = new CubismMatrix44 ( ) ; this . _mvpMatrix4x4 . loadIdentity ( ) ; } /**
     * モデル描画の実装
     */ public abstract doDrawModel ( ) ; param textureNo param indexCount param vertexCount param indexArray param vertexArray param uvArray param opacity param colorBlendMode param invertedMask public abstract drawMesh ( textureNo , indexCount , vertexCount , indexArray , vertexArray , uvArray , opacity , colorBlendMode , invertedMask ) ; /**
     * レンダラが保持する静的なリソースを開放する
     */ public static staticRelease : Function ; protected _mvpMatrix4x4 : CubismMatrix44 ; protected _modelColor : CubismTextureColor ; protected _isCulling : boolean ; protected _isPremultipliedAlpha : boolean ; protected _anisortopy : any ; protected _model : CubismModel ; } export enum CubismBlendMode { CubismBlendMode_Normal = 0 , CubismBlendMode_Additive = 1 , CubismBlendMode_Multiplicative = 2 } /**
 * テクスチャの色をRGBAで扱うためのクラス
 */ export class CubismTextureColor { /**
     * コンストラクタ
     */ constructor ( ) { this . R = 1.0 ; this . G = 1.0 ; this . B = 1.0 ; this . A = 1.0 ; } R : number ; G : number ; B : number ; A : number ; } import * as $ from './cubismrenderer' ; export namespace Live2DCubismFramework { export const CubismBlendMode = $ . CubismBlendMode ; export type CubismBlendMode = $ . CubismBlendMode ; export const CubismRenderer = $ . CubismRenderer ; export type CubismRenderer = $ . CubismRenderer ; export const CubismTextureColor = $ . CubismTextureColor ; export type CubismTextureColor = $ . CubismTextureColor ; }