Guest User

Untitled

a guest
Jul 20th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. package com.project.jeremyg.armountain.sceneform
  2.  
  3. import android.content.Context;
  4. import android.util.Log;
  5. import android.widget.TextView
  6.  
  7. import com.google.ar.core.AugmentedImage;
  8. import com.google.ar.sceneform.AnchorNode;
  9. import com.google.ar.sceneform.Node;
  10. import com.google.ar.sceneform.math.Quaternion;
  11. import com.google.ar.sceneform.math.Vector3;
  12. import com.google.ar.sceneform.rendering.ViewRenderable
  13. import com.project.jeremyg.armountain.R
  14. import java.net.NoRouteToHostException
  15.  
  16. import java.util.concurrent.CompletableFuture;
  17. import java.util.concurrent.ExecutionException
  18.  
  19. class AugmentedImageNode(var context: Context, var augmentedImage: AugmentedImage) : AnchorNode() {
  20.  
  21. companion object {
  22. private val TAG = "AugmentedImageNode"
  23.  
  24. private var topViewFuture: CompletableFuture<ViewRenderable>? = null
  25. private var leftViewFuture: CompletableFuture<ViewRenderable>? = null
  26. private var rightViewFuture: CompletableFuture<ViewRenderable>? = null
  27.  
  28. }
  29.  
  30. private var topViewRenderable: ViewRenderable? = null
  31. private var leftViewRenderable: ViewRenderable? = null
  32. private var rightViewRenderable: ViewRenderable? = null
  33.  
  34. init {
  35. topViewFuture = ViewRenderable.builder()
  36. .setView(context, R.layout.mountain_card_view).build()
  37. leftViewFuture = ViewRenderable.builder()
  38. .setView(context, R.layout.images_mountain_left).build()
  39. rightViewFuture = ViewRenderable.builder()
  40. .setView(context, R.layout.video_mountain_right).build()
  41.  
  42. CompletableFuture.allOf(
  43. topViewFuture,
  44. leftViewFuture,
  45. rightViewFuture
  46. )
  47. .handle<Any> { notUsed, throwable ->
  48.  
  49. if (throwable != null) {
  50. null
  51. }
  52.  
  53. try {
  54. topViewRenderable = topViewFuture!!.get()
  55. leftViewRenderable = leftViewFuture!!.get()
  56. rightViewRenderable = rightViewFuture!!.get()
  57.  
  58. showViews()
  59.  
  60. } catch (ex: InterruptedException) {
  61. Log.e(TAG, "Unable to load renderable")
  62.  
  63. } catch (ex: ExecutionException) {
  64. Log.e(TAG, "Unable to load renderable")
  65.  
  66. }
  67.  
  68. null
  69. }
  70. }
  71.  
  72. private fun showViews() {
  73.  
  74. Log.d(TAG, "showViews")
  75.  
  76. setAnchor(augmentedImage.createAnchor(augmentedImage.getCenterPose()))
  77.  
  78. val localPosition = Vector3()
  79. val lookRotation = Quaternion.lookRotation(localPosition, Vector3.up())
  80. var viewNode = Node()
  81.  
  82. if(topViewRenderable != null) {
  83. Log.d(TAG, "topViewRenderable != null")
  84. val topView = topViewRenderable!!.view
  85. val topTextView = topView.findViewById<TextView>(R.id.tv_name)
  86. topTextView.text = "Top"
  87.  
  88. localPosition.set(0.0f, 0.0f, 0.0f)
  89. viewNode = Node() // Don't forget
  90. viewNode.setParent(this)
  91. viewNode.setLocalPosition(localPosition)
  92. viewNode.setWorldRotation(lookRotation)
  93. viewNode.setRenderable(topViewFuture!!.getNow(null))
  94. }
  95.  
  96. if(leftViewRenderable != null) {
  97. Log.d(TAG, "leftViewRenderable != null")
  98.  
  99. val leftView = leftViewRenderable!!.view
  100. val leftTextView = leftView.findViewById<TextView>(R.id.tv_name)
  101. leftTextView.text = "Left"
  102.  
  103. localPosition.set(-1.0f, 0.0f, 0.0f)
  104. viewNode = Node() // Don't forget
  105. viewNode.setParent(this)
  106. viewNode.setLocalPosition(localPosition)
  107. viewNode.setWorldRotation(lookRotation)
  108. viewNode.setRenderable(leftViewFuture!!.getNow(null))
  109. }
  110.  
  111. if(rightViewRenderable != null) {
  112. Log.d(TAG, "rightViewRenderable != null")
  113.  
  114. val rightView = rightViewRenderable!!.view
  115. val rightTextView = rightView.findViewById<TextView>(R.id.tv_name)
  116. rightTextView.text = "Right"
  117.  
  118. localPosition.set(1.0f, 0.0f, 0.0f)
  119. viewNode = Node() // Don't forget
  120. viewNode.setParent(this)
  121. viewNode.setLocalPosition(localPosition)
  122. viewNode.setWorldRotation(lookRotation)
  123. viewNode.setRenderable(rightViewFuture!!.getNow(null))
  124. }
  125. }
  126.  
  127. }
Add Comment
Please, Sign In to add comment