// Generated by scripts/generate.mjs from bindings/api.mjs. Do not edit.
///|
#external
pub type Material
///|
pub extern "js" fn Material::user_data(self : Material) -> UserData =
#| (self) => self.userData
///|
pub extern "js" fn Material::id(self : Material) -> Int =
#| (self) => self.id
///|
pub extern "js" fn Material::kind(self : Material) -> String =
#| (self) => self.type
///|
pub extern "js" fn Material::name(self : Material) -> String =
#| (self) => self.name
///|
pub extern "js" fn Material::set_name(self : Material, value : String) -> Unit =
#| (self, value) => { self.name = value; }
///|
pub extern "js" fn Material::opacity(self : Material) -> Double =
#| (self) => self.opacity
///|
pub extern "js" fn Material::set_opacity(
self : Material,
value : Double,
) -> Unit =
#| (self, value) => { self.opacity = value; }
///|
pub extern "js" fn Material::transparent(self : Material) -> Bool =
#| (self) => self.transparent
///|
pub extern "js" fn Material::set_transparent(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.transparent = value; }
///|
pub extern "js" fn Material::visible(self : Material) -> Bool =
#| (self) => self.visible
///|
pub extern "js" fn Material::set_visible(self : Material, value : Bool) -> Unit =
#| (self, value) => { self.visible = value; }
///|
pub extern "js" fn Material::depth_test(self : Material) -> Bool =
#| (self) => self.depthTest
///|
pub extern "js" fn Material::set_depth_test(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.depthTest = value; }
///|
pub extern "js" fn Material::depth_write(self : Material) -> Bool =
#| (self) => self.depthWrite
///|
pub extern "js" fn Material::set_depth_write(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.depthWrite = value; }
///|
pub extern "js" fn Material::side(self : Material) -> Side =
#| (self) => self.side
///|
pub extern "js" fn Material::set_side(self : Material, value : Side) -> Unit =
#| (self, value) => { self.side = value; }
///|
pub extern "js" fn Material::alpha_test(self : Material) -> Double =
#| (self) => self.alphaTest
///|
pub extern "js" fn Material::set_alpha_test(
self : Material,
value : Double,
) -> Unit =
#| (self, value) => { self.alphaTest = value; }
///|
pub extern "js" fn Material::clone(self : Material) -> Material =
#| (self) => self.clone()
///|
pub extern "js" fn Material::dispose(self : Material) -> Unit =
#| (self) => self.dispose()
///|
pub extern "js" fn Material::same_reference(
self : Material,
other : Material,
) -> Bool =
#| (self, other) => self === other
///|
pub extern "js" fn Material::mark_needs_update(self : Material) -> Unit =
#| (self) => { self.needsUpdate = true; }
///|
extern "js" fn Material::ffi_as_standard_material(
self : Material,
) -> Nullable[MeshStandardMaterial] =
#| (self) => self.isMeshStandardMaterial ? self : null
///|
pub fn Material::as_standard_material(self : Material) -> MeshStandardMaterial? {
self.ffi_as_standard_material().to_option()
}
///|
extern "js" fn Material::ffi_as_physical_material(
self : Material,
) -> Nullable[MeshPhysicalMaterial] =
#| (self) => self.isMeshPhysicalMaterial ? self : null
///|
pub fn Material::as_physical_material(self : Material) -> MeshPhysicalMaterial? {
self.ffi_as_physical_material().to_option()
}
///|
extern "js" fn Material::ffi_as_basic_material(
self : Material,
) -> Nullable[MeshBasicMaterial] =
#| (self) => self.isMeshBasicMaterial ? self : null
///|
pub fn Material::as_basic_material(self : Material) -> MeshBasicMaterial? {
self.ffi_as_basic_material().to_option()
}
///|
pub extern "js" fn Material::blending(self : Material) -> Blending =
#| (self) => self.blending
///|
pub extern "js" fn Material::set_blending(
self : Material,
value : Blending,
) -> Unit =
#| (self, value) => { self.blending = value; }
///|
pub extern "js" fn Material::blend_color(self : Material) -> Color =
#| (self) => self.blendColor
///|
pub extern "js" fn Material::blend_alpha(self : Material) -> Double =
#| (self) => self.blendAlpha
///|
pub extern "js" fn Material::set_blend_alpha(
self : Material,
value : Double,
) -> Unit =
#| (self, value) => { self.blendAlpha = value; }
///|
pub extern "js" fn Material::blend_equation(self : Material) -> BlendEquation =
#| (self) => self.blendEquation
///|
pub extern "js" fn Material::set_blend_equation(
self : Material,
value : BlendEquation,
) -> Unit =
#| (self, value) => { self.blendEquation = value; }
///|
pub extern "js" fn Material::blend_src(self : Material) -> BlendFactor =
#| (self) => self.blendSrc
///|
pub extern "js" fn Material::set_blend_src(
self : Material,
value : BlendFactor,
) -> Unit =
#| (self, value) => { self.blendSrc = value; }
///|
pub extern "js" fn Material::blend_dst(self : Material) -> BlendFactor =
#| (self) => self.blendDst
///|
pub extern "js" fn Material::set_blend_dst(
self : Material,
value : BlendFactor,
) -> Unit =
#| (self, value) => { self.blendDst = value; }
///|
extern "js" fn Material::ffi_blend_src_alpha(
self : Material,
) -> Nullable[BlendFactor] =
#| (self) => self.blendSrcAlpha
///|
pub fn Material::blend_src_alpha(self : Material) -> BlendFactor? {
self.ffi_blend_src_alpha().to_option()
}
///|
extern "js" fn Material::ffi_set_blend_src_alpha(
self : Material,
value : Nullable[BlendFactor],
) -> Unit =
#| (self, value) => { self.blendSrcAlpha = value; }
///|
pub fn Material::set_blend_src_alpha(
self : Material,
value : BlendFactor?,
) -> Unit {
self.ffi_set_blend_src_alpha(Nullable::from_option(value))
}
///|
extern "js" fn Material::ffi_blend_dst_alpha(
self : Material,
) -> Nullable[BlendFactor] =
#| (self) => self.blendDstAlpha
///|
pub fn Material::blend_dst_alpha(self : Material) -> BlendFactor? {
self.ffi_blend_dst_alpha().to_option()
}
///|
extern "js" fn Material::ffi_set_blend_dst_alpha(
self : Material,
value : Nullable[BlendFactor],
) -> Unit =
#| (self, value) => { self.blendDstAlpha = value; }
///|
pub fn Material::set_blend_dst_alpha(
self : Material,
value : BlendFactor?,
) -> Unit {
self.ffi_set_blend_dst_alpha(Nullable::from_option(value))
}
///|
extern "js" fn Material::ffi_blend_equation_alpha(
self : Material,
) -> Nullable[BlendEquation] =
#| (self) => self.blendEquationAlpha
///|
pub fn Material::blend_equation_alpha(self : Material) -> BlendEquation? {
self.ffi_blend_equation_alpha().to_option()
}
///|
extern "js" fn Material::ffi_set_blend_equation_alpha(
self : Material,
value : Nullable[BlendEquation],
) -> Unit =
#| (self, value) => { self.blendEquationAlpha = value; }
///|
pub fn Material::set_blend_equation_alpha(
self : Material,
value : BlendEquation?,
) -> Unit {
self.ffi_set_blend_equation_alpha(Nullable::from_option(value))
}
///|
pub extern "js" fn Material::depth_func(self : Material) -> DepthFunction =
#| (self) => self.depthFunc
///|
pub extern "js" fn Material::set_depth_func(
self : Material,
value : DepthFunction,
) -> Unit =
#| (self, value) => { self.depthFunc = value; }
///|
pub extern "js" fn Material::stencil_func(self : Material) -> StencilFunction =
#| (self) => self.stencilFunc
///|
pub extern "js" fn Material::set_stencil_func(
self : Material,
value : StencilFunction,
) -> Unit =
#| (self, value) => { self.stencilFunc = value; }
///|
pub extern "js" fn Material::stencil_fail(self : Material) -> StencilOperation =
#| (self) => self.stencilFail
///|
pub extern "js" fn Material::set_stencil_fail(
self : Material,
value : StencilOperation,
) -> Unit =
#| (self, value) => { self.stencilFail = value; }
///|
pub extern "js" fn Material::stencil_zfail(self : Material) -> StencilOperation =
#| (self) => self.stencilZFail
///|
pub extern "js" fn Material::set_stencil_zfail(
self : Material,
value : StencilOperation,
) -> Unit =
#| (self, value) => { self.stencilZFail = value; }
///|
pub extern "js" fn Material::stencil_zpass(self : Material) -> StencilOperation =
#| (self) => self.stencilZPass
///|
pub extern "js" fn Material::set_stencil_zpass(
self : Material,
value : StencilOperation,
) -> Unit =
#| (self, value) => { self.stencilZPass = value; }
///|
pub extern "js" fn Material::stencil_ref(self : Material) -> Int =
#| (self) => self.stencilRef
///|
pub extern "js" fn Material::set_stencil_ref(
self : Material,
value : Int,
) -> Unit =
#| (self, value) => { self.stencilRef = value; }
///|
pub extern "js" fn Material::stencil_func_mask(self : Material) -> Int =
#| (self) => self.stencilFuncMask
///|
pub extern "js" fn Material::set_stencil_func_mask(
self : Material,
value : Int,
) -> Unit =
#| (self, value) => { self.stencilFuncMask = value; }
///|
pub extern "js" fn Material::stencil_write_mask(self : Material) -> Int =
#| (self) => self.stencilWriteMask
///|
pub extern "js" fn Material::set_stencil_write_mask(
self : Material,
value : Int,
) -> Unit =
#| (self, value) => { self.stencilWriteMask = value; }
///|
pub extern "js" fn Material::stencil_write(self : Material) -> Bool =
#| (self) => self.stencilWrite
///|
pub extern "js" fn Material::set_stencil_write(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.stencilWrite = value; }
///|
pub extern "js" fn Material::color_write(self : Material) -> Bool =
#| (self) => self.colorWrite
///|
pub extern "js" fn Material::set_color_write(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.colorWrite = value; }
///|
pub extern "js" fn Material::vertex_colors(self : Material) -> Bool =
#| (self) => self.vertexColors
///|
pub extern "js" fn Material::set_vertex_colors(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.vertexColors = value; }
///|
pub extern "js" fn Material::alpha_hash(self : Material) -> Bool =
#| (self) => self.alphaHash
///|
pub extern "js" fn Material::set_alpha_hash(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.alphaHash = value; }
///|
pub extern "js" fn Material::alpha_to_coverage(self : Material) -> Bool =
#| (self) => self.alphaToCoverage
///|
pub extern "js" fn Material::set_alpha_to_coverage(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.alphaToCoverage = value; }
///|
pub extern "js" fn Material::premultiplied_alpha(self : Material) -> Bool =
#| (self) => self.premultipliedAlpha
///|
pub extern "js" fn Material::set_premultiplied_alpha(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.premultipliedAlpha = value; }
///|
pub extern "js" fn Material::dithering(self : Material) -> Bool =
#| (self) => self.dithering
///|
pub extern "js" fn Material::set_dithering(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.dithering = value; }
///|
pub extern "js" fn Material::tone_mapped(self : Material) -> Bool =
#| (self) => self.toneMapped
///|
pub extern "js" fn Material::set_tone_mapped(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.toneMapped = value; }
///|
pub extern "js" fn Material::polygon_offset(self : Material) -> Bool =
#| (self) => self.polygonOffset
///|
pub extern "js" fn Material::set_polygon_offset(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.polygonOffset = value; }
///|
pub extern "js" fn Material::clip_intersection(self : Material) -> Bool =
#| (self) => self.clipIntersection
///|
pub extern "js" fn Material::set_clip_intersection(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.clipIntersection = value; }
///|
pub extern "js" fn Material::clip_shadows(self : Material) -> Bool =
#| (self) => self.clipShadows
///|
pub extern "js" fn Material::set_clip_shadows(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.clipShadows = value; }
///|
pub extern "js" fn Material::polygon_offset_factor(self : Material) -> Double =
#| (self) => self.polygonOffsetFactor
///|
pub extern "js" fn Material::set_polygon_offset_factor(
self : Material,
value : Double,
) -> Unit =
#| (self, value) => { self.polygonOffsetFactor = value; }
///|
pub extern "js" fn Material::polygon_offset_units(self : Material) -> Double =
#| (self) => self.polygonOffsetUnits
///|
pub extern "js" fn Material::set_polygon_offset_units(
self : Material,
value : Double,
) -> Unit =
#| (self, value) => { self.polygonOffsetUnits = value; }
///|
pub extern "js" fn Material::clipping_planes(
self : Material,
) -> FixedArray[Plane] =
#| (self) => self.clippingPlanes?.slice() ?? []
///|
pub extern "js" fn Material::set_clipping_planes(
self : Material,
planes : FixedArray[Plane],
) -> Unit =
#| (self, planes) => { self.clippingPlanes = planes.length ? planes.slice() : null; }
///|
pub extern "js" fn Material::uuid(self : Material) -> String =
#| (self) => self.uuid
///|
pub extern "js" fn Material::version(self : Material) -> Int =
#| (self) => self.version
///|
pub extern "js" fn Material::force_single_pass(self : Material) -> Bool =
#| (self) => self.forceSinglePass
///|
pub extern "js" fn Material::set_force_single_pass(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.forceSinglePass = value; }
///|
pub extern "js" fn Material::allow_override(self : Material) -> Bool =
#| (self) => self.allowOverride
///|
pub extern "js" fn Material::set_allow_override(
self : Material,
value : Bool,
) -> Unit =
#| (self, value) => { self.allowOverride = value; }
///|
extern "js" fn Material::ffi_shadow_side(self : Material) -> Nullable[Side] =
#| (self) => self.shadowSide
///|
pub fn Material::shadow_side(self : Material) -> Side? {
self.ffi_shadow_side().to_option()
}
///|
extern "js" fn Material::ffi_set_shadow_side(
self : Material,
value : Nullable[Side],
) -> Unit =
#| (self, value) => { self.shadowSide = value; }
///|
pub fn Material::set_shadow_side(self : Material, value : Side?) -> Unit {
self.ffi_set_shadow_side(Nullable::from_option(value))
}
///|
pub extern "js" fn Material::copy(
self : Material,
source : Material,
) -> Material =
#| (self, source) => self.copy(source)
///|
pub extern "js" fn Material::custom_program_cache_key(
self : Material,
) -> String =
#| (self) => self.customProgramCacheKey()
///|
extern "js" fn Material::ffi_to_json(self : Material) -> JsResult[String] =
#| (self) => { try { return { ok: true, value: (() => JSON.stringify(self.toJSON()))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn Material::to_json(self : Material) -> Json raise SerializationError {
match self.ffi_to_json().into_result() {
Ok(value) =>
@json.parse(value) catch {
error => raise SerializationError((error : Error).to_string())
}
Err(message) => raise SerializationError(message)
}
}
///|
extern "js" fn Material::ffi_to_json_string(
self : Material,
) -> JsResult[String] =
#| (self) => { try { return { ok: true, value: (() => JSON.stringify(self.toJSON()))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn Material::to_json_string(
self : Material,
) -> String raise SerializationError {
match self.ffi_to_json_string().into_result() {
Ok(value) => value
Err(message) => raise SerializationError(message)
}
}
///|
extern "js" fn Material::ffi_as_phong_material(
self : Material,
) -> Nullable[MeshPhongMaterial] =
#| (self) => self.isMeshPhongMaterial === true ? self : null
///|
pub fn Material::as_phong_material(self : Material) -> MeshPhongMaterial? {
self.ffi_as_phong_material().to_option()
}
///|
extern "js" fn Material::ffi_defines(
self : Material,
) -> Nullable[ShaderDefines] =
#| (self) => self.defines
///|
pub fn Material::defines(self : Material) -> ShaderDefines? {
self.ffi_defines().to_option()
}
///|
pub extern "js" fn Material::set_defines(
self : Material,
defines : ShaderDefines,
) -> Unit =
#| (self, defines) => { self.defines = {...defines}; self.needsUpdate = true; }
///|
pub extern "js" fn Material::set_on_before_compile(
self : Material,
callback : (ShaderProgram, WebGLRenderer) -> Unit,
cache_key : String,
) -> Unit =
#| (self, callback, cache_key) => { self.onBeforeCompile = callback; self.customProgramCacheKey = () => cache_key; self.needsUpdate = true; }
///|
pub extern "js" fn Material::clear_on_before_compile(self : Material) -> Unit =
#| (self) => { self.onBeforeCompile = () => {}; self.customProgramCacheKey = () => ""; self.needsUpdate = true; }
///|
pub extern "js" fn Material::set_on_before_render(
self : Material,
callback : (RenderContext) -> Unit,
) -> Unit =
#| (self, callback) => { self.onBeforeRender = (renderer,scene,camera,geometry,object,group) => callback({renderer,scene,camera,geometry,object,group,material:self}); }
///|
pub extern "js" fn Material::clear_on_before_render(self : Material) -> Unit =
#| (self) => { self.onBeforeRender = () => {}; }