Example #1
0
        /// <summary>
        ///  Set the default values for a new LBGroupMember class instance
        /// </summary>
        private void SetClassDefaults()
        {
            isDisabled          = false;
            showInEditor        = true;
            showtabInEditor     = 0;
            showObjPathDesigner = false;

            // Assign a unique identifier
            GUID = System.Guid.NewGuid().ToString();

            // Placement rule variables
            isGroupOverride = false;
            minScale        = 1f;
            maxScale        = 1f;
            minHeight       = 0f;
            maxHeight       = 1f;
            minInclination  = 0f;
            maxInclination  = 90f;

            // Prefab varibles
            prefab                   = null;
            prefabName               = string.Empty;
            showPrefabPreview        = false;
            isKeepPrefabConnection   = false;
            isCombineMesh            = false;
            isRemoveEmptyGameObjects = true;
            isRemoveAnimator         = true;
            isCreateCollider         = false;
            maxPrefabSqrKm           = 10;
            maxPrefabPerGroup        = 10000;
            isPlacedInCentre         = false;

            showXYZSettings = false;

            // Prefab offset variables
            modelOffsetX     = 0f;
            modelOffsetZ     = 0f;
            minOffsetX       = 0f;
            minOffsetZ       = 0f;
            minOffsetY       = 0f;
            maxOffsetY       = 0f;
            randomiseOffsetY = false;

            // Rotation variables
            rotationType        = LBRotationType.WorldSpace;
            randomiseRotationY  = true;
            startRotationY      = 0f;
            endRotationY        = 359.9f;
            randomiseRotationXZ = false;
            rotationX           = 0f;
            rotationZ           = 0f;
            endRotationX        = 0f;
            endRotationZ        = 0f;
            isLockTilt          = false;

            // Noise variables
            useNoise      = false;
            noiseTileSize = 500f;
            // Noise offset cannot be modified from the editor as it is randomly set when the terrain
            // is populated with groups
            noisePlacementCutoff = 0.65f;

            // Proximity variables
            proximityExtent            = 10f;
            isIgnoreProximityOfOthers  = false;
            isProximityIgnoredByOthers = false;
            removeGrassBlendDist       = 0.5f;
            minGrassProximity          = 0f;
            isRemoveTree     = true;
            minTreeProximity = 10f;

            // Terrain Alignment
            isTerrainAligned = false;

            // Prefab flatten terrain variables
            isTerrainFlattened  = false;
            flattenDistance     = 2f;
            flattenBlendRate    = 0.5f;
            flattenHeightOffset = 0f;

            // zones
            zoneGUIDList = new List <string>();

            // Zone edge fill
            isZoneEdgeFillTop    = false;
            isZoneEdgeFillBottom = false;
            isZoneEdgeFillLeft   = false;
            isZoneEdgeFillRight  = false;
            zoneEdgeFillDistance = 1f;

            // Object Paths
            lbMemberType        = LBMemberType.Prefab;
            lbObjPath           = null;
            isPathOnly          = false;
            lbObjectOrientation = LBObjPath.LBObjectOrientation.PathSpace;
            usePathHeight       = false;
            usePathSlope        = false;
            useTerrainTrend     = false;
        }
Example #2
0
        // Clone constructor
        public LBGroupMember(LBGroupMember lbGroupMember)
        {
            if (lbGroupMember == null)
            {
                SetClassDefaults();
            }
            else
            {
                isDisabled          = lbGroupMember.isDisabled;
                showInEditor        = lbGroupMember.showInEditor;
                showtabInEditor     = lbGroupMember.showtabInEditor;
                showObjPathDesigner = lbGroupMember.showObjPathDesigner;

                GUID = lbGroupMember.GUID;

                // Placement rule variables
                isGroupOverride = lbGroupMember.isGroupOverride;
                minScale        = lbGroupMember.minScale;
                maxScale        = lbGroupMember.maxScale;
                minHeight       = lbGroupMember.minHeight;
                maxHeight       = lbGroupMember.maxHeight;
                minInclination  = lbGroupMember.minInclination;
                maxInclination  = lbGroupMember.maxInclination;

                // Prefab varibles
                prefab                   = lbGroupMember.prefab;
                prefabName               = lbGroupMember.prefabName;
                showPrefabPreview        = lbGroupMember.showPrefabPreview;
                isKeepPrefabConnection   = lbGroupMember.isKeepPrefabConnection;
                isCombineMesh            = lbGroupMember.isCombineMesh;
                isRemoveEmptyGameObjects = lbGroupMember.isRemoveEmptyGameObjects;
                isRemoveAnimator         = lbGroupMember.isRemoveAnimator;
                isCreateCollider         = lbGroupMember.isCreateCollider;
                maxPrefabSqrKm           = lbGroupMember.maxPrefabSqrKm;
                maxPrefabPerGroup        = lbGroupMember.maxPrefabPerGroup;
                isPlacedInCentre         = lbGroupMember.isPlacedInCentre;

                showXYZSettings = lbGroupMember.showXYZSettings;

                // Prefab offset variables
                modelOffsetX     = lbGroupMember.modelOffsetX;
                modelOffsetY     = lbGroupMember.modelOffsetY;
                modelOffsetZ     = lbGroupMember.modelOffsetZ;
                minOffsetX       = lbGroupMember.minOffsetX;
                minOffsetZ       = lbGroupMember.minOffsetZ;
                minOffsetY       = lbGroupMember.minOffsetY;
                maxOffsetY       = lbGroupMember.maxOffsetY;
                randomiseOffsetY = lbGroupMember.randomiseOffsetY;

                // Prefab rotation variables
                rotationType = lbGroupMember.rotationType;
                // This was prior to LB 2.1.0 Beta 4w a workaround for a, now unknown, issue with templates.
                // Not sure what the original problem was and why we needed to default randomiseRotationY to true.
                // Now that we do a deep copy (ConvertAll) in LBGroup(LBGroup lbGroup) it no longer works.
                //randomiseRotationY = true;
                randomiseRotationY  = lbGroupMember.randomiseRotationY;
                startRotationY      = lbGroupMember.startRotationY;
                endRotationY        = lbGroupMember.endRotationY;
                randomiseRotationXZ = lbGroupMember.randomiseRotationXZ;
                rotationX           = lbGroupMember.rotationX;
                rotationZ           = lbGroupMember.rotationZ;
                endRotationX        = lbGroupMember.endRotationX;
                endRotationZ        = lbGroupMember.endRotationZ;
                isLockTilt          = lbGroupMember.isLockTilt;

                // Noise variables
                useNoise             = lbGroupMember.useNoise;
                noiseOffset          = lbGroupMember.noiseOffset;
                noiseTileSize        = lbGroupMember.noiseTileSize;
                noisePlacementCutoff = lbGroupMember.noisePlacementCutoff;

                // Proximity variables
                proximityExtent            = lbGroupMember.proximityExtent;
                isIgnoreProximityOfOthers  = lbGroupMember.isIgnoreProximityOfOthers;
                isProximityIgnoredByOthers = lbGroupMember.isProximityIgnoredByOthers;
                removeGrassBlendDist       = lbGroupMember.removeGrassBlendDist;
                minGrassProximity          = lbGroupMember.minGrassProximity;
                isRemoveTree     = lbGroupMember.isRemoveTree;
                minTreeProximity = lbGroupMember.minTreeProximity;

                // Terrain Alignment
                isTerrainAligned = lbGroupMember.isTerrainAligned;

                // Prefab flatten terrain variables
                isTerrainFlattened  = lbGroupMember.isTerrainFlattened;
                flattenDistance     = lbGroupMember.flattenDistance;
                flattenHeightOffset = lbGroupMember.flattenHeightOffset;
                flattenBlendRate    = lbGroupMember.flattenBlendRate;

                // Zones
                if (lbGroupMember.zoneGUIDList == null)
                {
                    zoneGUIDList = new List <string>();
                }
                else
                {
                    zoneGUIDList = new List <string>(lbGroupMember.zoneGUIDList);
                }

                // Zone edge fill
                isZoneEdgeFillTop    = lbGroupMember.isZoneEdgeFillTop;
                isZoneEdgeFillBottom = lbGroupMember.isZoneEdgeFillBottom;
                isZoneEdgeFillLeft   = lbGroupMember.isZoneEdgeFillLeft;
                isZoneEdgeFillRight  = lbGroupMember.isZoneEdgeFillRight;
                zoneEdgeFillDistance = lbGroupMember.zoneEdgeFillDistance;

                // Object Paths
                lbMemberType = lbGroupMember.lbMemberType;

                if (lbGroupMember.lbObjPath == null)
                {
                    lbObjPath = null;
                }
                else
                {
                    lbObjPath = new LBObjPath(lbGroupMember.lbObjPath);
                }

                isPathOnly          = lbGroupMember.isPathOnly;
                lbObjectOrientation = lbGroupMember.lbObjectOrientation;
                usePathHeight       = lbGroupMember.usePathHeight;
                usePathSlope        = lbGroupMember.usePathSlope;
                useTerrainTrend     = lbGroupMember.useTerrainTrend;
            }
        }