npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

com.deucarian.object-selection.core-state-integration

v1.0.2-dev.5

Published

Integration package that synchronizes Deucarian Object Selection and Deucarian Core State selections by shared key.

Readme

Deucarian ObjectSelection CoreState Integration

Overview

Deucarian ObjectSelection CoreState Integration is a standalone Unity package that synchronizes keyed selection between:

  • Deucarian Object Selection
  • Deucarian Core State

ObjectSelection owns world-object selection. CoreState owns data/application selection. This integration only synchronizes shared keys.

Package ID: com.deucarian.object-selection.core-state-integration

Migration note: replace old manifest entries for com.deucarian.object-selection.core-state-bridge with com.deucarian.object-selection.core-state-integration. Current installs use the ObjectSelection-CoreState-Integration.git repository.

Installation

Install the dependencies and this integration through Unity Package Manager:

{
  "dependencies": {
    "com.deucarian.object-selection": "https://github.com/Deucarian/Object-Selection.git#main",
    "com.deucarian.core-state": "https://github.com/Deucarian/Core-State.git#main",
    "com.deucarian.object-selection.core-state-integration": "https://github.com/Deucarian/ObjectSelection-CoreState-Integration.git#main"
  }
}

For local development:

{
  "dependencies": {
    "com.deucarian.object-selection": "file:C:/Repositories/ObjectSelection",
    "com.deucarian.core-state": "file:C:/Repositories/Core-State",
    "com.deucarian.object-selection.core-state-integration": "file:C:/Repositories/Deucarian.ObjectSelection-CoreState-Integration"
  }
}

The integration requires Unity 2021.3 or newer.

Dependencies

  • com.deucarian.object-selection supplies the world-object selection service.
  • com.deucarian.core-state supplies the repository and data-selection contracts.
  • com.deucarian.logging supplies runtime diagnostics for integration and sample categories.

Neither Object Selection nor Core State depends on this integration package.

Logging

This package uses com.deucarian.logging.

ObjectSelection CoreState integration diagnostics use stable package categories: Selection.CoreStateIntegration and Selection.CoreStateIntegration.Samples. Configure Deucarian Logging filters by category and level to isolate integration or sample output. Entries flow through the shared ring buffer for recent-diagnostic inspection and remain compatible with future telemetry sinks.

Core Flow

World object clicked:

ObjectSelectionService<TKey> selects key
-> ObjectSelectionCoreStateIntegration<TKey, T>
-> CoreState ISelectionService<TKey, T> selects key

Data/application selection changed:

CoreState ISelectionService<TKey, T> selects key
-> ObjectSelectionCoreStateIntegration<TKey, T>
-> ObjectSelectionService<TKey> selects key

Public API

ObjectSelectionCoreStateIntegration<TKey, T> subscribes to both selection services and forwards changes by key.

using Deucarian.CoreState;
using Deucarian.ObjectSelection;
using Deucarian.ObjectSelection.CoreStateIntegration;

ObjectSelectionService<string> objectSelection = new ObjectSelectionService<string>(objectRegistry);
ISelectionService<string, ProjectData> coreSelection = new SelectionService<string, ProjectData>(repository);

using var integration = new ObjectSelectionCoreStateIntegration<string, ProjectData>(
    objectSelection,
    coreSelection);

The two-argument constructor binds immediately. You can also control lifecycle explicitly:

var integration = new ObjectSelectionCoreStateIntegration<string, ProjectData>(
    objectSelection,
    coreSelection,
    bindImmediately: false);

integration.Bind();
integration.Unbind();
integration.Dispose();

Behavior

  • If ObjectSelection selects key x, CoreState tries to select key x.
  • If CoreState selects key x, ObjectSelection tries to select key x.
  • If either side clears selection, the other side clears selection.
  • Same-key changes are idempotent.
  • A guard prevents recursive feedback loops.
  • Missing keys are handled with TrySelect and do not throw.
  • The integration does not duplicate selection state.
  • The integration does not use ServiceLocator, singletons, UI Toolkit, UGUI, UIBinding, API, Session, or backend/application code.

Samples

The package contains one sample:

  • Core State Integration Sample: Samples~/CoreStateIntegrationSample/CoreStateIntegrationSample.unity

Open the scene and enter Play Mode. The sample creates a cube, sphere, capsule, and cylinder with matching ObjectSelection keys and CoreState repository keys.

Click a primitive to select it through ObjectSelection and watch CoreState selection update. Use the sample's CoreState buttons to programmatically select data and watch ObjectSelection update the world highlight.

Validation

Run structural validation from the package root:

powershell -ExecutionPolicy Bypass -File ./Tools/Validate-Package.ps1

For Unity validation, use a separate test project that references this package and its dependencies by file path, then run EditMode tests for Deucarian.ObjectSelection.CoreStateIntegration.Tests.

Architecture / Contributor Notes