private void Create_SO(CodeFileBuilder pCodeFileBuilder, CodeNamespace pNameSpace, CodeTypeDeclaration pType, TypeData pSaveData) { pType.AddBaseClass("UnityEngine.ScriptableObject"); pNameSpace.Types.Clear(); pNameSpace.Types.Add(pType); var listVirtualFieldOption = pSaveData.listFieldData.Where(pExportOption => pExportOption.bDeleteThisField_InCode == false && pExportOption.bIsVirtualField); foreach (var pVirtualField in listVirtualFieldOption) { pType.AddField(pVirtualField); } pCodeFileBuilder.Generate_CSharpCode(pNameSpace, $"{GetRelative_To_AbsolutePath(strExportPath)}/{pType.Name}"); }
private void Create_SOContainer(CodeNamespace pNameSpace, CodeNamespaceImport[] arrDefaultUsing, CodeTypeDeclaration pType, CodeTypeDeclaration[] arrEnumType, out CodeTypeDeclaration pContainerType, out CodeMemberMethod pInitMethod) { pContainerType = new CodeTypeDeclaration(pType.Name + "_Container"); pContainerType.AddBaseClass("UnityEngine.ScriptableObject"); pNameSpace.Imports.Clear(); pNameSpace.Imports.AddRange(arrDefaultUsing); pNameSpace.Imports.Add(new CodeNamespaceImport("System.Linq")); pNameSpace.Imports.Add(new CodeNamespaceImport("System.Collections.Generic")); pNameSpace.Types.Clear(); pNameSpace.Types.Add(pContainerType); pNameSpace.Types.AddRange(arrEnumType); pContainerType.AddField(new FieldTypeData(const_strListData, $"List<{pType.Name}>")); pInitMethod = Generate_InitMethod(pContainerType, pType.Name); }
private void Create_SOContainer(CodeNamespace pNameSpace, CodeNamespaceImport[] arrDefaultUsing, CodeTypeDeclaration pType, CodeTypeDeclaration[] arrEnumType, out CodeTypeDeclaration pContainerType, out CodeMemberMethod pInitMethod) { string strContainerTypeName = pType.Name + "_Container"; pContainerType = new CodeTypeDeclaration(strContainerTypeName); pContainerType.AddBaseClass("UnityEngine.ScriptableObject"); pNameSpace.Imports.Clear(); pNameSpace.Imports.AddRange(arrDefaultUsing); pNameSpace.Imports.Add(new CodeNamespaceImport("System.Linq")); pNameSpace.Imports.Add(new CodeNamespaceImport("System.Collections.Generic")); pNameSpace.Types.Clear(); pNameSpace.Types.Add(pContainerType); pNameSpace.Types.AddRange(arrEnumType); pContainerType.AddField(new FieldTypeData(const_strFieldName_private_instance, strContainerTypeName), MemberAttributes.Private | MemberAttributes.Static); var pPublicInstanceProperty = pContainerType.AddProperty(new FieldTypeData(const_strFieldName_instance, strContainerTypeName), MemberAttributes.Public | MemberAttributes.Static); pPublicInstanceProperty.GetStatements.Add(new CodeSnippetStatement($" return {const_strFieldName_private_instance};")); pContainerType.AddField(new FieldTypeData(const_strFieldName_ListData, $"List<{pType.Name}>")); pInitMethod = Generate_InitMethod(pContainerType, pType.Name); }