修复:相机视角缩略图没有更新

pull/2019/MERGE
ChenX 2 years ago
parent 1bfed1b6a5
commit 1792a69705

@ -1,3 +1,5 @@
import { Matrix4 } from "three";
import { CameraUpdate } from "../../GraphicsSystem/CameraUpdate";
import { RenderType } from "../../GraphicsSystem/RenderType"; import { RenderType } from "../../GraphicsSystem/RenderType";
import { Factory } from "../CADFactory"; import { Factory } from "../CADFactory";
import { CADFiler } from "../CADFiler"; import { CADFiler } from "../CADFiler";
@ -7,12 +9,9 @@ import { CADObject } from "../CADObject";
export class CameraSnapshootRecord extends CADObject export class CameraSnapshootRecord extends CADObject
{ {
Name: string = ""; Name: string = "";
_CameraData = new CADFiler; CameraData = new CameraUpdate;
UCS: Matrix4 = new Matrix4;
get RenderType(): RenderType RenderType: RenderType = RenderType.Wireframe;
{
return this._CameraData.Data[7];
}
//#region -------------------------File------------------------- //#region -------------------------File-------------------------
@ -20,14 +19,32 @@ export class CameraSnapshootRecord extends CADObject
ReadFile(file: CADFiler) ReadFile(file: CADFiler)
{ {
let ver = file.Read(); let ver = file.Read();
this._CameraData.Data = file.Read(); if (ver === 1)
{
let datas: any[] = file.Read();
let f = new CADFiler(datas);
f.Read();//old ver
this.CameraData.ReadFile(f);
this.UCS.elements = f.Read();
this.RenderType = f.Read();
}
else
{
this.CameraData.ReadFile(file);
for (let i = 0; i < 16; i++)
this.UCS.elements[i] = file.Read();
this.RenderType = file.Read();
}
this.Name = file.Read(); this.Name = file.Read();
} }
//对象将自身数据写入到文件. //对象将自身数据写入到文件.
WriteFile(file: CADFiler) WriteFile(file: CADFiler)
{ {
file.Write(1); file.Write(2);
file.Write(this._CameraData.Data); this.CameraData.WriteFile(file);
for (let e of this.UCS.elements)
file.Write(e);
file.Write(this.RenderType);
file.Write(this.Name); file.Write(this.Name);
} }
//#endregion //#endregion

@ -6,21 +6,17 @@ import { CameraSnapshootRecord } from "./CameraSnapshootRecord";
export function SaveCameraSnapshootRecord(record: CameraSnapshootRecord, name: string = new Date().toLocaleString("chinese", { hour12: false })) export function SaveCameraSnapshootRecord(record: CameraSnapshootRecord, name: string = new Date().toLocaleString("chinese", { hour12: false }))
{ {
record.WriteAllObjectRecord(); record.WriteAllObjectRecord();
record._CameraData.Clear(); record.CameraData.CopyFrom(app.Viewer.CameraCtrl);
record._CameraData.Write(1); record.UCS = app.Editor.UCSMatrix;
app.Viewer.CameraCtrl.WriteFile(record._CameraData); record.RenderType = HostApplicationServices._renderType;
record._CameraData.Write(app.Editor.UCSMatrix.toArray());
record._CameraData.Write(HostApplicationServices._renderType);
record.Name = name; record.Name = name;
} }
export function RestoreCameraSnapshootRecord(record: CameraSnapshootRecord) export function RestoreCameraSnapshootRecord(record: CameraSnapshootRecord)
{ {
record._CameraData.Reset(); app.Viewer.CameraCtrl.CopyFrom(record.CameraData);
let ver = record._CameraData.Read(); app.Editor.UCSMatrix = record.UCS;
app.Viewer.CameraCtrl.ReadFile(record._CameraData);
app.Editor.UCSMatrix.fromArray(record._CameraData.Read());
app.Editor.UCSMatrix = app.Editor.UCSMatrix; app.Editor.UCSMatrix = app.Editor.UCSMatrix;
userConfig.RenderType = record._CameraData.Read(); userConfig.RenderType = record.RenderType;
app.Viewer.UpdateRender(); app.Viewer.UpdateRender();
} }

@ -310,8 +310,17 @@ export class CameraUpdate
{ {
let ver = file.Read(); let ver = file.Read();
this._ViewHeight = file.Read(); this._ViewHeight = file.Read();
if (ver < 4)
{
this._Target.fromArray(file.Read()); this._Target.fromArray(file.Read());
this._Direction.fromArray(file.Read()); this._Direction.fromArray(file.Read());
}
else
{
this._Target.set(file.Read(), file.Read(), file.Read());
this._Direction.set(file.Read(), file.Read(), file.Read());
}
this._Orbit.SetFromDirection(this._Direction); this._Orbit.SetFromDirection(this._Direction);
this.UpdateUp(); this.UpdateUp();
@ -326,11 +335,21 @@ export class CameraUpdate
//对象将自身数据写入到文件. //对象将自身数据写入到文件.
WriteFile(file: CADFiler) WriteFile(file: CADFiler)
{ {
file.Write(3); file.Write(4);
file.Write(this._ViewHeight); file.Write(this._ViewHeight);
file.Write(this._Target.toArray()); file.WriteVec3(this._Target);
file.Write(this._Direction.toArray()); file.WriteVec3(this._Direction);
file.Write(this.CameraType); file.Write(this.CameraType);
file.Write(this.Fov); file.Write(this.Fov);
} }
CopyFrom(camer: CameraUpdate)
{
let f = new CADFiler;
camer.WriteFile(f);
f.Reset();
this.ReadFile(f);
}
} }

@ -3,12 +3,13 @@ import { action, observable } from 'mobx';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { end } from 'xaop'; import { end } from 'xaop';
import { CADFiler } from '../../../../api';
import { app } from '../../../../ApplicationServices/Application'; import { app } from '../../../../ApplicationServices/Application';
import { equalArray } from '../../../../Common/ArrayExt';
import { GetCurrentViewPreViewImage } from '../../../../Common/SerializeMaterial'; import { GetCurrentViewPreViewImage } from '../../../../Common/SerializeMaterial';
import { CameraSnapshootRecord } from '../../../../DatabaseServices/CameraSnapshoot/CameraSnapshootRecord'; import { CameraSnapshootRecord } from '../../../../DatabaseServices/CameraSnapshoot/CameraSnapshootRecord';
import { RestoreCameraSnapshootRecord, SaveCameraSnapshootRecord } from '../../../../DatabaseServices/CameraSnapshoot/CameraSnapshootRecordUtil'; import { RestoreCameraSnapshootRecord, SaveCameraSnapshootRecord } from '../../../../DatabaseServices/CameraSnapshoot/CameraSnapshootRecordUtil';
import { userConfig } from '../../../../Editor/UserConfig'; import { userConfig } from '../../../../Editor/UserConfig';
import { equaln } from '../../../../Geometry/GeUtils';
import { RenderType } from '../../../../GraphicsSystem/RenderType'; import { RenderType } from '../../../../GraphicsSystem/RenderType';
import { AppToaster } from '../../Toaster'; import { AppToaster } from '../../Toaster';
import { CameraSettingIcon } from './CameraState'; import { CameraSettingIcon } from './CameraState';
@ -105,9 +106,14 @@ export default class CameraSnapshootPanel extends Component<{}, {}>
const total = (arr: number[]) => (arr.reduce((prev, curr) => prev + curr)); const total = (arr: number[]) => (arr.reduce((prev, curr) => prev + curr));
let record = new CameraSnapshootRecord(); let record = new CameraSnapshootRecord();
SaveCameraSnapshootRecord(record); SaveCameraSnapshootRecord(record);
let f = new CADFiler;
record.CameraData.WriteFile(f);
for (let r of app.Database.CameraSnapshoots) for (let r of app.Database.CameraSnapshoots)
{ {
if (equaln(total(r._CameraData.Data.flat()), total(record._CameraData.Data.flat()))) let f2 = new CADFiler;
r.CameraData.WriteFile(f2);
if (equalArray(f.Data, f2.Data))
{ {
AppToaster.show({ AppToaster.show({
message: "该相机视角已保存", message: "该相机视角已保存",

Loading…
Cancel
Save