public RandomTranslation Clone() { RandomTranslation clone = new RandomTranslation(); clone.transform = transform; clone.axis = axis; clone.uniform = uniform; clone.min = min; clone.max = max; return(clone); }
static public RandomTranslation[] CloneArray(RandomTranslation[] sources) { int len = sources.Length; RandomTranslation[] clones = new RandomTranslation[len]; for (int i = 0; i < len; i++) { clones[i] = sources[i].Clone(); } return(clones); }
private void RandomizeTranslation() { int len = translations.Length; for (int i = 0; i < len; i++) { RandomTranslation translationRandomization = translations[i]; if (defaultToBaseTransform) { translationRandomization.transform = defaultTransform; } if (translationRandomization.transform != null) { Vector3 translation = new Vector3(); float translationValue = Random.Range(translationRandomization.min, translationRandomization.max); Axis axis = translationRandomization.axis; // x if (axis == Axis.X || axis == Axis.XZ || axis == Axis.XYZ) { translation.x += translationValue; } // y if (!translationRandomization.uniform) { translationValue = Random.Range(translationRandomization.min, translationRandomization.max); } if (axis == Axis.Y || axis == Axis.YZ || axis == Axis.XYZ) { translation.y += translationValue; } // z if (!translationRandomization.uniform) { translationValue = Random.Range(translationRandomization.min, translationRandomization.max); } if (axis == Axis.Z || axis == Axis.XZ || axis == Axis.XYZ) { translation.z += translationValue; } Rigidbody rigidBody = translationRandomization.transform.gameObject.GetComponent <Rigidbody>(); if (rigidBody != null) { if (rigidBody.isKinematic) { // the object needs to be non-kinematic such that it can be pushed out of place if overlapping with another object // however, it needs to only be non-kinematic for atleast one frame so Unity's physics code runs and moves the object rigidBody.isKinematic = false; StartCoroutine(ReapplyKinematicRigidbody(rigidBody)); } translationRandomization.transform.Translate(translation); } else { translationRandomization.transform.position = translationRandomization.transform.position + translation; } } } }