public ExploderParams(ExploderObject exploder) { Position = ExploderUtils.GetCentroid(exploder.gameObject); DontUseTag = exploder.DontUseTag; Radius = exploder.Radius; UseCubeRadius = exploder.UseCubeRadius; CubeRadius = exploder.CubeRadius; ForceVector = exploder.ForceVector; UseForceVector = exploder.UseForceVector; Force = exploder.Force; FrameBudget = exploder.FrameBudget; TargetFragments = exploder.TargetFragments; ExplodeSelf = exploder.ExplodeSelf; HideSelf = exploder.HideSelf; ThreadOptions = exploder.ThreadOption; DestroyOriginalObject = exploder.DestroyOriginalObject; SplitMeshIslands = exploder.SplitMeshIslands; FragmentOptions = exploder.FragmentOptions.Clone(); FragmentDeactivation = exploder.FragmentDeactivation.Clone(); FragmentSFX = exploder.FragmentSFX.Clone(); Use2DCollision = exploder.Use2DCollision; FragmentPoolSize = exploder.FragmentPoolSize; DisableRadiusScan = exploder.DisableRadiusScan; UniformFragmentDistribution = exploder.UniformFragmentDistribution; DisableTriangulation = exploder.DisableTriangulation; ExploderGameObject = exploder.gameObject; CuttingStyle = exploder.CuttingStyle; }
public ExploderParams(ExploderObject exploder) { this.Position = ExploderUtils.GetCentroid(((Component)exploder).get_gameObject()); this.DontUseTag = exploder.DontUseTag; this.Radius = exploder.Radius; this.UseCubeRadius = exploder.UseCubeRadius; this.CubeRadius = exploder.CubeRadius; this.ForceVector = exploder.ForceVector; this.UseForceVector = exploder.UseForceVector; this.Force = exploder.Force; this.FrameBudget = exploder.FrameBudget; this.TargetFragments = exploder.TargetFragments; this.ExplodeSelf = exploder.ExplodeSelf; this.HideSelf = exploder.HideSelf; this.ThreadOptions = exploder.ThreadOption; this.DestroyOriginalObject = exploder.DestroyOriginalObject; this.SplitMeshIslands = exploder.SplitMeshIslands; this.FragmentOptions = exploder.FragmentOptions.Clone(); this.FragmentDeactivation = exploder.FragmentDeactivation.Clone(); this.FragmentSFX = exploder.FragmentSFX.Clone(); this.Use2DCollision = exploder.Use2DCollision; this.FragmentPoolSize = exploder.FragmentPoolSize; this.DisableRadiusScan = exploder.DisableRadiusScan; this.UniformFragmentDistribution = exploder.UniformFragmentDistribution; this.DisableTriangulation = exploder.DisableTriangulation; this.ExploderGameObject = ((Component)exploder).get_gameObject(); this.CuttingStyle = exploder.CuttingStyle; }
/// <summary> /// set options for fragment rigid bodies and layer /// </summary> public void SetFragmentPhysicsOptions(FragmentOption options, bool physics2d) { if (pool != null) { var constrains = RigidbodyConstraints.None; if (options.FreezePositionX) { constrains |= RigidbodyConstraints.FreezePositionX; } if (options.FreezePositionY) { constrains |= RigidbodyConstraints.FreezePositionY; } if (options.FreezePositionZ) { constrains |= RigidbodyConstraints.FreezePositionZ; } if (options.FreezeRotationX) { constrains |= RigidbodyConstraints.FreezeRotationX; } if (options.FreezeRotationY) { constrains |= RigidbodyConstraints.FreezeRotationY; } if (options.FreezeRotationZ) { constrains |= RigidbodyConstraints.FreezeRotationZ; } foreach (var fragment in pool) { if (fragment.gameObject) { fragment.gameObject.layer = LayerMask.NameToLayer(options.Layer); } fragment.SetConstraints(constrains); fragment.DisableColliders(options.DisableColliders, meshColliders, physics2d); } } }
public void SetFragmentPhysicsOptions(FragmentOption options, bool physics2d) { if (this.pool == null) { return; } RigidbodyConstraints constraints = (RigidbodyConstraints)0; if (options.FreezePositionX) { constraints = (RigidbodyConstraints)(constraints | 2); } if (options.FreezePositionY) { constraints = (RigidbodyConstraints)(constraints | 4); } if (options.FreezePositionZ) { constraints = (RigidbodyConstraints)(constraints | 8); } if (options.FreezeRotationX) { constraints = (RigidbodyConstraints)(constraints | 16); } if (options.FreezeRotationY) { constraints = (RigidbodyConstraints)(constraints | 32); } if (options.FreezeRotationZ) { constraints = (RigidbodyConstraints)(constraints | 64); } foreach (Fragment fragment in this.pool) { if (Object.op_Implicit((Object)((Component)fragment).get_gameObject())) { ((Component)fragment).get_gameObject().set_layer(LayerMask.NameToLayer(options.Layer)); } fragment.SetConstraints(constraints); fragment.DisableColliders(options.DisableColliders, this.meshColliders, physics2d); } }