Weaver v1.0

  • New Asset Linker system.
  • Massive changes and improvements in all areas from the old Procedural Asset Framework system.

Upgrading from the Procedural Asset Framework

Weaver is a revolutionary upgrade from the Procedural Asset Framework; the focus has been shifted from procedural assets towards the use of the new Asset Linker system and Procedural Assets themselves have undergone drastic structural changes. This new system is better in almost every way: it’s easier to learn and to use, there’s less code to write which makes it faster to set up and modify, accessing an asset is as simple as using a regular static field, and it executes faster as well.

This section is a guide on how to deal with the major changes if you’re upgrading from the old system.

While Weaver is distributed as a separate product, this is not an attempt to double charge anyone who purchased the Procedural Asset Framework. To upgrade, simply email your Invoice Number to mail@kybernetik.com.au and you will receive a free voucher for Weaver.

The biggest change is the way Procedural Assets are declared: instead of making a new class, you just make a field and a method. Both of the following examples would generate a prefab at Assets/Resources/Player.prefab. You no longer need to specify a name and the asset isn't tied to a specific file path after it is generated.

// Procedural Asset Framework.
public class Player : Procedural.Prefab
{
    public override string Name { get { return "Player"; } }

    protected override void Generate()
    {
        // ...
    }
}

// Weaver.
[AssetReference]
[ProceduralAsset]
public static readonly GameObject Player;

private static GameObject GeneratePlayer()
{
    // ...
}

With the change in declaration comes a change in the way you access procedural assets in code. Instead of using Static<Player>.Instance to access the asset, you just reference the Player field directly. Instead of using Prefab.Instantiate<Player>(), you just use the regular Object.Instantiate method.

Weaver also handles Procedural Asset Dependencies differently. Instead of using a TypeDependency attribute to manually specify a dependency, they are automatically detected and enforced by the system.

The Asset Injection system now handles everything Procedural.ManualAsset did as well as being used for procedural assets.