KukanRobot - self-contained source distribution
==============================================

Installation
------------
1. Close VaM for this one-time replacement: model locations and the native
   source layout changed. Keep the old folder separately as a backup; do not
   merge several different generations into the new folder.
2. Put the complete outer KukanRobot folder anywhere under Custom/Scripts.
   Example: Custom/Scripts/KukanRobot/KukanRobot.cslist is the entry file.
3. In the existing plugin slot choose that OUTER KukanRobot.cslist.
   Do not load a previous DLL or the internal native service on its own.
4. Select the saved device/attachment as usual. Existing scene/plugin URLs
   still pointing to the previous location must be updated before saving.

Layout
------
KukanRobot/
  KukanRobot.cslist              only visible player entry list
  KukanRobot/
    KukanRobot.cs               main implementation
    KukanResourcePaths.cs       per-loaded-entry resource paths
    [other source files]
    Assets/                    five model/texture bundles
    Native/
      DildoLanguage.cslist      hidden internal service, loaded automatically
      DildoAutoForce.cs         existing adapted controller
      PluginMetadata.cs        relative resource metadata
      src/                     complete embedded DildoLanguage sources
      data/                    sixth bundle (fluid shaders)
      Presets/                 original presets and their thumbnails
    ThirdParty/                original license/credit metadata as text

No standalone installation of Norm.KUKAN.1, Foost.DildoLanguage.19,
B3liar.Flashfuck.1 or CycloneRed.RealFakeVagina.1 is needed to provide this
plugin's built-in catalog resources or source code. Optional integrations
with other plugins, manually selected textures and the rest of a user's scene
are separate content; those are not included or silently downloaded.
Noodle uses assembly data already present in the code and the included Norm
meshes; it does not load a Spacedog VAR at runtime.

Both source lists use only relative references to files included here. The
native service needs a separate compilation unit but is hidden with .hide;
there is only one visible entry for the user. Do not delete the internal list.

VAR packaging
-------------
Add the ENTIRE outer folder under Custom/Scripts to Package Builder, including
Assets, Native/src, Native/data, Native/Presets, both cslist files and .hide
sidecars. Adding only the outer cslist cannot collect dynamically loaded data.
Do not add the four original VARs as dependencies for this embedded catalog.
Do not add the old demo subscenes or stale plugin copies by mistake.

Paths are anchored to each loaded plugin's URL. The current VAR prefix and the
internal folder are retained; no creator name, version, drive letter, Kodeks
or ChatGPT development directory is assumed. The same tree is usable from a
loose folder and from a VAR. A new name/version for the surrounding VAR does
not require source edits. The outer folder may be moved/renamed; retain its
inner KukanRobot, Assets and Native subfolders and their relative structure.

Keep THIRD_PARTY_NOTICES.txt and ThirdParty. Embedded CC BY-SA components must
retain their attribution and applicable terms; see the supplied metadata.

Embedded resource identities
----------------------------
The six owned bundles have private internal IDs so the original Norm, Foost,
B3liar and CycloneRed resources can remain installed. Filesystem names and
resource lookup paths remain unchanged. The embedded Flashfuck scene now uses
Assets/Kukan_Flash01.unity; its loader constant was updated in the same release.
The model, physics and rendered appearance data are otherwise preserved.
See VALIDATION.txt for the prior resource checks and PACKAGING_NOTES.txt
for clean Package Builder preparation. Developer JSON audits are excluded.
Exit VaM before replacing these resource files; restart once for the first test.
Do not load an older loose copy and a new VAR copy together during that test.

Before publication, start a fresh VaM session and test a clean scene using
ONLY the new VAR, with its loose working copy unavailable. A loaded old bundle
or an old native plugin can otherwise obscure which copy is under test. Then
test save/reload, all device/attachment choices and the preset-loading tabs.

Presets and user files
----------------------
Load Preset opens the included read-only preset category. Saving custom presets
still uses the standard writable, game-root-relative Saves/PluginData/Foost
folders, not a path inside a read-only VAR. All 49 supplied presets are included;
four movement presets were supplied without thumbnails and retain that state.
Do not write source/model files from the plugin or copy anything out at runtime.

Unchanged operation
-------------------
Motion, IK, route search, collision rules, stiffness control, insertion guidance,
slider ranges and fixed-size diagnostic panels are not redesigned in this
packaging update. Control handles and joint highlights stay OFF by default;
explicitly saved per-scene settings are still restored.

The bundled native controller retains the latest working project adaptations.
No compiled DLL is supplied. English and Russian editions share the same runtime
logic and assets; the Russian edition adds presentation-only translation.
Use one edition per robot. Do not install both into the same target directory.

Validation
----------
See VALIDATION.txt and RESOURCE_MAP.txt for exactly what was checked. All supplied
archives/resources used here were readable. Offline source/path checks and
UnityFS/serialized-container parsing are NOT C# compilation or a VaM run. The
VaM Package Builder and the final runtime VAR have not been executed here.

Package Builder cleanup
-----------------------
Before preparing an update, remove the obsolete RESOURCE_IDENTITIES.json
from an existing implementation folder. A ZIP merge cannot delete it.
Keep every runtime preset. See PACKAGING_NOTES.txt for the exact steps.
