/// <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(); } }
/// <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(); } }