public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            m_triggerPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(AssetDatabase.FindAssets("Trigger t:prefab")[0]), typeof(GameObject));

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Other Header",               new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Others"))),
                new EUISectionContent("Create Trigger Button",      new GUIContent(EUIResourceManager.Instance.GetTexture("Create_Trigger"),              "Creates a trigger volume with a blockout trigger script")),
                new EUISectionContent("All Trigger On Button",      new GUIContent(EUIResourceManager.Instance.GetTexture("Toggle_All_Triggers_On"),      "Toggles the visibility of all blockout triggers in game. (Still visible when the game is not running)")),
                new EUISectionContent("All Trigger Off Button",     new GUIContent(EUIResourceManager.Instance.GetTexture("Toggle_All_Triggers_Off"),     "Toggles the visibility of all blockout triggers in game. (Still visible when the game is not running)")),
                new EUISectionContent("Selectd Trigger On Button",  new GUIContent(EUIResourceManager.Instance.GetTexture("Toggle_Selected_Triggers_On"), "Toggles the visibility of selected blockout triggers in game. (Still visible when the game is not running)")),
                new EUISectionContent("Selectd Trigger Off Button", new GUIContent(EUIResourceManager.Instance.GetTexture("Toggle_Selected_Triggers_Off"),"Toggles the visibility of selected blockout triggers in game. (Still visible when the game is not running)")),
                new EUISectionContent("Particle On Button",         new GUIContent(EUIResourceManager.Instance.GetTexture("Toggle_All_Particles_On"),     "Toggles the play state of all particle systems in the editor if a particle system in selected")),
                new EUISectionContent("Particle Off Button",        new GUIContent(EUIResourceManager.Instance.GetTexture("Toggle_All_Particles_Off"),    "Toggles the play state of all particle systems in the editor if a particle system in selected")),
                new EUISectionContent("Export All Button",          new GUIContent(EUIResourceManager.Instance.GetTexture("Button_Export"),               "Exports the entire hierarchy as a single Wavefront Obj file")),
                new EUISectionContent("Export Selected Button",     new GUIContent(EUIResourceManager.Instance.GetTexture("Button_Export_Selected"),      "Exports the selected items as a single Wavefront Obj file")),
                new EUISectionContent("Object Count Label",         new GUIContent("Objects in scene",                                                    "If there are objects selected thoes will be counted, otherwise the amount of gameobjects in the scene will be counted.")),
                new EUISectionContent("Create Ruler Button",        new GUIContent("Create Ruler",                                                        "Creates a ruler to mesure beteween 2 points")),
                new EUISectionContent("Ruler 1st Marker Button",    new GUIContent("Place 1st Marker",                                                    "Click in the scene to place the first ruler marker")),
                new EUISectionContent("Ruler 2nd Marker Button",    new GUIContent("Place 2st Marker",                                                    "Click in the scene to place the seccond ruler marker"))
            };

            rulerPrefab = Resources.LoadAll <GameObject>("Blockout/Ruler").OrderBy(x => x.name).ToList()[0];

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);
        }
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            currentSize = BlockoutEditorSettings.SixColumnWidth;

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Suggested Header",        new GUIContent(EUIResourceManager.Instance.GetTexture("Suggestions"),      "")),
                new EUISectionContent("Suggested Assets Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Suggested_Assets"), "")),
                new EUISectionContent("Favourite Assets Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Scene_Favourites"), ""))
            };

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);

            database = Resources.Load <BlockoutDatabase>("Blockout/BlockoutSuggestionDatabase");

            if (!database)
            {
                var cd = ScriptableObject.CreateInstance <BlockoutDatabase>();
                cd.Database = new BlockoutItemPreview[0];
                Directory.CreateDirectory("Assets/Blockout/Editor/Resources/Blockout/SceneDefinitions");
                AssetDatabase.CreateAsset(cd,
                                          "Assets/Blockout/Editor/Resources/Blockout/BlockoutSuggestionDatabase.asset");
                database = Resources.Load <BlockoutDatabase>("Blockout/BlockoutSuggestionDatabase");
            }

            if (database.Database.Length == 0)
            {
                PreloadAssetData();
            }

            SceneView.onSceneGUIDelegate += OnScene;
        }
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);


            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Scalable Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Scalable_Object"), "")),

                new EUISectionContent("Scalable Wall",   new GUIContent("Create Scalable" + Environment.NewLine + "Wall Block",         "Creats a scalable wall base")),
                new EUISectionContent("Scalable Floor",  new GUIContent("Create Scalable" + Environment.NewLine + "Floor Block",        "Creats a scalable floor base")),
                new EUISectionContent("Scalable Trim",   new GUIContent("Create Scalable" + Environment.NewLine + "Trim Block",         "Creats a scalable trim base")),
            };

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);

            m_scalableWallPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
                AssetDatabase.GUIDToAssetPath(AssetDatabase.FindAssets("Tri_Wall t:prefab")[0]),
                typeof(GameObject));

            m_scalableFloorPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
                AssetDatabase.GUIDToAssetPath(AssetDatabase.FindAssets("Tri_Floor t:prefab")[0]),
                typeof(GameObject));

            m_scalableTrimPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
                AssetDatabase.GUIDToAssetPath(AssetDatabase.FindAssets("Tri_Trim t:prefab")[0]),
                typeof(GameObject));
        }
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Blockout Logo",                                                                      new GUIContent(EUIResourceManager.Instance.GetTexture("Blockout_Logo"),                 "")),
                new EUISectionContent("Create Hierarchy",                                                                   new GUIContent(EUIResourceManager.Instance.GetTexture("AUTO_GENERATE_SCENE_HIERARCHY"), "Creates a scene hierarchy for the blockout editor to use.")),
                new EUISectionContent("Intro Label",                                                                        new GUIContent("First off, thank you for purchasing Blockout! While you probably" +
                                                                                                                                           Environment.NewLine +
                                                                                                                                           "should read at least the Quick Start section in the documentation, " +
                                                                                                                                           Environment.NewLine +
                                                                                                                                           "you probably want to dive right in and that’s fine (that’s exactly" +
                                                                                                                                           Environment.NewLine +
                                                                                                                                           "what we would do). There should be tooltips around each section " +
                                                                                                                                           Environment.NewLine +
                                                                                                                                           "of the Blockout window to help clarify its function." + Environment.NewLine +
                                                                                                                                           Environment.NewLine +
                                                                                                                                           "Note: this tool supports multi-scene editing. ",       "")),

                new EUISectionContent("Example Scenes",                                                                     new GUIContent(EUIResourceManager.Instance.GetTexture("Blockout_Example Scenes"))),
                new EUISectionContent("All Assets",                                                                         new GUIContent(EUIResourceManager.Instance.GetTexture("ALL_ASSETS"),                    "Opens the all assets scene")),
                new EUISectionContent("FPS Scene",                                                                          new GUIContent(EUIResourceManager.Instance.GetTexture("FPS_Button"),                    "Opens the FPS example scene")),
                new EUISectionContent("Rollerball Scene",                                                                   new GUIContent(EUIResourceManager.Instance.GetTexture("Rollerball_Button"),             "Opens the rollerball example scene")),
                new EUISectionContent("Open Documentation",                                                                 new GUIContent(EUIResourceManager.Instance.GetTexture("Button_Documentation"),          "Opens the online documentation in the default web browser")),
                new EUISectionContent("Open Tutorials",                                                                     new GUIContent(EUIResourceManager.Instance.GetTexture("Button_Tutorials"),              "Opens the online tutorials (YouTube playlist) in the default web browser")),
                new EUISectionContent("Feedback",                                                                           new GUIContent(EUIResourceManager.Instance.GetTexture("Feedback_Bug"),                  "Opens your default email client to send us an email")),
                new EUISectionContent("Radical Forge Logo",                                                                 new GUIContent(EUIResourceManager.Instance.GetTexture("RadicalForgeLogoLong")))
            };



            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);
        }
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Camera Anchor Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Camera_Anchors"),      "")),

                new EUISectionContent("Save Camera",          new GUIContent("Save Scene Camera Anchor",                                    "Save current scene view to a camera anchor")),
                new EUISectionContent("White Screenshot",     new GUIContent(EUIResourceManager.Instance.GetTexture("Screenshot"),          "Captures a screenshot with a white material setup using the current game anchor camera")),
                new EUISectionContent("Color Screenshot",     new GUIContent(EUIResourceManager.Instance.GetTexture("Screenshot_Coloured"), "Captures a screenshot of the current selected game anchor camera using the current theme")),
                new EUISectionContent("Game Vis On",          new GUIContent(EUIResourceManager.Instance.GetTexture("Game_Visibility_On"),  "Show camera in game view")),

                new EUISectionContent("Game Vis Off",         new GUIContent(EUIResourceManager.Instance.GetTexture("Game_Visibility"),     "Show camera in game view")),
                new EUISectionContent("Trash",                new GUIContent(EUIResourceManager.Instance.GetTexture("Trash_Can"),           "Delete the current camera anchor")),
                new EUISectionContent("Clear All Cameras",    new GUIContent("Clear All Cameras",                                           "Deletes all the camera canchors in a scene")),

                new EUISectionContent("Screenshot Header",    new GUIContent(EUIResourceManager.Instance.GetTexture("Screenshot_Settings"), "Deletes all the camera canchors in a scene")),
                new EUISectionContent("Resolution Scale",     new GUIContent("Resolution Scale",                                            "Scales the internal resolution of the screenshot")),
                new EUISectionContent("Screenshot Width",     new GUIContent("Width",                                                       "The width of the screenshot")),
                new EUISectionContent("Screenshot Height",    new GUIContent("Height",                                                      "The height of the screenshot"))
            };

            screenshotWhiteMaterial = Resources.Load <Material>("Blockout/Materials/ScreenshotWhite");

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);
        }
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Transform Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Transform_Controls"), "")),

                new EUISectionContent("Global Position",  new GUIContent("Center Global Position",                                     "Generates and applies a random color pallet")),
                new EUISectionContent("Local Position",   new GUIContent("Center Local Position",                                      "Applies the last generated random color pallet as the theme")),
                new EUISectionContent("Global Rotation",  new GUIContent("Reset Global Rotation",                                      "Shows the individual colors for the user pallet")),
                new EUISectionContent("Local Rotation",   new GUIContent("Reset Local Rotation",                                       "Lock this color choice from random generation?")),

                new EUISectionContent("X 90",             new GUIContent(EUIResourceManager.Instance.GetTexture("Button_x90"),         "Rotate a object clockwise 90 degrees along the X asis")),
                new EUISectionContent("X 180",            new GUIContent(EUIResourceManager.Instance.GetTexture("Button_x180"),        "Rotate a object clockwise 180 degrees along the X axis")),
                new EUISectionContent("Y 90",             new GUIContent(EUIResourceManager.Instance.GetTexture("Button_y90"),         "Rotate a object clockwise 90 degrees along the Y axis")),
                new EUISectionContent("Y 180",            new GUIContent(EUIResourceManager.Instance.GetTexture("Button_y180"),        "Rotate a object clockwise 180 degrees along the Y axis")),
                new EUISectionContent("Z 90",             new GUIContent(EUIResourceManager.Instance.GetTexture("Button_z90"),         "Rotate a object clockwise 90 degrees along the Z axis")),
                new EUISectionContent("Z 180",            new GUIContent(EUIResourceManager.Instance.GetTexture("Button_z180"),        "Rotate a object clockwise 180 degrees along the Z axis")),

                new EUISectionContent("Mirror X",         new GUIContent(EUIResourceManager.Instance.GetTexture("Mirror_x"),           "Mirror in the X Axis")),
                new EUISectionContent("Mirror Y",         new GUIContent(EUIResourceManager.Instance.GetTexture("Mirror_y"),           "Mirror in the Y Axis")),
                new EUISectionContent("Mirror Z",         new GUIContent(EUIResourceManager.Instance.GetTexture("Mirror_z"),           "Mirror in the Z Axis"))
            };

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);
        }
예제 #7
0
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);


            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Asset Header",            new GUIContent(EUIResourceManager.Instance.GetTexture("Blockout_Assets"),       "")),

                new EUISectionContent("Randomize Pallet",        new GUIContent("Randomize Pallet",                                              "Generates and applies a random color pallet")),
                new EUISectionContent("Apply Pallet",            new GUIContent("Apply User Pallet",                                             "Applies the last generated random color pallet as the theme")),
                new EUISectionContent("Edit Pallet",             new GUIContent("Edit User Pallet",                                              "Shows the individual colors for the user pallet")),
                new EUISectionContent("Lock Color Label",        new GUIContent("",                                                              "Lock this color choice from random generation?")),

                new EUISectionContent("Replace Asset",           new GUIContent("Replace Asset",                                                 "Replaces all selected assets with the requested asset to the left mating the original transforms of the selection")),
                new EUISectionContent("Select Asset",            new GUIContent("Select Asset",                                                  "Selects the object in the project window if it is a prefab")),

                new EUISectionContent("Block Quickjump",         new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Button_Blocks"),    "Jumps to the blocks folder in the blockout project folder")),
                new EUISectionContent("Walls Quickjump",         new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Button_Walls"),     "Jumps to the walls folder in the blockout project folder")),
                new EUISectionContent("Floors Quickjump",        new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Button_Floors"),    "Jumps to the floors folder in the blockout project folder")),
                new EUISectionContent("Dynamic Quickjump",       new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Button_Dynamic"),   "Jumps to the dynamic folder in the blockout project folder")),
                new EUISectionContent("Foliage Quickjump",       new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Button_Foliage"),   "Jumps to the foliage folder in the blockout project folder")),
                new EUISectionContent("Particles Quickjump",     new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Button_Particles"), "Jumps to the particles folder in the blockout project folder")),

                new EUISectionContent("Lock Asset",              new GUIContent("Toggle Locked",                                                 "Locks / Unlocks the selected assets")),
                new EUISectionContent("Toggle Locked Asset",     new GUIContent("Toggle Locked (All)",                                           "Locks / unlocks all assets")),
                new EUISectionContent("Toggle Lockd Visability", new GUIContent("Locked Visability",                                             "Hides / Shows the assets locked state"))
            };

            m_gridIconLabels = new[]
            {
                new GUIContent(EUIResourceManager.Instance.GridIcons[0], string.Format("Select texture {0:D} to be applied", 1)),
                new GUIContent(EUIResourceManager.Instance.GridIcons[1], string.Format("Select texture {0:D} to be applied", 2)),
                new GUIContent(EUIResourceManager.Instance.GridIcons[2], string.Format("Select texture {0:D} to be applied", 3)),
                new GUIContent(EUIResourceManager.Instance.GridIcons[3], string.Format("Select texture {0:D} to be applied", 4)),
                new GUIContent(EUIResourceManager.Instance.GridIcons[4], string.Format("Select texture {0:D} to be applied", 5)),
                new GUIContent(EUIResourceManager.Instance.GridIcons[5], string.Format("Select texture {0:D} to be applied", 6))
            };

            m_themeLabels = new[]
            {
                new GUIContent(EUIResourceManager.Instance.ThemeIcons[0], string.Format("Select theme {0:D} to be applied to the blockout hierarchy", 1)),
                new GUIContent(EUIResourceManager.Instance.ThemeIcons[1], string.Format("Select theme {0:D} to be applied to the blockout hierarchy", 2)),
                new GUIContent(EUIResourceManager.Instance.ThemeIcons[2], string.Format("Select theme {0:D} to be applied to the blockout hierarchy", 3)),
                new GUIContent(EUIResourceManager.Instance.ThemeIcons[3], string.Format("Select theme {0:D} to be applied to the blockout hierarchy", 4)),
                new GUIContent(EUIResourceManager.Instance.ThemeIcons[4], string.Format("Select theme {0:D} to be applied to the blockout hierarchy", 5)),
                new GUIContent(EUIResourceManager.Instance.ThemeIcons[5], string.Format("Select theme {0:D} to be applied to the blockout hierarchy", 6))
            };

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);
        }
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Hierarchy Header",   new GUIContent(EUIResourceManager.Instance.GetTexture("Heirachy_Tools"), "")),
                new EUISectionContent("Create Parent",      new GUIContent("Create Parent",                                          "Create a parent object and forces selected object to be children of the new parent")),
                new EUISectionContent("Hierarchy Selected", new GUIContent("Hierarchy Selected",                                     "Hierarchy selected GameObjects to the target parent")),
                new EUISectionContent("Parent Floor",       new GUIContent("Floors",                                                 "Reparent selected gameobjects to the 'Floor' obejct in the blockout hierarchy")),
                new EUISectionContent("Parent Walls",       new GUIContent("Walls",                                                  "Reparent selected gameobjects to the 'Walls' obejct in the blockout hierarchy")),
                new EUISectionContent("Parent Trim",        new GUIContent("Trim",                                                   "Reparent selected gameobjects to the 'Trim' obejct in the blockout hierarchy")),
                new EUISectionContent("Parent Dynamic",     new GUIContent("Dynamic",                                                "Reparent selected gameobjects to the 'Dynamic' obejct in the blockout hierarchy")),
                new EUISectionContent("Parent Foliage",     new GUIContent("Foliage",                                                "Reparent selected gameobjects to the 'Foliage' obejct in the blockout hierarchy")),
                new EUISectionContent("Parent Particles",   new GUIContent("Particles",                                              "Reparent selected gameobjects to the 'Particles' obejct in the blockout hierarchy")),
                new EUISectionContent("Create Prefab",      new GUIContent("Create Prefab",                                          "Creates a prefab for EACH SELECTED gameobject."))
            };

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);
        }
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Comments Header",     new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Comments"),      "")),
                new EUISectionContent("Comment Info Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Comment_Info"),       "")),

                new EUISectionContent("Show Scene Info",     new GUIContent("Show Scene Information",                                     "Enables the scene view UI for the comments system")),
                new EUISectionContent("Area Comment Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Area_Comments"),      "")),
                new EUISectionContent("Pin Comment Header",  new GUIContent(EUIResourceManager.Instance.GetTexture("Pin_Comments"),       "")),
                new EUISectionContent("Click In Scene",      new GUIContent(EUIResourceManager.Instance.GetTexture("Click_In_The_Scene"), "")),
                new EUISectionContent("Back Button",         new GUIContent(EUIResourceManager.Instance.GetTexture("Button_Back"),        "Cancels placing a pin comment"))
            };

            pinObjects = Resources.LoadAll <GameObject>("Blockout/Pins").OrderBy(x => x.name).ToArray();

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);
        }
예제 #10
0
        public override void InitSection(string sectionName, BlockoutHierarchy hierarchy)
        {
            base.InitSection(sectionName, hierarchy);

            EUISectionContent[] sectionContents =
            {
                new EUISectionContent("Grid Snapping Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Grid_Snapping"), "")),
                new EUISectionContent("Auto Snapping Header", new GUIContent(EUIResourceManager.Instance.GetTexture("Icon_Auto"),     "Automatically snap position and scale")),
                new EUISectionContent("Snapping Label",       new GUIContent("Snap Distance",                                         "")),
                new EUISectionContent("Snap +X",              new GUIContent("+X",                                                    "Snap Object To First Collider Positive X (RED) Axis in WORLD space")),
                new EUISectionContent("Snap -X",              new GUIContent("-X",                                                    "Snap Object To First Collider Negative X (RED) Axis in WORLD space")),
                new EUISectionContent("Snap +Y",              new GUIContent("+Y",                                                    "Snap Object To First Collider Positive Y (GREEN) Axis in WORLD space")),
                new EUISectionContent("Snap -Y",              new GUIContent("-Y",                                                    "Snap Object To First Collider Negative Y (GREEN) Axis in WORLD space")),
                new EUISectionContent("Snap +Z",              new GUIContent("+Z",                                                    "Snap Object To First Collider Positive Z (BLUE) Axis in WORLD space")),
                new EUISectionContent("Snap -Z",              new GUIContent("-Z",                                                    "Snap Object To First Collider Negative Z (BLUE) Axis in WORLD space"))
            };

            EUIResourceManager.Instance.RegisterGUIContent(sectionContents);

            snapValue = OptionValues[selectedSnapping];
            EditorPrefs.SetFloat("Blockout::Snap", snapValue);
        }
예제 #11
0
 public virtual void InitSection(string sectionName, BlockoutHierarchy hierarchy)
 {
     sectionTitleLabel = new GUIContent(sectionName);
     blockoutHierarchy = hierarchy;
 }
예제 #12
0
        void OnEnable()
        {
            hierarchy = new BlockoutHierarchy();
            BlockoutStaticFunctions.FindHeirachy(ref hierarchy);

            EUIResourceManager rm = EUIResourceManager.Instance;

            splashScreen = new BlockoutEditorSplashSection();
            splashScreen.InitSection("Splash Section", hierarchy);

            assetsSection = new BlockoutEditorAssetsSection();
            assetsSection.InitSection("Blockout Assets", hierarchy);

            scalableObjectsSection = new BlockoutEditorScalableObjectsSection();
            scalableObjectsSection.InitSection("Scalable Objects", hierarchy);

            transformSection = new BlockoutEditorTransformSection();
            transformSection.InitSection("Transform Controls", hierarchy);

            othersSection = new BlockoutEditorOthersSection();
            othersSection.InitSection("Others", hierarchy);

            cameraAnchorSection = new BlockoutEditorCameraAnchorSection();
            cameraAnchorSection.InitSection("Camera Anchors", hierarchy);

            gridSnapping = new BlockoutGridSnapping();
            gridSnapping.InitSection("Grid Snapping", hierarchy);

            hierarchyTools = new BlockoutEditorHierarchyToolsSection();
            hierarchyTools.InitSection("Hierarchy Tools", hierarchy);

            commentsSection = new BlockoutEditorCommentsSection();
            commentsSection.InitSection("Comments", hierarchy);

            suggestedSection = new BlockoutEditorSuggestedSection();
            suggestedSection.InitSection("Suggesstions", hierarchy);

            titleContent = new GUIContent("Blockout", EUIResourceManager.Instance.GetTexture(EditorGUIUtility.isProSkin ? "Blockout_Icon_Light" : "Blockout_Icon_Dark"));

            sections = new BlockoutEditorSection[]
            {
                assetsSection,
                scalableObjectsSection,
                transformSection,
                gridSnapping,
                hierarchyTools,
                commentsSection,
                suggestedSection,
                cameraAnchorSection,
                othersSection
            };

            BlockoutEditorSettings.CurrentSceneSetting = Resources.LoadAll <BlockoutSceneSettings>("")
                                                         .First(x => x.sceneName == SceneManager.GetActiveScene().name);
            isVisible = true;
            BlockoutEditorHelper.Awake(this);
            EditorHotkeysTracker.Init(this);

            BlockoutStaticFunctions.UpdateAvailable(out newVersion);
            splashScreen.newVersion = newVersion;
        }