Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.project.jeremyg.armountain.sceneform
- import android.content.Context;
- import android.util.Log;
- import android.widget.TextView
- import com.google.ar.core.AugmentedImage;
- import com.google.ar.sceneform.AnchorNode;
- import com.google.ar.sceneform.Node;
- import com.google.ar.sceneform.math.Quaternion;
- import com.google.ar.sceneform.math.Vector3;
- import com.google.ar.sceneform.rendering.ViewRenderable
- import com.project.jeremyg.armountain.R
- import java.net.NoRouteToHostException
- import java.util.concurrent.CompletableFuture;
- import java.util.concurrent.ExecutionException
- class AugmentedImageNode(var context: Context, var augmentedImage: AugmentedImage) : AnchorNode() {
- companion object {
- private val TAG = "AugmentedImageNode"
- private var topViewFuture: CompletableFuture<ViewRenderable>? = null
- private var leftViewFuture: CompletableFuture<ViewRenderable>? = null
- private var rightViewFuture: CompletableFuture<ViewRenderable>? = null
- }
- private var topViewRenderable: ViewRenderable? = null
- private var leftViewRenderable: ViewRenderable? = null
- private var rightViewRenderable: ViewRenderable? = null
- init {
- topViewFuture = ViewRenderable.builder()
- .setView(context, R.layout.mountain_card_view).build()
- leftViewFuture = ViewRenderable.builder()
- .setView(context, R.layout.images_mountain_left).build()
- rightViewFuture = ViewRenderable.builder()
- .setView(context, R.layout.video_mountain_right).build()
- CompletableFuture.allOf(
- topViewFuture,
- leftViewFuture,
- rightViewFuture
- )
- .handle<Any> { notUsed, throwable ->
- if (throwable != null) {
- null
- }
- try {
- topViewRenderable = topViewFuture!!.get()
- leftViewRenderable = leftViewFuture!!.get()
- rightViewRenderable = rightViewFuture!!.get()
- showViews()
- } catch (ex: InterruptedException) {
- Log.e(TAG, "Unable to load renderable")
- } catch (ex: ExecutionException) {
- Log.e(TAG, "Unable to load renderable")
- }
- null
- }
- }
- private fun showViews() {
- Log.d(TAG, "showViews")
- setAnchor(augmentedImage.createAnchor(augmentedImage.getCenterPose()))
- val localPosition = Vector3()
- val lookRotation = Quaternion.lookRotation(localPosition, Vector3.up())
- var viewNode = Node()
- if(topViewRenderable != null) {
- Log.d(TAG, "topViewRenderable != null")
- val topView = topViewRenderable!!.view
- val topTextView = topView.findViewById<TextView>(R.id.tv_name)
- topTextView.text = "Top"
- localPosition.set(0.0f, 0.0f, 0.0f)
- viewNode = Node() // Don't forget
- viewNode.setParent(this)
- viewNode.setLocalPosition(localPosition)
- viewNode.setWorldRotation(lookRotation)
- viewNode.setRenderable(topViewFuture!!.getNow(null))
- }
- if(leftViewRenderable != null) {
- Log.d(TAG, "leftViewRenderable != null")
- val leftView = leftViewRenderable!!.view
- val leftTextView = leftView.findViewById<TextView>(R.id.tv_name)
- leftTextView.text = "Left"
- localPosition.set(-1.0f, 0.0f, 0.0f)
- viewNode = Node() // Don't forget
- viewNode.setParent(this)
- viewNode.setLocalPosition(localPosition)
- viewNode.setWorldRotation(lookRotation)
- viewNode.setRenderable(leftViewFuture!!.getNow(null))
- }
- if(rightViewRenderable != null) {
- Log.d(TAG, "rightViewRenderable != null")
- val rightView = rightViewRenderable!!.view
- val rightTextView = rightView.findViewById<TextView>(R.id.tv_name)
- rightTextView.text = "Right"
- localPosition.set(1.0f, 0.0f, 0.0f)
- viewNode = Node() // Don't forget
- viewNode.setParent(this)
- viewNode.setLocalPosition(localPosition)
- viewNode.setWorldRotation(lookRotation)
- viewNode.setRenderable(rightViewFuture!!.getNow(null))
- }
- }
- }
Add Comment
Please, Sign In to add comment