# lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi architecture

> Architecture diagram of the GitHub repository lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi
- Repository: https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi

## Overview

AnimLink is a Unity animation/tween library: callers create component-specific animations, configure playback, and run them through frame/fixed schedulers; sequences can coordinate animations, delays, and actions. It also includes shake effects, coroutine-based sequence work, and Inspector support for serialized method calls. The tree and excerpts support these runtime relationships, but do not show all scheduler wiring. `main.js` appears to be a separate browser UI script; without its page sources, its interface is represented only by the behavior directly visible in the excerpt.

Main entry points: [`src/AnimLink 0.9.1-beta/Runtime/Core/AnimationCore.cs`](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Core/AnimationCore.cs) (Animation lifecycle), [`src/AnimLink 0.9.1-beta/Runtime/Extension/AnimLinkExtension.cs`](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Extension/AnimLinkExtension.cs) (Animation extensions), [`src/AnimLink 0.9.1-beta/Runtime/Utility/AnimationSequence.cs`](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Utility/AnimationSequence.cs) (Animation sequence), [`main.js`](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/main.js) (Page interactions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Animation API"]
  node_extensions["Animation extensions"]
  node_tweens["Property tweens<br/>[Do]"]
  node_path["Path tween<br/>[DoPath.cs]"]
  node_shake["Shake effects<br/>[Shake]"]
end

subgraph group_playback["Playback Runtime"]
  node_core["Animation lifecycle<br/>[AnimationCore.cs]"]
  node_tweenbase["Tween base"]
  node_framescheduler["Frame scheduler<br/>[FrameScheduler.cs]"]
  node_fixedscheduler["Fixed scheduler<br/>[FixedScheduler.cs]"]
end

subgraph group_sequencing["Sequences &amp; Coroutines"]
  node_sequence["Animation sequence"]
  node_sequenceconfig["Sequence config"]
  node_coroutines["Coroutine scheduler"]
  node_yieldinstructions["Yield instructions"]
  node_functionplus["FunctionPlus calls<br/>[FunctionPlus.cs]"]
end

subgraph group_editor["Inspector Authoring"]
  node_functiondrawer["FunctionPlus inspector"]
  node_methodmetadata["Method metadata"]
end

subgraph group_browser["Browser UI"]
  node_browserui["Page interactions<br/>[main.js]"]
end

node_caller(("Unity caller"))
node_browseruser(("Browser visitor"))
node_browserstorage[("Browser storage")]
node_browserdom["Page DOM"]

node_caller -->|"creates animations"| node_extensions
node_extensions -->|"configures"| node_tweens
node_extensions -->|"configures"| node_path
node_extensions -->|"configures"| node_shake
node_tweens -->|"inherits"| node_tweenbase
node_path -->|"inherits"| node_tweenbase
node_shake -->|"uses lifecycle"| node_core
node_tweenbase -->|"uses lifecycle"| node_core
node_core -->|"starts updates"| node_framescheduler
node_core -->|"starts fixed updates"| node_fixedscheduler
node_caller -->|"builds sequences"| node_sequence
node_sequence -->|"plays animations"| node_core
node_sequence -->|"starts coroutine work"| node_coroutines
node_sequence -->|"invokes configured calls"| node_functionplus
node_coroutines -->|"checks waits"| node_yieldinstructions
node_functiondrawer -->|"serializes method info"| node_methodmetadata
node_functiondrawer -->|"edits configuration"| node_functionplus
node_browseruser -->|"changes preferences"| node_browserui
node_browserui -->|"reads and writes"| node_browserstorage
node_browserui -->|"updates page"| node_browserdom

click node_extensions "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Extension/AnimLinkExtension.cs"
click node_tweens "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/tree/main/src/AnimLink%200.9.1-beta/Runtime/Modules/Do"
click node_path "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Modules/Do/DoPath.cs"
click node_shake "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/tree/main/src/AnimLink%200.9.1-beta/Runtime/Modules/Shake"
click node_core "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Core/AnimationCore.cs"
click node_tweenbase "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Core/AnimationTweenBase.cs"
click node_framescheduler "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Scheduler/FrameScheduler.cs"
click node_fixedscheduler "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Scheduler/FixedScheduler.cs"
click node_sequence "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Utility/AnimationSequence.cs"
click node_sequenceconfig "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Utility/AnimSequenceConfig.cs"
click node_coroutines "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Coroutine/CoroutineScheduler.cs"
click node_yieldinstructions "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Coroutine/YieldInstructions/IYieldInstruction.cs"
click node_functionplus "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Utility/FunctionPlus.cs"
click node_functiondrawer "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Editor/FunctionPlusPropertyDrawer.cs"
click node_methodmetadata "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Serializable/SerializableMethodInfo.cs"
click node_browserui "https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/main.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_extensions,node_tweens,node_path,node_shake,node_browseruser toneBlue
class node_core,node_tweenbase,node_framescheduler,node_fixedscheduler,node_browserstorage toneAmber
class node_sequence,node_sequenceconfig,node_coroutines,node_yieldinstructions,node_functionplus toneMint
class node_functiondrawer,node_methodmetadata toneRose
class node_browserui,node_caller,node_browserdom toneIndigo
```

## Components

### Animation API

- [Animation extensions](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Extension/AnimLinkExtension.cs): `src/AnimLink 0.9.1-beta/Runtime/Extension/AnimLinkExtension.cs`
- [Property tweens](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/tree/main/src/AnimLink%200.9.1-beta/Runtime/Modules/Do): `src/AnimLink 0.9.1-beta/Runtime/Modules/Do`
- [Path tween](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Modules/Do/DoPath.cs): `src/AnimLink 0.9.1-beta/Runtime/Modules/Do/DoPath.cs`
- [Shake effects](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/tree/main/src/AnimLink%200.9.1-beta/Runtime/Modules/Shake): `src/AnimLink 0.9.1-beta/Runtime/Modules/Shake`

### Playback Runtime

- [Animation lifecycle](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Core/AnimationCore.cs): `src/AnimLink 0.9.1-beta/Runtime/Core/AnimationCore.cs`
- [Tween base](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Core/AnimationTweenBase.cs): `src/AnimLink 0.9.1-beta/Runtime/Core/AnimationTweenBase.cs`
- [Frame scheduler](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Scheduler/FrameScheduler.cs): `src/AnimLink 0.9.1-beta/Runtime/Scheduler/FrameScheduler.cs`
- [Fixed scheduler](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Scheduler/FixedScheduler.cs): `src/AnimLink 0.9.1-beta/Runtime/Scheduler/FixedScheduler.cs`

### Sequences & Coroutines

- [Animation sequence](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Utility/AnimationSequence.cs): `src/AnimLink 0.9.1-beta/Runtime/Utility/AnimationSequence.cs`
- [Sequence config](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Utility/AnimSequenceConfig.cs): `src/AnimLink 0.9.1-beta/Runtime/Utility/AnimSequenceConfig.cs`
- [Coroutine scheduler](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Coroutine/CoroutineScheduler.cs): `src/AnimLink 0.9.1-beta/Runtime/Coroutine/CoroutineScheduler.cs`
- [Yield instructions](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Coroutine/YieldInstructions/IYieldInstruction.cs): `src/AnimLink 0.9.1-beta/Runtime/Coroutine/YieldInstructions/IYieldInstruction.cs`
- [FunctionPlus calls](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Utility/FunctionPlus.cs): `src/AnimLink 0.9.1-beta/Runtime/Utility/FunctionPlus.cs`

### Inspector Authoring

- [FunctionPlus inspector](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Editor/FunctionPlusPropertyDrawer.cs): `src/AnimLink 0.9.1-beta/Editor/FunctionPlusPropertyDrawer.cs`
- [Method metadata](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/src/AnimLink%200.9.1-beta/Runtime/Serializable/SerializableMethodInfo.cs): `src/AnimLink 0.9.1-beta/Runtime/Serializable/SerializableMethodInfo.cs`

### Browser UI

- [Page interactions](https://github.com/lklcc1212/progettazione-di-un-plugin-per-sviluppare-videogiochi/blob/main/main.js): `main.js`

### Other components

- **Unity caller**
- **Browser visitor**
- **Browser storage**
- **Page DOM**

## Connections

- Unity caller → Animation extensions: creates animations
- Animation extensions → Property tweens: configures
- Animation extensions → Path tween: configures
- Animation extensions → Shake effects: configures
- Property tweens → Tween base: inherits
- Path tween → Tween base: inherits
- Shake effects → Animation lifecycle: uses lifecycle
- Tween base → Animation lifecycle: uses lifecycle
- Animation lifecycle → Frame scheduler: starts updates
- Animation lifecycle → Fixed scheduler: starts fixed updates
- Unity caller → Animation sequence: builds sequences
- Animation sequence → Animation lifecycle: plays animations
- Animation sequence → Coroutine scheduler: starts coroutine work
- Animation sequence → FunctionPlus calls: invokes configured calls
- Coroutine scheduler → Yield instructions: checks waits
- FunctionPlus inspector → Method metadata: serializes method info
- FunctionPlus inspector → FunctionPlus calls: edits configuration
- Browser visitor → Page interactions: changes preferences
- Page interactions → Browser storage: reads and writes
- Page interactions → Page DOM: updates page
