devagent-ignition 0.1.7__tar.gz → 0.1.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/PKG-INFO +1 -1
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/SHA256SUMS.txt +2 -2
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/three_scene.js +22 -8
- devagent_ignition-0.1.8/devagent_spatial/__init__.py +1 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/pyproject.toml +1 -1
- devagent_ignition-0.1.7/devagent_spatial/__init__.py +0 -1
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/.gitignore +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/README.md +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/RELEASE_MANIFEST.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/SOURCE_PROVENANCE.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/agent.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/creator.css +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/creator_2d.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/creator_original_r9.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/creator_original_v8.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/creator_r9_diagnostics.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/creator_scene.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/creator_ui.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/customer_documents.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/equipment_controls.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/facility2d.css +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/facility2d_app.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/facility2d_core.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/facility2d_simulation.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/facility2d_viewer.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/fallback_scene.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/flow_geometry.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/harness.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/live_design_review.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/operations_ui.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/operator_viewer.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/project_package.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/r9_transport.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/runtime_feed.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/studio.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/style.css +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/test_workspace.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/unified_engineer.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/v076_fat_ui.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/v078_command_ui.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/viewer.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/assets/viewer.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/design-system.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_hmi.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/agent_harness.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/agent_runtime.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/contract_opc_fat.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/contract_opc_source.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/control_intents.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/customer_intake.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/engineering_expertise.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/generator.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/ignition_native.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/ignition_project.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/industrial_templates.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/live_lab_binding.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/model.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/native_reference.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/opc_snapshot.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/operations.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/operations_capture.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/operations_lab.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/original_r9.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/original_v8.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/preflight.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/preview_simulation.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/project_package.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/qualification.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/strict_json.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/studio.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/studio_workflow.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/test_reporting.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/v076_opc_fat.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/v078_commands.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/v078_native_commands.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/v07_fat.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/v07_native.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/v083_native.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/CV101-command-contract-PENDING.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/cv101_guided.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/make_examples.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/single_floor.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/v0771_training_wizard.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/warehouse-3floor-standard-2d.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/warehouse-operations-synthetic.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/warehouse-v07-lab-bindings-PENDING.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/warehouse.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/water.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/REFERENCE_SHA256.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/web/app.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/web/index.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/web/lab_panel.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/web/model.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/web/state_adapter.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/web/styles.css +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/README_R9.md +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/SHA256SUMS.txt +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/SNAPSHOT_SHA256SUMS.txt +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/flow_routes.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/flow_sim.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/lab_control.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/app.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/index.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/lab_panel.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/model.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/state_adapter.mjs +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/styles.css +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/LICENSE-three.txt +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/SHA256SUMS.txt +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/addons/controls/OrbitControls.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/three.core.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/three.module.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/README.md +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/SHA256SUMS.txt +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/model.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/run_demo.sh +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/server.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/tests/browser_smoke.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/tests/test_v8.py +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/topology.json +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/web/app.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/web/index.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/web/simulator.html +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/web/simulator.js +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/web/style.css +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/sample_customer_inputs/Plant_Equipment_Register.csv +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/sample_customer_inputs/Plant_Flow_Requirements.txt +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/sample_customer_inputs/Raw_PLC_Tag_Export.csv +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/templates/warehouse_connections.csv +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/templates/warehouse_equipment.csv +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/templates/warehouse_signals.csv +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/templates/water_connections.csv +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/templates/water_equipment.csv +0 -0
- {devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/templates/water_signals.csv +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: devagent-ignition
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: Offline industrial HMI engineering and Ignition Perspective candidate tools (production deployment not qualified)
|
|
5
5
|
Project-URL: Repository, https://github.com/tomha85/devagent-ignition
|
|
6
6
|
Project-URL: Documentation, https://github.com/tomha85/devagent-ignition#readme
|
|
@@ -28,7 +28,7 @@ c6b47941a2ffe72d297d329899b252f898904a0f37c1592689eeb81e0815147c assets/runtime
|
|
|
28
28
|
6f0dcc9f218455b708552daa0536b2afb2d68b4095a1a6956f2147c329a6ff2f assets/studio.html
|
|
29
29
|
c9f87624386bbe84ab7d71f93708f00f91a69e0d9693738cfee51913e5831fdf assets/style.css
|
|
30
30
|
fd0d07ddec872de25c4e485573d5aa5b0c7a2c3137a93e65c6406b637fad7ad7 assets/test_workspace.html
|
|
31
|
-
|
|
31
|
+
1463a628e50ba2f355e621372386777cd5d03c0c07aaec351e468c68ae9fc1dc assets/three_scene.js
|
|
32
32
|
af23f86ef51e18dfc94355e77fe9fb52570db14466d05d6dadededf17458fe25 assets/unified_engineer.js
|
|
33
33
|
531c378fe3aae0c1d0686da48d7a4eba371ca7641b343b952dc8448f1cf65dc1 assets/v076_fat_ui.js
|
|
34
34
|
d009f79a79ed1278911c81818b97a7dbce72464b599bb00f6116b81e1b1f9b5c assets/v078_command_ui.js
|
|
@@ -39,7 +39,7 @@ d009f79a79ed1278911c81818b97a7dbce72464b599bb00f6116b81e1b1f9b5c assets/v078_co
|
|
|
39
39
|
7ca0cdaea16239fc543fa63a5079fe40e4192c5281dc88085c5959ea5f350359 DESIGN_STANDARD_V1.md
|
|
40
40
|
54ee77ca35589b06bd093204c9e5b28eabb69a8b2158ef1be5897386d3676c3f design-system.json
|
|
41
41
|
287744606d4ec09533bb0af2ab6c1e059e614a7d87bc8c365d0f1e16c646bff8 devagent_hmi.py
|
|
42
|
-
|
|
42
|
+
aeae4e316fa4871428ff9140bd2acf6804b59517c6f5a1b6852ba8f8a2b661f9 devagent_spatial/__init__.py
|
|
43
43
|
a6b1a2a97e2ec31e2de7f4c576b9482f66d3aa7fb356b06f0475bcd221dd8116 devagent_spatial/agent_harness.py
|
|
44
44
|
a54c22bb64e5ff6b8d720bc44a73d851388f3f55adcba0f5f17098349895f2a4 devagent_spatial/agent_runtime.py
|
|
45
45
|
f57e58f596ab5395b5a9692158cca43866de32ec9f8d07bdec363a36610e3d2b devagent_spatial/contract_opc_fat.py
|
|
@@ -47,7 +47,7 @@ export async function startThree(model,host,onSelect){
|
|
|
47
47
|
highlight:new T.MeshStandardMaterial({color:0xd6b66e,metalness:.54,roughness:.42}),
|
|
48
48
|
};
|
|
49
49
|
const mat=(c,metal=.48,rough=.48,opacity=1)=>new T.MeshStandardMaterial({color:c,metalness:metal,roughness:rough,transparent:opacity<1,opacity,side:T.DoubleSide});
|
|
50
|
-
const assets=new Map(),pickables=[],floors=new Map(),sensorLamps=new Map();
|
|
50
|
+
const assets=new Map(),pickables=[],floors=new Map(),sensorLamps=new Map(),assetLabels=new Map();
|
|
51
51
|
const boxGeometry=new T.BoxGeometry(1,1,1);
|
|
52
52
|
function box(g,x,y,z,dx,dy,dz,m){const o=new T.Mesh(boxGeometry,m);o.position.set(x,y,z);o.scale.set(Math.max(.03,dx),Math.max(.03,dy),Math.max(.03,dz));o.castShadow=true;o.receiveShadow=true;g.add(o);return o;}
|
|
53
53
|
function cylinder(g,x,y,z,rad,height,m,segments=20){const o=new T.Mesh(new T.CylinderGeometry(rad,rad,height,segments),m);o.position.set(x,y,z);o.castShadow=true;o.receiveShadow=true;g.add(o);return o;}
|
|
@@ -209,7 +209,7 @@ export async function startThree(model,host,onSelect){
|
|
|
209
209
|
box(g,0,Math.max(.25,sy*.5),0,sx,sy,sz,mat(base));
|
|
210
210
|
box(g,0,Math.max(.4,sy),0,sx*.86,.085,sz*.82,mats.trim);
|
|
211
211
|
}
|
|
212
|
-
const name=label(e.id);name.position.set(0,Math.max(.8,sy)+.95,0);g.add(name);
|
|
212
|
+
const name=label(e.id);name.position.set(0,Math.max(.8,sy)+.95,0);name.userData.isEquipmentLabel=true;g.add(name);assetLabels.set(e.id,name);
|
|
213
213
|
// Accessible click targets: industrial belts are too thin for reliable picking.
|
|
214
214
|
// Invisible proxy is local to the asset group, never rendered, never collidable.
|
|
215
215
|
const isTransport=['conveyor','sorter','junction'].includes(kind);
|
|
@@ -391,7 +391,21 @@ export async function startThree(model,host,onSelect){
|
|
|
391
391
|
}
|
|
392
392
|
}
|
|
393
393
|
const ray=new T.Raycaster();const cursor=new T.Vector2();let selectedId=null;
|
|
394
|
-
|
|
394
|
+
// Progressive label disclosure keeps large R9-style warehouse overviews legible.
|
|
395
|
+
// No inferred equipment relationships or operational status.
|
|
396
|
+
function refreshLabels(){
|
|
397
|
+
const candidates=model.equipment.filter(e=>visibleFloor==='all'||String(e.floor)===visibleFloor);
|
|
398
|
+
const near=dist<33,mid=dist<95;
|
|
399
|
+
const stride=near?1:Math.max(1,Math.ceil(candidates.length/(mid?32:18)));
|
|
400
|
+
let i=0;
|
|
401
|
+
for(const e of model.equipment){
|
|
402
|
+
const sprite=assetLabels.get(e.id);if(!sprite)continue;
|
|
403
|
+
const inFloor=visibleFloor==='all'||String(e.floor)===visibleFloor;
|
|
404
|
+
sprite.visible=inFloor&&(e.id===selectedId||near||(i++%stride===0));
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
function selected(id){selectedId=id;const g=assets.get(id);selectRing.visible=!!g;refreshLabels();if(g){const e=model.equipment.find(x=>x.id===id);selectRing.position.set(g.position.x,e.position.y-.42,g.position.z);selectRing.scale.setScalar(Math.max(1,Math.min(2.5,e.dimensions.x*.48)));}}
|
|
395
409
|
// Frame each customer facility, independent of floor count or asset quantity.
|
|
396
410
|
const bb=new T.Box3();
|
|
397
411
|
for(const e of model.equipment){
|
|
@@ -408,7 +422,7 @@ export async function startThree(model,host,onSelect){
|
|
|
408
422
|
function fitCamera(){
|
|
409
423
|
if(activeBox.isEmpty())return;
|
|
410
424
|
const w=Math.max(320,host.clientWidth||1100),h=Math.max(280,host.clientHeight||640);
|
|
411
|
-
const aspect=w/h,halfAngle=T.MathUtils.degToRad(camera.fov*.5),m=.
|
|
425
|
+
const aspect=w/h,halfAngle=T.MathUtils.degToRad(camera.fov*.5),m=.93;
|
|
412
426
|
const n=new T.Vector3(Math.cos(el)*Math.sin(az),Math.sin(el),Math.cos(el)*Math.cos(az));
|
|
413
427
|
const right=new T.Vector3(Math.cos(az),0,-Math.sin(az));
|
|
414
428
|
const up=new T.Vector3().crossVectors(n,right).normalize();
|
|
@@ -440,20 +454,20 @@ export async function startThree(model,host,onSelect){
|
|
|
440
454
|
activeBox.expandByPoint(p.clone().sub(h));activeBox.expandByPoint(p.clone().add(h));
|
|
441
455
|
}
|
|
442
456
|
if(!activeBox.isEmpty())target.copy(activeBox.getCenter(new T.Vector3()));
|
|
443
|
-
fitCamera();updateCamera();
|
|
457
|
+
fitCamera();updateCamera();refreshLabels();
|
|
444
458
|
}
|
|
445
459
|
let dragging=false,moved=false,px=0,py=0,startX=0,startY=0;
|
|
446
460
|
renderer.domElement.style.touchAction='none';
|
|
447
461
|
renderer.domElement.addEventListener('pointerdown',ev=>{if(ev.button!==0)return;dragging=true;moved=false;startX=px=ev.clientX;startY=py=ev.clientY;renderer.domElement.setPointerCapture(ev.pointerId);});
|
|
448
|
-
renderer.domElement.addEventListener('pointermove',ev=>{if(!dragging)return;const dx=ev.clientX-px,dy=ev.clientY-py;px=ev.clientX;py=ev.clientY;if(Math.hypot(ev.clientX-startX,ev.clientY-startY)>6)moved=true;if(!moved)return;az-=dx*.006;el=Math.max(.08,Math.min(1.5,el+dy*.006));updateCamera();});
|
|
462
|
+
renderer.domElement.addEventListener('pointermove',ev=>{if(!dragging)return;const dx=ev.clientX-px,dy=ev.clientY-py;px=ev.clientX;py=ev.clientY;if(Math.hypot(ev.clientX-startX,ev.clientY-startY)>6)moved=true;if(!moved)return;az-=dx*.006;el=Math.max(.08,Math.min(1.5,el+dy*.006));updateCamera();refreshLabels();});
|
|
449
463
|
renderer.domElement.addEventListener('pointercancel',()=>{dragging=false;});
|
|
450
464
|
renderer.domElement.addEventListener('pointerup',ev=>{if(!dragging)return;dragging=false;if(moved)return;
|
|
451
465
|
const box=renderer.domElement.getBoundingClientRect();cursor.x=((ev.clientX-box.left)/box.width)*2-1;cursor.y=-((ev.clientY-box.top)/box.height)*2+1;ray.setFromCamera(cursor,camera);
|
|
452
466
|
const isVisible=o=>{while(o&&o!==scene){if(!o.visible)return false;o=o.parent;}return true;};
|
|
453
467
|
const chosen=ray.intersectObjects(pickables,false).find(h=>isVisible(h.object)&&h.object.userData.asset);
|
|
454
468
|
if(chosen)onSelect(chosen.object.userData.asset);
|
|
455
|
-
});renderer.domElement.addEventListener('wheel',ev=>{ev.preventDefault();dist=Math.min(260,Math.max(6,dist*(ev.deltaY>0?1.11:.90)));updateCamera();},{passive:false});
|
|
456
|
-
function resize(){const r=host.getBoundingClientRect();renderer.setSize(Math.max(320,r.width),Math.max(280,r.height),false);camera.aspect=Math.max(320,r.width)/Math.max(280,r.height);camera.updateProjectionMatrix();fitCamera();updateCamera();}const obs=new ResizeObserver(resize);obs.observe(host);resize();let active=true;
|
|
469
|
+
});renderer.domElement.addEventListener('wheel',ev=>{ev.preventDefault();dist=Math.min(260,Math.max(6,dist*(ev.deltaY>0?1.11:.90)));updateCamera();refreshLabels();},{passive:false});
|
|
470
|
+
function resize(){const r=host.getBoundingClientRect();renderer.setSize(Math.max(320,r.width),Math.max(280,r.height),false);camera.aspect=Math.max(320,r.width)/Math.max(280,r.height);camera.updateProjectionMatrix();fitCamera();updateCamera();}const obs=new ResizeObserver(resize);obs.observe(host);resize();refreshLabels();let active=true;
|
|
457
471
|
function frame(){if(!active)return;
|
|
458
472
|
const now=performance.now();
|
|
459
473
|
for(const obj of simulatedParcels.values()){
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.1.8'
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devagent-ignition"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.8"
|
|
8
8
|
description = "Offline industrial HMI engineering and Ignition Perspective candidate tools (production deployment not qualified)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.14"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.1.7'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/engineering_expertise.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/industrial_templates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/devagent_spatial/v078_native_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/CV101-command-contract-PENDING.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/warehouse-3floor-standard-2d.json
RENAMED
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/warehouse-operations-synthetic.json
RENAMED
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/examples/warehouse-v07-lab-bindings-PENDING.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/REFERENCE_SHA256.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-golden/web/state_adapter.mjs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/SNAPSHOT_SHA256SUMS.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/state_adapter.mjs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/SHA256SUMS.txt
RENAMED
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/three.core.js
RENAMED
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/r9-original/web/vendor/three.module.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/tests/browser_smoke.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/reference/v8-original/web/simulator.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devagent_ignition-0.1.7 → devagent_ignition-0.1.8}/sample_customer_inputs/Raw_PLC_Tag_Export.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|