移除Core,新增各接口用于sdk扩展

This commit is contained in:
yhh
2020-12-30 16:28:07 +08:00
parent f934890fac
commit d84ffcc2b7
28 changed files with 2008 additions and 653 deletions

View File

@@ -0,0 +1,30 @@
module es {
export interface IBatcher {
/**
* 创建投影矩阵时要使用的矩阵
*/
transformMatrix: Matrix;
/**
* 如果为true则将在绘制目标位置之前将其四舍五入
*/
shouldRoundDestinations: boolean;
disposed();
begin(effect, transformationMatrix: Matrix, disableBatching: boolean);
end();
prepRenderState();
/**
* 设置是否应忽略位置舍入。在为调试绘制基元时很有用
*/
setIgnoreRoundingDestinations(shouldIgnore: boolean);
drawHollowRect(rect: Rectangle, color: number, thickness?: number);
drawHollowBounds(x: number, y: number, width: number, height: number, color: number, thickness: number);
drawLine(start: Vector2, end: Vector2, color: number, thickness);
drawLineAngle(start: Vector2, radians: number, length: number, color: number, thickness: number);
draw(texture, position: Vector2);
flushBatch();
drawPrimitives(texture, baseSprite: number, batchSize: number);
drawPixel(position: Vector2, color: number, size?: number);
drawPolygon(position: Vector2, points: Vector2[], color: number, closePoly?: boolean, thickness?: number);
drawCircle(position: Vector2, radius: number, color: number, thickness?: number, resolution?: number);
}
}

View File

@@ -0,0 +1,29 @@
module es {
export interface ICamera extends Component {
position: Vector2;
rotation: number;
rawZoom: number;
zoom: number;
minimumZoom: number;
maximumZoom: number;
bounds: Rectangle;
transformMatrix: Matrix2D;
inverseTransformMatrix: Matrix2D;
projectionMatrix: Matrix;
viewprojectionMatrix: Matrix;
origin: Vector2;
setInset(left: number, right: number, top: number, bottom: number): ICamera;
setPosition(position: Vector2): ICamera;
setRotation(rotation: number): ICamera;
setZoom(zoom: number): ICamera;
setMinimumZoom(minZoom: number): ICamera;
setMaximumZoom(maxZoom: number): ICamera;
forceMatrixUpdate();
onEntityTransformChanged(comp: transform.Component);
zoomIn(deltaZoom: number);
zoomOut(deltaZoom: number);
worldToScreenPoint(worldPosition: Vector2): Vector2;
screenToWorldPoint(screenPosition: Vector2): Vector2;
onSceneRenderTargetSizeChanged(newWidth: number, newHeight: number);
}
}

View File

@@ -0,0 +1,32 @@
module es {
/**
* 可选接口,可以添加到任何对象中,用于特殊情况下需要覆盖最终渲染到屏幕。
* 请注意如果有IFinalRenderDelegate存在Scene.screenshotRequestCallback将不会像预期的那样工作。
*/
export interface IFinalRenderDelegate {
/**
* 在添加到场景中时调用
* @param scene
*/
onAddedToScene(scene: Scene);
/**
* 当后置缓冲区大小改变时调用
* @param newWidth
* @param newHeight
*/
onSceneBackBufferSizeChanged(newWidth: number, newHeight: number);
/**
* 这个被场景调用这样就可以处理最终的渲染。渲染应该在finalRenderTarget中完成。
* 在大多数情况下finalRenderTarget将是空的所以渲染将只是到回缓冲区。
* finalRenderTarget只有在场景转换的第一帧时才会被设置其中转换已经请求了上一个场景的渲染
* @param finalRenderTarget
* @param source
* @param finalRenderDestinationRect
*/
handleFinalRender(finalRenderTarget, source, finalRenderDestinationRect: Rectangle);
/**
* 场景结束时调用。在这里释放任何资源
*/
unload();
}
}

View File

@@ -0,0 +1,15 @@
module es {
/**
* 便利的子类有一个单一的属性可以投递Effect使配置更简单
*/
export interface IMaterial {
/**
* Batcher为当前RenderableComponent使用的效果
*/
effect;
dispose();
onPreRender(camera: ICamera);
compareTo(other: IMaterial): number;
clone(): IMaterial;
}
}

View File

@@ -0,0 +1,57 @@
module es {
export interface IRenderer {
/**
* Batcher使用的材料。任何RenderableComponent都可以覆盖它
*/
material: IMaterial;
/**
* 渲染器用于渲染的Camera(实际上是它的transformMatrix和culling的边界)。
* 这是一个方便的字段,不是必需的。
* 渲染器子类可以在调用beginRender时选择使用的摄像机
*/
camera: ICamera;
/**
* 指定场景调用渲染器的顺序
*/
renderOrder: number;
/**
* 如果renderTarget不是空的这个渲染器将渲染到RenderTarget中而不是渲染到屏幕上
*/
renderTexture;
/**
* 标志,决定是否要调试渲染。
* 渲染方法接收一个bool(debugRenderEnabled)让渲染器知道全局调试渲染是否开启/关闭。
* 然后渲染器使用本地的bool来决定是否应该调试渲染
*/
shouldDebugRender: boolean;
/**
* 如果为true场景将使用场景RenderTarget调用SetRenderTarget。
* 如果Renderer有一个renderTexture默认的实现会返回true
*/
wantsToRenderToSceneRenderTarget: boolean;
/**
* 如果为true场景将在所有后处理器完成后调用渲染方法。
* 这必须在调用Scene.addRenderer生效之前设置为true并且Renderer不应该有renderTexture。
* 使用这种类型的渲染器的主要原因是为了让你可以在不进行后期处理的情况下在Scene的其余部分上渲染你的UI。
* ScreenSpaceRenderer是一个将此设置为真的Renderer例子
*/
wantsToRenderAfterPostProcessors: boolean;
/**
* 当Renderer被添加到场景中时被调用
* @param scene
*/
onAddedToScene(scene: Scene);
/**
* 当场景结束或该渲染器从场景中移除时,调用该函数,用于清理
*/
unload();
render(scene: Scene);
/**
* 当默认的场景RenderTarget被调整大小时以及在场景已经开始的情况下添加一个Renderer时会被调用。
* @param newWidth
* @param newHeight
*/
onSceneBackBufferSizeChanged(newWidth: number, newHeight: number);
compare(other: IRenderer): number;
}
}