FOnline Engine
Current master GitHub
Documentation Docs/en/reference/particle-format/xml.md

Particle Source Rules

Generated reference. Do not edit this page directly. Update BuildTools/ParticleFormatInterface.json, then run python BuildTools/docs_particle_format.py --write.

Reference index Source rules Formats and backends Rendering Tooling Runtime Integration Validation Canonical JSON model Guide Authoring tools
Stable ID Rule Requirement Why Source
particle-format.xml.spark-graph SPARK XML graph A .spark source must be accepted by the vendored SPARK XML loader and contain a usable System graph. Baking fails when loadFromBuffer(“xml”, …) returns no system. Source/Tools/ParticleBaker.cpp
particle-format.xml.spark-textures SPARK texture paths SPARK texture paths must be relative, contain no line-control characters, and remain inside the particle’s resource source. The baker rejects absolute and escaping paths before producing .spk. Source/Tools/ParticleBaker.cpp
particle-format.xml.effekseer-project Effekseer project XML An .efkproj source must be a non-empty EffekseerProject XML document supported by the fixed compiler profile. The native compiler rejects malformed XML and unsupported profile features during baking. Source/Tools/EffekseerCompiler.cpp
particle-format.xml.effekseer-dependencies Effekseer dependency paths Keep compiler-reported dependencies relative and inside the directory resource source that owns the project. Dependency snapshots and compilation resolve against the physical project directory and reject escapes. Source/Tools/ParticleBaker.cpp
particle-format.xml.root SPARK document root The document element must be named SPARK exactly. The XML loader rejects missing or differently named roots before graph construction. ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp
particle-format.xml.single-system Exactly one System The graph must contain exactly one System object; nested helper objects do not replace it and a second System is invalid. Graph validation selects the sole System as the load result. ThirdParty/spark/spark/src/Core/IO/SPK_IO_Loader.cpp
particle-format.xml.object-tags Registered object tags Every object element name must match one of the registered object tags in the generated catalog. Graph::addNode fails when IOManager cannot construct the named object. ThirdParty/spark/spark/src/Core/IO/SPK_IO_Loader.cpp
particle-format.xml.attributes Attribute elements Serialize descriptor values as attrib children with a non-empty id matching the object’s descriptor attribute name. The loader ignores non-attrib children at attribute level and looks up each id in the descriptor. ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp
particle-format.xml.values Value attribute or text A scalar or array value may be written in the attrib value XML attribute or as element text; value takes precedence when both exist. XMLLoader::getValue checks the value attribute first and otherwise reads child text. ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp
particle-format.xml.arrays Semicolon arrays Separate array values with semicolons; each element is converted independently and at least one converted value is required before assignment. convert2Array splits only on semicolons and returns false for an empty conversion result. ThirdParty/spark/spark/include/Extensions/IOConverters/SPK_IO_XMLLoader.h
particle-format.xml.references Nested objects and references Reference attributes may nest an object directly or identify a previously described shared object through ref; arrays of references use nested objects and Ref children. The loader resolves both inline graph nodes and integer reference IDs, while the saver emits references according to graph sharing. ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp
ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLSaver.cpp
particle-format.xml.names-and-unknowns Names and unknown attributes Write an object’s optional display name in its name XML attribute. Unknown non-empty attrib ids are logged as warnings and skipped rather than becoming custom data. Names have a dedicated descriptor path, and typoed attributes do not affect the loaded object. ThirdParty/spark/spark/src/Extensions/IOConverters/SPK_IO_XMLLoader.cpp
Start typing to search.