@tuby/kereal-osg
Version:
The kereal osg inner engine instance.
1,690 lines (1,541 loc) • 48.5 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var kereal = require('@tuby/kereal');
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
/*
* @Author: vanmit
* @LastEditors: vanmit
* @Date: 2021-08-15 13:31:38
* @LastEditTime: 2022-01-10 14:22:39
* @Descripttion: for osg engine ,but should be load via osg program.
*/
var KerealOSG = /*#__PURE__*/function () {
function KerealOSG() {
_classCallCheck(this, KerealOSG);
this.handlers = {};
this.msghandlers = {};
this.locationHandlers = {};
this.topicHandler = null;
this.msgHandler = null;
}
/**
*
* 初始化引擎
*/
_createClass(KerealOSG, [{
key: "init",
value: function init(data) {
var self = this;
self._subMsg("LocationResult", function (res) {
var type = res.t;
if (self.locationHandlers[type]) {
self.locationHandlers[type](res);
}
}, false);
this.url = "ws://127.0.0.1:9385";
this.guid = "TheViewer";
if (data && data.hasOwnProperty("wsurl")) {
this.url = data.url;
}
if (data && data.hasOwnProperty("viewer")) {
this.guid = data.viewer;
}
var logger = false;
if (data && data.hasOwnProperty("logger")) {
logger = data.logger;
}
this.ws = new WebSocket(this.url);
self.ws.onopen = function () {
console.log("WebSocket opened"); //接受视窗发出的消息,消息内容通过type进行甄别
self._sub(self.guid, function (data) {
var messageJson = eval('(' + data + ')');
var type = messageJson.type;
if (self.msghandlers[type]) {
var ho = self.msghandlers[type];
ho.handler(messageJson.data);
if (ho.once) {
delete self.msghandlers[type];
}
} else {
self.msgHandler(messageJson);
}
}, false);
};
self.ws.onclose = function (e) {
//当客户端收到服务端发送的关闭连接请求时,触发onclose事件
console.log("WebSocket closed");
}; //当客户端收到服务端发来的消息时,触发onmessage事件,参数e.data包含server传递过来的数据
self.ws.onmessage = function (e) {
var messageJson = eval('(' + e.data + ')');
var topic = messageJson.topic;
var data = messageJson.data;
if (logger) console.log("receive", topic, data);
if (topic) {
if (self.handlers[topic]) {
var ho = self.handlers[topic];
ho.handler(data);
if (ho.once) {
self._unSub(topic);
}
} else {
self.topicHandler(messageJson);
}
}
};
self.ws.onerror = function (e) {
//如果出现连接、处理、接收、发送数据失败的时候触发onerror事件
console.log("WebSocket error:" + e);
};
}
}, {
key: "destroy",
value: function destroy() {}
/**
*执行API
*/
}, {
key: "_excuteCmd",
value: function _excuteCmd(name, jsonData) {
if (this.ws.readyState === WebSocket.OPEN) {
//如果Socket连接成功则执行
var obj = {
"engine": 0,
"api": name,
"data": jsonData,
"viewerGuid": this.guid
}; //console.log("WebSocket Send", JSON.stringify(obj));
this.ws.send(JSON.stringify(obj));
}
}
}, {
key: "reset",
value: function reset(data) {
this._excuteCmd("TB_EngineReset", data);
}
}, {
key: "engineClear",
value: function engineClear() {
this._excuteCmd("TB_EngineClear");
}
}, {
key: "sub",
value: function sub(topic) {
var sobj = {
"topic": topic
};
this._excuteCmd("TB_TopicSub", sobj);
}
}, {
key: "unSub",
value: function unSub(topic) {
var sobj = {
"topic": topic
};
this._excuteCmd("TB_TopicUnSub", sobj);
}
}, {
key: "_sub",
value: function _sub(topic, handler, once) {
var obj = {
"handler": handler,
"once": once
};
this.handlers[topic] = obj;
var sobj = {
"topic": topic
};
this._excuteCmd("TB_TopicSub", sobj);
}
}, {
key: "_subMsg",
value: function _subMsg(type, handler, once) {
var obj = {
"handler": handler,
"once": once
};
this.msghandlers[type] = obj;
}
}, {
key: "_unSub",
value: function _unSub(topic) {
var sobj = {
"topic": topic
};
this._excuteCmd("TB_TopicUnSub", sobj);
delete this.handlers[topic];
}
}, {
key: "manipulatorControl",
value: function manipulatorControl(data) {
this._excuteCmd("TB_ManipulatorControl", data);
}
}, {
key: "manipulatorSwitch",
value: function manipulatorSwitch(data) {
this._excuteCmd("TB_ManipulatorSwitch", data);
}
/**
* 光源设置
* @param {object} data
* 全局支持8个光源
* 系统内置0号光源,可以自定义替换,删除自定义后,恢复系统默认0号光源
* guid:非必要,不选则配置全局光
* on:开关:0-关,1-开
* index:光源序号:0-7 ,index为-1时,关闭所有光照
* direction:光源方向 vec3
*/
}, {
key: "lightSourceSet",
value: function lightSourceSet(data) {
this._excuteCmd("TB_SetLightSource", data);
}
/**
* 鼠标事件
* @param {function} function(data){}
*/
}, {
key: "mouseEvent",
value:
/**
* 鼠标事件
* @param {function} function(data){}
*/
function mouseEvent(data) {
this._subMsg("MouseEvent", data, false);
}
}, {
key: "locationGet",
value: function locationGet(data) {
var type = "normal";
if (Object.prototype.toString.call(data) === '[object Object]') {
var sobj = {};
if (data.type) {
type = data.type;
}
sobj.type = type;
if (data.hasOwnProperty("keep")) {
sobj.keep = data.keep;
}
if (data.success) {
this.locationHandlers[type] = data.success;
}
this._excuteCmd("TB_Location_Get", sobj);
} else {
this.locationHandlers[type] = data;
this._excuteCmd("TB_Location_Get", {
"type": type
});
}
}
/**
* 根据经纬度获取高程
* @param {Object} obj
* 参数格式如下:
*data: {
* "crs":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "x":114.3344334, //位置x [必填]
* "y":23.4545433, //位置y [必填]
* },
* success: function(res)
*/
}, {
key: "locationGetElevation",
value: function locationGetElevation(obj) {
this._subMsg("ElevationGetResult", obj.success, true);
this._excuteCmd("TB_Location_GetElevation", obj.data);
}
/**
* 设置位置
* @param {Object} data
* 参数格式如下(data):
* {
* "csys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "x":114.3344334, //位置x [必填]
* "y":23.4545433, //位置y [必填]
* "z":54.54, //位置z [必填]
* "dis":150, //距离
* "heading":0, //偏转角
* "pitch":-45 //俯仰角
* }
*/
}, {
key: "locationSet",
value: function locationSet(data) {
this._excuteCmd("TB_Location_Set", data);
} // 视点操作
/**
* 获取视点
* @param {function} function(data){}
*/
}, {
key: "viewpointGet",
value: function viewpointGet(data) {
this._subMsg("ViewpointGetResult", data, true);
this._excuteCmd("TB_Viewpoint_Get");
}
/**
* 设置视点
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "viewpoint":"-2.11240630202284763_-47.9768531393446409_304.028112125703842_22.5962351807583985_114.542265777527518_-9.49982409086078405",//视点字符串
* }
*/
}, {
key: "viewpointSet",
value: function viewpointSet(data) {
this._excuteCmd("TB_Viewpoint_Set", data);
} // 图层操作
/**
* 图层控制
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"VideoLayer", //图层名称 [必填]
* "show":1 //图层控制 0-隐藏 1-显示 [必填]
* }
*/
}, {
key: "layerControl",
value: function layerControl(data) {
this._excuteCmd("TB_Layer_Control", data);
}
/**
* 图层添加
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"VideoLayer", //图层名称 [必填]
* }
*/
}, {
key: "layerAdd",
value: function layerAdd(data) {
this._excuteCmd("TB_Layer_Add", data);
}
/**
* 图层删除
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"VideoLayer", //图层名称 [必填]
* }
*/
}, {
key: "layerRemove",
value: function layerRemove(data) {
this._excuteCmd("TB_Layer_Remove", data);
}
/**
* 图层清空
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid/guids":"VideoLayer", //图层名称 [必填]
* }
*/
}, {
key: "layerClear",
value: function layerClear(data) {
this._excuteCmd("TB_Layer_Clear", data);
}
/**
* 图层加载
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"VideoLayer", //图层名称 [必填]
* "url":"http://192.168.1.20/api/layer/234334-2132-2323-212123", //图层数据路径 [必填]
* }
*/
}, {
key: "layerLoad",
value: function layerLoad(data) {
this._excuteCmd("TB_Layer_Load", data);
} // 地形操作
/**
* 地形控制
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "name":"VideoLayer", //图层名称 [必填]
* "show":"1", //显示控制 0-隐藏 1-显示[必填]
* }
*/
}, {
key: "terrainControl",
value: function terrainControl(data) {
this._excuteCmd("TB_Terrain_Control", data);
}
/**
* 地形添加
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "name":"VideoLayer", //地形名称 [必填]
* "mode":"1", //地形类别 [必填]
* "data":"string", //地形数据 [必填]
* }
*/
}, {
key: "terrainAdd",
value: function terrainAdd(data) {
this._excuteCmd("TB_Terrain_Add", data);
}
/**
* 地形删除
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "name":"VideoLayer", //地形名称 [必填]
* }
*/
}, {
key: "terrainRemove",
value: function terrainRemove(data) {
this._excuteCmd("TB_Terrain_Remove", data);
}
/**
* 地形加载
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "name":"VideoLayer", //地形名称 [必填]
* "url":"http://192.168.1.20/api/Terrain/234334-2132-2323-212123" //地形数据路劲 [必填]
* }
*/
}, {
key: "terrainLoad",
value: function terrainLoad(data) {
this._excuteCmd("TB_Terrain_Load", data);
}
/**
* 标注控制
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guidList":["guid1","guid2","guid3"], //标注GUID [必填]
* "show": 1, // 展示 1-显示,0-隐藏
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* }
*/
}, {
key: "labelControl",
value: function labelControl(data) {
this._excuteCmd("TB_Label_Control", data);
}
/**
* 标注定位
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"guid",//标注唯一识别符 [必填]
* "dis":200, // 距离眼睛多少米 默认100
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* "heading": 0, // 左右摆头角度 默认0,左负,右正
* "pitch":-45 //上下俯仰角度 抬头为正,低头为负,默认低头45度即-45
* }
*/
}, {
key: "labelLocate",
value: function labelLocate(data) {
this._excuteCmd("TB_Label_Locate", data);
}
/**
* 标注添加
* @param {object} object 传入参数
* 参数格式如下(data):
* {
* guid:唯一编号,string,必要
* layer:所属图层,string,非必要
* parent:所属标注节点,string,非必要
* label:需要显示的文字,\n换行,string,非必要
* crs:坐标类型:0-空间,1-经纬度(默认),非必要
* x,y,z:坐标位置,非必要,不带位置时,拖动添加
* keep:连续添加(mode为0时有效)
* options:选项:
* mode,标签模式,0-始终面向屏幕(默认),1-三维空间面
* min-range,眼睛距离物体显示范围,最小值,float
* max-range,眼睛距离物体显示范围,最大值,float
* width:宽度,米,模式为0时必选
* height:高度,米,模式为0时必选
* pivot:中点位置
* color:文字颜色
* background:背景色,默认为白色
* texture:背景纹理,可以是图片,网页,视频路径
* font:文字字体
* font-size:文字大小,米
* fade:文字显示渐变
* align-mode:文字对其方式:0左上(默认) 1左中 2左下 3中上 4中中 5中下 6右上 7右中 8右下
* show-always:始终显示,0-否(默认)1-是
* border-width:边框宽度,默认0,无边框
* border-color:边框颜色
* border-radius:边框圆角半径,小于宽高一半
* shadow-type:阴影类型
* 0-默认,右下,1-右中,2-右上,3-下中,4-上中,5-左下,6-左中,7-左上,8-轮廓
* shadow-width:阴影大小,float
* shadown-color:阴影颜色
* }
*/
}, {
key: "labelAdd",
value: function labelAdd(object) {
if (object.success != undefined) {
this._subMsg("LabelEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Label_Add", object.data);
} else {
this._excuteCmd("TB_Label_Add", object);
}
}
/**
* 标注更新
* @param {object} object 传入参数
* 参数格式如下(data):
* {
* 同Add,多了move参数,未1时表示移动
* }
*/
}, {
key: "labelUpdate",
value: function labelUpdate(object) {
if (object.success != undefined) {
this._subMsg("LabelEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Label_Update", object.data);
} else {
this._excuteCmd("TB_Label_Update", object);
}
}
/**
* 文字标签加载,内容是添加数据的列表
*/
}, {
key: "labelLoad",
value: function labelLoad(data) {
this._excuteCmd("TB_Label_Load", data);
}
/**
* 标注删除
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "guid",//标注唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* }
*/
}, {
key: "labelRemove",
value: function labelRemove(data) {
this._excuteCmd("TB_Label_Remove", data);
}
/**
* 获取周边标注信息
* @param {object} object 传入参数
* 参数格式如下(object):
* {
* "layer/layers":图层名称/图层列表
* "x":"10", //位置x [必填]
* "y":"20", //位置y [必填]
* "z":"30", //位置z [必填]
* "crs":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "count": "2", // 计算 如果不填或为0,则执行按照距离打开,否则按照数量打开
* "distance": "20" // 距离给定位置[必填]
* }
*/
}, {
key: "lableSearch",
value: function lableSearch(object) {
if (object.success != undefined) {
this._subMsg("LabelSearchResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Label_Search", object.data);
} else {
this._excuteCmd("TB_Label_Search", object);
}
} // 图元操作
/**
* 图元控制
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "layer":'PrimitiveTempLayer', //图层名称
* "guid":'guid', //图形的唯一标识 [必填]
* "show":1 //显示控制 0-隐藏 1-显示 [必填]
* }
*/
}, {
key: "primitiveControl",
value: function primitiveControl(data) {
this._excuteCmd("TB_Primitive_Control", data);
}
/**
* 图元删除
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "layer":'PrimitiveTempLayer', //图层名称
* "guid":'guid', //图形的唯一标识 [必填]
* }
*/
}, {
key: "primitiveRemove",
value: function primitiveRemove(data) {
this._excuteCmd("TB_Primitive_Remove", data);
}
/**
* 图元选择
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "layer":'PrimitiveTempLayer', //图层名称
* "guid":'guid', //图形的唯一标识 [必填]
* }
*/
}, {
key: "primitiveSelect",
value: function primitiveSelect(data) {
this._excuteCmd("TB_Primitive_Select", data);
}
/**
* 图元清理
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "layer":'PrimitiveTempLayer', //图层名称
* }
*/
}, {
key: "primitiveClear",
value: function primitiveClear(data) {
this._excuteCmd("TB_Primitive_Clear", data);
}
/**
* 图元添加
*/
}, {
key: "primitiveAdd",
value: function primitiveAdd(object) {
if (object.success != undefined) {
this._subMsg("PrimitiveEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Primitive_Add", object.data);
} else {
this._excuteCmd("TB_Primitive_Add", object);
}
}
/**
* 图元更新
*/
}, {
key: "primitiveUpdate",
value: function primitiveUpdate(object) {
if (object.success != undefined) {
this._subMsg("PrimitiveEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Primitive_Update", object.data);
} else {
this._excuteCmd("TB_Primitive_Update", object);
}
}
/**
* 图元加载
*/
}, {
key: "primitiveLoad",
value: function primitiveLoad(data) {
this._excuteCmd("TB_Primitive_Load", data);
}
/**
* 图元绘制取消
*/
}, {
key: "primitiveAddCancel",
value: function primitiveAddCancel(data) {
this._excuteCmd("TB_Primitive_AddCancel", data);
}
/**
* 图元绘制完成
*/
}, {
key: "primitiveAddFinish",
value: function primitiveAddFinish(data) {
this._excuteCmd("TB_Primitive_AddFinish", data);
} // 标签操作
/**
* 标签模块初始化
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "urlMap":[ // 标签模板ID与路径映射 [必填]
* {
* "id":0,
* "url":"http://127.0.0.1:16003/mark/0.xml"
* }
* ]
* }
*/
}, {
key: "markInit",
value: function markInit(data) {
this._excuteCmd("TB_Mark_Init", data);
}
/**
* 标签显隐控制
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guidList":["guid1","guid2","guid3"], // 标签GUID[必填]
* "show": 1, //图层显隐 1-显示,0-隐藏 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* }
*/
}, {
key: "markControl",
value: function markControl(data) {
this._excuteCmd("TB_Mark_Control", data);
}
/**
* 标签定位
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"guid", // 标签唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* "dis":200, //距离眼睛多少米 默认为100
* "heading":0, //左右摆头角度 默认0,左负,右正
* "pitch":-45, //上下俯仰角度 抬头为正,低头为负,默认低头45度即-45
* }
*/
}, {
key: "markLocate",
value: function markLocate(data) {
this._excuteCmd("TB_Mark_Locate", data);
}
/**
* 获取周边mark信息
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "layer/layers":图层名称/图层列表
* "x":"10", //位置x [必填]
* "y":"20", //位置y [必填]
* "z":"30", //位置z [必填]
* "crs":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "count": "2", // 计算 如果不填或为0,则执行按照距离打开,否则按照数量打开
* "dis": "20" // 距离给定位置[必填]
* }
*/
}, {
key: "markSearch",
value: function markSearch(object) {
if (object.success != undefined) {
this._subMsg("MarkSearchResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Mark_Search", object.data);
} else {
this._excuteCmd("TB_Mark_Search", object);
}
}
/**
* 标签添加
* @param {object} object 传入参数
* 参数格式如下(data):
* {
* "guid":"guid", // 标签唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填]
* "x":30, [必填]
* "y":3, [必填]
* "z":30, [必填]
* "markUrl/markId/imageUrl":string/int/string, //模板路径/模板ID/图片路径,选其一 [必填]
* "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "text":"文字",//常态显示的文本 默认为空
* "tips":"string",//鼠标移上去显示文本 默认为空
* "mode":1,//朝向 0-始终朝屏幕(默认)1-始终朝天空
* "color":"#FFFFFFFF",//文字颜色
* "background-color":"#FFFFFFFF",//背景颜色
* "font-family":"SimHei",//文字字体 默认”SimHei”
* "padding":1,//边距 边距距离默认10px
* "minRange":1,//眼睛距离物体显示范围,最小值 默认1米
* "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米
* }
*/
}, {
key: "markAdd",
value: function markAdd(object) {
if (object.success != undefined) {
this._subMsg("MarkEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Mark_Add", object.data);
} else {
this._excuteCmd("TB_Mark_Add", object);
}
}
/**
* 图元加载,内容是添加数据的列表
*/
}, {
key: "markLoad",
value: function markLoad(data) {
this._excuteCmd("TB_Mark_Load", data);
}
/**
* 标签更新
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"guid", // 标签唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填]
* "x":30, [必填]
* "y":3, [必填]
* "z":30, [必填]
* "markUrl/markId/imageUrl":string/int/string, //模板路径/模板ID/图片路径,选其一 [必填]
* "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "text":"文字",//常态显示的文本 默认为空
* "tips":"string",//鼠标移上去显示文本 默认为空
* "mode":1,//朝向 0-始终朝屏幕(默认)1-始终朝天空
* "color":"#FFFFFFFF",//文字颜色
* "background-color":"#FFFFFFFF",//背景颜色
* "font-family":"SimHei",//文字字体 默认”SimHei”
* "padding":1,//边距 边距距离默认10px
* "minRange":1,//眼睛距离物体显示范围,最小值 默认1米
* "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米
* }
*/
}, {
key: "markUpdate",
value: function markUpdate(object) {
if (object.success != undefined) {
this._subMsg("MarkEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Mark_Update", object.data);
} else {
this._excuteCmd("TB_Mark_Update", object);
}
}
/**
* 标签删除
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "标签guid" // 标签guid [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* }
*/
}, {
key: "markRemove",
value: function markRemove(data) {
this._excuteCmd("TB_Mark_Remove", data);
} // 模型操作
/**
* 模型模块初始化
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "urlMap":[ // 标签模板ID与路径映射 [必填]
* {
* "id":0,
* "url":"http://127.0.0.1:16003/mark/0.xml"
* }
* ]
* }
*/
}, {
key: "modelInit",
value: function modelInit(data) {
this._excuteCmd("TB_Model_Init", data);
}
/**
* 模型控制
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guidList":["guid1","guid2","guid3"], //模型GUID [必填]
* "show": 1, // 展示 1-显示,0-隐藏 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* }
*/
}, {
key: "modelControl",
value: function modelControl(data) {
this._excuteCmd("TB_Model_Control", data);
}
/**
* 模型定位
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "guid",//模型唯一识别符 [必填]
* "dis": 200, // 距离眼睛多少米 默认100
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* "heading": 0, // 左右摆头角度 默认0,左负,右正
* "pitch": -45 //上下俯仰角度 抬头为正,低头为负,默认低头45度即-45
* }
*/
}, {
key: "modelLocate",
value: function modelLocate(data) {
this._excuteCmd("TB_Model_Locate", data);
}
/**
* 模型点击的获取信息
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* @param {function} function(data){}
* }
*/
}, {
key: "modelGetInfo",
value: function modelGetInfo(data) {
this._subMsg("ModelGetInfoResult", data, true);
this._excuteCmd("TB_Model_GetInfo", {
"layer": "all"
});
}
/**
* 模型添加
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "guid",//模型唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填]
* "modelUrl/modelId":'string', //模型模板路径或ID,选其一 [必填]
* "posture":'string', //模型姿态字符串:位置与偏转角,俯仰角,侧倾角 [必填]
* "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "minRange":1,//眼睛距离物体显示范围,最小值 默认1米
* "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米
* "markAble":0, //标签跟随 0-无标签(默认),1-带有标签
* "markText":'string', //标签文本
* "markUrl":'string', //标签模板路径
* "markOffset_x":20, //图标偏移x米
* "markOffset_y":20, //图标偏移y米
* "markOffset_z":20, //图标偏移z米
* }
*/
}, {
key: "modelAdd",
value: function modelAdd(object) {
if (object.success != undefined) {
this._subMsg("ModelEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Model_Add", object.data);
} else {
this._excuteCmd("TB_Model_Add", object);
}
}
/**
* 模型更新
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "guid",//模型唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填]
* "modelUrl/modelId":'string', //模型模板路径或ID,选其一 [必填]
* "posture":'string', //模型姿态字符串:位置与偏转角,俯仰角,侧倾角 [必填]
* "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "minRange":1,//眼睛距离物体显示范围,最小值 默认1米
* "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米
* "markAble":0, //标签跟随 0-无标签(默认),1-带有标签
* "markText":'string', //标签文本
* "markUrl":'string', //标签模板路径
* "markOffset_x":20, //图标偏移x米
* "markOffset_y":20, //图标偏移y米
* "markOffset_z":20, //图标偏移z米
* }
*/
}, {
key: "modelUpdate",
value: function modelUpdate(object) {
if (object.success != undefined) {
this._subMsg("ModelEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Model_Update", object.data);
} else {
this._excuteCmd("TB_Model_Update", object);
}
}
/**
* 模型删除
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "guid",//模型唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* }
*/
}, {
key: "modelRemove",
value: function modelRemove(data) {
this._excuteCmd("TB_Model_Remove", data);
}
/**
* 模型设置着色器
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "guid",//模型唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* "name": 着色器名称
* "on": 启用/停用
* "vert":vert着色器路径
* "geom":geom着色器路径
* "frag": frag着色器路径
* "uniforms":着色器参数
* "index":顺序
* "box": 是否添加盒子
* "switch":切换当前着色器
* }
*/
}, {
key: "modelSetShader",
value: function modelSetShader(data) {
this._excuteCmd("TB_Model_SetShader", data);
}
/**
* 模型平铺
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "guid",//模型唯一识别符 [必填]
* "layer":"layerName", //图层名称 默认为空,既所有图层查找
* "height":5.0, //double 铺展后上升基准高度 默认为0
* "time":1.0, //double 每个子模型铺展时间 默认为1秒
* "x":0, //double x方向偏移 默认为0
* "y":0, //double y方向偏移 默认为0
* "z":0, //double z方向偏移 默认为0
* "open":1, //int 展开 还是关闭 1-展开,0-关闭
* }
*/
}, {
key: "modelFlatten",
value: function modelFlatten(data) {
this._excuteCmd("TB_Model_Flatten", data);
} // 其他功能
/**
* 运行本地程序
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "appPath":"d:\\notepad.exe" //程序路径 [必填]
* "appParam":"-f pa" //-f pa 参数,空格隔开
* "workDir":"D:" //程序工作路径
* }
*/
}, {
key: "appRun",
value: function appRun(data) {
this._excuteCmd("TB_App_Run", data);
}
/**
* 结束本地进程
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "appName":"notepad.exe" //程序名称 [必填]
* }
*/
}, {
key: "appStop",
value: function appStop(data) {
this._excuteCmd("TB_App_Stop", data);
} // 视频模块
/**
* 视频模块初始化
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "urlMap":[ // 标签模板ID与路径映射
* {
* "id":0,
* "url":"http://127.0.0.1:16003/mark/0.xml"
* }
* ],
* "urlMap":{// 视频窗口风格
* "layoutUrl":"http://127.0.0.1:16003/template/VideoLayout.xml",
* "windowUrl":"http://127.0.0.1:16003/template/VideoWindowStyle.xml",
* "viewUrl":"http://127.0.0.1:16003/template/VideoViewStyle.xml",
* "controlUrl":"http://127.0.0.1:16003/template/VideoControlStyle.xml"
* }
* }
*/
}, {
key: "videoInit",
value: function videoInit(data) {
this._excuteCmd("TB_Video_Init", data);
}
/**
* 打开关闭视频点
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guidList":["guid1","guid2","guid3"], // 标签GUID[必填]
* "show":"0" //展示 1-显示,0-隐藏 [必填]
* }
*/
}, {
key: "videoControl",
value: function videoControl(data) {
this._excuteCmd("TB_Video_Control", data);
}
/**
* 定位视频点
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid": "视频guid",// 视频guid [必填]
* "dis": "200", // 距离眼睛多少米 默认100
* "heading": "-10", //左右摆头角度 默认0,左负,右正
* "pitch": "45" // 上下俯仰角度 抬头为正,低头为负,默认低头45度即-45
* }
*/
}, {
key: "videoLocate",
value: function videoLocate(data) {
this._excuteCmd("TB_Video_Locate", data);
}
/**
* 打开周边视频
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "x":"10", //位置x [必填]
* "y":"20", //位置y [必填]
* "z":"30", //位置z [必填]
* "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "count": "2", // 计算 如果不填或为0,则执行按照距离打开,否则按照数量打开
* "distance": "20" // 距离给定位置[必填]
* }
*/
}, {
key: "videoOpenRange",
value: function videoOpenRange(data) {
this._excuteCmd("TB_Video_OpenRange", data);
}
/**
* 加载视频点数据
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "url": "C:\Users\Administrator\Desktop", //访问得到所有视频数据的WebAPI路径 [必填]
* "token": "授权认证信息", // 授权认证信息
* }
*/
}, {
key: "videoLoad",
value: function videoLoad(data) {
this._excuteCmd("TB_Video_Load", data);
}
/**
* 添加视频点
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "x":"10", //位置x [必填]
* "y":"20", //位置y [必填]
* "z":"30", //位置z [必填]
* "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "name": "string", // 显示的文本 默认为空
* "line": 1 // 是否在打开视频时窗口与视频标签连线 0-不连,1-连线(默认)
* "markUrl": "模板路径——string——必填" // 视频图标模板路径 [必填]
* "mode": 0 // 模式 0,单个视频(默认),1枪球联动,2视频组,4视频融合
* "video":[
{
"IP":"192.168.19.11",
"Port":9099,
"Type":1, (0,RTSP,1海康,2大华)
"Usr":"用户名",
"Pwd":"密码",
"Ptz":1,(0,不控制,1控制)
"Channel":1,通道
}
]
* }
*/
}, {
key: "videoAdd",
value: function videoAdd(object) {
if (object.success != undefined) {
this._subMsg("VideoEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Video_Add", object.data);
} else {
this._excuteCmd("TB_Video_Add", object);
}
}
/**
* 更新视频点
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "x":"10", //位置x [必填]
* "y":"20", //位置y [必填]
* "z":"30", //位置z [必填]
* "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认)
* "name": "string", // 显示的文本 默认为空
* "line": 1 // 是否在打开视频时窗口与视频标签连线 0-不连,1-连线(默认)
* "markUrl": "模板路径——string——必填" // 视频图标模板路径 [必填]
* "mode": 0 // 模式 0,单个视频(默认),1枪球联动,2视频组,4视频融合
* "video":[
{
"IP":"192.168.19.11",
"Port":9099,
"Type":1, (0,RTSP,1海康,2大华)
"Usr":"用户名",
"Pwd":"密码",
"Ptz":1,(0,不控制,1控制)
"Channel":1,通道
},
]
* }
*/
}, {
key: "videoUpdate",
value: function videoUpdate(object) {
if (object.success != undefined) {
this._subMsg("VideoEditResult", object.success, true);
}
if (object.data != undefined) {
this._excuteCmd("TB_Video_Update", object.data);
} else {
this._excuteCmd("TB_Video_Update", object);
}
}
/**
* 删除视频点
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "guid":"需要移除的GUID"[必填]
* }
*/
}, {
key: "videoRemove",
value: function videoRemove(data) {
this._excuteCmd("TB_Video_Remove", data);
}
}, {
key: "videoCloseAll",
value: function videoCloseAll(data) {
this._excuteCmd("TB_Video_CloseAll", data);
} // 巡逻模块
/**
* 设置巡逻路径
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "path":"C:\Users\Administrator\Desktop",// 巡逻路径URl[必填]
* "playTime":"5", // 视频播放时间(比如5秒) [必填]
* "videoNodes":[{'time':4,'vids':["335c5042-1871-4f56-a1e5-27817a830089"]}]
* }
*/
}, {
key: "patrolSetPath",
value: function patrolSetPath(data) {
this._excuteCmd("TB_Patrol_SetPath", data);
}
/**
* 执行巡逻一次
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "path":"C:\Users\Administrator\Desktop", //巡逻路径URl [必填]
* "speed":"2" // 巡逻倍速 巡逻倍速0-10.0,默认1.0
* }
*/
}, {
key: "patrolOnce",
value: function patrolOnce(data) {
this._excuteCmd("TB_Patrol_Once", data);
}
/**
* 开始巡逻
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "path":"C:\Users\Administrator\Desktop", //巡逻路径URl [必填]
* "speed":"2" // 巡逻倍速 巡逻倍速0-10.0,默认1.0
* "lenMode":"3" //镜头模式 1(室外飞行,默认),2(室外步行),3(室内飞行),4(室内步行)
* }
*/
}, {
key: "patrolStart",
value: function patrolStart(data) {
this._excuteCmd("TB_Patrol_Start", data);
}
/**
* 停止巡逻
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "path":"C:\Users\Administrator\Desktop", //巡逻路径URl [必填]
* "speed":"2" // 巡逻倍速 巡逻倍速0-10.0,默认1.0
* "lenMode":"3" //镜头模式 1(室外飞行,默认),2(室外步行),3(室内飞行),4(室内步行)
* "travelMode":"2" //播放模式 0(从头到尾,然后从尾到头,默认), 1(循环播放), 2(只播放一次),3(随机播放)
* }
*/
}, {
key: "patrolStop",
value: function patrolStop(data) {
this._excuteCmd("TB_Patrol_Stop", data);
}
/**
* 暂停巡逻
*/
}, {
key: "patrolPause",
value: function patrolPause() {
this._excuteCmd("TB_Patrol_Pause");
}
/**
* 恢复巡逻
*/
}, {
key: "patrolUnpause",
value: function patrolUnpause() {
this._excuteCmd("TB_Patrol_Unpause");
} // 报警模块
/**
* 报警模块初始化
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "alarmFlashEnable":1, //启用报警标签闪烁 0-不启用 1-启用(默认)
* "alarmFlashTime":2, //报警标签闪烁时间3间隔 默认3秒
* "alarmEyeDis":50, //报警距离眼睛距离 默认50米
* "alarmEyeHeading":0, //报警偏转角度 默认0,
* "alarmEyePitch":-45, //报警俯仰角度 正仰视,负俯视,默认俯视45度
* "alarmCircleRadius":50, //报警圈大小 默认50米
* "alarmLevelColor":[ //报警颜色 不同报警等级不同,内置五种可配置级别0-5,
{
"level":0,
"color":#FFFFFFFF
},
]
* }
*/
}, {
key: "alarmInit",
value: function alarmInit(data) {
this._excuteCmd("TB_Alarm_Init", data);
}
/**
* 启动某类别报警
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "type": "1", // 类型 1-视频报警 2-设备报警 3-模型报警 4-定位报警 [必填]
* "enable": "1" // 可用性 1-启用,0-禁用 [必填]
* }
*/
}, {
key: "alarmEnable",
value: function alarmEnable(data) {
this._excuteCmd("TB_Alarm_Enable", data);
}
/**
* 发送报警
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "srcGuid":"报警源GUID" [必填]
* "type":"1", 报警类型 1-视频报警 2-设备报警 3-模型报警 4-定位报警 [必填]
* "data":{} //报警数据根据不同类型不同
* }
*/
}, {
key: "alarmSend",
value: function alarmSend(data) {
this._excuteCmd("TB_Alarm_Send", data);
}
/**
* 取消报警
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "deviceGuid":"需要取消的报警设备GUID" [必填]
* }
*/
}, {
key: "alarmCancel",
value: function alarmCancel(data) {
this._excuteCmd("TB_Alarm_Cancel", data);
}
/**
* 执行其它指令
*/
}, {
key: "runCmd",
value: function runCmd(data) {
this._excuteCmd(data.cmd, data.data);
}
/**
* 清除报警
*/
}, {
key: "alarm_Clear",
value: function alarm_Clear() {
this._excuteCmd("TB_Alarm_Clear");
}
/**
* 鼠标双击事件
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "key":0/1/2,
* "x":20,
* "y":40
* }
*/
}, {
key: "_mouseDoubleClick",
value: function _mouseDoubleClick(data) {
this._excuteCmd("TB_MouseEvent_DoubleClick", data);
}
/**
* 鼠标移动时的回调
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "x":20,
* "y":40
* }
*/
}, {
key: "_mouseMove",
value: function _mouseMove(data) {
this._excuteCmd("TB_MouseEvent_Move", data);
}
/**
* 鼠标按下时的回调
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "key":0/1/2,
* "x":20,
* "y":40
* }
*/
}, {
key: "_mouseDown",
value: function _mouseDown(data) {
this._excuteCmd("TB_MouseEvent_Down", data);
}
/**
* 鼠标松开时的回调
* @param {object} data 传入参数
* 参数格式如下(data):
* {
* "key":0/1/2,
* "x":20,
* "y":40
* }
*/
}, {
key: "_mouseUp",
value: function _mouseUp(data) {
this._excuteCmd("TB_MouseEvent_Up", data);
}
/**
* 鼠标松开时的回调
* @param {object} location 传入参数
* 参数格式如下(location):
* {
* "key":0/1/2,
* "x":20,
* "y":40
* }
*/
}, {
key: "_mouseScroll",
value: function _mouseScroll(data) {
this._excuteCmd("TB_MouseEvent_Scroll", data);
}
/**
* 键盘的松开事件
* @param {object} code 传入参数 code 键盘的ASCII值
* 参数格式如下(location):
* {
* "key"ASCII值:,
* }
*/
}, {
key: "_keyUp",
value: function _keyUp(code) {
this._excuteCmd("TB_KeyEvent_Up", code);
}
/**
* 键盘的按下事件
* @param {object} code 传入参数 code 键盘的ASCII值
* 参数格式如下(location):
* {
* "key"ASCII值:,
* }
*/
}, {
key: "_keyDown",
value: function _keyDown(code) {
this._excuteCmd("TB_KeyEvent_Down", code);
}
/**
* 元素宽高尺寸改变发生的事件
* @param {object} size 传入宽高尺寸
* 参数格式如下(location):
* {
* "x":20,
* "y":40
* }
*/
}, {
key: "_resize",
value: function _resize(size) {
this._excuteCmd("TB_Event_Resize", size);
}
}, {
key: "_s4",
value: function _s4() {
return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
}
}, {
key: "_newGuid",
value: function _newGuid() {
return this._s4() + this._s4() + "-" + this._s4() + "-" + this._s4() + "-" + this._s4() + "-" + this._s4() + this._s4() + this._s4();
}
}]);
return KerealOSG;
}();
var createKereal = function createKereal(options) {
var engine = new KerealOSG();
return new kereal.Kereal(options, engine);
};
exports.KerealOSG = KerealOSG;
exports["default"] = createKereal;