@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.36 kB
JavaScript
import{NoParameters as t}from"../shaderModules/interfaces.js";class e extends t{constructor(){super(...arguments),this._dirty=!0}_setDirty(){this._dirty=!0}_setClean(){if(this._dirty=!1,null!=this._parameterBlocks)for(const t of this._parameterBlocks)this[t]._setClean()}get dirty(){return this._dirty||this._checkParameterBlocksDirty()}_checkParameterBlocksDirty(){if(null==this._parameterBlocks)return!1;for(const t of this._parameterBlocks)if(this[t].dirty)return!0;return!1}}class r{constructor(){this._dirty=!0}_setDirty(){this._dirty=!0}_setClean(){this._dirty=!1}get dirty(){return this._dirty}}function s(t={}){return(e,r)=>{const s=e._parameterCount??0;if(e._parameterCount=s+1,t.vectorOps){const i=t.vectorOps;Object.defineProperty(e,r,{get(){return this[s]},set(t){const e=this[s];if(null==e)this[s]=t;else{if(i.equals(e,t))return;i.copy(e,t)}this._setDirty()}})}else Object.defineProperty(e,r,{get(){return this[s]},set(e){this[s]!==e&&(t.dispose&&this[s]&&this[s].dispose(),this[s]=e,this._setDirty())}})}}function i(){return(t,e)=>{const r=t._parameterCount??0;t._parameterCount=r+1,t._parameterBlocks=t._parameterBlocks||[],t._parameterBlocks.push(r),Object.defineProperty(t,e,{get(){return this[r]},set(t){this[r]!==t&&(this[r]=t,this._setDirty())}})}}export{e as MaterialBase,r as MaterialParameterBlock,s as parameter,i as parameterBlock};