Example #1
0
        /// <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);
            }
        }