You've already forked Nitro_Render_V3
mirror of
https://github.com/duckietm/Nitro_Render_V3.git
synced 2026-06-20 15:36:18 +00:00
Merge pull request #11 from Lorenzune/work/wired-sync-20260321
Work/wired sync 20260321
This commit is contained in:
@@ -65,6 +65,7 @@ export interface IRoomEngine
|
|||||||
getFurnitureWallName(typeId: number, extra?: string): string;
|
getFurnitureWallName(typeId: number, extra?: string): string;
|
||||||
selectRoomObject(roomId: number, objectId: number, objectCategory: number): void;
|
selectRoomObject(roomId: number, objectId: number, objectCategory: number): void;
|
||||||
setSelectedAvatar(roomId: number, objectId: number): void;
|
setSelectedAvatar(roomId: number, objectId: number): void;
|
||||||
|
clearSelectedAvatar(roomId: number): void;
|
||||||
cancelRoomObjectInsert(): void;
|
cancelRoomObjectInsert(): void;
|
||||||
getPetColorResult(petIndex: number, paletteIndex: number): IPetColorResult;
|
getPetColorResult(petIndex: number, paletteIndex: number): IPetColorResult;
|
||||||
getPetColorResultsForTag(petIndex: number, tagName: string): IPetColorResult[];
|
getPetColorResultsForTag(petIndex: number, tagName: string): IPetColorResult[];
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,7 @@
|
|||||||
export class OutgoingHeader
|
export class OutgoingHeader
|
||||||
{
|
{
|
||||||
public static CLICK_FURNI = 6002;
|
public static CLICK_FURNI = 6002;
|
||||||
|
public static CLICK_USER = 10020;
|
||||||
|
|
||||||
public static ACHIEVEMENT_LIST = 219;
|
public static ACHIEVEMENT_LIST = 219;
|
||||||
public static AUTHENTICATION = -1;
|
public static AUTHENTICATION = -1;
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import { IMessageComposer } from '@nitrots/api';
|
||||||
|
|
||||||
|
export class ClickUserMessageComposer implements IMessageComposer<ConstructorParameters<typeof ClickUserMessageComposer>>
|
||||||
|
{
|
||||||
|
private _data: ConstructorParameters<typeof ClickUserMessageComposer>;
|
||||||
|
|
||||||
|
constructor(roomUnitId: number)
|
||||||
|
{
|
||||||
|
this._data = [ roomUnitId ];
|
||||||
|
}
|
||||||
|
|
||||||
|
public getMessageArray()
|
||||||
|
{
|
||||||
|
return this._data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public dispose(): void
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ export * from './BotPlaceComposer';
|
|||||||
export * from './BotRemoveComposer';
|
export * from './BotRemoveComposer';
|
||||||
export * from './BotSkillSaveComposer';
|
export * from './BotSkillSaveComposer';
|
||||||
export * from './ClickFurniMessageComposer';
|
export * from './ClickFurniMessageComposer';
|
||||||
|
export * from './ClickUserMessageComposer';
|
||||||
export * from './CompostPlantMessageComposer';
|
export * from './CompostPlantMessageComposer';
|
||||||
export * from './GetItemDataComposer';
|
export * from './GetItemDataComposer';
|
||||||
export * from './HarvestPetMessageComposer';
|
export * from './HarvestPetMessageComposer';
|
||||||
|
|||||||
@@ -2285,8 +2285,6 @@ export class RoomEngine implements IRoomEngine, IRoomCreator, IRoomEngineService
|
|||||||
|
|
||||||
private handleRoomDragging(canvas: IRoomRenderingCanvas, x: number, y: number, type: string, altKey: boolean, ctrlKey: boolean, shiftKey: boolean): boolean
|
private handleRoomDragging(canvas: IRoomRenderingCanvas, x: number, y: number, type: string, altKey: boolean, ctrlKey: boolean, shiftKey: boolean): boolean
|
||||||
{
|
{
|
||||||
if(this.isPlayingGame()) return false;
|
|
||||||
|
|
||||||
if(this._areaSelectionManager.areaSelectionState === RoomAreaSelectionManager.SELECTING)
|
if(this._areaSelectionManager.areaSelectionState === RoomAreaSelectionManager.SELECTING)
|
||||||
{
|
{
|
||||||
this._activeRoomIsDragged = false;
|
this._activeRoomIsDragged = false;
|
||||||
@@ -2521,11 +2519,18 @@ export class RoomEngine implements IRoomEngine, IRoomCreator, IRoomEngineService
|
|||||||
|
|
||||||
public setSelectedAvatar(roomId: number, objectId: number): void
|
public setSelectedAvatar(roomId: number, objectId: number): void
|
||||||
{
|
{
|
||||||
if(this._roomObjectEventHandler) return;
|
if(!this._roomObjectEventHandler) return;
|
||||||
|
|
||||||
this._roomObjectEventHandler.setSelectedAvatar(roomId, objectId, true);
|
this._roomObjectEventHandler.setSelectedAvatar(roomId, objectId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public clearSelectedAvatar(roomId: number): void
|
||||||
|
{
|
||||||
|
if(!this._roomObjectEventHandler) return;
|
||||||
|
|
||||||
|
this._roomObjectEventHandler.clearSelectedAvatar(roomId);
|
||||||
|
}
|
||||||
|
|
||||||
public cancelRoomObjectInsert(): void
|
public cancelRoomObjectInsert(): void
|
||||||
{
|
{
|
||||||
if(!this._roomObjectEventHandler) return;
|
if(!this._roomObjectEventHandler) return;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IFurnitureStackingHeightMap, ILegacyWallGeometry, IObjectData, IRoomCanvasMouseListener, IRoomEngineServices, IRoomGeometry, IRoomObject, IRoomObjectController, IRoomObjectEventManager, ISelectedRoomObjectData, IVector3D, MouseEventType, RoomObjectCategory, RoomObjectOperationType, RoomObjectPlacementSource, RoomObjectType, RoomObjectUserType, RoomObjectVariable } from '@nitrots/api';
|
import { IFurnitureStackingHeightMap, ILegacyWallGeometry, IObjectData, IRoomCanvasMouseListener, IRoomEngineServices, IRoomGeometry, IRoomObject, IRoomObjectController, IRoomObjectEventManager, ISelectedRoomObjectData, IVector3D, MouseEventType, RoomObjectCategory, RoomObjectOperationType, RoomObjectPlacementSource, RoomObjectType, RoomObjectUserType, RoomObjectVariable } from '@nitrots/api';
|
||||||
import { BotPlaceComposer, ClickFurniMessageComposer, FurnitureColorWheelComposer, FurnitureDiceActivateComposer, FurnitureDiceDeactivateComposer, FurnitureFloorUpdateComposer, FurnitureGroupInfoComposer, FurnitureMultiStateComposer, FurnitureOneWayDoorComposer, FurniturePickupComposer, FurniturePlaceComposer, FurniturePostItPlaceComposer, FurnitureRandomStateComposer, FurnitureWallMultiStateComposer, FurnitureWallUpdateComposer, GetCommunication, GetItemDataComposer, GetResolutionAchievementsMessageComposer, PetMoveComposer, PetPlaceComposer, RemoveWallItemComposer, RoomUnitLookComposer, RoomUnitWalkComposer, SetItemDataMessageComposer, SetObjectDataMessageComposer } from '@nitrots/communication';
|
import { BotPlaceComposer, ClickFurniMessageComposer, ClickUserMessageComposer, FurnitureColorWheelComposer, FurnitureDiceActivateComposer, FurnitureDiceDeactivateComposer, FurnitureFloorUpdateComposer, FurnitureGroupInfoComposer, FurnitureMultiStateComposer, FurnitureOneWayDoorComposer, FurniturePickupComposer, FurniturePlaceComposer, FurniturePostItPlaceComposer, FurnitureRandomStateComposer, FurnitureWallMultiStateComposer, FurnitureWallUpdateComposer, GetCommunication, GetItemDataComposer, GetResolutionAchievementsMessageComposer, PetMoveComposer, PetPlaceComposer, RemoveWallItemComposer, RoomUnitLookComposer, RoomUnitWalkComposer, SetItemDataMessageComposer, SetObjectDataMessageComposer } from '@nitrots/communication';
|
||||||
import { GetConfiguration } from '@nitrots/configuration';
|
import { GetConfiguration } from '@nitrots/configuration';
|
||||||
import { GetEventDispatcher, RoomEngineDimmerStateEvent, RoomEngineObjectEvent, RoomEngineObjectPlacedEvent, RoomEngineObjectPlacedOnUserEvent, RoomEngineObjectPlaySoundEvent, RoomEngineRoomAdEvent, RoomEngineSamplePlaybackEvent, RoomEngineTriggerWidgetEvent, RoomEngineUseProductEvent, RoomObjectBadgeAssetEvent, RoomObjectDataRequestEvent, RoomObjectDimmerStateUpdateEvent, RoomObjectEvent, RoomObjectFloorHoleEvent, RoomObjectFurnitureActionEvent, RoomObjectHSLColorEnableEvent, RoomObjectHSLColorEnabledEvent, RoomObjectMouseEvent, RoomObjectMoveEvent, RoomObjectPlaySoundIdEvent, RoomObjectRoomAdEvent, RoomObjectSamplePlaybackEvent, RoomObjectSoundMachineEvent, RoomObjectStateChangedEvent, RoomObjectTileMouseEvent, RoomObjectWallMouseEvent, RoomObjectWidgetRequestEvent, RoomSpriteMouseEvent } from '@nitrots/events';
|
import { GetEventDispatcher, RoomEngineDimmerStateEvent, RoomEngineObjectEvent, RoomEngineObjectPlacedEvent, RoomEngineObjectPlacedOnUserEvent, RoomEngineObjectPlaySoundEvent, RoomEngineRoomAdEvent, RoomEngineSamplePlaybackEvent, RoomEngineTriggerWidgetEvent, RoomEngineUseProductEvent, RoomObjectBadgeAssetEvent, RoomObjectDataRequestEvent, RoomObjectDimmerStateUpdateEvent, RoomObjectEvent, RoomObjectFloorHoleEvent, RoomObjectFurnitureActionEvent, RoomObjectHSLColorEnableEvent, RoomObjectHSLColorEnabledEvent, RoomObjectMouseEvent, RoomObjectMoveEvent, RoomObjectPlaySoundIdEvent, RoomObjectRoomAdEvent, RoomObjectSamplePlaybackEvent, RoomObjectSoundMachineEvent, RoomObjectStateChangedEvent, RoomObjectTileMouseEvent, RoomObjectWallMouseEvent, RoomObjectWidgetRequestEvent, RoomSpriteMouseEvent } from '@nitrots/events';
|
||||||
import { GetRoomSessionManager, GetSessionDataManager } from '@nitrots/session';
|
import { GetRoomSessionManager, GetSessionDataManager } from '@nitrots/session';
|
||||||
@@ -10,6 +10,7 @@ import { SelectedRoomObjectData } from './utils';
|
|||||||
|
|
||||||
export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomObjectEventManager
|
export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomObjectEventManager
|
||||||
{
|
{
|
||||||
|
private static readonly CLICK_USER_LOOK_DELAY_MS = 120;
|
||||||
private _eventIds: Map<number, Map<string, string>> = new Map();
|
private _eventIds: Map<number, Map<string, string>> = new Map();
|
||||||
|
|
||||||
private _selectedAvatarId: number = -1;
|
private _selectedAvatarId: number = -1;
|
||||||
@@ -17,6 +18,7 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
|||||||
private _selectedObjectCategory: number = -2;
|
private _selectedObjectCategory: number = -2;
|
||||||
private _whereYouClickIsWhereYouGo: boolean = true;
|
private _whereYouClickIsWhereYouGo: boolean = true;
|
||||||
private _objectPlacementSource: string = null;
|
private _objectPlacementSource: string = null;
|
||||||
|
private _pendingAvatarLookTimeout: ReturnType<typeof setTimeout> = null;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly _roomEngine: IRoomEngineServices)
|
private readonly _roomEngine: IRoomEngineServices)
|
||||||
@@ -297,7 +299,7 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private clickRoomObject(event: RoomObjectMouseEvent): void
|
private clickRoomObject(event: RoomObjectMouseEvent, operation: string): void
|
||||||
{
|
{
|
||||||
if(!event || event.altKey || event.ctrlKey || event.shiftKey) return;
|
if(!event || event.altKey || event.ctrlKey || event.shiftKey) return;
|
||||||
|
|
||||||
@@ -319,20 +321,25 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((category === RoomObjectCategory.UNIT) && (operation === RoomObjectOperationType.OBJECT_UNDEFINED) && (objectType === RoomObjectUserType.USER))
|
||||||
|
{
|
||||||
|
GetCommunication().connection.send(new ClickUserMessageComposer(objectId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleRoomObjectMouseClickEvent(event: RoomObjectMouseEvent, roomId: number): void
|
private handleRoomObjectMouseClickEvent(event: RoomObjectMouseEvent, roomId: number): void
|
||||||
{
|
{
|
||||||
if(!event) return;
|
if(!event) return;
|
||||||
|
|
||||||
this.clickRoomObject(event);
|
|
||||||
|
|
||||||
let operation = RoomObjectOperationType.OBJECT_UNDEFINED;
|
let operation = RoomObjectOperationType.OBJECT_UNDEFINED;
|
||||||
|
|
||||||
const selectedData = this.getSelectedRoomObjectData(roomId);
|
const selectedData = this.getSelectedRoomObjectData(roomId);
|
||||||
|
|
||||||
if(selectedData) operation = selectedData.operation;
|
if(selectedData) operation = selectedData.operation;
|
||||||
|
|
||||||
|
this.clickRoomObject(event, operation);
|
||||||
|
|
||||||
let didWalk = false;
|
let didWalk = false;
|
||||||
let didMove = false;
|
let didMove = false;
|
||||||
|
|
||||||
@@ -2075,6 +2082,8 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
|||||||
{
|
{
|
||||||
if(!this._roomEngine) return;
|
if(!this._roomEngine) return;
|
||||||
|
|
||||||
|
this.clearPendingAvatarLook();
|
||||||
|
|
||||||
const _local_4 = RoomObjectCategory.UNIT;
|
const _local_4 = RoomObjectCategory.UNIT;
|
||||||
const _local_5 = this._roomEngine.getRoomObject(k, this._selectedAvatarId, _local_4);
|
const _local_5 = this._roomEngine.getRoomObject(k, this._selectedAvatarId, _local_4);
|
||||||
|
|
||||||
@@ -2101,7 +2110,18 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
|||||||
|
|
||||||
const location = _local_5.getLocation();
|
const location = _local_5.getLocation();
|
||||||
|
|
||||||
if(location) GetCommunication().connection.send(new RoomUnitLookComposer(~~(location.x), ~~(location.y)));
|
if(location)
|
||||||
|
{
|
||||||
|
this._pendingAvatarLookTimeout = setTimeout(() =>
|
||||||
|
{
|
||||||
|
this._pendingAvatarLookTimeout = null;
|
||||||
|
|
||||||
|
if(this.shouldSuppressAvatarLook()) return;
|
||||||
|
if(this._selectedAvatarId !== _arg_2) return;
|
||||||
|
|
||||||
|
GetCommunication().connection.send(new RoomUnitLookComposer(~~(location.x), ~~(location.y)));
|
||||||
|
}, RoomObjectEventHandler.CLICK_USER_LOOK_DELAY_MS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2114,6 +2134,26 @@ export class RoomObjectEventHandler implements IRoomCanvasMouseListener, IRoomOb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public clearSelectedAvatar(roomId: number): void
|
||||||
|
{
|
||||||
|
this.setSelectedAvatar(roomId, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private clearPendingAvatarLook(): void
|
||||||
|
{
|
||||||
|
if(!this._pendingAvatarLookTimeout) return;
|
||||||
|
|
||||||
|
clearTimeout(this._pendingAvatarLookTimeout);
|
||||||
|
this._pendingAvatarLookTimeout = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private shouldSuppressAvatarLook(): boolean
|
||||||
|
{
|
||||||
|
const control = (globalThis as any).__nitroAvatarClickControl;
|
||||||
|
|
||||||
|
return !!control && (control.suppressRotateUntil > Date.now());
|
||||||
|
}
|
||||||
|
|
||||||
private resetSelectedObjectData(roomId: number): void
|
private resetSelectedObjectData(roomId: number): void
|
||||||
{
|
{
|
||||||
if(!this._roomEngine) return;
|
if(!this._roomEngine) return;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export class RoomChatHandler extends BaseHandler
|
|||||||
|
|
||||||
if(!parser) return;
|
if(!parser) return;
|
||||||
|
|
||||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.giverUserId, '', RoomSessionChatEvent.CHAT_TYPE_HAND_ITEM_RECEIVED, SystemChatStyleEnum.GENERIC, [], parser.handItemType));
|
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.giverUserId, '', RoomSessionChatEvent.CHAT_TYPE_HAND_ITEM_RECEIVED, SystemChatStyleEnum.GENERIC, [], null, parser.handItemType));
|
||||||
}
|
}
|
||||||
|
|
||||||
private onRespectReceivedEvent(event: RespectReceivedEvent): void
|
private onRespectReceivedEvent(event: RespectReceivedEvent): void
|
||||||
@@ -136,7 +136,7 @@ export class RoomChatHandler extends BaseHandler
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, petData.roomIndex, '', chatType, SystemChatStyleEnum.GENERIC, null, userRoomIndex));
|
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, petData.roomIndex, '', chatType, SystemChatStyleEnum.GENERIC, [], null, userRoomIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
private onFloodControlEvent(event: FloodControlEvent): void
|
private onFloodControlEvent(event: FloodControlEvent): void
|
||||||
@@ -168,6 +168,6 @@ export class RoomChatHandler extends BaseHandler
|
|||||||
|
|
||||||
if(!parser) return;
|
if(!parser) return;
|
||||||
|
|
||||||
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, session.ownRoomIndex, '', RoomSessionChatEvent.CHAT_TYPE_MUTE_REMAINING, SystemChatStyleEnum.GENERIC, [], parser.seconds));
|
GetEventDispatcher().dispatchEvent(new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, session.ownRoomIndex, '', RoomSessionChatEvent.CHAT_TYPE_MUTE_REMAINING, SystemChatStyleEnum.GENERIC, [], null, parser.seconds));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,13 +63,14 @@ export class WiredFilter extends Filter
|
|||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
vec4 currentColor = texture(uTexture, vTextureCoord);
|
vec4 currentColor = texture(uTexture, vTextureCoord);
|
||||||
vec3 colorLine = uLineColor * currentColor.a;
|
vec3 colorLine = uLineColor;
|
||||||
vec3 colorOverlay = uColor * currentColor.a;
|
vec3 colorOverlay = uColor;
|
||||||
|
|
||||||
if(currentColor.r == 0.0 && currentColor.g == 0.0 && currentColor.b == 0.0 && currentColor.a > 0.0) {
|
if(currentColor.r == 0.0 && currentColor.g == 0.0 && currentColor.b == 0.0 && currentColor.a > 0.0) {
|
||||||
finalColor = vec4(colorLine.r, colorLine.g, colorLine.b, currentColor.a);
|
finalColor = vec4(colorLine.r, colorLine.g, colorLine.b, currentColor.a);
|
||||||
} else if(currentColor.a > 0.0) {
|
} else if(currentColor.a > 0.0) {
|
||||||
finalColor = vec4(colorOverlay.r, colorOverlay.g, colorOverlay.b, currentColor.a);
|
vec3 blendedOverlay = mix(currentColor.rgb, colorOverlay, 0.28);
|
||||||
|
finalColor = vec4(blendedOverlay.r, blendedOverlay.g, blendedOverlay.b, currentColor.a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
|
|||||||
Reference in New Issue
Block a user