Изменения XML в реальном времени для изменения эффекта частиц - PullRequest
1 голос
/ 20 октября 2010

В настоящее время я пишу систему частиц с использованием XNA.То, что я хотел бы сделать, это использовать внешний файл (например, XML) и иметь возможность изменять этот файл во время работы приложения, и после сохранения изменения будут отражены в системе частиц.

Мое оригинальное предложение: используйте FileWatcher (не могу вспомнить точное имя класса), чтобы отслеживать файл эффекта частиц, и когда дата изменяется, перезагрузите файл, вызывая изменения.

Любая помощь будетбыть оцененным.

1 Ответ

0 голосов
/ 21 октября 2010

Вы на правильном пути.

Create a System.IO.FileSystemWatcher.
Subscribe to the Changed event.

When the Changed event occurs
   If the path/file extension corresponds to a buildable resource type
      Either
         Directly create and invoke a content importer and processor. (Xna 4.0)
      Or
         Use MSBuild to build a dummy content project.

      Replace references to the existing resource with the newly built resource
      Dispose of the old resource if necessary

Примечания:

  • FileSystemWatcher иногда генерирует несколько событий изменения для единственное изменение. Кроме того, некоторые программы, такие как фотошоп сохранить в временный файл, затем удалите оригинал и переименуй временный файл с оригинальным именем. Моя система буферизует события файловой системы и объединяет их в отдельные события где возможно. Потому что они буферизованный это также позволяет мне применять события к содержанию на соответствующий пункт в программе. Если вы не буферизуете эти события могли вызвать в то время как ресурс вы пытается заменить используется.

  • Шон Харгривз написал о Компиляции эффектов и автоматизации Content Pipeline в XNA Game Studio 4.0 .

  • В AppHub имеется фрагмент кода WinForms Series 2: загрузка контента , который показывает, как использовать MSBuild для динамического создания контента. Я обнаружил, что этот метод медленнее, чем прямой вызов импортера и процессора.

  • В моей системе все ссылки на динамические ресурсы являются косвенными ссылками. Эти косвенные ссылки распределяются и отслеживаются менеджером ресурсов. Когда ресурс создается динамически, менеджер ресурсов заменяет фактическую ссылку внутри косвенной ссылки. Событие изменения ресурса генерируется по косвенной ссылке, поэтому клиенты могут предпринимать действия при необходимости.

...