Skip to content

Commit

Permalink
Fix #6
Browse files Browse the repository at this point in the history
  • Loading branch information
zamtmn committed Oct 17, 2022
1 parent 1bb88e5 commit 0f2a722
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 59 deletions.
8 changes: 4 additions & 4 deletions cad_source/zengine/zgl/drawers/uzgldrawergeneral.pas
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ TZGLGeneralDrawer=class(TZGLAbstractDrawer)
procedure SetOGLMatrix(const cam:GDBObjCamera;const w,h:integer);override;
procedure PostRenderDraw;override;

procedure pushMatrixAndSetTransform(Transform:DMatrix4D;ResetLCS:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4F;ResetLCS:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4D;FromOneMatrix:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4F;FromOneMatrix:Boolean=False);overload;override;
procedure popMatrix;override;
end;
TLCSProp=record
Expand All @@ -95,10 +95,10 @@ implementation
procedure TZGLGeneralDrawer.popMatrix;
begin
end;
procedure TZGLGeneralDrawer.pushMatrixAndSetTransform(Transform:DMatrix4D;ResetLCS:Boolean=False);
procedure TZGLGeneralDrawer.pushMatrixAndSetTransform(Transform:DMatrix4D;FromOneMatrix:Boolean=False);
begin
end;
procedure TZGLGeneralDrawer.pushMatrixAndSetTransform(Transform:DMatrix4F;ResetLCS:Boolean=False);
procedure TZGLGeneralDrawer.pushMatrixAndSetTransform(Transform:DMatrix4F;FromOneMatrix:Boolean=False);
begin
end;
function TZGLGeneralDrawer.GetLLPrimitivesCreator:TLLPrimitivesCreatorAbstract;
Expand Down
68 changes: 27 additions & 41 deletions cad_source/zengine/zgl/drawers/uzgldrawergeneral2d.pas
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ TZGLGeneral2DDrawer=class(TZGLGeneralDrawer)
procedure TranslateCoord2D(const tx,ty:single);override;
procedure ScaleCoord2D(const sx,sy:single);override;

procedure pushMatrixAndSetTransform(Transform:DMatrix4D;ResetLCS:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4F;ResetLCS:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4D;FromOneMatrix:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4F;FromOneMatrix:Boolean=False);overload;override;
procedure DisableLCS(var matrixs:tmatrixs);overload;override;
procedure EnableLCS(var matrixs:tmatrixs);overload;override;

Expand Down Expand Up @@ -590,53 +590,41 @@ constructor TZGLGeneral2DDrawer.create;
mstackindex:=-1;
end;

procedure TZGLGeneral2DDrawer.pushMatrixAndSetTransform(Transform:DMatrix4D;ResetLCS:Boolean=False);
procedure TZGLGeneral2DDrawer.pushMatrixAndSetTransform(Transform:DMatrix4D;FromOneMatrix:Boolean=False);
begin
inc(mstackindex);
mstack[mstackindex]:=matr;
if ResetLCS{ and (not LCS.notuseLCS)} then begin
//matr:=matrwoLCS;
LCS.notuseLCS:=true;
LCS.CurrentCamCSOffset:=NulVertex;
LCS.CurrentCamCSOffsetS:=NulVertex3S;
end;
matr:=MatrixMultiply(matr,Transform);
inc(mstackindex);
mstack[mstackindex]:=matr;
if FromOneMatrix then
matr:=OneMatrix;
matr:=MatrixMultiply(matr,Transform);
end;
procedure TZGLGeneral2DDrawer.pushMatrixAndSetTransform(Transform:DMatrix4F;ResetLCS:Boolean=False);
procedure TZGLGeneral2DDrawer.pushMatrixAndSetTransform(Transform:DMatrix4F;FromOneMatrix:Boolean=False);
begin
inc(mstackindex);
mstack[mstackindex]:=matr;
if ResetLCS{ and (not LCS.notuseLCS)} then begin
//matr:=matrwoLCS;
LCS.notuseLCS:=true;
LCS.CurrentCamCSOffset:=NulVertex;
LCS.CurrentCamCSOffsetS:=NulVertex3S;
end;
matr:=MatrixMultiply(matr,Transform);
inc(mstackindex);
mstack[mstackindex]:=matr;
if FromOneMatrix then
matr:=OneMatrix;
matr:=MatrixMultiply(matr,Transform);
end;
procedure TZGLGeneral2DDrawer.popMatrix;
begin
if mstackindex>-1 then
begin
matr:=mstack[mstackindex];
dec(mstackindex);
end;
LCS:=LCSSave;
if mstackindex>-1 then begin
matr:=mstack[mstackindex];
dec(mstackindex);
end;
LCS:=LCSSave;
end;
procedure TZGLGeneral2DDrawer.DisableLCS(var matrixs:tmatrixs);
var
m:DMatrix4D;
begin
m:=uzegeometry.MatrixMultiply(matrwithLCS,ProjMatrwithLCS);
{m:=uzegeometry.MatrixMultiply(matrwoLCS,ProjMatrwoLCS);
sx:=(m[0].v[0]/m[3].v[3]*0.5)*matrixs.pviewport.v[2] ;
sy:=-(m[1].v[1]/m[3].v[3]*0.5)*matrixs.pviewport.v[3] ;
tx:=(m[3].v[0]/m[3].v[3]*0.5+0.5)*matrixs.pviewport.v[2];

ty:=matrixs.pviewport.v[3]-(m[3].v[1]/m[3].v[3]*0.5+0.5)*matrixs.pviewport.v[3];

matrixs.pmodelMatrix^:=matrwithLCS;
matrixs.pprojMatrix^:=ProjMatrwithLCS;

ty:=matrixs.pviewport.v[3]-(m[3].v[1]/m[3].v[3]*0.5+0.5)*matrixs.pviewport.v[3];}
matrixs.pmodelMatrix^:=matrWithLCS;
matrixs.pprojMatrix^:=ProjMatrWithLCS;
LCS.notuseLCS:=true;
LCS.CurrentCamCSOffset:=NulVertex;
LCS.CurrentCamCSOffsetS:=NulVertex3S;
Expand All @@ -645,15 +633,13 @@ procedure TZGLGeneral2DDrawer.EnableLCS(var matrixs:tmatrixs);
var
m:DMatrix4D;
begin
m:=uzegeometry.MatrixMultiply(matrwoLCS,ProjMatrwoLCS);
(*m:=uzegeometry.MatrixMultiply({matrWithLCS,ProjMatrWithLCS}matrixs.pmodelMatrix^,matrixs.pprojMatrix^);
sx:=(m[0].v[0]/m[3].v[3]*0.5)*matrixs.pviewport.v[2] ;
sy:=-(m[1].v[1]/m[3].v[3]*0.5)*matrixs.pviewport.v[3] ;
tx:=(m[3].v[0]/m[3].v[3]*0.5+0.5)*matrixs.pviewport.v[2];
ty:=matrixs.pviewport.v[3]-(m[3].v[1]/m[3].v[3]*0.5+0.5)*matrixs.pviewport.v[3];

matrixs.pmodelMatrix^:=matrwoLCS;
matrixs.pprojMatrix^:=ProjMatrwoLCS;

ty:=matrixs.pviewport.v[3]-(m[3].v[1]/m[3].v[3]*0.5+0.5)*matrixs.pviewport.v[3];*)
matrixs.pmodelMatrix^:=matrWoLCS;
matrixs.pprojMatrix^:=ProjMatrWoLCS;
LCS:=LCSSave;
end;

Expand Down
12 changes: 6 additions & 6 deletions cad_source/zengine/zgl/drawers/uzgldrawerogl.pas
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ TZGLOpenGLDrawer=class(TZGLGeneralDrawer)
procedure SetOGLMatrix(const cam:GDBObjCamera;const w,h:integer);override;

{}
procedure pushMatrixAndSetTransform(Transform:DMatrix4D;ResetLCS:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4F;ResetLCS:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4D;FromOneMatrix:Boolean=False);overload;override;
procedure pushMatrixAndSetTransform(Transform:DMatrix4F;FromOneMatrix:Boolean=False);overload;override;
procedure DisableLCS(var matrixs:tmatrixs);overload;override;
procedure EnableLCS(var matrixs:tmatrixs);overload;override;
procedure popMatrix;override;
Expand All @@ -119,21 +119,21 @@ TZGLOpenGLDrawer=class(TZGLGeneralDrawer)
code:integer;
implementation
//uses log;
procedure TZGLOpenGLDrawer.pushMatrixAndSetTransform(Transform:DMatrix4D;ResetLCS:Boolean=False);
procedure TZGLOpenGLDrawer.pushMatrixAndSetTransform(Transform:DMatrix4D;FromOneMatrix:Boolean=False);
begin
oglsm.myglPushMatrix;
if ResetLCS {and (not LCS.notuseLCS)} then begin
if FromOneMatrix {and (not LCS.notuseLCS)} then begin
oglsm.myglLoadMatrixd(@mm);
{LCS.notuseLCS:=true;
LCS.CurrentCamCSOffset:=NulVertex;
LCS.CurrentCamCSOffsetS:=NulVertex3S;}
end;
oglsm.myglMultMatrixD(Transform)
end;
procedure TZGLOpenGLDrawer.pushMatrixAndSetTransform(Transform:DMatrix4F;ResetLCS:Boolean=False);
procedure TZGLOpenGLDrawer.pushMatrixAndSetTransform(Transform:DMatrix4F;FromOneMatrix:Boolean=False);
begin
oglsm.myglPushMatrix;
if ResetLCS and (not LCS.notuseLCS) then begin
if FromOneMatrix and (not LCS.notuseLCS) then begin
oglsm.myglLoadMatrixd(@mm);
{LCS.notuseLCS:=true;
LCS.CurrentCamCSOffset:=NulVertex;
Expand Down
12 changes: 4 additions & 8 deletions cad_source/zengine/zgl/drawers/uzglviewareageneral.pas
Original file line number Diff line number Diff line change
Expand Up @@ -315,14 +315,10 @@ procedure TGeneralViewArea.showcursor(var DC:TDrawContext);
tempplane.v[3]:=(tempplane.v[3]-param.mousefrustumLCS[4].v[3])/2;
{курсор фрустума выделения}
if param.md.mousein then
if (param.md.mode and MGetSelectObject) <> 0 then
begin
{_NotUseLCS:=LCS.NotUseLCS;
LCS.NotUseLCS:=true;}
dc.drawer.DisableLCS(dc.DrawingContext.matrixs);
drawfrustustum(param.mousefrustumLCS,dc);
//LCS.NotUseLCS:=_NotUseLCS;
dc.drawer.EnableLCS(dc.DrawingContext.matrixs);
if (param.md.mode and MGetSelectObject) <> 0 then begin
dc.drawer.DisableLCS(dc.DrawingContext.matrixs);
drawfrustustum(param.mousefrustumLCS,dc);
dc.drawer.EnableLCS(dc.DrawingContext.matrixs);
end;
{оси курсора}
{_NotUseLCS:=LCS.NotUseLCS;
Expand Down

0 comments on commit 0f2a722

Please sign in to comment.