62 lines
3.0 KiB
Plaintext
62 lines
3.0 KiB
Plaintext
/**
|
|
* @mainpage
|
|
*
|
|
* @section org Organization
|
|
*
|
|
* At a high level this design separates code specific to MeshTex functionality
|
|
* from code that could apply to Radiant plugins in general, especially plugins
|
|
* that have similar interface needs (i.e. accept some numbers/choices from user
|
|
* input and apply to selected objects). Within both of those broad categories,
|
|
* further separation is enforced between the plugin framework, patch mesh
|
|
* manipulation, and UI. See the Modules page of this documentation for
|
|
* specifics.
|
|
*
|
|
* @section flow Control Flow
|
|
*
|
|
* A Radiant plugin is a library that exports only one function:
|
|
* Radiant_RegisterModules. This returns a function table that Radiant will
|
|
* use to identify the plugin, populate the main menu for the plugin, and notify
|
|
* the plugin when one of those menu entries is selected.
|
|
*
|
|
* When a menu entry is selected, the plugin code is sent a string token that
|
|
* identifies the entry, and it must use that token to decide what to do.
|
|
*
|
|
* The MeshTex menu entries lead to three kinds of operations:
|
|
* - Raise a popup message dialog with fixed text, such as the Help dialog.
|
|
* - Execute an operation on selected patch mesh entities. This operation is
|
|
* completely specified by the selected menu entry.
|
|
* - Raise a window that accepts further input. When the OK or Apply button is
|
|
* clicked on that window, execute an operation on selected patch mesh
|
|
* entities, using values read from the window's input widgets as arguments.
|
|
*
|
|
* Most MeshTex operations follow this general flow:
|
|
* - Create a visitor object that understands how to execute the operation on
|
|
* any input that is a valid patch mesh.
|
|
* - Instantiate the Radiant class UndoableCommand to identify the operation.
|
|
* - Use the Radiant function GlobalSelectionSystem().foreachSelected to
|
|
* iterate over the currently selected objects and pass them to the visitor
|
|
* object.
|
|
* - Destroy the UndoableCommand object (implicitly on scope exit).
|
|
*
|
|
* The visitor object follows these steps when processing a mesh:
|
|
* - Use the Radiant function GlobalPatchCreator().Patch_undoSave if it is
|
|
* about to modify the mesh.
|
|
* - Read mesh characteristics and control point data, and possibly modify
|
|
* the texture coordinates in the control point data.
|
|
* - If the mesh was modified, use the Radiant functions
|
|
* GlobalPatchCreator().Patch_controlPointsChanged and
|
|
* GlobalPatchCreator().Patch_undoSave.
|
|
*
|
|
* The complete list of Radiant systems used by MeshTex is defined in the
|
|
* MeshTexPluginDependencies class declaration.
|
|
*
|
|
* @section external External Dependences
|
|
*
|
|
* This version of MeshTex uses types and functions from these other sources:
|
|
* - GtkRadiant 1.5: https://github.com/TTimo/GtkRadiant/tree/1.5-release
|
|
* - GTK+ 2 stack: http://www.gtk.org/download/index.php
|
|
* - STLport 5: http://sourceforge.net/projects/stlport/files/STLport/
|
|
*
|
|
* The specific minor versions last used to build MeshTex are GtkRadiant 1.5.0,
|
|
* GTK+ 2.24.10, and STLport 5.2.1.
|
|
*/ |