Exemplo n.º 1
0
        private async void RobotModelLoaded()
        {
            Debug.Log("URDF: robot is fully loaded");

            RobotModel.RobotModelGameObject.transform.parent           = transform;
            RobotModel.RobotModelGameObject.transform.localPosition    = Vector3.zero;
            RobotModel.RobotModelGameObject.transform.localEulerAngles = Vector3.zero;

            // retarget OnClickCollider target to receive OnClick events
            foreach (OnClickCollider onCLick in RobotModel.RobotModelGameObject.GetComponentsInChildren <OnClickCollider>(true))
            {
                onCLick.Target = gameObject;
            }

            RobotModel.SetActiveAllVisuals(true);

            outlineOnClick.ClearRenderers();
            RobotPlaceholder.SetActive(false);
            Destroy(RobotPlaceholder);

            robotColliders.Clear();
            robotRenderers.Clear();
            robotRenderers.AddRange(RobotModel.RobotModelGameObject.GetComponentsInChildren <Renderer>());
            robotColliders.AddRange(RobotModel.RobotModelGameObject.GetComponentsInChildren <Collider>());
            outlineOnClick.InitRenderers(robotRenderers);
            outlineOnClick.OutlineShaderType = OutlineOnClick.OutlineType.TwoPassShader;
            outlineOnClick.InitGizmoMaterials();
            await WebsocketManager.Instance.RegisterForRobotEvent(GetId(), true, RegisterForRobotEventRequestArgs.WhatEnum.Joints);
        }
Exemplo n.º 2
0
    /// <summary>
    /// Puts specified RobotModel back to the RobotModels dictionary "pool" for further use by another RobotActionObject.
    /// </summary>
    /// <param name="robotModel">RobotModel to be put back to the RobotModels dictionary.</param>
    public void ReturnRobotModelInstace(RobotModel robotModel)
    {
        robotModel.RobotModelGameObject.transform.parent           = transform;
        robotModel.RobotModelGameObject.transform.localPosition    = Vector3.zero;
        robotModel.RobotModelGameObject.transform.localEulerAngles = Vector3.zero;

        robotModel.IsBeingUsed = false;
        robotModel.SetActiveAllVisuals(false);

        // retarget OnClickCollider target to receive OnClick events
        foreach (OnClickCollider onCLick in robotModel.RobotModelGameObject.GetComponentsInChildren <OnClickCollider>(true))
        {
            onCLick.Target = null;
        }
    }
Exemplo n.º 3
0
        private async void RobotModelLoaded()
        {
            RobotModel.RobotModelGameObject.transform.parent        = transform;
            RobotModel.RobotModelGameObject.transform.localPosition = Vector3.zero;
            RobotModel.RobotModelGameObject.transform.localRotation = Quaternion.identity;

            // retarget OnClickCollider target to receive OnClick events
            foreach (OnClickCollider onCLick in RobotModel.RobotModelGameObject.GetComponentsInChildren <OnClickCollider>(true))
            {
                onCLick.Target = gameObject;
            }

            RobotModel.SetActiveAllVisuals(true);

            bool outlineWasHighlighted = outlineOnClick.Highlighted;

            outlineOnClick.UnHighlight();
            outlineOnClick.ClearRenderers();
            RobotPlaceholder.SetActive(false);
            Destroy(RobotPlaceholder);

            robotColliders.Clear();
            robotRenderers.Clear();
            robotRenderers.AddRange(RobotModel.RobotModelGameObject.GetComponentsInChildren <Renderer>(true));
            robotColliders.AddRange(RobotModel.RobotModelGameObject.GetComponentsInChildren <Collider>(true));
            outlineOnClick.InitRenderers(robotRenderers);
            outlineOnClick.OutlineShaderType = OutlineOnClick.OutlineType.TwoPassShader;
            outlineOnClick.InitMaterials();

            SetOutlineSizeBasedOnScale();

            SetVisibility(visibility, forceShaderChange: true);
            UpdateColor();

            SetDefaultJoints();

            Target target = GetComponent <Target>();

            if (target != null)
            {
                target.ChangeTarget(RobotModel.RobotModelGameObject);
            }

            if (outlineWasHighlighted)
            {
                outlineOnClick.Highlight();
                if (SelectorMenu.Instance.ManuallySelected)
                {
                    DisplayOffscreenIndicator(true);
                }
            }

            // Show or hide the robot based on global settings of displaying ActionObjects.
            // Needs to be called additionally, because when global setting is called, robot model is not loaded and only its placeholder is active.

            /*if (robotVisible) {
             *  Show();
             * } else {
             *  Hide();
             * }
             */
            if (GameManager.Instance.GetGameState() != GameManager.GameStateEnum.PackageRunning || GameManager.Instance.GetGameState() != GameManager.GameStateEnum.LoadingPackage)
            {
                await WebsocketManager.Instance.RegisterForRobotEvent(GetId(), true, RegisterForRobotEventRequestArgs.WhatEnum.Joints);
            }
        }