mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/MI-38.git
synced 2026-01-24 09:55:38 +03:00
407 lines
11 KiB
JavaScript
407 lines
11 KiB
JavaScript
"use strict";
|
|
|
|
var id_but = "S1000D_root";
|
|
var old_id_but = "S1000D_root";
|
|
|
|
var m_app = null;
|
|
var m_anim = null;
|
|
var m_cfg = null;
|
|
var m_cont = null;
|
|
var m_ctl = null;
|
|
var m_data = null;
|
|
var m_main = null;
|
|
var m_scs = null;
|
|
var m_version = null;
|
|
var m_nla = null;
|
|
var m_obj = null;
|
|
var m_log_nodes = null;
|
|
var DEBUG = null;
|
|
var id_button = id_but;
|
|
var CANVAS_CONTAINER_ID = 'main_canvas_container';
|
|
var CANVAS_REPLACMENT = 'no_webgl_logo';
|
|
var ENGINE_PAUSE_TIMEOUT = 10000000;
|
|
|
|
var _canvas_elem = null;
|
|
var _engine_pause_func = null;
|
|
|
|
var _is_init = null;
|
|
|
|
|
|
b4w.register('3d_catalogue', function(exports, require) {
|
|
m_app = require('app');
|
|
m_anim = require('animation');
|
|
m_cfg = require('config');
|
|
m_cont = require('container');
|
|
m_ctl = require('controls');
|
|
m_data = require('data');
|
|
m_main = require('main');
|
|
m_scs = require('scenes');
|
|
m_version = require('version');
|
|
m_nla = require('nla');
|
|
m_obj = require('objects');
|
|
m_log_nodes = require("logic_nodes");
|
|
DEBUG = (m_version.type() === 'DEBUG');
|
|
id_button = id_but;
|
|
CANVAS_CONTAINER_ID = 'main_canvas_container';
|
|
CANVAS_REPLACMENT = 'no_webgl_logo';
|
|
ENGINE_PAUSE_TIMEOUT = 10000000;
|
|
|
|
_canvas_elem = null;
|
|
_engine_pause_func = null;
|
|
|
|
_is_init = false;
|
|
|
|
|
|
/*exports.init = function() {
|
|
onresize();
|
|
console.log('3Dloaded');
|
|
}*/
|
|
});
|
|
|
|
window.addEventListener('load', function() {
|
|
b4w.require('3d_catalogue', 'LOGO_NS').init;
|
|
}, false);
|
|
|
|
function registerAll3d() {
|
|
console.log('register3D engine');
|
|
}
|
|
|
|
function outline(e) {
|
|
if (id_but != e) {
|
|
old_id_but = id_but;
|
|
id_but = e;
|
|
} else
|
|
id_but = e;
|
|
}
|
|
|
|
var json = null;
|
|
|
|
function loadJson(e) {
|
|
console.log('load3D');
|
|
var folder = '';
|
|
var full = location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '');
|
|
var stLink = jQuery(".container_text").attr('link');
|
|
var urnP = e;
|
|
if ((urnP != '') && (urnP != null) && (urnP != undefined)) {
|
|
console.log("e = " + e);
|
|
$.ajax({
|
|
type: "POST",
|
|
url: full + "/Resolver/resolver.php",
|
|
data: {
|
|
url: stLink,
|
|
function: 'urlFolder'
|
|
},
|
|
success: function(data) {
|
|
folder = data;
|
|
regex = /^[.]?[\/]?(.*)/g;
|
|
mat = regex.exec(folder);
|
|
|
|
console.log("folder = " + folder);
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: full + "/Resolver/resolver.php",
|
|
data: {
|
|
url: folder,
|
|
function: 'getFyletype',
|
|
urn: urnP,
|
|
type: '.json'
|
|
}, //$urn='', $url='', $type=''
|
|
success: function(data) {
|
|
console.log("url = " + full + '/' + folder + '/' + data);
|
|
/*folder = data;
|
|
regex = /^[.]?[\/]?(.*)/g;
|
|
mat = regex.exec(folder);
|
|
//console.log(mat);
|
|
getUrlpartURN(urn, mat[1], obj, objText);*/
|
|
|
|
json = full + '/' + folder + '/' + data;
|
|
registerAll3d();
|
|
onresize();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
console.log(json);
|
|
}
|
|
|
|
//json = e;
|
|
|
|
}
|
|
|
|
function onresize() {
|
|
if (!_is_init && window.innerWidth >= 200) {
|
|
init_engine();
|
|
|
|
return;
|
|
}
|
|
|
|
if (!_is_init && window.innerWidth < 200) {
|
|
window.addEventListener("resize", onresize);
|
|
|
|
return;
|
|
}
|
|
|
|
if (_is_init && window.innerWidth >= 200) {
|
|
var cont = m_cont.get_container();
|
|
|
|
cont.style.display = "block";
|
|
|
|
return;
|
|
}
|
|
|
|
if (_is_init && window.innerWidth < 200) {
|
|
var cont = m_cont.get_container();
|
|
|
|
cont.style.display = "none";
|
|
|
|
if (!m_main.is_paused())
|
|
m_main.pause();
|
|
|
|
|
|
}
|
|
}
|
|
|
|
function init_engine() {
|
|
_is_init = true
|
|
|
|
m_app.init({
|
|
canvas_container_id: CANVAS_CONTAINER_ID,
|
|
callback: init_cb,
|
|
gl_debug: false,
|
|
physics_enabled: false,
|
|
quality: m_cfg.P_HIGH,
|
|
report_init_failure: false,
|
|
alpha: true,
|
|
assets_dds_available: !DEBUG,
|
|
assets_min50_available: !DEBUG,
|
|
force_container_ratio: 800 / 450,
|
|
autoresize: true
|
|
})
|
|
|
|
/*var cont = m_cont.get_container();
|
|
|
|
cont.style.display = "block";*/
|
|
}
|
|
|
|
function init_cb(canvas_elem, success) {
|
|
if (!success) {
|
|
return;
|
|
}
|
|
|
|
_canvas_elem = canvas_elem;
|
|
|
|
load_stuff();
|
|
}
|
|
|
|
function load_stuff() {
|
|
m_data.load(json, loaded_callback, false, true)
|
|
}
|
|
|
|
function check_user_agent(str) {
|
|
var user_agent = navigator.userAgent
|
|
|
|
if (user_agent.indexOf(str) > -1) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function loaded_callback(data_id) {
|
|
var canv_repl = document.getElementById(CANVAS_REPLACMENT)
|
|
var cont = m_cont.get_container()
|
|
|
|
if (canv_repl) {
|
|
canv_repl.style.display = "none";
|
|
}
|
|
|
|
if (cont) {
|
|
cont.style.display = "block";
|
|
}
|
|
|
|
_canvas_elem.oncontextmenu = function(e) {
|
|
e.preventDefault()
|
|
e.stopPropagation()
|
|
|
|
return false;
|
|
}
|
|
|
|
_canvas_elem.style.display = 'block';
|
|
m_app.enable_camera_controls(false, true, false, _canvas_elem, true)
|
|
|
|
var cam = m_scs.get_active_camera()
|
|
|
|
m_ctl.remove_sensor_manifold(cam, 'ROT_UP')
|
|
m_ctl.remove_sensor_manifold(cam, 'ROT_DOWN')
|
|
m_ctl.remove_sensor_manifold(cam, 'ROT_LEFT')
|
|
m_ctl.remove_sensor_manifold(cam, 'ROT_RIGHT')
|
|
|
|
enable_timeout()
|
|
|
|
window.addEventListener('beforeunload', function() {
|
|
_canvas_elem.style.display = 'none';
|
|
|
|
if (canv_repl) {
|
|
canv_repl.style.display = "block";
|
|
}
|
|
})
|
|
|
|
_canvas_elem.addEventListener('mousedown', resume_engine, false)
|
|
_canvas_elem.addEventListener('mousewheel', resume_engine, false)
|
|
_canvas_elem.addEventListener('mousemove', resume_engine, false)
|
|
_canvas_elem.addEventListener('DOMMouseScroll', resume_engine, false)
|
|
_canvas_elem.addEventListener('touchstart', resume_engine, false)
|
|
_canvas_elem.addEventListener('touchmove', resume_engine, false)
|
|
|
|
window.removeEventListener('resize', onresize)
|
|
window.addEventListener('resize', onresize)
|
|
|
|
}
|
|
|
|
function resume_engine() {
|
|
clearTimeout(_engine_pause_func)
|
|
m_main.resume()
|
|
enable_timeout()
|
|
}
|
|
|
|
function enable_timeout() {
|
|
_engine_pause_func = setTimeout(pause_engine, ENGINE_PAUSE_TIMEOUT)
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
$('body').on('click','.b4webJsonMenuButton',function(event){
|
|
resume_engine();
|
|
var doThat = $(this).attr('val');
|
|
m_log_nodes.run_entrypoint("Scene", doThat);
|
|
});
|
|
$('body').on('click','.S1000DIntRefParam',function (event) {
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
console.log($(this).attr('val'));
|
|
resume_engine();
|
|
var doThat = $(this).attr('val');
|
|
if (id_but != doThat) {
|
|
old_id_but = id_but;
|
|
id_but = doThat;
|
|
console.log(id_but);
|
|
var detal = m_scs.get_object_by_name(id_but);
|
|
var detal_tag = m_scs.get_object_by_name(id_but);
|
|
if(old_id_but !== 'S1000D_root'){
|
|
var detal_old = m_scs.get_object_by_name(old_id_but);
|
|
m_scs.clear_outline_anim(detal_old);
|
|
}
|
|
else{
|
|
m_scs.clear_outline_anim(detal);
|
|
}
|
|
|
|
|
|
m_scs.apply_outline_anim_def(detal);
|
|
var meta_tag = m_obj.get_meta_tags(detal_tag);
|
|
console.log("метатег "+detal_tag);
|
|
var category = meta_tag.category;
|
|
console.log(category);
|
|
var all_obj = m_scs.get_all_objects("MESH");
|
|
for (var key in all_obj) {
|
|
var current_det = all_obj[key];
|
|
var current_meta_tag = m_obj.get_meta_tags(current_det);
|
|
var current_cat = current_meta_tag.category;
|
|
if (current_cat == category) {
|
|
|
|
m_scs.apply_outline_anim_def(current_det);
|
|
}
|
|
else {
|
|
m_scs.clear_outline_anim(current_det);
|
|
}
|
|
}
|
|
|
|
} else
|
|
id_but = doThat;
|
|
|
|
|
|
});
|
|
|
|
$('body').on('click','a[val='+id_but+'].S1000DIntRefParam',function(event){
|
|
console.log($('a[val='+id_but+'].S1000DIntRefParam'));
|
|
var detal = m_scs.get_object_by_name(id_but);
|
|
var detal_old = m_scs.get_object_by_name(old_id_but);
|
|
m_scs.clear_outline_anim(detal_old);
|
|
m_scs.apply_outline_anim_def(detal);
|
|
var meta_tag = m_obj.get_meta_tags(detal);
|
|
var category = meta_tag.category;
|
|
var all_obj = m_scs.get_all_objects("MESH");
|
|
for (var key in all_obj) {
|
|
var current_det = all_obj[key];
|
|
var current_meta_tag = m_obj.get_meta_tags(current_det);
|
|
var current_cat = current_meta_tag.category;
|
|
if (current_cat == category) {
|
|
|
|
m_scs.apply_outline_anim_def(current_det);
|
|
}
|
|
else {
|
|
m_scs.clear_outline_anim(current_det);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
$('body').on('click','a[val='+id_but+'].S1000DIntRefParam',function(event){
|
|
console.log($('a[val='+id_but+'].S1000DIntRefParam'));
|
|
var detal = m_scs.get_object_by_name(id_but);
|
|
var detal_old = m_scs.get_object_by_name(old_id_but);
|
|
m_scs.clear_outline_anim(detal_old);
|
|
m_scs.apply_outline_anim_def(detal);
|
|
var meta_tag = m_obj.get_meta_tags(detal);
|
|
var category = meta_tag.category;
|
|
var all_obj = m_scs.get_all_objects("MESH");
|
|
for (var key in all_obj) {
|
|
var current_det = all_obj[key];
|
|
var current_meta_tag = m_obj.get_meta_tags(current_det);
|
|
var current_cat = current_meta_tag.category;
|
|
if (current_cat == category) {
|
|
|
|
m_scs.apply_outline_anim_def(current_det);
|
|
}
|
|
else {
|
|
m_scs.clear_outline_anim(current_det);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
//Скрыть якоря
|
|
$('body').on('click','.b4webJsonMenuButton',function(event){
|
|
resume_engine();
|
|
var doThat = $(this).attr('val');
|
|
if (doThat == "hide_anchors") {
|
|
m_log_nodes.run_entrypoint("Scene", doThat);
|
|
var all_anchors = m_scs.get_all_objects("EMPTY");
|
|
for (var key in all_anchors) {
|
|
var current_anchor = all_anchors[key];
|
|
m_scs.hide_object(current_anchor);
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
// Показать якоря
|
|
$('body').on('click','.b4webJsonMenuButton',function(event){
|
|
resume_engine();
|
|
var doThat = $(this).attr('val');
|
|
if (doThat == "show_anchors") {
|
|
m_log_nodes.run_entrypoint("Scene", doThat);
|
|
var all_anchors = m_scs.get_all_objects("EMPTY");
|
|
for (var key in all_anchors) {
|
|
var current_anchor = all_anchors[key];
|
|
m_scs.show_object(current_anchor);
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
function pause_engine() {
|
|
m_main.pause()
|
|
} |