Created
June 17, 2021 20:37
-
-
Save michaliskambi/2b8faee73df9f3a12351736cabcad1ee to your computer and use it in GitHub Desktop.
Reproduction for https://github.com/castle-engine/castle-engine/issues/295
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// -*- compile-command: "castle-engine simple-compile position_on_viewport_early.lpr && ./position_on_viewport_early" -*- | |
{ Reproduction for https://github.com/castle-engine/castle-engine/issues/295 . } | |
uses SysUtils, | |
CastleWindow, CastleViewport, CastleVectors, CastleFilesUtils, CastleTransform, | |
CastleLog, CastleKeysMouse, CastleScene; | |
var | |
Viewport: TCastleViewport; | |
procedure TestQueryPosition(const ScreenPos: TVector2); | |
var | |
CameraPlaneResult, RayOrigin, RayDirection, WorldPlaneResult: TVector3; | |
Pos2D: TVector2; | |
begin | |
WritelnLog('Testing on ', ScreenPos.ToString); | |
Viewport.PositionToRay(ScreenPos, true, RayOrigin, RayDirection); | |
WritelnLog(' PositionToRay test: %s %s', [RayOrigin.ToString, RayDirection.ToString]); | |
if Viewport.PositionToCameraPlane(ScreenPos, true, 2, CameraPlaneResult) then | |
WritelnLog(' PositionToCameraPlane test: %s', [CameraPlaneResult.ToString]) | |
else | |
WritelnLog(' PositionToCameraPlane test: none'); | |
if Viewport.PositionToWorldPlane(ScreenPos, true, -10, WorldPlaneResult) then | |
WritelnLog(' PositionToWorldPlane test: %s', [WorldPlaneResult.ToString]) | |
else | |
WritelnLog(' PositionToWorldPlane test: none'); | |
Pos2D := Viewport.PositionTo2DWorld(ScreenPos, true); | |
WritelnLog(' PositionTo2DWorld test: ', Pos2D.ToString); | |
end; | |
procedure Press(Container: TUIContainer; const Event: TInputPressRelease); | |
begin | |
if Event.IsKey(keyS) then | |
begin | |
TestQueryPosition(Vector2(100, 100)); | |
TestQueryPosition(Vector2(Container.Width / 2, Container.Height / 2)); | |
end; | |
end; | |
var | |
Window: TCastleWindowBase; | |
Box: TCastleBox; | |
begin | |
InitializeLog; | |
Window := TCastleWindowBase.Create(Application); | |
Window.OnPress := @Press; | |
Window.Width := 300; | |
Window.Height := 300; | |
Window.Open; | |
Viewport := TCastleViewport.Create(Application); | |
Viewport.FullSize := true; | |
// too early to use | |
// TestQueryPosition(Vector2(100, 100)); | |
// TestQueryPosition(Vector2(Window.Width / 2, Window.Height / 2)); | |
Window.Controls.InsertFront(Viewport); | |
TestQueryPosition(Vector2(100, 100)); | |
TestQueryPosition(Vector2(Window.Width / 2, Window.Height / 2)); | |
Box := TCastleBox.Create(Application); | |
Viewport.Items.Add(Box); | |
Application.Run; | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment