示例#1
0
        /// <summary>
        /// Called when it starts to be grabbed.
        /// </summary>
        internal void OnGrabStart()
        {
            Collider cd = GetComponent <Collider>();

            if (cd != null)
            {
                cd.isTrigger = true;
            }
            Rigidbody rb = GetComponent <Rigidbody>();

            if (rb != null)
            {
                rb.useGravity      = false;
                rb.velocity        = Vector3.zero;
                rb.angularVelocity = Vector3.zero;
                rb.Sleep();
            }

            if (Grab.Instance.UseMaterialChange)
            {
                if (m_useOutlineMaterial)
                {
                    Renderer   renderer = GetComponent <Renderer>();
                    Material[] mats     = renderer.materials;
                    if (mats[1].HasProperty("_OutlineColor"))
                    {
                        mats[1].SetColor("_OutlineColor", m_grabbedOutlineColor);
                    }
                    renderer.materials = mats;
                }
                else if (m_grabbedMaterial != null)
                {
                    GetComponent <Renderer>().material = m_grabbedMaterial;
                }
            }

            foreach (GrabCollider gc in m_grabColliders)
            {
                gc.SetLock(true);
            }

            //Jiaju change
            FoamScaleTab tab = this.GetComponent <FoamScaleTab>();

            if (tab)
            {
                tab.OnGrabStart();
            }

            Modelable modelable = this.GetComponent <Modelable>();

            if (modelable)
            {
                modelable.OnGrabStart();
            }
        }
示例#2
0
        /// <summary>
        /// Called when it stops to be grabbed.
        /// </summary>
        internal void OnGrabStop(Vector3 releaseVelocity)
        {
            Collider cd = GetComponent <Collider>();

            if (cd != null)
            {
                cd.isTrigger = false;
            }
            Rigidbody rb = GetComponent <Rigidbody>();

            if (rb != null)
            {
                rb.useGravity      = true;
                rb.velocity        = Vector3.zero;
                rb.angularVelocity = Vector3.zero;
                rb.velocity        = releaseVelocity * m_throwPower;
            }

            // material back to selected
            if (Grab.Instance.UseMaterialChange)
            {
                if (m_useOutlineMaterial)
                {
                    Renderer   renderer = GetComponent <Renderer>();
                    Material[] mats     = renderer.materials;
                    if (mats[1].HasProperty("_OutlineColor"))
                    {
                        mats[1].SetColor("_OutlineColor", m_selectedOutlineColor);
                    }
                    renderer.materials = mats;
                }
                else if (m_selectedMaterial != null)
                {
                    GetComponent <Renderer>().materials = new Material[] { m_selectedMaterial };
                }
            }

            //Jiaju change
            FoamScaleTab tab = this.GetComponent <FoamScaleTab>();

            if (tab)
            {
                tab.OnGrabStop();
            }

            Modelable modelable = this.GetComponent <Modelable>();

            if (modelable)
            {
                modelable.OnGrabStop();
            }
        }