Page 1 of 1

Automatic Articy import via editor script

Posted: Tue Aug 23, 2022 6:46 am
by leonfor
Hey,

I've been looking for ways to ease the Articy/Dialogue System pipeline for our designers and one feature request that came up was triggering an automatic import of the Articy xml file in the Dialogue System upon exporting it (instead of bringing up the editor window and doing it manually).

Is there a way to accomplish this? I've successfully tracked down the xml file change with an asset post processor, but the only call I've seen in the docs to import it to the DS is

Code: Select all

ArticyConverter.ConvertXmlDataToDatabase(xmlFilename, converterPrefs, null);
which returns a DialogueDatabase that I'm not sure how to save in the project.

I've tried

Code: Select all

DialogueManager.AddDatabase(db);
but it doesn't update the database, even passing Overwrite = true in the prefs. (I assume this only works at runtime as specified in the import section of the docs)

Thank you.

Re: Automatic Articy import via editor script

Posted: Tue Aug 23, 2022 8:49 am
by Tony Li
Hi,

The easiest way is to leverage the existing Articy import window. This is the code that the "Reconvert..." button uses in the upper right of the dialogue database inspector:

Code: Select all

bool alreadyOpen = Articy.ArticyConverterWindow.IsOpen;
if (!alreadyOpen) Articy.ArticyConverterWindow.Init();
Articy.ArticyConverterWindow.Instance.ReviewArticyProject();
Articy.ArticyConverterWindow.Instance.ConvertArticyProject();
if (!alreadyOpen) Articy.ArticyConverterWindow.Instance.Close();
When your asset importer detects a change to the XML file, you can run the same code.

Re: Automatic Articy import via editor script

Posted: Tue Aug 23, 2022 9:40 am
by leonfor
Hey Tony,

quick and efficient as ever, thank you so much. For anyone wondering how to do this, just make sure to populate the relevant data in the importer window before triggering the two main functions:

Code: Select all

if(xmlFileChanged)
{
	bool alreadyOpen = ArticyConverterWindow.IsOpen;
	if (!alreadyOpen) ArticyConverterWindow.Init();
	ArticyConverterWindow.Instance.GetConverterPrefs().ProjectFilename = xmlFileName;
	ArticyConverterWindow.Instance.GetConverterPrefs().PortraitFolder = "path/to/portrait/folder";
	ArticyConverterWindow.Instance.GetConverterPrefs().OutputFolder = "path/to/output/folder";
	ArticyConverterWindow.Instance.GetConverterPrefs().Overwrite = true;
	ArticyConverterWindow.Instance.ReviewArticyProject();               
	ArticyConverterWindow.Instance.ConvertArticyProject();
	if (!alreadyOpen) ArticyConverterWindow.Instance.Close();
}
Note that the GetConverterPrefs() function doesn't exist in the articy converter window script, I added it since the prefs are a private member.

Anyways, I tested it and it works perfectly. Thank you again!

Re: Automatic Articy import via editor script

Posted: Tue Aug 23, 2022 10:41 am
by Tony Li
Glad to help! Thanks for mentioning about setting up the importer window once first. I forgot to mention that.