/// <summary> /// Creates demonstration store for use in recording. /// Has no effect if the demonstration store was already created. /// </summary> internal DemonstrationWriter LazyInitialize(IFileSystem fileSystem = null) { if (m_DemoWriter != null) { return(m_DemoWriter); } if (m_Agent == null) { m_Agent = GetComponent <Agent>(); } m_FileSystem = fileSystem ?? new FileSystem(); var behaviorParams = GetComponent <BehaviorParameters>(); if (string.IsNullOrEmpty(demonstrationName)) { demonstrationName = behaviorParams.behaviorName; } if (string.IsNullOrEmpty(demonstrationDirectory)) { demonstrationDirectory = Path.Combine(Application.dataPath, "Demonstrations"); } demonstrationName = SanitizeName(demonstrationName, MaxNameLength); var filePath = MakeDemonstrationFilePath(m_FileSystem, demonstrationDirectory, demonstrationName); var stream = m_FileSystem.File.Create(filePath); m_DemoWriter = new DemonstrationWriter(stream); m_DemoWriter.Initialize( demonstrationName, behaviorParams.brainParameters, behaviorParams.fullyQualifiedBehaviorName ); AddDemonstrationWriterToAgent(m_DemoWriter); return(m_DemoWriter); }