├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── feature_request.md
│ └── other-issues.md
└── workflows
│ ├── ci.yml
│ └── main.yml
├── README.md
├── changelog.md
├── css
└── style.css
├── docs
├── controlButtons.md
├── img
│ ├── .thumb
│ │ └── MaterialFoundry.png.jpg
│ ├── MaterialFoundry.png
│ └── icon.ico
├── index.md
├── moduleSettings
│ ├── moduleSettings.md
│ ├── sceneConfigurator.md
│ └── userConfig.md
├── sceneConfig
│ ├── initialViewConfig.md
│ └── sceneConfig.md
└── style.css
├── img
├── .thumb
│ ├── MaterialFoundry2560x1440.jpg.jpg
│ ├── MaterialFoundry512x512.png.jpg
│ └── parchment.jpg.jpg
├── MaterialFoundry2560x1440.jpg
├── MaterialFoundry512x512.png
├── icons
│ ├── .thumb
│ │ ├── arrows-alt-solid.png.jpg
│ │ ├── compress-arrows-alt-solid.png.jpg
│ │ ├── down.png.jpg
│ │ └── right.png.jpg
│ ├── arrows-alt-solid.png
│ ├── compress-arrows-alt-solid.png
│ ├── down.png
│ └── right.png
└── parchment.jpg
├── lang
└── en.json
├── lockview.js
├── mkdocs.yml
├── module.json
├── src
├── apps
│ ├── initialViewConfig.js
│ ├── sceneConfigurator.js
│ ├── setViewDialog.js
│ └── userConfig.js
├── controlButtons.js
├── helpers.js
├── libWrapper
│ ├── overrides.js
│ └── shim.js
├── locks.js
├── migrationHandler.js
├── sceneHandler.js
├── settings.js
├── socket.js
├── stylesHandler.js
└── viewbox.js
└── templates
├── drawingConfig.hbs
├── initialViewConfig.hbs
├── sceneConfig.hbs
├── sceneConfigurator.hbs
├── setViewDialog.hbs
└── userConfig.hbs
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: MaterialFoundry
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: materialfoundry
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[BUG]"
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Setup**
11 | - OS: [e.g. windows]
12 | - Browser: [e.g. chrome, safari, Foundry app]
13 | - Module version: [e.g. 2.0.0]
14 | - Foundry version: [e.g. 13.344]
15 | - Gaming system & version: [e.g. dnd5e 5.0.0]
16 | - Any other modules enabled: [yes/no]
17 |
18 | **Describe the bug**
19 | A clear and concise description of what the bug is.
20 |
21 | **Screenshots**
22 | If applicable, add screenshots to help explain your problem.
23 |
24 | **Console Log**
25 | Please check the console (F12) to see if there are any errors and also include them.
26 |
27 | **Additional context**
28 | Add any other context about the problem here.
29 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[FEATURE]"
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/other-issues.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Other issues
3 | about: For any other issues
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: ci
2 | on:
3 | push:
4 | branches:
5 | - Master
6 | - master
7 | - main
8 | permissions:
9 | contents: write
10 | jobs:
11 | deploy:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v4
15 | - name: Configure Git Credentials
16 | run: |
17 | git config user.name github-actions[bot]
18 | git config user.email 41898282+github-actions[bot]@users.noreply.github.com
19 | - uses: actions/setup-python@v4
20 | with:
21 | python-version: 3.x
22 | - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
23 | - uses: actions/cache@v3
24 | with:
25 | key: mkdocs-material-${{ env.cache_id }}
26 | path: .cache
27 | restore-keys: |
28 | mkdocs-material-
29 | - run: pip install mkdocs-material
30 | - run: pip install mkdocs-macros-plugin
31 | - run: mkdocs gh-deploy --force
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: Release Creation
2 |
3 | on:
4 | release:
5 | types: [published]
6 |
7 | jobs:
8 | build:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - uses: actions/checkout@v2
12 |
13 | # get part of the tag after the `v`
14 | - name: Extract tag version number
15 | id: get_version
16 | uses: battila7/get-version-action@v2
17 |
18 | # Substitute the Manifest and Download URLs in the module.json
19 | - name: Substitute Manifest and Download Links For Versioned Ones
20 | id: sub_manifest_link_version
21 | uses: microsoft/variable-substitution@v1
22 | with:
23 | files: 'module.json'
24 | env:
25 | version: ${{steps.get_version.outputs.version-without-v}}
26 | url: https://github.com/${{github.repository}}
27 | manifest: https://github.com/${{github.repository}}/releases/latest/download/module.json
28 | download: https://github.com/${{github.repository}}/releases/download/${{github.event.release.tag_name}}/module.zip
29 |
30 | # Create a zip file with all files required by the module to add to the release
31 | - run: zip -r ./module.zip lockview.js module.json README.md changelog.md img/ lang/ src/ templates/ css/
32 |
33 | # Create a release for this specific version
34 | - name: Update Release with Files
35 | id: create_version_release
36 | uses: ncipollo/release-action@v1
37 | with:
38 | allowUpdates: true # Set this to false if you want to prevent updating existing releases
39 | name: ${{ github.event.release.name }}
40 | draft: ${{ github.event.release.unpublished }}
41 | prerelease: ${{ github.event.release.prerelease }}
42 | token: ${{ secrets.GITHUB_TOKEN }}
43 | artifacts: './module.json, ./module.zip'
44 | tag: ${{ github.event.release.tag_name }}
45 | body: ${{ github.event.release.body }}
46 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Lock View
2 | ## Introduction
3 |
4 | Lock View is a [Foundry VTT](https://foundryvtt.com/) module that gives the GM (or a designated player) control over the zoom and pan capabilities of players, such as locking the zoom or pan, moving the canvas, or setting the view to a specified setting.
5 | The module was originally made as a companion app for the [Material Plane](https://github.com/CDeenen/MaterialPlane) module, and to make in-person play using a horizontally mounted TV easier.
6 | Over time, however, the module's features have expanded greatly, including many functions that can be useful for online play.
7 |
8 | The module has 6 main functions:
9 | * **Autoscaling**: Scales the scene in various ways (horizontal fit, vertical fit, automatic fit, or scaled to a physical gridsize)
10 | * **Zoom lock**: Locks the zooming of the scene
11 | * **Pan lock**: Locks the panning of the scene
12 | * **Bounding box**: Limit zoom and pan to stay within a bounding box
13 | * **Force initial view**: After loading a new scene, the view is forced to the initial view (as set in the scene configuration menu), regardless of the position of tokens
14 | * **Viewbox**: Allows the GM to see what's shown on players screens, and allows the GM to control the pan and zoom of those players
15 |
16 | ## Instructions
17 | * [Wiki](https://github.com/CDeenen/LockView/wiki)
18 |
19 | ## Module Compatibility
20 | When 'Zoom Lock' or 'Pan Lock' are enabled, this module disables all zooming and/or panning functionality, regardless of who or what is requesting that zoom or pan. This means that, for example, modules that try to pan or zoom won't work.
21 |
22 | Right now, there appear to be compatibility issues with the following modules:
23 | * DF Active Lights
24 | * DF Curvy Walls
25 | * Zoom/Pan Options
26 |
27 | ## Foundry Compatibility
28 | This module has been tested to work with Foundry V11 and V12.
29 |
30 | ## Feedback
31 | Feel free [report an issue/suggestion](https://github.com/CDeenen/LockView/issues), contact me on Discord (Cris#6864), or send me an email: cdeenen@outlook.com.
32 |
33 | ## Credits
34 | **Author**: Cristian Deenen (Cris#6864 on Discord)
35 |
36 | If you enjoy using my modules, please consider supporting me on [Patreon](https://www.patreon.com/materialfoundry) or buy me a coffee through [Ko-fi](https://ko-fi.com/materialfoundry).
37 |
38 | ## Abandonment
39 | Abandoned modules are a (potential) problem for Foundry, because users and/or other modules might rely on abandoned modules, which might break in future Foundry updates.
40 | I consider this module abandoned if all of the below cases apply:
41 | * This module/github page has not received any updates in at least 3 months
42 | * I have not posted anything on "the Foundry" and "the League of Extraordinary Foundry VTT Developers" Discord servers in at least 3 months
43 | * I have not responded to emails or PMs on Discord in at least 1 month
44 | * I have not announced a temporary break from development, unless the announced end date of this break has been passed by at least 3 months
45 |
46 | If the above cases apply (as judged by the "League of Extraordinary Foundry VTT Developers" admins), I give permission to the "League of Extraordinary Foundry VTT Developers" admins to assign one or more developers to take over this module, including requesting the Foundry team to reassign the module to the new developer(s).
47 | I require the "League of Extraordinary Foundry VTT Developers" admins to send me an email 2 weeks before the reassignment takes place, to give me one last chance to prevent the reassignment.
48 | I require to be credited for my work in all future releases.
49 |
--------------------------------------------------------------------------------
/changelog.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ### v2.0.0
4 | The module has been completely rewritten, so new bugs are to be expected.
5 | Compatible with Foundry v13, dropped compatibility with Foundry v12.
6 |
7 | Additions:
8 |
9 |
LibWrapper is now used to help prevent module incompatibilities
10 |
User Config: Added 'Static' option to create users that don't change scenes when they're normally activated. The GM can control which scene is viewed by these users by right-clicking a scene in the scene navigation
11 |
Set View dialog: Options are stored and recalled when re-opened
12 |
Set View dialog: Added user selection
13 |
Scene Config: Expanded options for when to hide UI elements
14 |
Scene Config: Added option to hide the camera feed
15 |
Module Settings: Added 'Right-Drag Viewbox Editing' option to enable or disable dragging the viewbox with the right mouse button
16 |
Module Settings: Added 'Force GM-Set Settings' for the 'Physical Grid Size' which allows the GM to override all user configured grid size settings
17 |
Module Settings: Added 'Pan Canvas to Ping Behavior' to allow panning through pings even when locks are applied
18 |
19 |
20 | Removals:
21 |
22 |
Removed 'Rotation' option from scene config because it was too buggy
23 |
24 |
25 | Other:
26 |
27 |
Switched all applications over to ApplicationV2
28 |
Reoganized scene flags. Old scene flags are no longer used, existing flags should automatically migrate
Added a scene configurator to allow easy configuration of the Lock View settings, including copying settings from one scene to another and configuring the default configuration for new scenes. Accessible through a button in the scene configuration and the module settings
56 |
Added default user settings which are applied to new or unconfigured users. By default this enables 'Enable' and 'Viewbox'
57 |
Canvas can now be rotated from the Lock View menu in the Scene Configuration and using the 'Set View' dialog (thanks to Dylancyclone)
58 |
59 |
60 | Fixes:
61 |
62 |
Fixed 'hide control button' not hiding the control button in all cases
63 |
Fixed error that would pop up when 'hide control button' was enabled and the scene configuration was closed
64 |
Hiding UI elements now only sets the element to invisible, preventing other elements from shifting around
65 |
66 |
67 | Other:
68 |
69 |
Made compatible with Foundry V11, dropped compatibility with V9
70 |
Changed 'Collapse Sidebar on Scene Load' to 'Sidebar on Scene Load' and made it a selection between 'No Change', 'Collapse' and 'Expand'
Fixed error related to canvas.blur, which prevented the canvas from loading in certain situations
77 |
Fixed errors and warnings when boundingbox was active while panlock was not, and a controlled token moved outside the view (which should cause the canvas to pan automatically)
78 |
Fixed compatibility warnings when editing drawings (for bounding box purposes)
Added the option for players to control the module through control buttons. This can be enabled in the user configuration with the 'control' setting
86 |
When using the 'Edit Viewbox' functionality, zooming and panning will only be affected when you hover your mouse over the user's viewbox (it used to affect all users)
87 |
Added the UI (un)hide hotkey to the core keybinding menu. Defaults to Alt + U
88 |
89 |
90 | Other:
91 |
92 |
Improved the documentation and naming of things (mainly related to the user config). Please not that the old 'control' setting is renamed to 'enable'
93 |
Made compatible with Foundry v10, dropped compatibility with Foundry v8
Fixed issue where zoom and pan lock would sometimes not be applied on scene load
106 |
Fixed issue where switching from a scene with UI elements hidden to a scene with 'Hide UI Elements on Sidebar Collapse' disabled would not always show all UI elements
107 |
Fixed issue where in the User Configuration, if an override was enabled, it also showed the setting as enabled for individual users
108 |
109 |
110 | Additions:
111 |
112 |
Added 'Hide Control Button' setting in the module settings
In the last update, 'Hide UI Elements on Sidebar Collapse' accedentally allowed the GM to hide the sidebar (this could lock the GM out of controlling the software), this has been fixed
137 |
138 |
139 |
140 |
Added the 'Ctrl+u' hotkey that can be used to hide/unhide the UI elements that have been configured in the scene config
If 'Hide UI Elements was enabled', control buttons would not always hide if a scene was changed
147 |
UI elements will now only be unhidden if they have been previously hidden by Lock View, allowing other modules to hide/unhide UI elements without Lock View interfering
148 |
Lock View would cause the view to 'bounce' when combined with 'Always Centered'. This has been fixed.
149 |
When configuring the initial view, dragging the box around could place tokens or templates, depending on what tool was selected, this has been fixed by automatically selecting the Lock View control
If 'Control' was enabled for the GM, and the sidebar was set to autohide, the GM would be locked out of all controls, essentially bricking the world until Lock View was disabled. To fix this, the sidebar can never be hidden for the GM
162 |
Canvas layers were registered incorrectly, leading to module incompatibilities. This has been fixed thanks to SWW13 on Github
'Set Initial View' configuration wouldn't work if no initial view position was configured previously
192 |
In the scene config, fixed the hint for 'Force Initial View'. It didn't state that it also works if autoscale is set to 'Physical Gridsize', and added description of the button
193 |
If 'Hide UI on Sidebar Collapse' was on, scene navigation would still be displayed after the GM switched a Lock View function on or off
194 |
Various actions, such as starting combat, would reset the view to the initial view position, if 'Force Initial View' was enabled
195 |
Changes to the scene configuration would not automatically update the control button states
196 |
197 |
198 | Additions:
199 |
200 |
In the 'Set Initial View' configuration, added the option to set the view to the current view of a connected player
Added 'Automatic Fit (outside) autoscale option (makes sure the whole canvas can always be seen, instead of zooming in, like the 'Automatic Fit (inside) option does)
Added a way to change the view of individual players by adding a move and scale icon on the top-left and bottom-right corners of the viewbox if the 'Edit Viewbox' control button is selected
278 |
Added the name of the player above each viewbox
279 |
Module settings for new non-GM players are automatically enabled
280 |
281 | Fixes:
282 |
283 |
Much of the code has been rewritten for improved stability and performance, and a lot of bugs have been fixed
Refresh no longer needed after changing scene configuration
402 |
403 | Additions:
404 |
405 |
Lock override keybinding
406 |
Reset TV view button
407 |
Pan lock override button
408 |
Zoom lock override button
409 |
Viewbox enable button
410 |
Force enable tickbox
411 |
412 |
413 | ### v1.0.0 - 09-09-2020
414 | Initial release
--------------------------------------------------------------------------------
/css/style.css:
--------------------------------------------------------------------------------
1 | .LockView-SceneConfig-list {
2 | margin-top: 0.5em;
3 | margin-bottom: 0.5em;
4 | }
5 |
6 | /**
7 | * Expandable
8 | */
9 | .lockview-expandable {
10 | cursor: pointer;
11 | display: flex;
12 | }
13 |
14 | .lockview-expandable i {
15 | margin-top: 2px;
16 | margin-right: 5px;
17 | }
18 |
19 | .lockview-collapsed {
20 | display: none;
21 | }
22 |
23 | /**
24 | * Shared
25 | */
26 |
27 | #lockView-userConfig header.table-header,
28 | #lockView-sceneConfigurator header.table-header {
29 | background: var(--color-text-dark-inactive);
30 | padding: 0.5rem;
31 | color: var(--color-text-light-highlight);
32 | border: 1px solid var(--color-border-dark-4);
33 | font-weight: bold;
34 | text-shadow: 1px 1px var(--color-shadow-dark);
35 | }
36 |
37 | .theme-dark #lockView-userConfig header.table-header,
38 | .theme-dark #lockView-sceneConfigurator header.table-header {
39 | background-color: var(--color-cool-4);
40 | border-color: var(--color-cool-4);
41 | }
42 |
43 | #lockView-userConfig ul.userSettings-list,
44 | #lockView-sceneConfigurator ul.sceneConfigurator-list,
45 | #lockView-setView ul.setView-list {
46 | list-style: none;
47 | margin: 0;
48 | padding: 0;
49 | max-height: 400px;
50 | overflow: hidden auto;
51 | }
52 |
53 | #lockView-userConfig li.userSettings-line,
54 | #lockView-sceneConfigurator li.sceneConfigurator-line,
55 | #lockView-setView li.setView-line {
56 | padding: 0.25rem 0.5rem;
57 | border-bottom: 1px solid var(--color-border-dark-4);
58 | gap: 0;
59 | }
60 |
61 | #lockView-userConfig li.userSettings-line .form-fields,
62 | #lockView-sceneConfigurator li.sceneConfigurator-line .form-fields,
63 | #lockView-setView li.setView-line .form-fields {
64 | justify-content: space-around;
65 | }
66 |
67 | /**
68 | * User Config
69 | */
70 | #lockView-userConfig .columnLabel {
71 | width: auto;
72 | text-align: left;
73 | line-height: 1.25rem;
74 | }
75 |
76 | #lockView-userConfig .columnCheckbox {
77 | min-width: 12.5%;
78 | max-width: 12.5%;
79 | text-align: center;
80 | }
81 |
82 | #lockView-userConfig hr {
83 | margin-top: 0;
84 | margin-bottom: 0;
85 | }
86 |
87 | /**
88 | * Initial View Config
89 | */
90 | #lockView-initialViewConfig .form-group {
91 | margin-bottom: 0.25rem;
92 | }
93 |
94 | #lockView-initialViewConfig .form-group button {
95 | min-width: 50%;
96 | }
97 |
98 | #lockView-initialViewConfig footer {
99 | margin-top: 1rem;
100 | }
101 |
102 | /**
103 | * Scene Configurator
104 | */
105 |
106 | #lockView-sceneConfigurator li.sceneConfigurator-line {
107 | margin: 0;
108 | padding: 0;
109 | }
110 |
111 | .theme-dark #lockView-sceneConfigurator header.table-header {
112 | margin: 0;
113 | padding: 0;
114 | white-space: nowrap;
115 | }
116 |
117 | #lockView-sceneConfigurator header.table-header div {
118 | margin-top: auto;
119 | text-align: center;
120 | }
121 |
122 | #lockView-sceneConfigurator .columnName {
123 | text-align: left;
124 | line-height: 1.25rem;
125 | white-space: nowrap;
126 | overflow: hidden;
127 | }
128 |
129 | #lockView-sceneConfigurator .columnCB {
130 | min-width: 25px;
131 | max-width: 25px;
132 | line-height: 1.25rem;
133 | }
134 |
135 | #lockView-sceneConfigurator .columnButton {
136 | min-width: 25px;
137 | max-width: 25px;
138 | margin-left: 5px;
139 | margin-right: 0px;
140 | }
141 |
142 | #lockView-sceneConfigurator .columnButton button {
143 | min-width: 20px;
144 | max-width: 20px;
145 | min-height: 20px;
146 | max-height: 20px;
147 | }
148 |
149 | #lockView-sceneConfigurator .sceneConfigurator-line .columnSelect {
150 | padding: 2.5px;
151 | }
152 |
153 | #lockView-sceneConfigurator .columnAutoscale,
154 | #lockView-sceneConfigurator .columnHideOn,
155 | #lockView-sceneConfigurator .columnSidebarSceneLoad {
156 | max-width: 125px;
157 | min-width: 125px;
158 | }
159 |
160 | #lockView-sceneConfigurator .columnAutoscale label {
161 | transform: translate(20px,100%) rotate(-90deg);
162 | }
163 |
164 | #lockView-sceneConfigurator .columnHideOn label {
165 | transform: translate(10px,100%) rotate(-90deg);
166 | }
167 |
168 | #lockView-sceneConfigurator .columnSidebarSceneLoad label {
169 | transform: translate(30px,100%) rotate(-90deg);
170 | }
171 |
172 | #lockView-sceneConfigurator .table-header-inner {
173 | text-align: center;
174 | display: inline-block;
175 | white-space: nowrap;
176 | line-height: 1.5;
177 | transform: translate(0,100%) rotate(-90deg);
178 | transform-origin: 0 0;
179 | padding-left: 5px;
180 | padding-right: 5px;
181 | }
182 |
183 | #lockView-sceneConfigurator .table-header-inner:after {
184 | content: "";
185 | display: block;
186 | margin: -1.5em 0 100%;
187 | }
188 |
189 | #lockView-sceneConfigurator .vl-top,
190 | #lockView-sceneConfigurator .vl-bottom,
191 | #lockView-sceneConfigurator .vl-li {
192 | border-left: 1px solid;
193 | max-width: 1px;
194 | margin: 0;
195 | }
196 |
197 | #lockView-sceneConfigurator hr {
198 | margin: 0;
199 | }
200 |
201 | #lockView-sceneConfigurator .defaultConfig {
202 | font-style: italic;
203 | }
204 |
205 | /**
206 | * Set View
207 | */
208 | #lockView-setView .columnCheckbox {
209 | min-width: 50px;
210 | max-width: 50px;
211 | line-height: 1.25rem;
212 | }
213 |
214 | #lockView-setView .indent {
215 | padding-left: 10px;
216 | }
--------------------------------------------------------------------------------
/docs/controlButtons.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/controlButtons.md
--------------------------------------------------------------------------------
/docs/img/.thumb/MaterialFoundry.png.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/img/.thumb/MaterialFoundry.png.jpg
--------------------------------------------------------------------------------
/docs/img/MaterialFoundry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/img/MaterialFoundry.png
--------------------------------------------------------------------------------
/docs/img/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/img/icon.ico
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | # Lock View Documentation
2 |
3 | Still working on the documentation for Lock View v2, please be patient.
4 | In the meantime, use the [old documentation](https://github.com/MaterialFoundry/LockView/wiki).
--------------------------------------------------------------------------------
/docs/moduleSettings/moduleSettings.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/moduleSettings/moduleSettings.md
--------------------------------------------------------------------------------
/docs/moduleSettings/sceneConfigurator.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/moduleSettings/sceneConfigurator.md
--------------------------------------------------------------------------------
/docs/moduleSettings/userConfig.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/moduleSettings/userConfig.md
--------------------------------------------------------------------------------
/docs/sceneConfig/initialViewConfig.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/sceneConfig/initialViewConfig.md
--------------------------------------------------------------------------------
/docs/sceneConfig/sceneConfig.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/docs/sceneConfig/sceneConfig.md
--------------------------------------------------------------------------------
/docs/style.css:
--------------------------------------------------------------------------------
1 | .imgContainer {
2 | float: right;
3 | max-width: 450px;
4 | margin-left:10px;
5 | text-align: center;
6 | }
7 |
8 | @media (max-width:700px) {
9 | .imgContainer {
10 | min-width: 100%;
11 | }
12 |
13 | .imgContainer img {
14 | max-width: 450px;
15 | }
16 | }
17 |
18 |
19 |
20 | /****************************************************
21 | * Warning & Info Boxes
22 | ****************************************************/
23 | .warning {
24 | background-color:#ab4a00;
25 | color:black;
26 | float: left;
27 | }
28 |
29 | .info {
30 | background-color: rgb(12, 61, 167);
31 | color: rgb(209, 209, 209);
32 | }
33 |
34 | .warning,
35 | .info {
36 | border-radius: 10px;
37 | border: 2px solid black;
38 | padding: 0.7em;
39 | text-align: center;
40 | width: 100%;
41 | max-width: 800px;
42 | margin-left: auto;
43 | margin-right: auto;
44 | }
45 |
46 | @media (max-width:700px) {
47 | .warning,
48 | .info {
49 | width: 100%;
50 | }
51 | }
52 |
53 | .warning .header,
54 | .info .header {
55 | margin-top:1em;
56 | font-weight: bold;
57 | }
58 |
59 | .warning .content,
60 | .info .content {
61 | margin-left: 1em;
62 | }
63 |
64 | /****************************************************
65 | * Changelog Admonition
66 | ****************************************************/
67 |
68 | .md-typeset .admonition.changelog,
69 | .md-typeset details.changelog {
70 | border-color: rgb(0, 0, 0);
71 | }
72 |
73 | .md-typeset .changelog > summary {
74 | font-size: 1.1em;
75 | padding-left: 15px;
76 | }
77 |
78 | .md-typeset .changelog > .admonition-title::before,
79 | .md-typeset .changelog > summary::before {
80 | display: none !important;
81 | }
82 |
83 | /****************************************************
84 | * Color elmnts
85 | ****************************************************/
86 | red {
87 | color: rgb(255, 59, 59);
88 | }
89 |
90 | blue {
91 | color: rgb(75, 75, 255);
92 | }
93 |
94 | yellow {
95 | color: rgb(207, 207, 8);
96 | }
97 |
98 | green {
99 | color: rgb(85, 199, 85)
100 | }
--------------------------------------------------------------------------------
/img/.thumb/MaterialFoundry2560x1440.jpg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/.thumb/MaterialFoundry2560x1440.jpg.jpg
--------------------------------------------------------------------------------
/img/.thumb/MaterialFoundry512x512.png.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/.thumb/MaterialFoundry512x512.png.jpg
--------------------------------------------------------------------------------
/img/.thumb/parchment.jpg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/.thumb/parchment.jpg.jpg
--------------------------------------------------------------------------------
/img/MaterialFoundry2560x1440.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/MaterialFoundry2560x1440.jpg
--------------------------------------------------------------------------------
/img/MaterialFoundry512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/MaterialFoundry512x512.png
--------------------------------------------------------------------------------
/img/icons/.thumb/arrows-alt-solid.png.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/.thumb/arrows-alt-solid.png.jpg
--------------------------------------------------------------------------------
/img/icons/.thumb/compress-arrows-alt-solid.png.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/.thumb/compress-arrows-alt-solid.png.jpg
--------------------------------------------------------------------------------
/img/icons/.thumb/down.png.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/.thumb/down.png.jpg
--------------------------------------------------------------------------------
/img/icons/.thumb/right.png.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/.thumb/right.png.jpg
--------------------------------------------------------------------------------
/img/icons/arrows-alt-solid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/arrows-alt-solid.png
--------------------------------------------------------------------------------
/img/icons/compress-arrows-alt-solid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/compress-arrows-alt-solid.png
--------------------------------------------------------------------------------
/img/icons/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/down.png
--------------------------------------------------------------------------------
/img/icons/right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/icons/right.png
--------------------------------------------------------------------------------
/img/parchment.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MaterialFoundry/LockView/5648665182f1e9847bea254cd43a19286177b3d7/img/parchment.jpg
--------------------------------------------------------------------------------
/lang/en.json:
--------------------------------------------------------------------------------
1 | {
2 | "LOCKVIEW": {
3 | "Help": "Help",
4 | "Settings": {
5 | "ShowHideUI": "Show/Hide UI",
6 | "ShowHideUI_Hint": "Toggle between showing and hiding the UI, if configured in the scene configuration.",
7 | "HideControlButton": "Hide Control Button",
8 | "HideControlButton_Hint": "Hides the Lock View control button.",
9 | "PhysicalGridSize": "Physical Grid Size",
10 | "PhysicalGridSize_Hint": "Configure the real-world dimensions for when using Physical Grid Size. Display Width is the real-world width of your display, while Grid Size is the desired real-world size of the grid. Unit can be millimeter or inches, but the unit must be the same for both settings.",
11 | "PhysicalGridSize_Hint2": "By default these settings are configurable by each user, but the GM can set values that apply to all users.",
12 | "GmGridsize": "Force GM-Set Settings",
13 | "DisplayWidth": "Display Width",
14 | "Gridsize": "Grid Size",
15 | "Documentation": "Documentation",
16 | "Documentation_Hint": "Open the Lock View documentation.",
17 | "CycleViewboxes": "Cycle Viewboxes",
18 | "CycleViewboxes_Hint": "Cycle between viewboxes when Edit Viewbox is enabled.",
19 | "RightClickViewboxDrag": "Right-Drag Viewbox Editing",
20 | "RightClickViewboxDrag_Hint": "Enable editing of viewboxes by dragging with the right mouse button. If enabled, you will not be able to pan or zoom when the 'Edit Viewbox' control is enabled.",
21 | "PingPan": {
22 | "Label": "Pan Canvas to Ping Behavior",
23 | "Hint": "Configure what happens when a Control user uses Pan Canvas to Ping while (zoom and/or pan) locks are applied.",
24 | "Block": "Prevent all locked movement",
25 | "PanOnly": "Allow panning, prevent zooming",
26 | "ZoomOnly": "Allow zooming, prevent panning",
27 | "Any": "Allow all movemement"
28 | }
29 | },
30 | "SetView": {
31 | "Title": "Set View",
32 | "Pan": "Pan",
33 | "Pan_Hint": "Select how to pan the view of the selected users.",
34 | "PanModes": {
35 | "InitialView": "Set to initial view",
36 | "MoveGridSpaces": "Move grid spaces",
37 | "MoveByCoordinates": "Move by coordinates",
38 | "MoveToCoordinates": "Move to coordinates"
39 | },
40 | "Scale": "Scale",
41 | "Scale_Hint": "The scale the view will be set to.",
42 | "Zoom": "Zoom",
43 | "Zoom_Hint": "Select how to zoom the view of the selected users.",
44 | "ZoomModes": {
45 | "DontChange": "Don't Change",
46 | "Set": "Set scale",
47 | "Reset": "Reset to initial viewpoint",
48 | "PhysicalGridSize": "Set to physical grid size"
49 | },
50 | "GridSpaces": "Grid Spaces",
51 | "GridSpaces_Hint": "The amount of grid spaces to move the view to in the X- and Y-direction.",
52 | "Coordinates": "Coordinates",
53 | "Coordinates_Hint": "The center coordinates to move the view to.",
54 | "Apply": "Apply",
55 | "UserHint": "Select users to apply the new view to."
56 | },
57 | "UserConfig": {
58 | "Title": "User Configurator",
59 | "Hint": "Configure how Lock View affects users.",
60 | "Name": "Name",
61 | "Role": "Role",
62 | "Enable": "Enable",
63 | "Enable_Hint": "Enables all of Lock View's functions, except for the functions covered by 'Viewbox' and 'Static'.",
64 | "Viewbox": "Viewbox",
65 | "Viewbox_Hint": "Users with this setting enabled will share their view with 'Control' users, 'Control' users can display this view using the control buttons and change it, which allows them to control the view of other users.",
66 | "Static": "Static",
67 | "Static_Hint": "Static users will not change scenes when, for example, a scene is activated. 'Control' users can change scenes by right-clicking a scene in the scene navigation and selecting \"Pull Static Users\".",
68 | "Control": "Control",
69 | "Control_Hint": "Users with this setting enabled can control Lock View's functions. This includes setting (pan or zoom) locks and changing a user's view using the viewbox.",
70 | "UserSettings": "User Settings",
71 | "UserSettings_Hint": "Configure each user. The \"Default\" settings are applied to new and unconfigured 'Player' and 'Trusted Player' users.",
72 | "Default": "Default"
73 | },
74 | "InitialViewConfig": {
75 | "Title": "Initial View Configurator",
76 | "Hint_A": "Configure the initial view for the scene.",
77 | "Hint_B": "If you are currently viewing the scene, a viewbox will appear that represents the initial view.",
78 | "Hint_C": "The resulting view will vary slightly depending on the display of the user (for example, the aspect ratio). Some 'autoscale' settings will override the initial view scale.",
79 | "CurrentInitialView": "Current Initial View Position",
80 | "NewInitialView": "New Initial View Position",
81 | "SizeInGridSpaces": "Size In Grid Spaces",
82 | "X": "x",
83 | "Y": "y",
84 | "Scale": "Scale",
85 | "SetToPhysicalGridSize": "Set to Physical Grid Size",
86 | "SetToPlayerView": "Set to Player View",
87 | "CaptureView": "Capture View",
88 | "SnapToGrid": "Snap to Grid",
89 | "SnapDir": {
90 | "TopLeft": "Top Left",
91 | "TopRight": "Top Right",
92 | "BottomLeft": "Bottom Left",
93 | "BottomRight": "Bottom Right"
94 | },
95 | "SaveChanges": "Save Changes"
96 | },
97 | "Locks": {
98 | "Label": "Locks",
99 | "Hint": "Configure locks for the scene.",
100 | "PanLock": "Pan Lock",
101 | "PanLock_Hint": "\"Pan Lock\" will prevent panning",
102 | "ZoomLock": "Zoom Lock",
103 | "ZoomLock_Hint": "\"Zoom Lock\" will prevent zooming in or out",
104 | "BoundingBox": "Bounding Box",
105 | "BoundingBox_Hint": "\"Bounding Box\" will lock the view inside a specified box"
106 | },
107 | "ControlButtons": {
108 | "SetView": "Set View",
109 | "PanLock": "Pan Lock",
110 | "ZoomLock": "Zoom Lock",
111 | "BoundingBox": "Bounding Box",
112 | "Viewbox": "Viewbox",
113 | "EditViewbox": "Edit Viewbox"
114 | },
115 | "SceneConfigurator": {
116 | "Title": "Scene Configurator",
117 | "Hint": "Configure Lock View settings for all scenes.",
118 | "Name": "Name",
119 | "Copy": "Copy",
120 | "Copy_Hint": "Copy the scene config for the selected scene",
121 | "Paste": "Paste",
122 | "Paste_Hint": "Apply the copied scene config to the selected scene",
123 | "Reset": "Reset",
124 | "Reset_Hint": "Reset the scene config of the selected scene to the 'Default' scene config",
125 | "Default": "Default",
126 | "Default_Hint": "The 'Default' scene config is applied to new and unconfigured scenes.",
127 | "AppHint": "Configure the Lock View scene settings for each scene. Each row displays the scene config for a scene. Changes are saved and applied immediately."
128 | },
129 | "SceneConfig": {
130 | "Autoscale": {
131 | "Label": "Autoscale",
132 | "Hint": "Automatically scale the view when the scene is loaded.",
133 | "Tooltip": "Automatically scale the view when the scene is loaded.
Horizontal Fit: Scale the view so the scene fits horizontally.
Vertical Fit: Scale the view so the scene fits vertically.
Automatic Fit (Inside): Scale the view so the entire scene fits inside the view (this can mean that the scene background color will be visible).
Automatic Fit (Outside): Scale the view so the entire view is filled with the scene (no background color will be visible, but parts of the scene might be cut off).
Physical Grid Size: Scale the view so the grid corresponds with real-life dimensions.
'${PACKAGE_TITLE}' depends on the 'libWrapper' module, which is not present.
115 |
A fallback implementation will be used, which increases the chance of compatibility issues with other modules.
116 |
'libWrapper' is a library which provides package developers with a simple way to modify core Foundry VTT code, while reducing the likelihood of conflict with other packages.