protected void LoadCreationInfoObject()
        {
            if (creationInfoScriptableObject == null)
            {
                AssetCreationInfo foundCreationInfo = FindCreationInfoSubAsset();

                if (foundCreationInfo == null)
                {
                    foundCreationInfo           = (AssetCreationInfo)CreateInstance(GetCreationInfoType());
                    foundCreationInfo.hideFlags = HideFlags.HideInHierarchy;

                    AssetDatabase.AddObjectToAsset(foundCreationInfo, CreationInfoObjectContainer);
                    AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(CreationInfoObjectContainer));

                    creationInfoScriptableObject = foundCreationInfo;
                }
                else
                {
                    creationInfoScriptableObject = foundCreationInfo;
                }
            }

            if (!string.IsNullOrEmpty(creationInfoJson))
            {
                JsonUtility.FromJsonOverwrite(creationInfoJson, creationInfoScriptableObject);
            }

            if (creationInfoSerializedObject == null)
            {
                creationInfoSerializedObject = new SerializedObject(creationInfoScriptableObject);
                creationInfoEditor           = InitializeCreationInfoView(creationInfoSerializedObject);
            }
        }
 private void VerifyCreationInfoType()
 {
     if (creationInfoScriptableObject.GetType() != GetCreationInfoType())
     {
         GGS_FrameworkEditorUtility.ChangeScriptableObjectScriptType(creationInfoSerializedObject, GetCreationInfoType());
         creationInfoScriptableObject = (AssetCreationInfo)creationInfoSerializedObject.targetObject;
     }
 }
        private void DestroyPostRecompilingWindow()
        {
            AssetCreationInfo creationInfoSubAsset = FindCreationInfoSubAsset();

            if (creationInfoSubAsset != null)
            {
                AssetDatabase.RemoveObjectFromAsset(creationInfoSubAsset);
            }

            Close();
        }
        private AssetCreationInfo FindCreationInfoSubAsset()
        {
            Object[]          containerSubAssets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(CreationInfoObjectContainer));
            AssetCreationInfo foundCreationInfo  = null;

            if (containerSubAssets.Length != 0)
            {
                foundCreationInfo = containerSubAssets.FirstOrDefault(asset => asset.GetType().BaseType == typeof(AssetCreationInfo)) as AssetCreationInfo;
            }

            return(foundCreationInfo);
        }