/// <summary> /// Creates the shape of the wings at the rear section of the skeleton /// </summary> /// <param name="param">Parameter.</param> /// <param name="parent">Parent.</param> static void RecursiveCreateWings(ParallelSpaceshipParameters param, SkeletonNode parent, int leftWings) { var nWings = param.maxWings; while (nWings > 0 && leftWings > 0 && param.wingProbability >= Random.value) { var scalefactor = Random.Range(1 - param.scalefactor, 1 + param.scalefactor); var distance = Random.Range(param.minDistance, param.maxDistance); var xRot = Random.Range(param.minXAngle, param.maxXAngle); var yRot = Random.Range(param.minYAngle, param.maxYAngle) + 90F; var zRot = 0F; // ! var position = parent.transform.position + (Quaternion.Euler(xRot, yRot, zRot) * parent.transform.forward * distance); parent.AddWing(SkeletonNode.Create(position, scalefactor, PartType.Engine)); nWings--; } foreach (var wing in parent.wingNodes) { RecursiveCreateWings(param, wing, leftWings - 1); } }