// Clone constructor
 public LBObjSubGroup(LBObjSubGroup lbObjSubGroup)
 {
     if (lbObjSubGroup == null)
     {
         SetClassDefaults();
     }
     else
     {
         subGroupGUID = lbObjSubGroup.subGroupGUID;
     }
 }
        private void SetClassDefaults()
        {
            // Assign a unique identifier
            seriesGUID = System.Guid.NewGuid().ToString();
            seriesName = "(new) series";

            // By default, place prefabs along the path
            useSubGroups = false;

            // Prefab varibles
            mainObjPrefabList = new List <LBObjPrefab>();
            startObjPrefab    = new LBObjPrefab();
            endObjPrefab      = new LBObjPrefab();

            // SubGroup variables
            mainObjSubGroupList = new List <LBObjSubGroup>();
            startObjSubGroup    = new LBObjSubGroup();
            endObjSubGroup      = new LBObjSubGroup();

            startMemberOffset = 0f;
            endMemberOffset   = 0f;

            layoutMethod          = LBObjPath.LayoutMethod.Spacing;
            selectionMethod       = LBObjPath.SelectionMethod.Alternating;
            isLastObjSnappedToEnd = true;
            spacingDistance       = 10f;
            maxMainPrefabs        = 5;
            sparcePlacementCutoff = 1f;
            pathSpline            = LBObjPath.PathSpline.Centre;
            prefabOffsetZ         = 0f;
            use3DDistance         = false;
            useNonOffsetDistance  = false;
            prefabStartOffset     = 0f;
            prefabEndOffset       = 0f;

            // Off by default for backward compatibility
            isRandomisePerGroupRegion = false;

            showInEditor = true;
        }
        // Clone constructor
        public LBObjPathSeries(LBObjPathSeries lbObjPathSeries)
        {
            if (lbObjPathSeries == null)
            {
                SetClassDefaults();
            }
            else
            {
                seriesGUID = lbObjPathSeries.seriesGUID;
                seriesName = lbObjPathSeries.seriesName;

                useSubGroups = lbObjPathSeries.useSubGroups;

                // Prefab varibles
                if (lbObjPathSeries.mainObjPrefabList != null)
                {
                    mainObjPrefabList = lbObjPathSeries.mainObjPrefabList.ConvertAll(mp => new LBObjPrefab(mp));
                }
                else
                {
                    mainObjPrefabList = new List <LBObjPrefab>();
                }
                if (lbObjPathSeries.startObjPrefab != null)
                {
                    startObjPrefab = new LBObjPrefab(lbObjPathSeries.startObjPrefab);
                }
                else
                {
                    startObjPrefab = null;
                }
                if (lbObjPathSeries.endObjPrefab != null)
                {
                    endObjPrefab = new LBObjPrefab(lbObjPathSeries.endObjPrefab);
                }
                else
                {
                    endObjPrefab = null;
                }

                // SubGroup variables
                if (lbObjPathSeries.mainObjSubGroupList != null)
                {
                    mainObjSubGroupList = lbObjPathSeries.mainObjSubGroupList.ConvertAll(msg => new LBObjSubGroup(msg));
                }
                else
                {
                    mainObjSubGroupList = new List <LBObjSubGroup>();
                }
                if (lbObjPathSeries.startObjSubGroup != null)
                {
                    startObjSubGroup = new LBObjSubGroup(lbObjPathSeries.startObjSubGroup);
                }
                else
                {
                    startObjSubGroup = null;
                }
                if (lbObjPathSeries.endObjSubGroup != null)
                {
                    endObjSubGroup = new LBObjSubGroup(lbObjPathSeries.endObjSubGroup);
                }
                else
                {
                    endObjSubGroup = null;
                }

                startMemberOffset = lbObjPathSeries.startMemberOffset;
                endMemberOffset   = lbObjPathSeries.endMemberOffset;

                layoutMethod              = lbObjPathSeries.layoutMethod;
                selectionMethod           = lbObjPathSeries.selectionMethod;
                spacingDistance           = lbObjPathSeries.spacingDistance;
                maxMainPrefabs            = lbObjPathSeries.maxMainPrefabs;
                isLastObjSnappedToEnd     = lbObjPathSeries.isLastObjSnappedToEnd;
                sparcePlacementCutoff     = lbObjPathSeries.sparcePlacementCutoff;
                pathSpline                = lbObjPathSeries.pathSpline;
                prefabOffsetZ             = lbObjPathSeries.prefabOffsetZ;
                prefabStartOffset         = lbObjPathSeries.prefabStartOffset;
                prefabEndOffset           = lbObjPathSeries.prefabEndOffset;
                use3DDistance             = lbObjPathSeries.use3DDistance;
                useNonOffsetDistance      = lbObjPathSeries.useNonOffsetDistance;
                isRandomisePerGroupRegion = lbObjPathSeries.isRandomisePerGroupRegion;
                showInEditor              = lbObjPathSeries.showInEditor;
            }
        }