public override void OnSelection(RUISWandSelector selector)
	{
		updateHingePositionAndAxis();
		updateHingeForward();
		
		this.selector = selector;
		positionAtSelection = selector.selectionRayEnd;
		rotationAtSelection = transform.rotation;
		selectorPositionAtSelection = selector.transform.position;
		selectorRotationAtSelection = selector.transform.rotation;
		distanceFromSelectionRayOrigin = (selector.selectionRayEnd - selector.selectionRay.origin).magnitude; // Dont remove this, needed in the inherited class
		
		this.angleOnSelection = getHingeJointAngle();
		this.targetAngleOnSelection = getAngleDifferenceFromHingeForwardOnStart();
		
		this.originalJointSpring = transform.GetComponent<HingeJoint>().spring;
		
		if(!physicalSelection) 
		{
			JointSpring spr = GetComponent<HingeJoint>().spring;
			spr.spring = 0;
			spr.targetPosition = this.originalJointSpring.targetPosition;
			spr.damper = this.originalJointSpring.damper;
			GetComponent<HingeJoint>().spring = spr;
			this.useGravityOriginalValue = transform.GetComponent<Rigidbody>().useGravity;
			transform.GetComponent<Rigidbody>().useGravity = false;	
		}
		
		if (selectionMaterial != null)
			AddMaterialToEverything(selectionMaterial);
	}
    public override void OnSelection(RUISWandSelector selector)
    {
        this.selector = selector;
        // Transform information
        positionAtSelection = selector.selectionRayEnd;
        rotationAtSelection = transform.rotation;
        // Selector information
        selectorPositionAtSelection = selector.transform.position;
        selectorRotationAtSelection = selector.transform.rotation;
        distanceFromSelectionRayOrigin = (selector.selectionRayEnd - selector.selectionRay.origin).magnitude; // Dont remove this, needed in the inherited class

        this.originalJointDriveX = this.configurableJoint.angularXDrive;
        this.originalJointDriveYZ = this.configurableJoint.angularYZDrive;

        JointDrive jd = new JointDrive();
        jd.mode = JointDriveMode.Position;
        jd.positionSpring = springForce;
        jd.maximumForce = 999;

        this.configurableJoint.angularXDrive = jd;
        this.configurableJoint.angularYZDrive = jd;

        if (selectionMaterial != null)
            AddMaterialToEverything(selectionMaterial);
    }
Ejemplo n.º 3
0
    public override void OnSelection(RUISWandSelector selector)
    {
        updateHingePositionAndAxis();
        updateHingeForward();

        this.selector                  = selector;
        positionAtSelection            = selector.selectionRayEnd;
        rotationAtSelection            = transform.rotation;
        selectorPositionAtSelection    = selector.transform.position;
        selectorRotationAtSelection    = selector.transform.rotation;
        distanceFromSelectionRayOrigin = (selector.selectionRayEnd - selector.selectionRay.origin).magnitude;         // Dont remove this, needed in the inherited class

        this.angleOnSelection       = getHingeJointAngle();
        this.targetAngleOnSelection = getAngleDifferenceFromHingeForwardOnStart();

        this.originalJointSpring = transform.GetComponent <HingeJoint>().spring;

        if (!physicalSelection)
        {
            JointSpring spr = GetComponent <HingeJoint>().spring;
            spr.spring         = 0;
            spr.targetPosition = this.originalJointSpring.targetPosition;
            spr.damper         = this.originalJointSpring.damper;
            GetComponent <HingeJoint>().spring = spr;
            this.useGravityOriginalValue       = transform.GetComponent <Rigidbody>().useGravity;
            transform.GetComponent <Rigidbody>().useGravity = false;
        }

        if (selectionMaterial != null)
        {
            AddMaterialToEverything(selectionMaterial);
        }
    }
Ejemplo n.º 4
0
    public override void OnSelection(RUISWandSelector selector)
    {
        this.selector = selector;
        // Transform information
        positionAtSelection = selector.selectionRayEnd;
        rotationAtSelection = transform.rotation;
        // Selector information
        selectorPositionAtSelection    = selector.transform.position;
        selectorRotationAtSelection    = selector.transform.rotation;
        distanceFromSelectionRayOrigin = (selector.selectionRayEnd - selector.selectionRay.origin).magnitude;         // Dont remove this, needed in the inherited class


        this.originalJointDriveX  = this.configurableJoint.angularXDrive;
        this.originalJointDriveYZ = this.configurableJoint.angularYZDrive;

        JointDrive jd = new JointDrive();

        jd.mode           = JointDriveMode.Position;
        jd.positionSpring = springForce;
        jd.maximumForce   = 999;

        this.configurableJoint.angularXDrive  = jd;
        this.configurableJoint.angularYZDrive = jd;

        if (selectionMaterial != null)
        {
            AddMaterialToEverything(selectionMaterial);
        }
    }
Ejemplo n.º 5
0
    public virtual void OnSelection(RUISWandSelector selector)
    {
        this.selector = selector;

        positionAtSelection            = transform.position;
        rotationAtSelection            = transform.rotation;
        selectorPositionAtSelection    = selector.transform.position;
        selectorRotationAtSelection    = selector.transform.rotation;
        distanceFromSelectionRayOrigin = (positionAtSelection - selector.selectionRay.origin).magnitude;

        lastPosition = transform.position;

        if (rigidbody)
        {
            if (continuousCollisionDetectionWhenSelected)
            {
                switchToContinuousCollisionMode = true;
            }
            rigidbodyWasKinematic = rigidbody.isKinematic;
            rigidbody.isKinematic = true;
        }

        if (selectionMaterial != null)
        {
            AddMaterialToEverything(selectionMaterial);
        }

        UpdateTransform(false);
    }
Ejemplo n.º 6
0
    public virtual void OnSelectionEnd()
    {
        if (rigidbody)
        {
            rigidbody.isKinematic = rigidbodyWasKinematic;
            if (continuousCollisionDetectionWhenSelected)
            {
                switchToOldCollisionMode = true;
            }
        }

        if (maintainMomentumAfterRelease && rigidbody && !rigidbody.isKinematic)
        {
            rigidbody.AddForce(AverageBufferContent(velocityBuffer), ForceMode.VelocityChange);
            if (selector)            // Put this if-clause here just in case because once received NullReferenceException
            {
                rigidbody.AddTorque(Mathf.Deg2Rad * selector.angularVelocity, ForceMode.VelocityChange);
            }
        }

        if (selectionMaterial != null)
        {
            RemoveMaterialFromEverything();
        }

        this.selector = null;
    }
Ejemplo n.º 7
0
    public virtual void OnSelection(RUISWandSelector selector)
    {
        this.selector = selector;

        // "Reset" filtered velocity by temporarily using position noise covariance of 10
        updateVelocity(10, Time.deltaTime);

        positionAtSelection            = transform.position;
        rotationAtSelection            = transform.rotation;
        selectorPositionAtSelection    = selector.transform.position;
        selectorRotationAtSelection    = selector.transform.rotation;
        distanceFromSelectionRayOrigin = (positionAtSelection - selector.selectionRay.origin).magnitude;

        lastPosition = transform.position;

        if (rigidbody)
        {
            if (continuousCollisionDetectionWhenSelected)
            {
                switchToContinuousCollisionMode = true;
            }
            rigidbodyWasKinematic = rigidbody.isKinematic;
            rigidbody.isKinematic = true;
        }

        if (selectionMaterial != null)
        {
            AddMaterialToEverything(selectionMaterial);
        }

        UpdateTransform(false);
    }
Ejemplo n.º 8
0
 private void ReInitialize()
 {
     Log("(Re)Initializing");
     selector_      = null;
     scalerSelector = null;
     originalDistanceBetweenSelectors = -1.0f;
     originalScale = transform.localScale;
 }
Ejemplo n.º 9
0
    public void Awake()
    {
        rotationFilter = new KalmanFilteredRotation();
        rotationFilter.skipIdenticalMeasurements = true;
        rotationFilter.rotationNoiseCovariance   = rotationNoiseCovariance;

        bodyTrackingDeviceID = (int)bodyTrackingDevice;
        RUISGestureRecognizer[] gestureRecognizerScripts = GetComponents <RUISGestureRecognizer>();

        foreach (RUISGestureRecognizer script in gestureRecognizerScripts)
        {
            if (script.ToString() != gestureSelectionScriptName)
            {
                script.enabled = false;
            }
            else
            {
                gestureRecognizer = script;
            }
        }

        if (!skeletonManager)
        {
            skeletonManager = FindObjectOfType(typeof(RUISSkeletonManager)) as RUISSkeletonManager;
        }

        selectionVisualizers = new Texture2D[8];
        for (int i = 0; i < amountOfSelectionVisualizerImages; i++)
        {
            selectionVisualizers[i] = Resources.Load("RUIS/Graphics/Selection/visualizer" + (i + 1)) as Texture2D;
        }

        displayManager = FindObjectOfType(typeof(RUISDisplayManager)) as RUISDisplayManager;

        if (!gestureRecognizer)
        {
            Debug.LogWarning(typeof(RUISGestureRecognizer) + " component was not found for wand '" + name + "'."
                             + "Add it if you want to use gesture-based selection.");
        }

        wandSelector = GetComponent <RUISWandSelector>();
        if (!wandSelector)
        {
            Debug.LogError(typeof(RUISWandSelector) + " component was not found for wand '" + name + "'."
                           + "Add it if you want to use gesture-based selection. Disabling wand.");
            this.enabled = false;
        }

        PlayerLost();
    }
Ejemplo n.º 10
0
    public virtual void OnSelection(RUISWandSelector selector)
    {
        this.selector = selector;

        // "Reset" filtered velocity by temporarily using position noise covariance of 10
        updateVelocity(10, Time.deltaTime);

        positionAtSelection         = transform.position;
        rotationAtSelection         = transform.rotation;
        selectorPositionAtSelection = selector.transform.position;
        selectorRotationAtSelection = selector.transform.rotation;
        if (snapToRay)
        {
            rayEndToPositionAtSelection = Vector3.zero;
        }
        else
        {
            rayEndToPositionAtSelection = transform.position - selector.selectionRayEnd;
        }
        //distanceFromSelectionRayOrigin = (selector.selectionRayEnd - selector.selectionRay.origin).magnitude;
        distanceFromSelectionRayOrigin = 0.2F;
        //Debug.Log("distanceFromSelectionRayOrigin = " + distanceFromSelectionRayOrigin);


        lastPosition = transform.position;

        if (GetComponent <Rigidbody>())
        {
            if (continuousCollisionDetectionWhenSelected)
            {
                switchToContinuousCollisionMode = true;
            }
            rigidbodyWasKinematic = GetComponent <Rigidbody>().isKinematic;
            GetComponent <Rigidbody>().isKinematic = true;
        }

        if (selectionMaterial != null)
        {
            AddMaterialToEverything(selectionMaterial);
        }

        UpdateTransform(false);
    }
Ejemplo n.º 11
0
 public override void OnSelection(RUISWandSelector selector)
 {
     Log("ScalableSelectable#OnSelection called for " + selector);
     if (!this.isSelected)
     {
         this.selector_ = selector;
         // Only call this on first selection so the base class' selector does not change
         // when multi-selecting
         base.OnSelection(selector);
     }
     else
     {
         Log("Setting scaler selection and the original distance between the selectors");
         this.scalerSelector = selector;
         this.originalDistanceBetweenSelectors = GetDistanceBetweenSelectors();
         // Must update transform here?
         this.UpdateTransform(false);
     }
 }
Ejemplo n.º 12
0
    public void Awake()
    {
        if (!skeletonManager)
        {
            skeletonManager = FindObjectOfType(typeof(RUISSkeletonManager)) as RUISSkeletonManager;
        }

        selectionVisualizers = new Texture2D[8];
        for (int i = 0; i < amountOfSelectionVisualizerImages; i++)
        {
            selectionVisualizers[i] = Resources.Load("RUIS/Graphics/Selection/visualizer" + (i + 1)) as Texture2D;
        }

        displayManager = FindObjectOfType(typeof(RUISDisplayManager)) as RUISDisplayManager;

        if (!gestureRecognizer)
        {
            Debug.LogWarning("Please set a gesture recognizer for wand: " + name + " if you want to use gestures.");
        }

        wandSelector = GetComponent<RUISWandSelector>();

        PlayerLost();
    }
Ejemplo n.º 13
0
    private void DisableUnneededMoveWands()
    {
        List <RUISPSMoveWand> childWands = new List <RUISPSMoveWand>(GetComponentsInChildren <RUISPSMoveWand>());

        foreach (RUISPSMoveWand moveController in FindObjectsOfType(typeof(RUISPSMoveWand)) as RUISPSMoveWand[])
        {
            if (!childWands.Contains(moveController) && (!enablePSMove || !psMoveWrapper.isConnected || moveController.controllerId >= amountOfPSMoveControllers))
            {
                Debug.LogWarning("Disabling PS Move wand: " + moveController.name, moveController);
                moveController.enabled = false;
                RUISWandSelector wandSelector = moveController.GetComponent <RUISWandSelector>();
                if (wandSelector)
                {
                    wandSelector.enabled = false;
                    LineRenderer lineRenderer = wandSelector.GetComponent <LineRenderer>();
                    if (lineRenderer)
                    {
                        lineRenderer.enabled = false;
                    }
                }
                moveController.gameObject.SetActive(false);
            }
        }
    }
Ejemplo n.º 14
0
    public void Awake()
    {
        if (!skeletonManager)
        {
            skeletonManager = FindObjectOfType(typeof(RUISSkeletonManager)) as RUISSkeletonManager;
        }

        selectionVisualizers = new Texture2D[8];
        for (int i = 0; i < amountOfSelectionVisualizerImages; i++)
        {
            selectionVisualizers[i] = Resources.Load("RUIS/Graphics/Selection/visualizer" + (i + 1)) as Texture2D;
        }

        displayManager = FindObjectOfType(typeof(RUISDisplayManager)) as RUISDisplayManager;

        if (!gestureRecognizer)
        {
            Debug.LogWarning("Please set a gesture recognizer for wand: " + name + " if you want to use gestures.");
        }

        wandSelector = GetComponent <RUISWandSelector>();

        PlayerLost();
    }
Ejemplo n.º 15
0
    public void Awake()
    {
        rotationFilter = new KalmanFilteredRotation();
        rotationFilter.skipIdenticalMeasurements = true;
        rotationFilter.rotationNoiseCovariance = rotationNoiseCovariance;

        bodyTrackingDeviceID = (int)bodyTrackingDevice;
        RUISGestureRecognizer[] gestureRecognizerScripts = GetComponents<RUISGestureRecognizer>();

        foreach(RUISGestureRecognizer script in gestureRecognizerScripts)
        {
            if(script.ToString() != gestureSelectionScriptName)
                script.enabled = false;
            else
                gestureRecognizer = script;
        }

        if (!skeletonManager)
        {
            skeletonManager = FindObjectOfType(typeof(RUISSkeletonManager)) as RUISSkeletonManager;
        }

        selectionVisualizers = new Texture2D[8];
        for (int i = 0; i < amountOfSelectionVisualizerImages; i++)
        {
            selectionVisualizers[i] = Resources.Load("RUIS/Graphics/Selection/visualizer" + (i + 1)) as Texture2D;
        }

        displayManager = FindObjectOfType(typeof(RUISDisplayManager)) as RUISDisplayManager;

        if (!gestureRecognizer)
        {
            Debug.LogWarning(  typeof(RUISGestureRecognizer) + " component was not found for wand '" + name + "'."
                             + "Add it if you want to use gesture-based selection.");
        }

        wandSelector = GetComponent<RUISWandSelector>();
        if(!wandSelector)
        {
            Debug.LogError(  typeof(RUISWandSelector) + " component was not found for wand '" + name + "'."
                           + "Add it if you want to use gesture-based selection. Disabling wand.");
            this.enabled = false;
        }

        PlayerLost();
    }
Ejemplo n.º 16
0
 void Awake()
 {
     psMoveController = GetComponent<RUISPSMoveWand>();
     wandSelector = GetComponent<RUISWandSelector>();
 }
Ejemplo n.º 17
0
 void Awake()
 {
     psMoveController = GetComponent <RUISPSMoveWand>();
     wandSelector     = GetComponent <RUISWandSelector>();
 }
Ejemplo n.º 18
0
    public virtual void OnSelectionEnd()
    {
        if (GetComponent<Rigidbody>())
        {
            GetComponent<Rigidbody>().isKinematic = rigidbodyWasKinematic;
            if(continuousCollisionDetectionWhenSelected)
            {
                switchToOldCollisionMode = true;
            }
        }

        if (maintainMomentumAfterRelease && GetComponent<Rigidbody>() && !GetComponent<Rigidbody>().isKinematic)
        {
        //            rigidbody.AddForce(AverageBufferContent(velocityBuffer), ForceMode.VelocityChange);

            GetComponent<Rigidbody>().AddForce(filteredVelocity, ForceMode.VelocityChange);
            if(selector) // Put this if-clause here just in case because once received NullReferenceException
            {
                if(selector.transform.parent)
                {
                    GetComponent<Rigidbody>().AddTorque(selector.transform.parent.TransformDirection(
                                        Mathf.Deg2Rad * selector.angularVelocity), ForceMode.VelocityChange);
                }
                else
                    GetComponent<Rigidbody>().AddTorque(Mathf.Deg2Rad * selector.angularVelocity, ForceMode.VelocityChange);
            }
        }

        if(selectionMaterial != null)
            RemoveMaterialFromEverything();

        this.selector = null;
    }
Ejemplo n.º 19
0
    public virtual void OnSelection(RUISWandSelector selector)
    {
        this.selector = selector;

		// "Reset" filtered velocity by temporarily using position noise covariance of 10
		updateVelocity(10, Time.deltaTime);

        positionAtSelection = transform.position;
        rotationAtSelection = transform.rotation;
        selectorPositionAtSelection = selector.transform.position;
        selectorRotationAtSelection = selector.transform.rotation;
		if(snapToRay)
			rayEndToPositionAtSelection = Vector3.zero;
		else
			rayEndToPositionAtSelection = transform.position - selector.selectionRayEnd;
		distanceFromSelectionRayOrigin = (selector.selectionRayEnd - selector.selectionRay.origin).magnitude;

        lastPosition = transform.position;

        if (GetComponent<Rigidbody>())
        {
			if(continuousCollisionDetectionWhenSelected)
			{
				switchToContinuousCollisionMode = true;
			}
            rigidbodyWasKinematic = GetComponent<Rigidbody>().isKinematic;
            GetComponent<Rigidbody>().isKinematic = true;
        }

        if (selectionMaterial != null)
            AddMaterialToEverything(selectionMaterial);

        UpdateTransform(false);
    }
Ejemplo n.º 20
0
    public virtual void OnSelection(RUISWandSelector selector)
    {
        this.selector = selector;

        positionAtSelection = transform.position;
        rotationAtSelection = transform.rotation;
        selectorPositionAtSelection = selector.transform.position;
        selectorRotationAtSelection = selector.transform.rotation;
        distanceFromSelectionRayOrigin = (positionAtSelection - selector.selectionRay.origin).magnitude;

        lastPosition = transform.position;

        if (rigidbody)
        {
            if(continuousCollisionDetectionWhenSelected)
            {
                switchToContinuousCollisionMode = true;
            }
            rigidbodyWasKinematic = rigidbody.isKinematic;
            rigidbody.isKinematic = true;
        }

        if (selectionMaterial != null)
            AddMaterialToEverything(selectionMaterial);

        UpdateTransform(false);
    }