Skip to content

Commit ba6f6f1

Browse files
committed
New component : TGBECylinderExtend
TGBECylinderExtend descend du TCylinder mais il permet d'affecter des matériaux différents sur le haut, le bas et le côté du cylindre. Une nouvelle démo est fournie utilisant le TGBECylinderExtend.
1 parent 397293e commit ba6f6f1

File tree

8 files changed

+7087
-2
lines changed

8 files changed

+7087
-2
lines changed

GBE3D.dpk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ contains
4444
GBEJoystick in 'GBEJoystick.pas',
4545
GBEConeExtend in 'GBEConeExtend.pas',
4646
GBEClouds in 'GBEClouds.pas',
47-
GBEPlaneExtend in 'GBEPlaneExtend.pas';
47+
GBEPlaneExtend in 'GBEPlaneExtend.pas',
48+
GBECylinderExtend in 'GBECylinderExtend.pas';
4849

4950
end.

GBE3D.dproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
<DCCReference Include="GBEConeExtend.pas"/>
106106
<DCCReference Include="GBEClouds.pas"/>
107107
<DCCReference Include="GBEPlaneExtend.pas"/>
108+
<DCCReference Include="GBECylinderExtend.pas"/>
108109
<BuildConfiguration Include="Release">
109110
<Key>Cfg_2</Key>
110111
<CfgParent>Base</CfgParent>
@@ -152,7 +153,7 @@
152153
<Overwrite>true</Overwrite>
153154
</Platform>
154155
</DeployFile>
155-
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\GBE3D.bpl" Configuration="Debug" Class="ProjectOutput">
156+
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GBE3D.bpl" Configuration="Debug" Class="ProjectOutput">
156157
<Platform Name="Win32">
157158
<RemoteName>GBE3D.bpl</RemoteName>
158159
<Overwrite>true</Overwrite>

GBECylinderExtend.pas

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
unit GBECylinderExtend;
2+
3+
interface
4+
5+
uses
6+
System.SysUtils, System.Classes, FMX.Types, FMX.Controls3D, FMX.Objects3D, FMX.Types3D, FMX.MaterialSources, System.Math.Vectors;
7+
8+
type
9+
TCustomMeshHelper = class(TCustomMesh);
10+
TGBECylinderExtend = class(TCylinder)
11+
private
12+
{ Déclarations privées }
13+
fDiskTop, fDiskBottom : TDisk;
14+
FMaterialSourceTop, FMaterialSourceBottom : TMaterialSource;
15+
procedure CreateGBECylinder;
16+
procedure setMaterialSourceBottom(const Value: TMaterialSource);
17+
procedure setMaterialSourceTop(const Value: TMaterialSource);
18+
protected
19+
{ Déclarations protégées }
20+
public
21+
{ Déclarations publiques }
22+
constructor Create(AOwner: TComponent); override;
23+
destructor Destroy; override;
24+
procedure Render; override;
25+
published
26+
{ Déclarations publiées }
27+
property MaterialSourceTop : TMaterialSource read FMaterialSourceTop write setMaterialSourceTop;
28+
property MaterialSourceBottom : TMaterialSource read FMaterialSourceBottom write setMaterialSourceBottom;
29+
end;
30+
31+
procedure Register;
32+
33+
implementation
34+
35+
procedure Register;
36+
begin
37+
RegisterComponents('GBE3D', [TGBECylinderExtend]);
38+
end;
39+
40+
{ TMesh1 }
41+
42+
constructor TGBECylinderExtend.Create(AOwner: TComponent);
43+
begin
44+
inherited;
45+
CreateGBECylinder;
46+
end;
47+
48+
procedure TGBECylinderExtend.CreateGBECylinder;
49+
begin
50+
fDiskTop:=TDisk.Create(nil);
51+
fDiskTop.Locked := true;
52+
fDiskTop.Stored := false;
53+
fDiskTop.SubdivisionsAxes:=SubdivisionsAxes;
54+
fDiskTop.SubdivisionsCap:=SubdivisionsCap;
55+
fDiskTop.Parent := self;
56+
fDiskTop.Position.Y := - fHeight * 0.5;
57+
fDiskTop.Height := fHeight;
58+
fDiskTop.Width := fWidth;
59+
fDiskTop.Depth := fDepth;
60+
fDiskTop.MaterialSource := MaterialSourceTop;
61+
62+
fDiskBottom:=TDisk.Create(nil);
63+
fDiskBottom.Locked := true;
64+
fDiskBottom.Stored := false;
65+
fDiskBottom.SubdivisionsAxes:=SubdivisionsAxes;
66+
fDiskBottom.SubdivisionsCap:=SubdivisionsCap;
67+
fDiskBottom.Parent := self;
68+
fDiskBottom.Position.Y := fHeight * 0.5 + 0.001;
69+
fDiskBottom.Height := fHeight;
70+
fDiskBottom.Width := fWidth;
71+
fDiskBottom.Depth := fDepth;
72+
fDiskBottom.MaterialSource := MaterialSourceBottom;
73+
end;
74+
75+
destructor TGBECylinderExtend.Destroy;
76+
begin
77+
DoDeleteChildren;
78+
inherited;
79+
end;
80+
81+
procedure TGBECylinderExtend.Render;
82+
begin
83+
inherited;
84+
85+
fDiskTop.SubdivisionsAxes:=SubdivisionsAxes;
86+
fDiskTop.SubdivisionsCap:=SubdivisionsCap;
87+
fDiskTop.Position.Y := - fHeight * 0.5;
88+
fDiskTop.Height := fHeight;
89+
fDiskTop.Width := fWidth;
90+
fDiskTop.Depth := fDepth;
91+
92+
fDiskBottom.SubdivisionsAxes:=SubdivisionsAxes;
93+
fDiskBottom.SubdivisionsCap:=SubdivisionsCap;
94+
fDiskBottom.Position.Y := fHeight * 0.5 + 0.001;
95+
fDiskBottom.Height := fHeight;
96+
fDiskBottom.Width := fWidth;
97+
fDiskBottom.Depth := fDepth;
98+
end;
99+
100+
procedure TGBECylinderExtend.setMaterialSourceBottom(
101+
const Value: TMaterialSource);
102+
begin
103+
FMaterialSourceBottom := Value;
104+
fDiskBottom.MaterialSource := FMaterialSourceBottom;
105+
end;
106+
107+
procedure TGBECylinderExtend.setMaterialSourceTop(
108+
const Value: TMaterialSource);
109+
begin
110+
FMaterialSourceTop := Value;
111+
fDiskTop.MaterialSource := FMaterialSourceTop;
112+
end;
113+
114+
end.

demos/CylinderExtend/Unit1.fmx

Lines changed: 6101 additions & 0 deletions
Large diffs are not rendered by default.

demos/CylinderExtend/Unit1.pas

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
unit Unit1;
2+
3+
interface
4+
5+
uses
6+
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
7+
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
8+
System.Math.Vectors, FMX.Types3D, FMX.Controls3D, FMX.MaterialSources,
9+
FMX.Objects3D, FMX.Viewport3D, FMX.Ani, GBECylinderExtend;
10+
11+
type
12+
TForm1 = class(TForm)
13+
Viewport3D1: TViewport3D;
14+
LightMaterialSource1: TLightMaterialSource;
15+
Light1: TLight;
16+
LightMaterialSource2: TLightMaterialSource;
17+
Light2: TLight;
18+
GBECylinderExtend1: TGBECylinderExtend;
19+
FloatAnimation1: TFloatAnimation;
20+
LightMaterialSource3: TLightMaterialSource;
21+
private
22+
{ Déclarations privées }
23+
public
24+
{ Déclarations publiques }
25+
end;
26+
27+
var
28+
Form1: TForm1;
29+
30+
implementation
31+
32+
{$R *.fmx}
33+
34+
end.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
program demoCylinderExtend;
2+
3+
uses
4+
System.StartUpCopy,
5+
FMX.Forms,
6+
Unit1 in 'Unit1.pas' {Form1};
7+
8+
{$R *.res}
9+
10+
begin
11+
Application.Initialize;
12+
Application.CreateForm(TForm1, Form1);
13+
Application.Run;
14+
end.

0 commit comments

Comments
 (0)