🆙 added latest changes

This commit is contained in:
duckietm
2024-07-04 15:03:26 +02:00
parent d5a3a05c40
commit bd09ea8b25
116 changed files with 2246 additions and 1794 deletions
+1 -1
View File
@@ -102,7 +102,7 @@ export class RoomRenderer implements IRoomRenderer, IRoomSpriteCanvasContainer
public createCanvas(id: number, width: number, height: number, scale: number): IRoomRenderingCanvas
{
const existing = this._canvases.get(id) as IRoomRenderingCanvas;
const existing = this._canvases.get(id);
if(existing)
{
+53 -48
View File
@@ -84,7 +84,7 @@ export class RoomSpriteCanvas implements IRoomRenderingCanvas
{
const display = new Container();
display.isRenderGroup = true;
display.isRenderGroup = false;
display.cullableChildren = false;
this._master.addChild(display);
@@ -475,11 +475,11 @@ export class RoomSpriteCanvas implements IRoomRenderingCanvas
{
if((index < 0) || (index >= this._spriteCount)) return null;
const sprite = (this._display.getChildAt(index) as ExtendedSprite);
const sprite = (this._display.getChildAt(index));
if(!sprite) return null;
return sprite;
return (sprite as ExtendedSprite);
}
protected getExtendedSpriteIdentifier(sprite: ExtendedSprite): string
@@ -528,6 +528,7 @@ export class RoomSpriteCanvas implements IRoomRenderingCanvas
extendedSprite.label = sprite.name;
extendedSprite.varyingDepth = objectSprite.varyingDepth;
extendedSprite.clickHandling = objectSprite.clickHandling;
extendedSprite.skipMouseHandling = objectSprite.skipMouseHandling;
extendedSprite.filters = objectSprite.filters;
const alpha = (objectSprite.alpha / 255);
@@ -604,6 +605,7 @@ export class RoomSpriteCanvas implements IRoomRenderingCanvas
extendedSprite.label = sprite.name;
extendedSprite.varyingDepth = sprite.varyingDepth;
extendedSprite.clickHandling = sprite.clickHandling;
extendedSprite.skipMouseHandling = sprite.skipMouseHandling;
extendedSprite.blendMode = sprite.blendMode;
extendedSprite.filters = sprite.filters;
@@ -757,61 +759,64 @@ export class RoomSpriteCanvas implements IRoomRenderingCanvas
if(extendedSprite && extendedSprite.containsPoint(new Point((x - extendedSprite.x), (y - extendedSprite.y))))
{
if(extendedSprite.clickHandling && ((type === MouseEventType.MOUSE_CLICK) || (type === MouseEventType.DOUBLE_CLICK)))
if(!extendedSprite.skipMouseHandling)
{
//
}
else
{
const identifier = this.getExtendedSpriteIdentifier(extendedSprite);
if(checkedSprites.indexOf(identifier) === -1)
if(extendedSprite.clickHandling && ((type === MouseEventType.MOUSE_CLICK) || (type === MouseEventType.DOUBLE_CLICK)))
{
const tag = extendedSprite.tag;
//
}
else
{
const identifier = this.getExtendedSpriteIdentifier(extendedSprite);
let mouseData = this._mouseActiveObjects.get(identifier);
if(mouseData)
if(checkedSprites.indexOf(identifier) === -1)
{
if(mouseData.spriteTag !== tag)
{
mouseEvent = this.createMouseEvent(0, 0, 0, 0, MouseEventType.ROLL_OUT, mouseData.spriteTag, altKey, ctrlKey, shiftKey, buttonDown);
const tag = extendedSprite.tag;
let mouseData = this._mouseActiveObjects.get(identifier);
if(mouseData)
{
if(mouseData.spriteTag !== tag)
{
mouseEvent = this.createMouseEvent(0, 0, 0, 0, MouseEventType.ROLL_OUT, mouseData.spriteTag, altKey, ctrlKey, shiftKey, buttonDown);
this.bufferMouseEvent(mouseEvent, identifier);
}
}
if((type === MouseEventType.MOUSE_MOVE) && (!mouseData || (mouseData.spriteTag !== tag)))
{
mouseEvent = this.createMouseEvent(x, y, (x - extendedSprite.x), (y - extendedSprite.y), MouseEventType.ROLL_OVER, tag, altKey, ctrlKey, shiftKey, buttonDown);
}
else
{
mouseEvent = this.createMouseEvent(x, y, (x - extendedSprite.x), (y - extendedSprite.y), type, tag, altKey, ctrlKey, shiftKey, buttonDown);
mouseEvent.spriteOffsetX = extendedSprite.offsetX;
mouseEvent.spriteOffsetY = extendedSprite.offsetY;
}
if(!mouseData)
{
mouseData = new ObjectMouseData();
mouseData.objectId = identifier;
this._mouseActiveObjects.set(identifier, mouseData);
}
mouseData.spriteTag = tag;
if(((type !== MouseEventType.MOUSE_MOVE) || (x !== this._mouseOldX)) || (y !== this._mouseOldY))
{
this.bufferMouseEvent(mouseEvent, identifier);
}
checkedSprites.push(identifier);
}
if((type === MouseEventType.MOUSE_MOVE) && (!mouseData || (mouseData.spriteTag !== tag)))
{
mouseEvent = this.createMouseEvent(x, y, (x - extendedSprite.x), (y - extendedSprite.y), MouseEventType.ROLL_OVER, tag, altKey, ctrlKey, shiftKey, buttonDown);
}
else
{
mouseEvent = this.createMouseEvent(x, y, (x - extendedSprite.x), (y - extendedSprite.y), type, tag, altKey, ctrlKey, shiftKey, buttonDown);
mouseEvent.spriteOffsetX = extendedSprite.offsetX;
mouseEvent.spriteOffsetY = extendedSprite.offsetY;
}
if(!mouseData)
{
mouseData = new ObjectMouseData();
mouseData.objectId = identifier;
this._mouseActiveObjects.set(identifier, mouseData);
}
mouseData.spriteTag = tag;
if(((type !== MouseEventType.MOUSE_MOVE) || (x !== this._mouseOldX)) || (y !== this._mouseOldY))
{
this.bufferMouseEvent(mouseEvent, identifier);
}
checkedSprites.push(identifier);
didHitSprite = true;
}
didHitSprite = true;
}
}
@@ -1,6 +1,6 @@
import { AlphaTolerance } from '@nitrots/api';
import { GetRenderer, TextureUtils } from '@nitrots/utils';
import { GlRenderTarget, Point, RendererType, Sprite, Texture, TextureSource, WebGPURenderer } from 'pixi.js';
import { Point, RendererType, Sprite, Texture, TextureSource, WebGPURenderer } from 'pixi.js';
const BYTES_PER_PIXEL = 4;
@@ -12,6 +12,7 @@ export class ExtendedSprite extends Sprite
private _alphaTolerance: number = AlphaTolerance.MATCH_OPAQUE_PIXELS;
private _varyingDepth: boolean = false;
private _clickHandling: boolean = false;
private _skipMouseHandling: boolean = false;
private _updateId1: number = -1;
private _updateId2: number = -1;
@@ -43,7 +44,7 @@ export class ExtendedSprite extends Sprite
public containsPoint(point: Point): boolean
{
if(!point || (this.alphaTolerance > 255) || !this.texture || (this.texture === Texture.EMPTY) || (this.blendMode !== 'normal')) return false;
if(!point || (this.alphaTolerance > 255) || !this.texture || (this.texture === Texture.EMPTY)) return false;
point = new Point((point.x * this.scale.x), (point.y * this.scale.y));
@@ -92,12 +93,12 @@ export class ExtendedSprite extends Sprite
pixels = TextureUtils.getPixels(new Texture(textureSource))?.pixels ?? null;
}
else if(renderer.type === RendererType.WEBGL)
else if((renderer.type as RendererType) === RendererType.WEBGL)
{
pixels = new Uint8ClampedArray(BYTES_PER_PIXEL * width * height);
const renderTarget = renderer.renderTarget.getRenderTarget(textureSource);
const glRenderTarget = renderer.renderTarget.getGpuRenderTarget(renderTarget) as GlRenderTarget;
const glRenderTarget = renderer.renderTarget.getGpuRenderTarget(renderTarget);
const gl = renderer.gl;
@@ -181,4 +182,14 @@ export class ExtendedSprite extends Sprite
{
this._clickHandling = flag;
}
public get skipMouseHandling(): boolean
{
return this._skipMouseHandling;
}
public set skipMouseHandling(flag: boolean)
{
this._skipMouseHandling = flag;
}
}