/// ///////////////////////////////////////////////////////// /// Fragmentation types /// ///////////////////////////////////////////////////////// // Set Uniform static void SetVoronoi(RFShatter shatter, int numFragments, Transform tm, Vector3 centerPos, float centerBias) { // Get amount int amount = numFragments; if (amount < 1) { amount = 1; } if (amount > 20000) { amount = 2; } // Set properties shatter.SetFragmentParameter(RFShatter.FragmentParams.type, (int)RFShatter.FragmentType.voronoi); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_type, (int)RFShatter.VoronoiType.irregular); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_irr_num, amount); // Set bias to center if (centerBias > 0) { shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_irr_bias, centerBias); shatter.SetCenterParameter(centerPos, tm, Vector3.forward); } }
// Set Slabs static void SetSlabs(RFShatter shatter, RFSplinters slabs, Transform tm, Vector3 centerPos, float centerBias) { // Set properties shatter.SetFragmentParameter(RFShatter.FragmentParams.type, (int)RFShatter.FragmentType.voronoi); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_type, (int)RFShatter.VoronoiType.irregular); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_irr_num, slabs.Amount); // Set center shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_irr_bias, centerBias); shatter.SetCenterParameter(centerPos, tm, Vector3.forward); // Set Stretching for slabs SetStretching(shatter, slabs.axis, slabs.strength, FragType.Slabs); }
// Set Radial static void SetRadial(RFShatter shatter, RFRadial radial, Transform tm, Vector3 centerPos, Quaternion centerDirection) { // Set radial properties shatter.SetFragmentParameter(RFShatter.FragmentParams.type, (int)RFShatter.FragmentType.voronoi); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_type, (int)RFShatter.VoronoiType.radial); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_radius, radial.radius); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_divergence, radial.divergence); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_restrict, radial.restrictToPlane); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_rings_count, radial.rings); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_rings_focus, radial.focus); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_rings_strenght, radial.focusStr); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_rings_random, radial.randomRings); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_rays_count, radial.rays); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_rays_random, radial.randomRays); shatter.SetFragmentParameter(RFShatter.FragmentParams.voronoi_rad_rays_twist, radial.twist); // Get direction axis Vector3 directionAxis = DirectionAxis(radial.centerAxis); Vector3 centerRot = tm.rotation * centerDirection * directionAxis; shatter.SetCenterParameter(centerPos, tm, centerRot); }