UNPKG

toosoon-prng-controllers

Version:

This project provides PRNG functions with a set of Controllers for generating pseudo-random values using a seed-based approach and various algorithms

285 lines (284 loc) 11.2 kB
import type { FolderApi as Folder, FolderParams, BindingApi as Binding, BindingParams } from '@tweakpane/core'; /** * Utility abstract class for generating pseudo-random values * * @class PRNGController * @abstract */ export declare abstract class PRNGController<T = unknown> { seed: string; abstract value: T; gui: Binding; constructor(seed: string | number); addGUI(gui: Folder, params?: BindingParams): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; abstract getValue(): T; dispose(): void; } /** * Utility abstract class for managing multiple instances of individual controllers * * @class PRNGGroupController * @abstract */ export declare abstract class PRNGGroupController<T = unknown> { seed: string; controllers: PRNGController<T>[]; gui: Folder; guiParams: BindingParams; constructor(seed: string | number); addGUI(gui: Folder, params?: Partial<FolderParams>): Folder; abstract createController(index: number): PRNGController<T>; getValueAt(index: number): T; dispose(): void; } /** * Utility class for generating pseudo-random boolean value * * @exports * @class BooleanController * @extends PRNGController */ export declare class BooleanController extends PRNGController<boolean> { value: boolean; probability: number; constructor(seed: string | number, probability?: number); getValue(): boolean; } /** * Utility class for generating pseudo-random sign value (-1 or 1) * * @exports * @class SignController * @extends PRNGController */ export declare class SignController extends PRNGController<number> { value: number; probability: number; constructor(seed: string | number, probability?: number); addGUI(gui: Folder, params?: Omit<BindingParams, 'options'>): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): number; } /** * Utility class for generating pseudo-random floating-point number within a specified range * * @exports * @class FloatController * @extends PRNGController */ export declare class FloatController extends PRNGController<number> { value: number; min: number; max: number; constructor(seed: string | number, min?: number, max?: number); addGUI(gui: Folder, { min, max, step, ...params }?: BindingParams): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): number; } /** * Utility class for generating pseudo-random integer number within a specified range * * @exports * @class IntController * @extends PRNGController */ export declare class IntController extends PRNGController<number> { value: number; min: number; max: number; constructor(seed: string | number, min: number, max: number); addGUI(gui: Folder, { min, max, step, ...params }?: BindingParams): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): number; } /** * Utility class for generating pseudo-random hexadecimal color * * @exports * @class HexColorController * @extends PRNGController */ export declare class HexColorController extends PRNGController<string> { value: string; constructor(seed: string | number); addGUI(gui: Folder, { view, ...params }?: BindingParams): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): string; } /** * Utility class for picking a pseudo-random item from a given array * * @exports * @class ItemController * @extends PRNGController */ export declare class ItemController<T = unknown> extends PRNGController<T> { value: T; items: T[]; constructor(seed: string | number, items: T[]); addGUI(gui: Folder, params?: Omit<BindingParams, 'options'>): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): T; } /** * Utility class for picking a pseudo-random property value from a given object * * @exports * @class ObjectPropertyController * @extends PRNGController */ export declare class ObjectPropertyController<T = unknown> extends PRNGController<T> { value: T; object: Record<string, T>; constructor(seed: string | number, object: Record<string, T>); addGUI(gui: Folder, params?: Omit<BindingParams, 'options'>): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): T; } type WeightsItems<T> = Array<{ weight: number; value: T; }>; /** * Utility class for selecting a pseudo-random index from an array of weighted items * * @exports * @class WeightsController * @extends PRNGController */ export declare class WeightsController<T = unknown> extends PRNGController<T> { value: T; items: WeightsItems<T>; weights: number[]; constructor(seed: string | number, items: WeightsItems<T>); addGUI(gui: Folder, params?: Omit<BindingParams, 'options'>): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): T; } /** * Utility class for generating a pseudo-random number fitting a Gaussian (normal) distribution * * @exports * @class GaussianController * @extends PRNGController */ export declare class GaussianController extends PRNGController<number> { value: number; mean: number; spread: number; constructor(seed: string | number, mean?: number, spread?: number); addGUI(gui: Folder, { min, max, step, ...params }?: BindingParams): Binding<unknown, unknown, import("@tweakpane/core/dist/blade/binding/controller/binding").BindingController<unknown, import("@tweakpane/core").ValueController<unknown, import("@tweakpane/core").View, import("@tweakpane/core").Value<unknown>>, import("@tweakpane/core").BindingValue<unknown>>>; getValue(): number; } /** * Utility class for managing multiple `BooleanController` * * @exports * @class BooleanGroupController * @extends PRNGGroupController */ export declare class BooleanGroupController extends PRNGGroupController<boolean> { probability: number; controllers: BooleanController[]; constructor(seed: string | number, probability: number); createController(index: number): BooleanController; } /** * Utility class for managing multiple `SignController` * * @exports * @class SignGroupController * @extends PRNGGroupController */ export declare class SignGroupController extends PRNGGroupController<number> { probability: number; controllers: SignController[]; constructor(seed: string | number, probability: number); createController(index: number): SignController; } /** * Utility class for managing multiple `FloatController` * * @exports * @class FloatGroupController * @extends PRNGGroupController */ export declare class FloatGroupController extends PRNGGroupController<number> { min: number; max: number; controllers: FloatController[]; constructor(seed: string | number, min: number, max: number); createController(index: number): FloatController; } /** * Utility class for managing multiple `IntController` * * @exports * @class IntGroupController * @extends PRNGGroupController */ export declare class IntGroupController extends PRNGGroupController<number> { min: number; max: number; controllers: IntController[]; constructor(seed: string | number, min: number, max: number); createController(index: number): IntController; } /** * Utility class for managing multiple `HexColorController` * * @exports * @class HexColorGroupController * @extends PRNGGroupController */ export declare class HexColorGroupController extends PRNGGroupController<string> { controllers: HexColorController[]; createController(index: number): HexColorController; } /** * Utility class for managing multiple `ItemController` * * @exports * @class ItemGroupController * @extends PRNGGroupController */ export declare class ItemGroupController<T = unknown> extends PRNGGroupController<T> { items: T[]; controllers: ItemController<T>[]; constructor(seed: string | number, items: T[]); createController(index: number): ItemController<T>; } /** * Utility class for managing multiple `ObjectPropertyController` * * @exports * @class ObjectPropertyGroupController * @extends PRNGGroupController */ export declare class ObjectPropertyGroupController<T = unknown> extends PRNGGroupController<T> { object: Record<string, T>; controllers: ObjectPropertyController<T>[]; constructor(seed: string | number, object: Record<string, T>); createController(index: number): ObjectPropertyController<T>; } /** * Utility class for managing multiple `WeightsController` * * @exports * @class WeightsGroupController * @extends PRNGGroupController */ export declare class WeightsGroupController<T = unknown> extends PRNGGroupController<T> { items: WeightsItems<T>; controllers: WeightsController<T>[]; constructor(seed: string | number, items: WeightsItems<T>); createController(index: number): WeightsController<T>; } /** * Utility class for managing multiple `GaussianController` * * @exports * @class GaussianGroupController * @extends PRNGGroupController */ export declare class GaussianGroupController extends PRNGGroupController<number> { controllers: GaussianController[]; mean: number; spread: number; constructor(seed: string | number, mean?: number, spread?: number); createController(index: number): GaussianController; } export {};