You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
import Color from "../Core/Color.js";
|
|
import DeveloperError from "../Core/DeveloperError.js";
|
|
import Resource from "../Core/Resource.js";
|
|
import ColorMaterialProperty from "./ColorMaterialProperty.js";
|
|
import createPropertyDescriptor from "./createPropertyDescriptor.js";
|
|
import ImageMaterialProperty from "./ImageMaterialProperty.js";
|
|
|
|
function createMaterialProperty(value) {
|
|
if (value instanceof Color) {
|
|
return new ColorMaterialProperty(value);
|
|
}
|
|
|
|
if (
|
|
typeof value === "string" ||
|
|
value instanceof Resource ||
|
|
value instanceof HTMLCanvasElement ||
|
|
value instanceof HTMLVideoElement
|
|
) {
|
|
var result = new ImageMaterialProperty();
|
|
result.image = value;
|
|
return result;
|
|
}
|
|
|
|
//>>includeStart('debug', pragmas.debug);
|
|
throw new DeveloperError("Unable to infer material type: " + value);
|
|
//>>includeEnd('debug');
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
function createMaterialPropertyDescriptor(name, configurable) {
|
|
return createPropertyDescriptor(name, configurable, createMaterialProperty);
|
|
}
|
|
export default createMaterialPropertyDescriptor;
|