public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s) where TDoc : class where TCursor : class { bool reading = s.IsReading; #region Internal if (reading) { int max_trigger_groups = 0, max_virtual_triggers = 0, max_script_values = 0 ; s.ReadElement(kMaxTriggerGroupsElementName, ref max_trigger_groups); s.ReadElementOpt(kMaxVirtualTriggersElementName, ref max_virtual_triggers); s.ReadElement(kMaxScriptValuesElementName, ref max_script_values); #if false // #TODO_BLAM TriggerGroupsDesc = Collections.ActiveListDesc <Editor.LogicalGroupUI> . CreateForNullData(max_trigger_groups, fixedLength : false); #endif VirtualTriggersDesc = Collections.ActiveListDesc <Model.MegaloScriptVirtualTrigger> . CreateForNullData(max_virtual_triggers, fixedLength : false); VirtualTriggersDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex; ScriptValuesDesc = Collections.ActiveListDesc <Model.MegaloScriptValueBase> . CreateForNullData(max_script_values, fixedLength : false); ScriptValuesDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex; } else { // s.WriteElement(kMaxTriggerGroupsElementName, TriggerGroupsDesc.Capacity); s.WriteElement(kMaxVirtualTriggersElementName, VirtualTriggersDesc.Capacity); s.WriteElement(kMaxScriptValuesElementName, ScriptValuesDesc.Capacity); } #endregion #region Scripting s.StreamElementEnum("EntryPoints", ref SupportedEntryPoints, true); s.StreamElementOpt("SupportsVirtualTriggers", ref SupportsVirtualTriggers); s.StreamElementOpt("StreamEntryPointIndexAsPointer", ref StreamEntryPointIndexAsPointer); s.StreamElementOpt("StreamConditionsAndActionsRefsAsRefs", ref StreamConditionsAndActionsRefsAsRefs); ListLimitTraits.SerializeViaElement(s, "MaxConditions", ref Conditions); ListLimitTraits.SerializeViaElement(s, "MaxActions", ref Actions); ListLimitTraits.SerializeViaElement(s, "MaxTriggers", ref Triggers); if (reading) { UnionGroupsDesc = Collections.ActiveListDesc <Model.MegaloScriptUnionGroup> . CreateForNullData(Conditions.MaxCount); UnionGroupsDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex; ConditionsDesc = Collections.ActiveListDesc <Model.MegaloScriptCondition> . CreateForNullData(Conditions.MaxCount); ConditionsDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex; ActionsDesc = Collections.ActiveListDesc <Model.MegaloScriptAction> . CreateForNullData(Actions.MaxCount); ActionsDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex; TriggersDesc = Collections.ActiveListDesc <Model.MegaloScriptTrigger> . CreateForNullData(Triggers.MaxCount); TriggersDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex; } #endregion #region Static ListLimitTraits.SerializeViaElement(s, "NumberOfGameEngineOptions", ref GameEngineOptions); ListLimitTraits.SerializeViaElement(s, "MaxMultiplayerObjectTypes", ref MultiplayerObjectTypes); ListLimitTraits.SerializeViaElement(s, "MaxMegaloStringIds", ref MegaloStringIds); ListLimitTraits.SerializeViaElement(s, "MaxMegaloEngineSounds", ref MegaloEngineSounds); ListLimitTraits.SerializeViaElement(s, "MaxGameIncidentTypes", ref GameIncidentTypes); ListLimitTraits.SerializeViaElement(s, "MaxMegaloHudWidgetIcons", ref MegaloHudWidgetIcons); ListLimitTraits.SerializeViaElement(s, "MaxGameEngineIcons", ref GameEngineIcons); ListLimitTraits.SerializeViaElement(s, "MaxGameMedals", ref GameMedals); ListLimitTraits.SerializeViaElementOpt(s, "MaxGameOrdnanceTypes", ref GameOrdnanceTypes); ListLimitTraits.SerializeViaElement(s, "NumberOfEngineCategories", ref EngineCategories); #endregion #region Variant ListLimitTraits.SerializeViaElement(s, "NumberOfLoadoutPalettes", ref LoadoutPalettes); ListLimitTraits.SerializeViaElement(s, "MaxUserDefinedOptions", ref UserDefinedOptions); ListLimitTraits.SerializeViaElement(s, "MaxUserDefinedOptionValues", ref UserDefinedOptionValues); ListLimitTraits.SerializeViaElement(s, "MaxVariantStrings", ref VariantStrings); ListLimitTraits.SerializeViaElementOpt(s, "MaxLoadouts", ref Loadouts); ListLimitTraits.SerializeViaElement(s, "MaxPlayerTraits", ref PlayerTraits); ListLimitTraits.SerializeViaElement(s, "MaxGameStatistics", ref GameStatistics); ListLimitTraits.SerializeViaElement(s, "MaxHudWidgets", ref HudWidgets); ListLimitTraits.SerializeViaElement(s, "MaxObjectFilters", ref ObjectFilters); ListLimitTraits.SerializeViaElementOpt(s, "MaxGameObjectFilters", ref GameObjectFilters); #endregion }