Refactoring of PipingRules from a static component into a model-specific instance
Currently PipingRules
is a set of static (i.e. global) data structures that manages all instantiated Plant3D components. This is not safe for use in multiple open editors that operate on the models in both UI and database threads.
The current set-up makes it impossible to enable piping rules on a specific model or editor. It also prevents application of rule updates to a single model.
PipingRules must be refactored so that updates can be performed selectively on a model-by-model basis.
Changes:
- Change data structures from static fields to members
- Change upate() and requestUpdate() to be non-static members
- Keep a PipingRules instance in the P3DRootNode instance
- Change all static references to requestUpdate() to be made through the P3DRootNode
- Add a model-specific toggle for enabling/disabling the piping rules