private void SetupFragment() { Transform transform = base.get_transform(); if (this._fragments.get_Count() != transform.get_childCount()) { this._fragments.set_Capacity(transform.get_childCount()); for (int i = 0; i < transform.get_childCount(); i++) { ExplodeChild.Fragment fragment = default(ExplodeChild.Fragment); fragment.transform = transform.GetChild(i); this._fragments.Add(fragment); } } for (int j = 0; j < this._fragments.get_Count(); j++) { ExplodeChild.Fragment fragment2 = this._fragments.get_Item(j); fragment2.initialPosition = fragment2.transform.get_localPosition(); fragment2.initialRotation = fragment2.transform.get_localRotation(); Vector3 vector = Quaternion.AngleAxis(Random.Range(-this._explodeDirectionRandomize, this._explodeDirectionRandomize), Random.get_onUnitSphere()) * fragment2.initialPosition.get_normalized(); if (vector.y < 0f) { vector.y *= -1f; } vector.y *= this._upPowerPlus; fragment2.velocity = vector * this._explodePower * Random.Range(0.5f, 1.5f); fragment2.angularVelocity = Quaternion.AngleAxis(Random.Range(90f, 180f), Random.get_onUnitSphere()); this._fragments.set_Item(j, fragment2); } }
public void ResetFragment() { for (int i = 0; i < this._fragments.get_Count(); i++) { ExplodeChild.Fragment fragment = this._fragments.get_Item(i); fragment.transform.set_localPosition(fragment.initialPosition); fragment.transform.set_localRotation(fragment.initialRotation); } }
public bool LateRun() { if (!this._isAnimating) { return(false); } for (int i = 0; i < this._fragments.get_Count(); i++) { ExplodeChild.Fragment fragment = this._fragments.get_Item(i); Transform transform = fragment.transform; Vector3 vector = transform.get_transform().get_localPosition(); Quaternion quaternion = this._fragments.get_Item(i).transform.get_localRotation(); vector += this._fragments.get_Item(i).velocity *Time.get_deltaTime(); quaternion *= Quaternion.Slerp(Quaternion.get_identity(), this._fragments.get_Item(i).angularVelocity, Time.get_deltaTime() * this._anglarSpeed); transform.set_localPosition(vector); transform.set_localRotation(quaternion); fragment.velocity += Vector3.get_down() * this._gravity * Time.get_deltaTime(); this._fragments.set_Item(i, fragment); } return(true); }