/
ArmatureSystem.js
37 lines (30 loc) · 939 Bytes
/
ArmatureSystem.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import Fungi from "../../fungi/Fungi.js";
import { System } from "../../fungi/Ecs.js";
import Armature from "./Armature.js";
import ArmaturePreview from "./ArmaturePreview.js";
const QUERY_COM = ["Armature"];
class ArmatureSystem extends System{
constructor(){
super();
}
update(ecs){
let e, ary = ecs.queryEntities( QUERY_COM );
for( e of ary ){
if(!e.com.Armature.isModified) continue;
//console.log(e.name);
//if one joint has changed, then update pose
Armature.updatePose( e );
Armature.flatOffset(e, e.com.Armature.flatOffset )
//if scale is enabled, setup data.
if(e.com.Armature.useScale){
Armature.flatScale(e, e.com.Armature.flatScale, true);
}
//If Preview Exists
if(e.com.Armature.flatWorldSpace) ArmaturePreview
.flattenData( e )
.updateBuffer( e );
}
}
static init(){ Fungi.ecs.addSystem(new ArmatureSystem, 50); }
}
export default ArmatureSystem;