Compare commits
	
		
			4 Commits
		
	
	
		
			c494156983
			...
			80173d580e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 80173d580e | |||
| 067baf8c72 | |||
| d991d96ecb | |||
| 83dac5289f | 
| @ -1,10 +1,18 @@ | ||||
| import type { ResourceSet } from "./ResourceType"; | ||||
| 
 | ||||
| type ResourceNameType = string | number; | ||||
| type ResourceIdType = string | number | symbol; | ||||
| 
 | ||||
| interface Resource { | ||||
| 
 | ||||
|     type: ResourceSet; | ||||
|     /** | ||||
|      * Unique identification of resource type. | ||||
|      */ | ||||
|     type: ResourceNameType; | ||||
| 
 | ||||
|     id: string | number; | ||||
|     /** | ||||
|      * Unique number of the resource instance. | ||||
|      */ | ||||
|     id: ResourceIdType; | ||||
| } | ||||
| 
 | ||||
| export type { Resource }; | ||||
| export type { Resource, ResourceNameType, ResourceIdType }; | ||||
							
								
								
									
										10
									
								
								packages/renderer-virtual/source/resource/ResourceSet.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								packages/renderer-virtual/source/resource/ResourceSet.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| import type { ShaderResource } from "./ShaderResource"; | ||||
| 
 | ||||
| namespace ResourceName { | ||||
|     export type Shader = ShaderResource["type"]; | ||||
| } | ||||
| 
 | ||||
| type ResourceSet = ShaderResource; | ||||
| type ResourceNameSet = ResourceName.Shader; | ||||
| 
 | ||||
| export type { ResourceName, ResourceNameSet, ResourceSet }; | ||||
| @ -1,9 +0,0 @@ | ||||
| 
 | ||||
| namespace ResourceType { | ||||
| 
 | ||||
|     export type Shader = "SHADER" | 100_001; | ||||
| } | ||||
| 
 | ||||
| type ResourceSet = ResourceType.Shader; | ||||
| 
 | ||||
| export type { ResourceType, ResourceSet }; | ||||
| @ -0,0 +1,8 @@ | ||||
| import type { Resource } from "./Resource"; | ||||
| 
 | ||||
| interface ShaderResource extends Resource { | ||||
| 
 | ||||
|     type: "SHADER" | 100_001; | ||||
| } | ||||
| 
 | ||||
| export type { ShaderResource }; | ||||
| @ -4,4 +4,5 @@ export * from "command/CommandType"; | ||||
| export * from "command/RenderCommand"; | ||||
| export * from "command/ClearCommand"; | ||||
| export * from "resource/Resource"; | ||||
| export * from "resource/ResourceType"; | ||||
| export * from "resource/ResourceSet"; | ||||
| export * from "resource/ShaderResource"; | ||||
| @ -0,0 +1,63 @@ | ||||
| import { Resource, ResourceNameType, ResourceIdType } from "@ray-lab/renderer-virtual"; | ||||
| 
 | ||||
| /** | ||||
|  * Resource processing tools. | ||||
|  * Whenever a new resource setting is received, | ||||
|  * an instance of this class will be instantiated to manage the received resource. | ||||
|  * @typeParam ResourceOption - Resource option type. | ||||
|  */ | ||||
| abstract class ResourceHandler<ResourceOption extends Resource = Resource> { | ||||
| 
 | ||||
|     /** | ||||
|      * Resource type enumeration. | ||||
|      */ | ||||
|     public static resourceType: ResourceNameType; | ||||
|     public static resourceTypeAlias: ResourceNameType; | ||||
| 
 | ||||
|     /** | ||||
|      * Original resource option. | ||||
|      */ | ||||
|     public resourceOption: ResourceOption; | ||||
| 
 | ||||
|     /** | ||||
|      * Resource unique number. | ||||
|      */ | ||||
|     public resourceId: ResourceIdType; | ||||
| 
 | ||||
|     /** | ||||
|      * @param resourceOption - Resource option. | ||||
|      */ | ||||
|     public constructor(resourceOption: ResourceOption) { | ||||
|         this.resourceOption = resourceOption; | ||||
|         this.resourceId = resourceOption.id ?? Symbol(resourceOption.type); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Resource initialization lifecycle. | ||||
|      * It will be called once after `WebGLState` is ready. | ||||
|      */ | ||||
|     public abstract setup(): any; | ||||
| 
 | ||||
|     /** | ||||
|      * Marks whether the instance is destroyed. | ||||
|      */ | ||||
|     public isDestroyed: boolean = false; | ||||
| 
 | ||||
|     /** | ||||
|      * Resource destruction lifecycle. | ||||
|      * Will be called when the resource is destroyed. | ||||
|      */ | ||||
|     public abstract destroy(): any; | ||||
| 
 | ||||
|     /** | ||||
|      * Resource Settings Update Lifecycle. | ||||
|      * Called when the resource settings will to be updated. | ||||
|      * At this time, you can access the old settings through `this.resourceOption`. | ||||
|      *  | ||||
|      * Note: | ||||
|      * You don't need to execute ```this.resourceOption = newResourceOption``` manually, | ||||
|      * The assignment will be done after this function returns. | ||||
|      * @param newResourceOption - New resource option. | ||||
|      */ | ||||
|     public abstract update(newResourceOption: ResourceOption): any; | ||||
| } | ||||
| @ -0,0 +1,8 @@ | ||||
| 
 | ||||
| /** | ||||
|  * Used to manage and process all GL resources. | ||||
|  * Rely on adding `ResourceHandler` to extend functions. | ||||
|  */ | ||||
| class ResourcePool { | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user