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

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 { Factory } from "../CADFactory";
import { CADFiler } from "../CADFiler";
@ -7,12 +9,9 @@ import { CADObject } from "../CADObject";
export class CameraSnapshootRecord extends CADObject
{
Name: string = "";
_CameraData = new CADFiler;
get RenderType(): RenderType
{
return this._CameraData.Data[7];
}
CameraData = new CameraUpdate;
UCS: Matrix4 = new Matrix4;
RenderType: RenderType = RenderType.Wireframe;
//#region -------------------------File-------------------------
@ -20,14 +19,32 @@ export class CameraSnapshootRecord extends CADObject
ReadFile(file: CADFiler)
{
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();
}
//对象将自身数据写入到文件.
WriteFile(file: CADFiler)
{
file.Write(1);
file.Write(this._CameraData.Data);
file.Write(2);
this.CameraData.WriteFile(file);
for (let e of this.UCS.elements)
file.Write(e);
file.Write(this.RenderType);
file.Write(this.Name);
}
//#endregion

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

@ -310,8 +310,17 @@ export class CameraUpdate
{
let ver = file.Read();
this._ViewHeight = file.Read();
this._Target.fromArray(file.Read());
this._Direction.fromArray(file.Read());
if (ver < 4)
{
this._Target.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.UpdateUp();
@ -326,11 +335,21 @@ export class CameraUpdate
//对象将自身数据写入到文件.
WriteFile(file: CADFiler)
{
file.Write(3);
file.Write(4);
file.Write(this._ViewHeight);
file.Write(this._Target.toArray());
file.Write(this._Direction.toArray());
file.WriteVec3(this._Target);
file.WriteVec3(this._Direction);
file.Write(this.CameraType);
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 React, { Component } from 'react';
import { end } from 'xaop';
import { CADFiler } from '../../../../api';
import { app } from '../../../../ApplicationServices/Application';
import { equalArray } from '../../../../Common/ArrayExt';
import { GetCurrentViewPreViewImage } from '../../../../Common/SerializeMaterial';
import { CameraSnapshootRecord } from '../../../../DatabaseServices/CameraSnapshoot/CameraSnapshootRecord';
import { RestoreCameraSnapshootRecord, SaveCameraSnapshootRecord } from '../../../../DatabaseServices/CameraSnapshoot/CameraSnapshootRecordUtil';
import { userConfig } from '../../../../Editor/UserConfig';
import { equaln } from '../../../../Geometry/GeUtils';
import { RenderType } from '../../../../GraphicsSystem/RenderType';
import { AppToaster } from '../../Toaster';
import { CameraSettingIcon } from './CameraState';
@ -105,9 +106,14 @@ export default class CameraSnapshootPanel extends Component<{}, {}>
const total = (arr: number[]) => (arr.reduce((prev, curr) => prev + curr));
let record = new CameraSnapshootRecord();
SaveCameraSnapshootRecord(record);
let f = new CADFiler;
record.CameraData.WriteFile(f);
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({
message: "该相机视角已保存",

Loading…
Cancel
Save