Skip to content

Releases: lucas-martinic/polyfork-unity-connector

v0.15.2 — the slider actually drives the model now

Choose a tag to compare

@lucas-martinic lucas-martinic released this 15 Aug 10:54

The model still only updated when the slider stopped. 0.15.1 fixed one half of this and it wasn't enough, because both halves were wrong.

The scheduler was a debounce: every knob change assigned _rebuildAt = now + delay, pushing the deadline forward with the input. A deadline that moves every time you move the slider never arrives until you stop — which is the symptom exactly.

It now keeps the earliest pending deadline, making the same 250 ms a cap on how often a metered rebuild fires rather than a wait for silence. The local path is unaffected; its delay was already zero.

v0.15.1 — the model follows the slider

Choose a tag to compare

@lucas-martinic lucas-martinic released this 15 Aug 10:41

The model only rebuilt when you let go of the slider. The rebuild was kicked from EditorApplication.update, and dragging an IMGUI control runs a drag loop that starves the editor tick — so nothing started until the drag ended. The bake was never the problem: it measures 20–140 ms end to end. It just wasn't being asked for until too late. OnGUI now kicks a pending rebuild too.

Camera damping was frame-rate dependent, and the editor isn't 60fps. A fixed fraction per editor tick made a glide that ran for as long as the ticks took, which read as the whole preview having got slower. Now exponential smoothing against real elapsed time, settling in about a sixth of a second whatever the tick rate.

v0.15.0 — rigged assets cast shadows, website camera feel

Choose a tag to compare

@lucas-martinic lucas-martinic released this 15 Aug 10:28

Fixed

  • Rigged assets cast no shadow. The shark had none, the sea anemone did, and the difference was the rig: the planar shadow walked MeshRenderer, and a rigged asset draws through a SkinnedMeshRenderer — a Renderer, but not a MeshRenderer. Every character and fish was skipped.
  • The same blind spot leaked a mesh per rebuild on those assets.

Changed

  • The preview camera moves like the one on polyfork.dev. viewer.js runs OrbitControls with enableDamping; this moved instantly and stopped dead. Input now sets a target the camera eases towards, repainting only while it glides. A drag of the preview's full height is one revolution, as OrbitControls does it. Zoom clamps to 0.35x–2.5x the framing distance, matching minDistance/maxDistance in viewer.js.

v0.14.3 — shader fallback no longer picks a destroyed shader

Choose a tag to compare

@lucas-martinic lucas-martinic released this 15 Aug 10:25

Shader.Find(a) ?? Shader.Find(b) is the Unity fake-null trap: Unity overloads == so a destroyed object reports as null, but ?? doesn't use that overload. A destroyed-but-not-null result won the chain and gave a material whose shader has no ShadowCaster pass — an object that renders and casts nothing.

Each candidate is now tested with ==, and falling back off the package's own vertex-colour shader logs a warning, since it costs the colours and the shadow together.

v0.14.2 — empty gallery on first open, honest bake timing

Choose a tag to compare

@lucas-martinic lucas-martinic released this 15 Aug 10:22

Fixes the gallery opening empty until you press Refresh, and makes the bake timing measure what you actually wait for.

  • Empty until Refresh. OnEnable starts the catalogue load, and a window Unity creates then immediately re-parents runs OnDisable in between, cancelling that request. The window now retries while the catalogue has never been answered, and treats a real failure as settled so a down network doesn't loop.
  • "21 ms" was a tenth of the wait. That figure covers running the module and decoding its payload. Building the meshes, swapping the preview and freeing the old ones were unmeasured. Now reported end to end, with the split in the tooltip.

v0.14.1 — compiles clean, dependency check fixed

Choose a tag to compare

@lucas-martinic lucas-martinic released this 14 Aug 20:23

Same package id as 0.14.0 (dev.polyfork.unity-connector), so no re-install dance — this is the build to submit.

Fixed

  • A false "missing required packages" error on a perfectly good install. The check compared AppDomain assembly names against the names our asmdefs reference, and those are different questions: com.unity.nuget.newtonsoft-json ships its code as a precompiled Newtonsoft.Json assembly, so the asmdef reference Unity.Nuget.Newtonsoft-Json resolves at compile time while no assembly by that name is ever loaded. It asks the package manager now.

Changed

  • Compiles with no warnings, which the Asset Store expects of a submission.
    • The two from vendored PuerTS (unused catch variable in JsEnv, unused field in PathHelper) are silenced by a csc.rsp beside the vendored asmdef — that assembly only, so our own code keeps every warning it had.
    • The two JsEnv obsolete warnings are suppressed at the two lines that raise them. ScriptEnv is not a rename: JsEnv's constructor checks the native papi version and calls PuertsNative.SetLogCallback, which is what puts a JS console.log or exception into Unity's Console. Constructing a ScriptEnv directly would trade a warning for silent JS errors.

v0.14.0 — package id is dev.polyfork.unity-connector

Choose a tag to compare

@lucas-martinic lucas-martinic released this 14 Aug 14:26

Important

The package id is now dev.polyfork.unity-connector, matching the product namespace claimed in the Publisher Portal.

Already installed? Remove the package and add the git URL again, from com.polyfork.connector (0.12.x and earlier) or dev.polyfork.connector (0.13.0). Unity keys a manifest entry by the package's own name, so neither resolves this one and Polyfork ▸ Update Package cannot cross a rename.

Assembly names, C# namespaces and every asset GUID are untouched, so scenes, prefabs and script references survive it. The repository keeps its name, so the git URL is unchanged.

On the namespace

dev.polyfork is derived from the verified polyfork.dev domain and is not a choice. The bare segment dev.polyfork.unity is refused with "This namespace is already in use by another product" — impossible under a publisher-scoped namespace, so it is a reserved word rather than a collision. unity-connector is accepted, so the reservation is on the exact segment, not on any segment containing the word.

Artifacts

File For
Polyfork-UPM.zip The Asset Store submission. Unzip into <project>/Packages/, then Validator (type: UPM) and Uploader ▸ UPM Packages.
Polyfork.unitypackage Outside the store. Install glTFast and Newtonsoft first.
Polyfork-AssetStore-source.zip The Assets/ folder layout.
Git URL https://github.com/lucas-martinic/polyfork-unity-connector.git

v0.13.0 — package id is now dev.polyfork.connector

Choose a tag to compare

@lucas-martinic lucas-martinic released this 14 Aug 13:57

Important

The package id changed: com.polyfork.connectordev.polyfork.connector.

If you already have it installed, remove the package and add the git URL again. Unity keys a manifest entry by the package's own name, so an old entry cannot resolve the renamed package and Polyfork ▸ Update Package cannot carry you across it.

Nothing else moves: assembly names, C# namespaces and every asset GUID are untouched, so scenes, prefabs and script references survive the rename.

Why

Asset Store UPM publishing derives the publisher namespace from the domain you verify, so polyfork.dev gives dev.polyfork, and the uploader rejects a package whose name does not match the reserved technical name. com.polyfork.* was a small lie anyway; it claims a domain we don't own.

Renamed everywhere rather than only in the store build, because a store build that differs from the normal one in something load-bearing has already cost this project two review cycles.

Artifacts

File For
Polyfork-UPM.zip The Asset Store submission. Unzip into <project>/Packages/, then Validator (type: UPM) and Uploader ▸ UPM Packages.
Polyfork.unitypackage Distribution outside the store. Install glTFast and Newtonsoft first.
Polyfork-AssetStore-source.zip The Assets/ folder layout.
Git URL https://github.com/lucas-martinic/polyfork-unity-connector.git

v0.12.3 — Asset Store submission build

Choose a tag to compare

@lucas-martinic lucas-martinic released this 14 Aug 13:53

The Asset Store submission is a UPM package, not a .unitypackage. Same code; the difference is that package.json declares glTFast and Newtonsoft JSON and Package Manager installs them for the buyer. A .unitypackage carries no dependency information at all, so that route makes every buyer install two packages by hand before anything compiles.

For the submission

Polyfork-UPM.zip unzips into <project>/Packages/ so the manifest lands at Packages/com.polyfork.connector/package.json. Then Window ▸ Tools ▸ Asset Store ▸ Validator (Validation Type: UPM), and Uploader ▸ UPM Packages.

It is the store build: Polyfork ▸ Update Package is stripped, because re-adding this package from its git URL is programmatic package manipulation under 2.5.1.e.

Fixed

  • The test assembly compiled in consumer projects. Polyfork.Connector.Tests references UnityEngine.TestRunner, UnityEditor.TestRunner and nunit.framework.dll, all from com.unity.test-framework, with no define constraint — so a project without Test Framework got unresolved references out of a package it never asked to test. Now gated on UNITY_INCLUDE_TESTS, which Unity sets only for a package in the project's testables. This never reached the .unitypackage, which excludes Tests/, so it was specific to UPM and git installs, which is now the format being shipped.
  • The store build no longer carries .github or .gitignore.

Other artifacts

File For
Polyfork.unitypackage Distribution outside the store. Install glTFast and Newtonsoft first.
Polyfork-AssetStore-source.zip The Assets/ folder layout, if you ever need Unity to export a .unitypackage.
Git URL https://github.com/lucas-martinic/polyfork-unity-connector.git, resolves dependencies on its own.

v0.12.2 — dependency guidance

Choose a tag to compare

@lucas-martinic lucas-martinic released this 14 Aug 12:25

Installing from Package Manager needs nothing extra

The git URL — and an Asset Store UPM purchase — reads package.json and installs glTFast and Newtonsoft JSON for you.

https://github.com/lucas-martinic/polyfork-unity-connector.git

Installing from a .unitypackage needs both first

That format carries no dependency information at all; it is a bag of files, not a manifest. Add these two before importing, with Window ▸ Package Manager ▸ + ▸ Install package by name. Both are free and come from Unity's own registry.

com.unity.cloud.gltfast
com.unity.nuget.newtonsoft-json

Forget, and the Console now tells you exactly which one is missing and why, instead of showing a wall of unresolved-reference errors. That check lives in an assembly that references nothing, so it is the one part of the connector that still compiles when the dependencies are absent.

Still applies

  • Remove com.tencent.puerts.core and com.tencent.puerts.quickjs when upgrading from 0.11 or earlier.
  • Install one way, not two: matching GUIDs mean a project with both gets two copies of every assembly.