Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
0.8.3:interaction [2022/04/20 15:43] – [Classic Camera Mouse Movement] admin | 0.8.3:interaction [2022/04/20 15:45] (current) – [Classic Camera Mouse Movement] admin | ||
---|---|---|---|
Line 109: | Line 109: | ||
Button: TMouseButton; | Button: TMouseButton; | ||
begin | begin | ||
+ | /// allow camera movement | ||
FMove := true; | FMove := true; | ||
+ | /// store the current mouse position to detect the pixel movement | ||
FLastPos := PointF(X, Y); | FLastPos := PointF(X, Y); | ||
end; | end; | ||
Line 118: | Line 120: | ||
LDir : TPoint3D; | LDir : TPoint3D; | ||
begin | begin | ||
+ | /// if mouse was not down - skip camera movement here | ||
if not FMove then | if not FMove then | ||
begin | begin | ||
Line 124: | Line 127: | ||
end; | end; | ||
+ | /// compute the offset to the last pixel position | ||
LDiff := PointF(X, Y) - FLastPos; | LDiff := PointF(X, Y) - FLastPos; | ||
if ssRight in Shift then | if ssRight in Shift then | ||
begin | begin | ||
- | // rotate camera | + | |
Dummy1.RotationAngle.Y := Dummy1.RotationAngle.Y + LDiff.X; | Dummy1.RotationAngle.Y := Dummy1.RotationAngle.Y + LDiff.X; | ||
end | end | ||
- | else | + | else if ssLeft in Shift then |
begin | begin | ||
+ | /// move camera in view direction if left mouse button is down | ||
LDir := TPoint3D.Zero; | LDir := TPoint3D.Zero; | ||