private void UpdateAvatarComponent(ovrAvatarComponent component)
        {
            for (UInt32 renderPartIndex = 0; renderPartIndex < component.renderPartCount; renderPartIndex++)
            {
                if (RenderParts.Count <= renderPartIndex)
                {
                    break;
                }

                OvrAvatarRenderComponent renderComponent = RenderParts[(int)renderPartIndex];
                IntPtr renderPart            = OvrAvatar.GetRenderPart(component, renderPartIndex);
                ovrAvatarRenderPartType type = CAPI.ovrAvatarRenderPart_GetType(renderPart);
                switch (type)
                {
                case ovrAvatarRenderPartType.SkinnedMeshRenderPBS:
                    var mat   = renderComponent.mesh.sharedMaterial;
                    var bones = renderComponent.bones;
                    ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetVisibilityMask(renderPart);
                    ovrAvatarTransform       localTransform = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetTransform(renderPart);
                    UpdateSkinnedMesh(localTransform, renderPart, bones);

                    UInt64 albedoTextureID  = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetAlbedoTextureAssetID(renderPart);
                    UInt64 surfaceTextureID = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetSurfaceTextureAssetID(renderPart);
                    mat.SetTexture("_Albedo", OvrAvatarComponent.GetLoadedTexture(albedoTextureID));
                    mat.SetTexture("_Surface", OvrAvatarComponent.GetLoadedTexture(surfaceTextureID));
                    break;

                default:
                    break;
                }
            }
        }
예제 #2
0
    void UpdateExpressive()
    {
        ovrAvatarTransform baseTransform = OvrAvatar.CreateOvrAvatarTransform(transform.position, transform.rotation);
        CAPI.ovrAvatar_UpdateWorldTransform(sdkAvatar, baseTransform);

        UpdateFacewave();
    }
예제 #3
0
    public void UpdateAvatar(IntPtr nativeComponent)
    {
        CAPI.ovrAvatarComponent_Get(nativeComponent, false, ref nativeAvatarComponent);

        OvrAvatar.ConvertTransform(nativeAvatarComponent.transform, transform);

        for (UInt32 renderPartIndex = 0; renderPartIndex < 1; renderPartIndex++) //nativeAvatarComponent.renderPartCount
        {
            if (RenderParts.Count <= renderPartIndex)
            {
                break;
            }

            OvrAvatarRenderComponent renderComponent = RenderParts[(int)renderPartIndex];
            IntPtr renderPart            = OvrAvatar.GetRenderPart(nativeAvatarComponent, renderPartIndex);
            ovrAvatarRenderPartType type = CAPI.ovrAvatarRenderPart_GetType(renderPart);
            switch (type)
            {
            case ovrAvatarRenderPartType.SkinnedMeshRender:
                ((OvrAvatarSkinnedMeshRenderComponent)renderComponent).UpdateSkinnedMeshRender(this, owner, renderPart);
                break;

            case ovrAvatarRenderPartType.SkinnedMeshRenderPBS:
                ((OvrAvatarSkinnedMeshRenderPBSComponent)renderComponent).UpdateSkinnedMeshRenderPBS(owner, renderPart, renderComponent.mesh.sharedMaterial);
                break;

            case ovrAvatarRenderPartType.SkinnedMeshRenderPBS_V2:
                ((OvrAvatarSkinnedMeshPBSV2RenderComponent)renderComponent).UpdateSkinnedMeshRender(this, owner, renderPart);
                break;

            default:
                break;
            }
        }
    }
예제 #4
0
    // Use this for initialization
    void Start()
    {
        hp         = 1;
        display_hp = 1;

        if (!isLocalPlayer)
        {
            hpText = GameObject.Find("OtherText").GetComponent <Text>();
            hpImg  = GameObject.Find("OtherHP").GetComponent <Image>();
            gameObject.GetComponent <GestureManager>().enabled = false;
            return;
        }

        eye_anchor = GameObject.Find("CenterEyeAnchor");
        avatar     = GameObject.Find("LocalAvatar").GetComponent <OvrAvatar>();

        hpText = GameObject.Find("LocalText").GetComponent <Text>();
        hpImg  = GameObject.Find("LocalHP").GetComponent <Image>();

        this.GetComponent <GestureManager>().player = this;
        //gesture_manager = gameObject.AddComponent<GestureManager>();
        //gesture_manager.player = this;

        CmdSpawnPlayer();
    }
 private void ToggleControllers(bool enable)
 {
     if (vrInput.isSteamVR())
     {
         ToggleAllChildRenderers(gameObject, enable);
     }
     else
     {
                         #if Int_Oculus
         OvrAvatar avatar = GetComponentInParent <OvrAvatar>();
         if (avatar == null)
         {
             avatar = FindObjectOfType <OvrAvatar>();
             //Debug.LogWarning("Can't find OVRAvatar as parent of controller, using FindObjectOfType, warning this is slow and may result in a long frame");
         }
         if (avatar == null)
         {
             return;
         }
         if (vrInput.LeftHand)
         {
             ToggleAllChildRenderers(avatar.ControllerLeft.gameObject, enable);
             ToggleAllChildRenderers(avatar.HandLeft.gameObject, enable);
         }
         else
         {
             ToggleAllChildRenderers(avatar.ControllerRight.gameObject, enable);
             ToggleAllChildRenderers(avatar.HandRight.gameObject, enable);
         }
                         #endif
     }
 }
예제 #6
0
    // Use this for initialization
    void Start()
    {
        target_to_hand["Long Knife"] = "_Knife";
        target_to_hand["Scalpel"]    = "_Scalpel";
        target_to_hand["Pickups"]    = "_PickupsOpen";
        target_to_hand["Scissors"]   = "_ScissorsOpen";
        target_to_hand["Probe"]      = "_Probe";
        foreach (var hand in Resources.LoadAll <Transform>("Hands"))
        {
            hands[hand.name] = hand;
        }
        ovr        = this.GetComponentInChildren <OvrAvatar>();
        left_grab  = GameObject.Find("LeftController").GetComponent <VRTK_InteractGrab>();
        right_grab = GameObject.Find("RightController").GetComponent <VRTK_InteractGrab>();
        left_use   = left_grab.GetComponent <VRTK_InteractUse>();
        right_use  = right_grab.GetComponent <VRTK_InteractUse>();
        left_grab.ControllerGrabInteractableObject    += new ObjectInteractEventHandler(onGrab);
        left_grab.ControllerUngrabInteractableObject  += new ObjectInteractEventHandler(onUngrab);
        right_grab.ControllerGrabInteractableObject   += new ObjectInteractEventHandler(onGrab);
        right_grab.ControllerUngrabInteractableObject += new ObjectInteractEventHandler(onUngrab);
        right_use.ControllerUseInteractableObject     += new ObjectInteractEventHandler(onUse);
        right_use.ControllerUnuseInteractableObject   += new ObjectInteractEventHandler(onUnuse);
        left_use.ControllerUseInteractableObject      += new ObjectInteractEventHandler(onUse);
        left_use.ControllerUnuseInteractableObject    += new ObjectInteractEventHandler(onUnuse);

        pickups  = GameObject.Find("Pickups");
        scissors = GameObject.Find("Scissors");
    }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public void UpdateData(HoverCursorDataProvider pCursorDataProv,
                               HoverInputOculusTouch.ControlState pState, OvrAvatar pAvatar)
        {
            ICursorDataForInput data = GetData(pCursorDataProv);

            if (data == null)
            {
                return;
            }

            data.SetUsedByInput(pState.IsValid);

            if (!pState.IsValid)
            {
                return;
            }

            if (!TryUpdateDataWithAvatarElement(data, pAvatar))
            {
                UpdateDataWithLocalOffsets(data, pState);
            }

            UpdateDataForTrigger(data, pState);
            UpdateDataForSize(data, pState);
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private bool TryUpdateDataWithAvatarElement(ICursorDataForInput pData, OvrAvatar pAvatar)
        {
            if (!ShouldFollowAvatarElement)
            {
                AvatarElementTransform = null;
                return(false);
            }

            if (AvatarElementTransform == null)
            {
                AvatarElementTransform = HoverInputOculusTouch.FindAvatarTransform(
                    pAvatar.transform, AvatarElementName);
            }

            if (AvatarElementTransform == null)
            {
                return(false);
            }

            Quaternion sidedLocalRotFix = (Type < CursorType.RightPalm ?
                                           LocalLeftRotFix : LocalRightRotFix);

            pData.SetWorldRotation(AvatarElementTransform.rotation * sidedLocalRotFix);
            pData.SetWorldPosition(AvatarElementTransform.position + pData.WorldRotation * LocalPosFix);
            return(true);
        }
    public void UpdateSkinnedMeshRender(OvrAvatarComponent component, OvrAvatar avatar, IntPtr renderPart)
    {
        ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetVisibilityMask(renderPart):
        ovrAvatarTransform localTransform = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetTransform(renderPart):
        UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart):

        UpdateMeshMaterial(visibilityMask, mesh == null ? component.RootMeshComponent : mesh):
        bool isActive = this.gameObject.activeSelf:

        if( mesh != null )
        {
            bool changedMaterial = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_MaterialStateChanged(renderPart):
            if (changedMaterial || (!previouslyActive && isActive))
            {
                ovrAvatarPBSMaterialState materialState = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetPBSMaterialState(renderPart):

                Material mat = mesh.sharedMaterial:
                mat.SetVector("_AlbedoMultiplier", materialState.albedoMultiplier):
                mat.SetTexture("_Albedo", OvrAvatarComponent.GetLoadedTexture(materialState.albedoTextureID)):
                mat.SetTexture("_Metallicness", OvrAvatarComponent.GetLoadedTexture(materialState.metallicnessTextureID)):
                mat.SetFloat("_GlossinessScale", materialState.glossinessScale):
            }
        }
        previouslyActive = isActive:
    }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public void Awake()
        {
            CursorUtil.FindCursorReference(this, ref CursorDataProvider, false);

            if (Avatar == null)
            {
                Avatar = FindObjectOfType <OvrAvatar>();
            }

            if (Look.FollowTransform == null)
            {
                Look.FollowTransform = Camera.main.transform;
            }

            LeftPalm.OriginTransform   = transform;
            LeftThumb.OriginTransform  = transform;
            LeftIndex.OriginTransform  = transform;
            LeftMiddle.OriginTransform = transform;
            LeftRing.OriginTransform   = transform;
            LeftPinky.OriginTransform  = transform;

            RightPalm.OriginTransform   = transform;
            RightThumb.OriginTransform  = transform;
            RightIndex.OriginTransform  = transform;
            RightMiddle.OriginTransform = transform;
            RightRing.OriginTransform   = transform;
            RightPinky.OriginTransform  = transform;
        }
    protected void UpdateSkinnedMesh(OvrAvatar avatar, SkinnedMeshRenderer mesh, Transform[] bones, ovrAvatarTransform localTransform, ovrAvatarVisibilityFlags visibilityMask, IntPtr renderPart)
    {
        UpdateActive(avatar, visibilityMask);
        OvrAvatar.ConvertTransform(localTransform, this.transform);
        UInt64 dirtyJoints           = CAPI.ovrAvatarSkinnedMeshRender_GetDirtyJoints(renderPart);
        ovrAvatarRenderPartType type = CAPI.ovrAvatarRenderPart_GetType(renderPart);
        // We need to make sure that we fully update the initial position of
        // Skinned mesh renderers, then, thereafter, we can only update dirty joints
        bool forceUpdate = (firstSkinnedUpdate &&
                            type == ovrAvatarRenderPartType.SkinnedMeshRender);

        for (UInt32 i = 0; i < 64; i++)
        {
            UInt64 dirtyMask = (ulong)1 << (int)i;
            if ((forceUpdate && i < bones.Length) ||
                (dirtyMask & dirtyJoints) != 0)
            {
                //This joint is dirty and needs to be updated
                Transform          targetBone = bones[i];
                ovrAvatarTransform transform  =
                    CAPI.ovrAvatarSkinnedMeshRender_GetJointTransform(renderPart, i);
                OvrAvatar.ConvertTransform(transform, targetBone);
            }
        }
        firstSkinnedUpdate = false;
    }
 internal void UpdateProjectorRender(OvrAvatarComponent component, ovrAvatarRenderPart_ProjectorRender render)
 {
     OvrAvatar.ConvertTransform(render.localTransform, this.transform):
     material.SetMatrix("_ProjectorWorldToLocal", this.transform.worldToLocalMatrix):
     component.UpdateAvatarMaterial(material, render.materialState):
     
 }
예제 #13
0
    void Start()
    {
        player              = GameObject.Find("OVRPlayerController");
        playerCube          = GameObject.Find("Cube");
        characterController = player.GetComponent <CharacterController>();
        ovrManager          = GameObject.Find("OVRCameraRig").GetComponent <OVRManager>();
        avatar              = GameObject.Find("LocalAvatar").GetComponent <OvrAvatar>();


        //sword = GameObject.Find("Weapon");

        grip           = GameObject.Find("RightHandAnchor");
        swordEye       = GameObject.FindGameObjectsWithTag("swordEye");
        trackingAnchor = GameObject.Find("TrackerAnchor");
        gManager       = GameObject.Find("GameManager");
        gScript        = gManager.GetComponent <GameManager>();

        soundObject  = GameObject.Find("SoundManager");
        soundManager = soundObject.GetComponent <SoundManager>();
        soundPlayer  = gameObject.GetComponent <AudioSource>();
        soundPlayer2 = gameObject.GetComponentInParent <AudioSource>();


        if (gScript.difficulty == 0 && gScript.GetGameLevel() == 3)
        {
            health = 20;
        }


        if (gScript.difficulty == 1 && gScript.GetGameLevel() == 3)
        {
            health = gScript.playerHealth;
        }
    }
예제 #14
0
    protected void UpdateActive(OvrAvatar avatar, ovrAvatarVisibilityFlags mask)
    {
        bool active = avatar.ShowFirstPerson && (mask & ovrAvatarVisibilityFlags.FirstPerson) != 0;

        active |= avatar.ShowThirdPerson && (mask & ovrAvatarVisibilityFlags.ThirdPerson) != 0;
        this.gameObject.SetActive(active);
    }
    public void StartMeshCombining(ovrAvatarComponent component)
    {
        IsCombiningMeshes = true;
        gameObject.SetActive(false);

        ThreadData = new MeshThreadData[RenderParts.Count];
        const UInt32 BODY_INDEX = 0;

        for (UInt32 renderPartIndex = 0; renderPartIndex < RenderParts.Count; renderPartIndex++)
        {
            var    renderPart    = RenderParts[(int)renderPartIndex];
            IntPtr ovrRenderPart = OvrAvatar.GetRenderPart(component, renderPartIndex);
            var    materialState = CAPI.ovrAvatarSkinnedMeshRender_GetMaterialState(ovrRenderPart);

            ThreadData[renderPartIndex].VertexCount    = renderPart.mesh.sharedMesh.vertexCount;
            ThreadData[renderPartIndex].IsDarkMaterial = renderPartIndex != 0;

            if (materialState.alphaMaskTextureID != 0)
            {
                if (renderPartIndex != BODY_INDEX)
                {
                    ClothingAlphaOffset  = materialState.alphaMaskScaleOffset;
                    ClothingAlphaTexture = materialState.alphaMaskTextureID;
                }

                ThreadData[renderPartIndex].UsesAlpha = true;
            }

            ThreadData[renderPartIndex].MeshColors = renderPart.mesh.sharedMesh.colors;
        }

        VertexThread = new Thread(() => UpdateVertices(ref ThreadData));
        VertexThread.Start();
    }
예제 #16
0
    public void UpdateSkinnedMeshRender(
        OvrAvatarComponent component,
        OvrAvatar avatar,
        IntPtr renderPart)
    {
        ovrAvatarVisibilityFlags visibilityMask
            = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetVisibilityMask(renderPart);

        ovrAvatarTransform localTransform
            = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetTransform(renderPart);

        UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart);

        bool isActive = gameObject.activeSelf;

        if (mesh != null && !PreviouslyActive && isActive)
        {
            if (!IsCombinedMaterial)
            {
                InitializeSingleComponentMaterial(renderPart, (int)avatar.LevelOfDetail - 1);
            }
        }

        PreviouslyActive = isActive;
    }
    protected void UpdateSkinnedMesh(OvrAvatar avatar, Transform[] bones, ovrAvatarTransform localTransform, ovrAvatarVisibilityFlags visibilityMask, IntPtr renderPart)
    {
        // Debug.Log("UpdateSkinnedMesh");
        UpdateActive(avatar, visibilityMask);
        OvrAvatar.ConvertTransform(localTransform, this.transform);
        ovrAvatarRenderPartType type = CAPI.ovrAvatarRenderPart_GetType(renderPart);
        UInt64 dirtyJoints;

        switch (type)
        {
        case ovrAvatarRenderPartType.SkinnedMeshRender:
            dirtyJoints = CAPI.ovrAvatarSkinnedMeshRender_GetDirtyJoints(renderPart);
            break;

        case ovrAvatarRenderPartType.SkinnedMeshRenderPBS:
            dirtyJoints = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetDirtyJoints(renderPart);
            break;

        case ovrAvatarRenderPartType.SkinnedMeshRenderPBS_V2:
            dirtyJoints = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetDirtyJoints(renderPart);
            break;

        default:
            throw new Exception("Unhandled render part type: " + type);
        }
        for (UInt32 i = 0; i < 64; i++)
        {
            UInt64 dirtyMask = (ulong)1 << (int)i;
            // We need to make sure that we fully update the initial position of
            // Skinned mesh renderers, then, thereafter, we can only update dirty joints
            if ((firstSkinnedUpdate && i < bones.Length) ||
                (dirtyMask & dirtyJoints) != 0)
            {
                //This joint is dirty and needs to be updated
                Transform          targetBone = bones[i];
                ovrAvatarTransform transform;
                switch (type)
                {
                case ovrAvatarRenderPartType.SkinnedMeshRender:
                    transform = CAPI.ovrAvatarSkinnedMeshRender_GetJointTransform(renderPart, i);
                    break;

                case ovrAvatarRenderPartType.SkinnedMeshRenderPBS:
                    transform = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetJointTransform(renderPart, i);
                    break;

                case ovrAvatarRenderPartType.SkinnedMeshRenderPBS_V2:
                    transform = CAPI.ovrAvatarSkinnedMeshRenderPBSV2_GetJointTransform(renderPart, i);
                    break;

                default:
                    throw new Exception("Unhandled render part type: " + type);
                }
                OvrAvatar.ConvertTransform(transform, targetBone);
            }
        }

        firstSkinnedUpdate = false;
    }
예제 #18
0
    private RaycastObjectInfo GetRaycastInfo(bool isHit, RaycastHit hit, RaycastObjectInfo info)
    {
        if (!isHit)
        {
            return(new RaycastObjectInfo());
        }

        GameObject hitObj = hit.collider.gameObject;

        OvrAvatar ovrAvatar = hitObj.GetComponent <OvrAvatar>();

        if (ovrAvatar == null)
        {
            ovrAvatar = hitObj.GetComponentInParent <OvrAvatar>();
        }
        if (ovrAvatar != null)
        {
            info.ObjectName          = "Player Avatar";
            info.OriginalObjectOwner = photonToParticipantDictionary[ovrAvatar.GetComponent <PhotonView>().Owner.ActorNumber].ToString();
            info.ObjectOwner         = info.OriginalObjectOwner;
            info.ObjectID            = "";

            return(info);
        }

        Chart chart = hitObj.GetComponent <Chart>();

        if (chart == null)
        {
            chart = hitObj.GetComponentInParent <Chart>();
        }
        if (chart != null)
        {
            info.ObjectName          = "Chart";
            info.OriginalObjectOwner = photonToParticipantDictionary[chart.OriginalOwner.ActorNumber].ToString();
            info.ObjectOwner         = photonToParticipantDictionary[chart.photonView.OwnerActorNr].ToString();
            info.ObjectID            = chart.ID;

            return(info);
        }

        Panel panel = hitObj.GetComponent <Panel>();

        if (panel == null)
        {
            panel = hitObj.GetComponentInParent <Panel>();
        }
        if (panel != null)
        {
            info.ObjectName          = "Panel";
            info.OriginalObjectOwner = photonToParticipantDictionary[panel.OriginalOwner.ActorNumber].ToString();
            info.ObjectOwner         = info.OriginalObjectOwner;
            info.ObjectID            = "";

            return(info);
        }

        return(new RaycastObjectInfo());
    }
    IEnumerator DelayedAvatarInstantiation(object content, int senderid)
    {
        yield return(new WaitForSecondsRealtime(0.1f));

        object[] instantiationData = (object[])content;

        //Create panel
        PhotonPlayer photonPlayer = PhotonPlayer.Find(senderid);

        GameObject go       = null;
        int        viewId   = (int)instantiationData[0];
        string     oculusId = (string)instantiationData[1];

        if (PhotonNetwork.player.ID == senderid)
        {
            go = Instantiate(m_LocalAvatarPrefab);
            m_PlayerAvatars.Add(photonPlayer.ID, go);

            _LocalAvatar = go;

            _LocalVoiceRecorder = PhotonNetwork.Instantiate("PhotonPlayerVoice", Vector3.zero, Quaternion.identity, 0).GetComponent <PhotonVoiceRecorder>();
            _LocalVoiceRecorder.transform.SetParent(go.transform);
            _LocalAvatar.transform.SetParent(CameraController.CameraContainer.transform);
        }
        else
        {
            go = Instantiate(m_RemoteAvatarPrefab);
            m_PlayerAvatars.Add(photonPlayer.ID, go);
        }

        if (go != null)
        {
            PhotonView pView = go.GetComponent <PhotonView>();

            if (pView != null)
            {
                pView.viewID  = viewId;
                pView.ownerId = senderid;
            }

            OvrAvatar avatar = go.GetComponent <OvrAvatar>();
            avatar.oculusUserID = oculusId;

            if (photonPlayer.IsLocal)
            {
                Fader.FadeInAll();
            }

            m_PositionController.SetObjectPosition(go, (UserPosition)photonPlayer.CustomProperties["EnvironmentLocation"],
                                                   (int)photonPlayer.CustomProperties["EnvironmentPositionIndex"]);

            if (!photonPlayer.IsLocal)
            {
                SetPlayerPosition(photonPlayer);
            }
        }
    }
    internal void UpdateSkinnedMeshRenderPBS(OvrAvatar avatar, ovrAvatarRenderPart_SkinnedMeshRenderPBS meshRender)
    {
        UpdateSkinnedMesh(avatar, mesh, bones, meshRender.localTransform, meshRender.visibilityMask, meshRender.skinnedPose);

        Material mat = mesh.sharedMaterial;

        mat.SetTexture("_Albedo", GetLoadedTexture(meshRender.albedoTextureAssetID));
        mat.SetTexture("_Surface", GetLoadedTexture(meshRender.surfaceTextureAssetID));
    }
예제 #21
0
 void Start()
 {
     if (Avatar == null)
     {
         Debug.LogWarning("Avatar not assigned. Searching hierarchy. Please configure the Avatar before running to improve performance.");
         Avatar = GameObject.FindObjectOfType <OvrAvatar>();
         Assert.IsNotNull(Avatar);
     }
 }
예제 #22
0
 protected void UpdateSkinnedMesh(OvrAvatar avatar, SkinnedMeshRenderer mesh, Transform[] bones, ovrAvatarTransform localTransform, ovrAvatarVisibilityFlags visibilityMask, ovrAvatarSkinnedMeshPose skinnedPose)
 {
     UpdateActive(avatar, visibilityMask);
     OvrAvatar.ConvertTransform(localTransform, this.transform);
     for (int i = 0; i < skinnedPose.jointCount; i++)
     {
         Transform targetBone = bones[i];
         OvrAvatar.ConvertTransform(skinnedPose.jointTransform[i], targetBone);
     }
 }
예제 #23
0
    private void OnGetLoggedInUser(Message <User> message)
    {
        if (!message.IsError)
        {
            OvrAvatar avatar = Instantiate(avatarPrefab.gameObject).GetComponent <OvrAvatar>();

            Debug.Log(message.Data.ID);
            //avatar.oculusUserID = message.Data.ID.ToString();
        }
    }
예제 #24
0
 void Start()
 {
     //transform = GetComponent<Transform>();
     line = GetComponent <LineRenderer>();
     //raycaster = GetComponent<OVRPhysicsRaycaster>();
     //eventSystem = GameObject.FindObjectOfType<EventSystem>();
     avatar          = GameObject.FindObjectOfType <OvrAvatar>();
     activeStateHash = Animator.StringToHash(ActiveState);
     Debug.LogFormat("Raycast mask: {0}", RaycastMask.mask);
 }
예제 #25
0
    // Use this for initialization
    void Start()
    {
        sender  = GetComponent <RayCastSender>();
        avatar  = GetComponentInParent <OvrAvatar>();
        grabber = GetComponentInParent <Grabber>();

        otherToggler = GetComponentInParent <ToggleRayCastOnGrabbable>();
        controller   = marker.controller;
        ConnectController(controller);
    }
    internal void UpdateSkinnedMeshRender(OvrAvatar avatar, IntPtr renderPart)
    {
        ovrAvatarMaterialState   materialState  = CAPI.ovrAvatarSkinnedMeshRender_GetMaterialState(renderPart);
        ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRender_GetVisibilityMask(renderPart);
        ovrAvatarTransform       localTransform = CAPI.ovrAvatarSkinnedMeshRender_GetTransform(renderPart);

        UpdateSkinnedMesh(avatar, mesh, bones, localTransform, visibilityMask, renderPart);
        UpdateMeshMaterial(visibilityMask);
        UpdateAvatarMaterial(mesh.sharedMaterial, materialState);
    }
예제 #27
0
    internal void UpdateSkinnedMeshRenderPBS(OvrAvatar avatar, IntPtr renderPart, Material mat)
    {
//        ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetVisibilityMask(renderPart);
//        ovrAvatarTransform localTransform = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetTransform(renderPart);
//        UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart);

//        UInt64 albedoTextureID = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetAlbedoTextureAssetID(renderPart);
//        UInt64 surfaceTextureID = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetSurfaceTextureAssetID(renderPart);
//        mat.SetTexture("_Albedo", OvrAvatarComponent.GetLoadedTexture(albedoTextureID));
//        mat.SetTexture("_Surface", OvrAvatarComponent.GetLoadedTexture(surfaceTextureID));
    }
예제 #28
0
    public void UpdateTransformsFromPose(IntPtr sdkAvatar)
    {
        if (sdkAvatar != IntPtr.Zero)
        {
            ovrAvatarTransform      bodyTransform   = OvrAvatar.CreateOvrAvatarTransform(CurrentPose.headPosition, CurrentPose.headRotation);
            ovrAvatarHandInputState inputStateLeft  = OvrAvatar.CreateInputState(OvrAvatar.CreateOvrAvatarTransform(CurrentPose.handLeftPosition, CurrentPose.handLeftRotation), CurrentPose.controllerLeftPose);
            ovrAvatarHandInputState inputStateRight = OvrAvatar.CreateInputState(OvrAvatar.CreateOvrAvatarTransform(CurrentPose.handRightPosition, CurrentPose.handRightRotation), CurrentPose.controllerRightPose);

            CAPI.ovrAvatarPose_UpdateBody(sdkAvatar, bodyTransform);
            CAPI.ovrAvatarPose_UpdateHandsWithType(sdkAvatar, inputStateLeft, inputStateRight, ControllerType);
        }
    }
예제 #29
0
    // Use this for initialization
    void Start()
    {
        sender  = GetComponentInChildren <RayCastSender>();
        avatar  = GetComponentInParent <OvrAvatar>();
        grabber = GetComponentInChildren <Grabber>();

        otherToggler = GetComponentInChildren <ToggleRayCastOnGrabbable>();
        controller   = gameObject.GetComponent <VRController>();
        marker       = gameObject.GetComponentInChildren <FreeMarker>(true);
        penModel     = transform.Find("Pen").gameObject;
        ConnectController(controller);
    }
예제 #30
0
 /// <summary>
 /// The GetAvatar method is used to retrieve the Oculus Avatar object if it exists in the scene. This method is only available if the Oculus Avatar package is installed.
 /// </summary>
 /// <returns>The OvrAvatar script for managing the Oculus Avatar.</returns>
 public virtual OvrAvatar GetAvatar()
 {
     if (avatarContainer == null)
     {
         avatarContainer = FindObjectOfType <OvrAvatar>();
         if (avatarContainer)
         {
             var objectFollow = avatarContainer.gameObject.AddComponent <VRTK_TransformFollow>();
             objectFollow.gameObjectToFollow = GetPlayArea().gameObject;
         }
     }
     return(avatarContainer);
 }