Enum ScyllaGraphNodeFlags
Bitpacked flags that describe the runtime properties of a ScyllaGraphNode.
The enum is backed by uint to provide 32 usable bits, and is decorated with
FlagsAttribute so that multiple values can be combined with bitwise operators.
Namespace: Scylla.Core.Structures
Assembly: ScyllaCore.dll
Syntax
[Flags]
public enum ScyllaGraphNodeFlags : uint
Remarks
Reserved bit (bit 0): Walkable controls whether graph traversal algorithms (e.g., Dijkstra in ScyllaGraphAlgorithms) are permitted to enter this node. Setting a node's flags to None makes it impassable.
User-defined tags (bits 1-31): Tag0 through Tag30 are available for any game-domain purpose - terrain type, region membership, hazard classification, etc. Assign semantic meaning to individual tag bits in your own code; the graph system treats them as opaque. Use TagMask to isolate or clear the entire tag region in a single bitwise operation.
Query individual flags via HasFlag(ScyllaGraphNodeFlags) or the IsWalkable() convenience method. Update a node's flags via WithFlags(ScyllaGraphNodeFlags) (creates a new node descriptor) or TrySetNodeFlags(int, ScyllaGraphNodeFlags) (updates the owning graph).
Fields
| Name | Description |
|---|---|
| None | No flags set. A node with this value has no Walkable bit and no user-defined tags. Graph traversal algorithms treat such a node as impassable. |
| Tag0 | User-defined tag bit 0 (bit 1 in the packed value). Assign any game-domain meaning to this bit - for example, terrain type, zone membership, or hazard classification. The graph system never reads or sets this bit; it is reserved entirely for application code. Tags 1 through 30 (Tag1 … Tag30) follow the same convention. Use TagMask to test or clear all tag bits at once. |
| Tag1 | User-defined tag 1. |
| Tag10 | User-defined tag 10. |
| Tag11 | User-defined tag 11. |
| Tag12 | User-defined tag 12. |
| Tag13 | User-defined tag 13. |
| Tag14 | User-defined tag 14. |
| Tag15 | User-defined tag 15. |
| Tag16 | User-defined tag 16. |
| Tag17 | User-defined tag 17. |
| Tag18 | User-defined tag 18. |
| Tag19 | User-defined tag 19. |
| Tag2 | User-defined tag 2. |
| Tag20 | User-defined tag 20. |
| Tag21 | User-defined tag 21. |
| Tag22 | User-defined tag 22. |
| Tag23 | User-defined tag 23. |
| Tag24 | User-defined tag 24. |
| Tag25 | User-defined tag 25. |
| Tag26 | User-defined tag 26. |
| Tag27 | User-defined tag 27. |
| Tag28 | User-defined tag 28. |
| Tag29 | User-defined tag 29. |
| Tag3 | User-defined tag 3. |
| Tag30 | User-defined tag 30. |
| Tag4 | User-defined tag 4. |
| Tag5 | User-defined tag 5. |
| Tag6 | User-defined tag 6. |
| Tag7 | User-defined tag 7. |
| Tag8 | User-defined tag 8. |
| Tag9 | User-defined tag 9. |
| TagMask | Convenience bitmask with all 31 user-defined tag bits set (bits 1-31, value
Use this to extract, test, or clear the entire tag region in one operation:
bool hasAnyTag = (node.Flags & ScyllaGraphNodeFlags.TagMask) != 0; // Clear all tags while preserving the Walkable bit: var stripped = node.Flags & ~ScyllaGraphNodeFlags.TagMask; |
| Walkable | The node is walkable (traversable) by graph algorithms. This is the default flag applied when a node is created without an explicit flags argument. Clear this bit to make a node impassable without removing it from the graph - useful for dynamically blocking or unblocking paths at runtime. |