Fix screen position calulation in Actor 63/164063/3
authorHeeyong Song <heeyong.song@samsung.com>
Fri, 15 Dec 2017 05:54:13 +0000 (14:54 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Mon, 25 Dec 2017 23:51:42 +0000 (23:51 +0000)
Change-Id: Id8f153a670e72e35bb254426d0db030b457f1913

dali/internal/event/actors/actor-impl.cpp

index d36e103..c83cb0c 100644 (file)
@@ -814,10 +814,13 @@ const Vector3& Actor::GetCurrentWorldPosition() const
 
 const Vector2 Actor::GetCurrentScreenPosition() const
 {
-  if( OnStage() && NULL != mNode )
+  StagePtr stage = Stage::GetCurrent();
+  if( stage && OnStage() && NULL != mNode )
   {
-    StagePtr stage = Stage::GetCurrent();
     Vector3 worldPosition =  mNode->GetWorldPosition( GetEventThreadServices().GetEventBufferIndex() );
+    Vector3 cameraPosition = stage->GetDefaultCameraActor().mNode->GetWorldPosition( GetEventThreadServices().GetEventBufferIndex() );
+    worldPosition -= cameraPosition;
+
     Vector3 actorSize = GetCurrentSize() * GetCurrentWorldScale();
     Vector2 halfStageSize( stage->GetSize() * 0.5f ); // World position origin is center of stage
     Vector3 halfActorSize( actorSize * 0.5f );