/// <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; }
// 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; } }