import $ from 'jquery';
import _ from 'lodash';
import {loadTexture} from './texture';
import {fetchObj, loadObj, loadObjBuffers} from './objutils';
import {changeFragmentShader} from './shaders';
import {initBuffers} from './buffers';
import vsSource from './shaders/shader.vert';
import blackandwhite from './shaders/blackandwhite.frag';
import colored from './shaders/colored.frag';
import grey from './shaders/grey.frag';
import texture from './shaders/texture.frag';
import sobel from './shaders/sobel.frag';
import fractal from './shaders/fractal.frag';
/**
* UI block to update scene
* @param {any} context the program context
*/
export function uiUpdateScene(context: any) {
$('#pushtoscene').on('click', () => {
context.scene.push({
buffers: initBuffers(context.gl,
context.obj.positions,
context.obj.indices,
context.obj.normals,
context.obj.uvs),
texture: context.texture,
params: _.cloneDeep(context.params),
programInfo: _.cloneDeep(context.programInfo),
shaderProgram: _.cloneDeep(context.shaderProgram),
shaders: _.cloneDeep(context.shaders),
});
/* eslint-disable */
let instanceRadioString;
if ($('input[name=instance]:checked', '#instanceoptions').val() ==
'normal') {
instanceRadioString = `
Change shader:
Change object:
Change texture:
`);
$('#' + context.scene.length + 't_wall').on('click', (event) => {
const n = parseInt(event.target.id.split('t')[0]);
if (context.cache.textures.wall == null) {
context.cache.textures.wall = loadTexture(context.gl,
'/static/textures/wall.png');
}
context.scene[n - 1].texture = context.cache.textures.wall;
});
$('#' + context.scene.length + 't_ice').on('click', (event) => {
const n = parseInt(event.target.id.split('t')[0]);
if (context.cache.textures.ice == null) {
context.cache.textures.ice = loadTexture(context.gl,
'/static/textures/ice.png');
}
context.scene[n - 1].texture = context.cache.textures.ice;
});
$('#' + context.scene.length + 't_noise').on('click', (event) => {
const n = parseInt(event.target.id.split('t')[0]);
if (context.cache.textures.noise == null) {
context.cache.textures.noise = loadTexture(context.gl,
'/static/textures/noise.png');
}
context.scene[n - 1].texture = context.cache.textures.noise;
});
$('#' + context.scene.length + 't_fox').on('click', (event) => {
const n = parseInt(event.target.id.split('t')[0]);
if (context.cache.textures.fox == null) {
context.cache.textures.fox = loadTexture(context.gl,
'/static/textures/fox.png');
}
context.scene[n - 1].texture = context.cache.textures.fox;
});
$('#' + context.scene.length + 't_racer').on('click', (event) => {
const n = parseInt(event.target.id.split('t')[0]);
if (context.cache.textures.racer == null) {
context.cache.textures.racer = loadTexture(context.gl,
'/static/textures/racer.png');
}
context.scene[n - 1].texture = context.cache.textures.racer;
});
$('#' + context.scene.length + 't_racer_wireframe').on('click',
(event) => {
const n = parseInt(event.target.id.split('t')[0]);
if (context.cache.textures.racerWireframe == null) {
context.cache.textures.racerWireframe = loadTexture(
context.gl,
'/static/textures/racer_wireframe.png');
}
context.scene[n - 1].texture = context.cache.textures.racerWireframe;
});
$('#' + context.scene.length + 'instanceoptions input').on('change', (event) => {
const n = parseInt(event.target.attributes[2].nodeValue!.split('instance')[0]);
if ($('input[name=' + n + 'instance]:checked', '#' + n + 'instanceoptions').val() ==
'normal') {
context.scene[n - 1].params.instanceNumber = parseFloat(