数据分离

pull/7/head
cx 7 years ago
parent 09eaf66559
commit 564d1e06fa

27
package-lock.json generated

@ -458,6 +458,12 @@
}
}
},
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
"asap": {
"version": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz",
"integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8="
@ -16240,6 +16246,12 @@
}
}
},
"user-home": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
"integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
"dev": true
},
"util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
@ -16275,6 +16287,15 @@
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
"dev": true
},
"v8flags": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.0.tgz",
"integrity": "sha512-AGl+C+4qpeSu2g3JxCD/mGFFOs/vVZ3XREkD3ibQXEqr4Y4zgIrPWW124/IKJFHOIVFIoH8miWrLf0o84HYjwA==",
"dev": true,
"requires": {
"user-home": "1.1.1"
}
},
"vary": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz",
@ -18863,6 +18884,12 @@
}
}
},
"yn": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
"integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
"dev": true
},
"zip-object": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/zip-object/-/zip-object-0.1.0.tgz",

@ -73,4 +73,4 @@
"js"
]
}
}
}

@ -2,7 +2,7 @@ import * as THREE from "three"
import { OBB } from '../Geometry/OBB/obb';
import { Database } from './Database';
import { Vector3 } from 'three';
import { IEntityData, EntityData, LineData } from './EntityData';
import { IEntityData, EntityData, LineData, ILineData } from './EntityData';
var baseColor = 0x333333;
var foundColor = 0x12C0E3;
var intersectColor = 0x00D66B;
@ -92,18 +92,16 @@ export class Curve extends Entity
export class Line extends Curve
{
private m_StartPoint: THREE.Vector3 = new THREE.Vector3();
private m_EndPoint: THREE.Vector3 = new THREE.Vector3();
constructor(startPt: THREE.Vector3, endPt: THREE.Vector3)
{
super();
this.m_StartPoint.copy(startPt);
this.m_EndPoint.copy(endPt);
let data = <ILineData>this.m_Data;
data.setStartPoint(startPt);
data.setEndPoint(endPt);
var geometry = new THREE.Geometry();
geometry.vertices.push(this.m_StartPoint);
geometry.vertices.push(this.m_EndPoint);
geometry.vertices.push(data.StartPoint);
geometry.vertices.push(data.EndPoint);
//create a blue LineBasicMaterial
var material = new THREE.LineBasicMaterial();
this.m_ThreeObj = new THREE.Line(geometry, material);
@ -114,11 +112,19 @@ export class Line extends Curve
}
GetGripPoints(): Array<Vector3>
{
return [this.m_StartPoint, this.m_EndPoint];
return [this.StartPoint, this.EndPoint];
}
getStretchPoints(): Array<THREE.Vector3>
{
return [this.m_StartPoint, this.m_EndPoint];
return [this.StartPoint, this.EndPoint];
}
get StartPoint(): THREE.Vector3
{
return (<ILineData>this.m_Data).StartPoint;
}
get EndPoint(): THREE.Vector3
{
return (<ILineData>this.m_Data).EndPoint;
}
//http://jsfiddle.net/hjx3rLmt/1/

@ -0,0 +1,104 @@
import { LineData, DBData, ILineData, IEntityData, EntityData } from './EntityData';
import * as mst from 'mobx-state-tree';
import * as THREE from "three";
import { autorun } from 'mobx';
{
let l = LineData.create();
let db = DBData.create({ enList: [] });
mst.onPatch(db,
p =>
{
console.log(p);
},
true)
db.addEntity(l);
db.addEntity(LineData.create());
// db.clearEntity();
let l2 = <ILineData>db.getEntity();
console.log(l.StartPoint);
l.setSize(1, 2, 3)
l.setStartPoint(new THREE.Vector3(0, 0, 0))
console.log(mst.getSnapshot(l));
l.setErase(true);
console.log(
db.enList.filter(o =>
{
return !o.isErase;
})
);
let snp = mst.getSnapshot(db)
let l3 = LineData.create();
db.addEntity(l3);
mst.applySnapshot(db, snp);
console.log(l3.StartPoint);
}
class E
{
m_Data: IEntityData;
constructor()
{
this.initData();
autorun(() =>
{
this.eraseT(this.m_Data.isErase);
})
}
initData()
{
this.m_Data = EntityData.create();
console.log("hello e");
}
erase(isErase: boolean)
{
this.m_Data.setErase(isErase);
}
private eraseT(isErase: boolean)
{
console.log(isErase);
}
}
class L extends E
{
constructor()
{
super()
}
initData()
{
this.m_Data = LineData.create();
console.log("hello l");
}
}
{
let l = new L()
console.log(mst.getSnapshot(l.m_Data));
let snp = mst.getSnapshot(l.m_Data);
l.erase(true);
l.erase(true);
l.erase(true);
l.erase(true);
l.erase(true);
console.log(l.m_Data.isErase);
mst.applySnapshot(l.m_Data, snp);
console.log(l.m_Data.isErase);
}

@ -1,8 +1,5 @@
import * as mst from 'mobx-state-tree';
import * as THREE from "three";
import { autorun } from 'mobx';
import { Line } from './Entity';
const PointData = mst.types.optional(mst.types.array(mst.types.number), [0, 0, 0]);
type IPointData = typeof PointData;
@ -26,6 +23,10 @@ export const EntityData = mst.types.model(
{
this.size = [x, y, z];
},
setErase(isErase: boolean)
{
this.isErase = isErase;
},
afterCreate()
{
}
@ -52,13 +53,20 @@ export const LineData = mst.types.compose(
{
return toVec3(this.startPoint);
},
get EndPoint(): THREE.Vector3
{
return toVec3(this.entPoint)
}
},
{
setStartPoint(pt: THREE.Vector3)
{
this.startPoint = pt.toArray();
}
},
setEndPoint(pt: THREE.Vector3)
{
this.startPoint = pt.toArray();
},
}
)
@ -75,13 +83,19 @@ export const DBData = mst.types.model(
{
this.enList.push(ent);
},
removeEntity()
removeEntity(ent: IEntityData)
{
this.enList.remove(this.enList[0])
this.enList.remove(ent)
},
clearEntity()
{
this.enList = [];
this.enList.forEach(e =>
{
if (e.isErase)
{
this.removeEntity(e);
}
})
}
,
getEntity(): IEntityData
@ -90,69 +104,3 @@ export const DBData = mst.types.model(
}
}
)
{
let l = LineData.create();
let db = DBData.create({ enList: [] });
mst.onPatch(db,
p =>
{
console.log(p);
},
true)
db.addEntity(l);
db.addEntity(LineData.create());
// db.clearEntity();
let l2 = <ILineData>db.getEntity();
autorun(() =>
{
let a = l.StartPoint;
console.log(a);
console.log("chang");
})
console.log(l.StartPoint);
l.setSize(1, 2, 3)
l.setStartPoint(new THREE.Vector3(0, 0, 0))
console.log(mst.getSnapshot(l));
}
class E
{
m_Data: IEntityData;
constructor()
{
this.initData();
}
initData()
{
this.m_Data = EntityData.create();
console.log("hello e");
}
}
class L extends E
{
constructor()
{
super()
}
initData()
{
this.m_Data = LineData.create();
console.log("hello l");
}
}
{
let l = new L()
console.log(mst.getSnapshot(l.m_Data));
}
Loading…
Cancel
Save