コード例 #1
0
        private static void GenerateItemTiled(GameObject prefab, RoofGenerationSettings settings)
        {
            var countX = CalculateTiledCount(settings.itemLength, settings.targetLength);

            if (countX < 1)
            {
                countX = 1;
            }

            var countZ = CalculateTiledCount(settings.itemDepth, settings.targetDepth);

            if (countZ < 1)
            {
                countZ = 1;
            }

            var totalLength = countX * settings.itemLength;
            var totalDepth  = countZ * settings.itemDepth;

            var scaleX = settings.targetLength / totalLength;
            var scaleZ = settings.targetDepth / totalDepth;

            var deltaX = settings.targetLength / countX;
            var deltaZ = settings.targetDepth / countZ;

            for (int z = 0; z < countZ; z++)
            {
                for (int x = 0; x < countX; x++)
                {
                    var gameObject = Utils.Instantiate(prefab);
                    if (gameObject == null)
                    {
                        continue;
                    }

                    var transform = gameObject.transform;
                    transform.parent = settings.parent;

                    transform.position = settings.pivot
                                         + settings.right * deltaX * x
                                         + settings.forward * deltaZ * z
                    ;

                    transform.eulerAngles =
                        Quaternion.LookRotation(settings.forward, settings.up).eulerAngles;

                    transform.localScale = new Vector3(
                        scaleX,
                        1,
                        scaleZ
                        );
                }
            }
        }
コード例 #2
0
        /// ======================================================================

        private static RoofGenerationSettings CreateSettings(RoofParameters parameters, BoxDraft draft)
        {
            var result = RoofGenerationSettings.Create();

            result.itemLength = parameters.length;
            result.itemDepth  = parameters.depth;

            result.targetLength = draft.length;
            result.targetDepth  = draft.depth;

            result.parent = draft.parent;
            result.pivot  = draft.pivot;

            result.up      = draft.up;
            result.right   = draft.right;
            result.forward = draft.forward;

            return(result);
        }
コード例 #3
0
        private static void GenerateItemScale(GameObject prefab, RoofGenerationSettings settings)
        {
            var scaleX = settings.targetLength / settings.itemLength;
            var scaleZ = settings.targetDepth / settings.itemDepth;

            var gameObject = Utils.Instantiate(prefab);

            if (gameObject == null)
            {
                return;
            }

            var transform = gameObject.transform;

            transform.parent = settings.parent;

            transform.position    = settings.pivot;
            transform.eulerAngles = Quaternion.LookRotation(settings.forward, settings.up).eulerAngles;
            transform.localScale  = new Vector3(scaleX, 1, scaleZ);
        }