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
🆙 Fix Effects (enable)
This commit is contained in:
@@ -0,0 +1,361 @@
|
|||||||
|
export const HabboAvatarActions = {
|
||||||
|
'actions': [
|
||||||
|
{
|
||||||
|
'id': 'Default',
|
||||||
|
'state': 'std',
|
||||||
|
'precedence': 1000,
|
||||||
|
'main': true,
|
||||||
|
'isDefault': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'std',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Lay',
|
||||||
|
'state': 'lay',
|
||||||
|
'precedence': 900,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'laying',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'lay',
|
||||||
|
'prevents': ['sit', 'float', 'swim'],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Float',
|
||||||
|
'state': 'float',
|
||||||
|
'precedence': 850,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'std',
|
||||||
|
'prevents': ['sit', 'lay'],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Swim',
|
||||||
|
'state': 'swim',
|
||||||
|
'precedence': 820,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'swm',
|
||||||
|
'prevents': ['sit', 'lay'],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Sit',
|
||||||
|
'state': 'sit',
|
||||||
|
'precedence': 800,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'sitting',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'sit',
|
||||||
|
'prevents': ['lay', 'float', 'swim'],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Move',
|
||||||
|
'state': 'mv',
|
||||||
|
'precedence': 700,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'wlk',
|
||||||
|
'prevents': ['sit', 'lay'],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Talk',
|
||||||
|
'state': 'talk',
|
||||||
|
'precedence': 600,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'tlk',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Wave',
|
||||||
|
'state': 'wave',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handRight',
|
||||||
|
'assetPartDefinition': 'wav',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Blow',
|
||||||
|
'state': 'blow',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handRight',
|
||||||
|
'assetPartDefinition': 'blw',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Laugh',
|
||||||
|
'state': 'laugh',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'laugh',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Cry',
|
||||||
|
'state': 'cry',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'cry',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Idle',
|
||||||
|
'state': 'idle',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'idle',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Respect',
|
||||||
|
'state': 'respect',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handLeft',
|
||||||
|
'assetPartDefinition': 'respect',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Sign',
|
||||||
|
'state': 'sign',
|
||||||
|
'precedence': 400,
|
||||||
|
'activePartSet': 'handLeft',
|
||||||
|
'assetPartDefinition': 'sig',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Sleep',
|
||||||
|
'state': 'sleep',
|
||||||
|
'precedence': 300,
|
||||||
|
'activePartSet': 'eye',
|
||||||
|
'assetPartDefinition': 'eyb',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Dance',
|
||||||
|
'state': 'dance',
|
||||||
|
'precedence': 500,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': '',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'preventHeadTurn': true,
|
||||||
|
'types': [
|
||||||
|
{
|
||||||
|
'id': 1,
|
||||||
|
'animated': true,
|
||||||
|
'prevents': [],
|
||||||
|
'preventHeadTurn': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 2,
|
||||||
|
'animated': true,
|
||||||
|
'prevents': ['wave', 'cri', 'usei'],
|
||||||
|
'preventHeadTurn': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 3,
|
||||||
|
'animated': true,
|
||||||
|
'prevents': ['wave', 'cri', 'usei'],
|
||||||
|
'preventHeadTurn': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 4,
|
||||||
|
'animated': true,
|
||||||
|
'prevents': ['wave', 'cri', 'usei'],
|
||||||
|
'preventHeadTurn': true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'CarryItem',
|
||||||
|
'state': 'cri',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handRight',
|
||||||
|
'assetPartDefinition': 'crr',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false,
|
||||||
|
'params': [
|
||||||
|
{ 'id': 'default', 'value': '1' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'UseItem',
|
||||||
|
'state': 'usei',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handRight',
|
||||||
|
'assetPartDefinition': 'drk',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'params': [
|
||||||
|
{ 'id': 'default', 'value': '1' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'AvatarEffect',
|
||||||
|
'state': 'fx',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': '',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'startFromFrameZero': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Vote',
|
||||||
|
'state': 'vote',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handLeft',
|
||||||
|
'assetPartDefinition': 'vote',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'Typing',
|
||||||
|
'state': 'typing',
|
||||||
|
'precedence': 100,
|
||||||
|
'activePartSet': 'handLeft',
|
||||||
|
'assetPartDefinition': '',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'RideJump',
|
||||||
|
'state': 'ridejump',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': '',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'startFromFrameZero': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'SnowBoardOllie',
|
||||||
|
'state': 'sbollie',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': '',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'startFromFrameZero': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'SnowBoard360',
|
||||||
|
'state': 'sb360',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': '',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'startFromFrameZero': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'SnowWarRun',
|
||||||
|
'state': 'swrun',
|
||||||
|
'precedence': 700,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'swm',
|
||||||
|
'prevents': ['sit', 'lay'],
|
||||||
|
'animation': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'SnowWarDieFront',
|
||||||
|
'state': 'swdiefront',
|
||||||
|
'precedence': 900,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'std',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'SnowWarDieBack',
|
||||||
|
'state': 'swdieback',
|
||||||
|
'precedence': 900,
|
||||||
|
'main': true,
|
||||||
|
'geometryType': 'vertical',
|
||||||
|
'activePartSet': 'figure',
|
||||||
|
'assetPartDefinition': 'std',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'SnowWarPick',
|
||||||
|
'state': 'swpick',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handRight',
|
||||||
|
'assetPartDefinition': 'crr',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'startFromFrameZero': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'SnowWarThrow',
|
||||||
|
'state': 'swthrow',
|
||||||
|
'precedence': 500,
|
||||||
|
'activePartSet': 'handRight',
|
||||||
|
'assetPartDefinition': 'drk',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': true,
|
||||||
|
'startFromFrameZero': true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'GestureSmile',
|
||||||
|
'state': 'sml',
|
||||||
|
'precedence': 200,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'sml',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'GestureAggravated',
|
||||||
|
'state': 'agr',
|
||||||
|
'precedence': 200,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'agr',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'GestureSurprised',
|
||||||
|
'state': 'srp',
|
||||||
|
'precedence': 200,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'srp',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'GestureSad',
|
||||||
|
'state': 'sad',
|
||||||
|
'precedence': 200,
|
||||||
|
'activePartSet': 'head',
|
||||||
|
'assetPartDefinition': 'sad',
|
||||||
|
'prevents': [],
|
||||||
|
'animation': false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
@@ -885,7 +885,7 @@ export class RoomPlane implements IRoomPlane
|
|||||||
const visibleAvatarIds = new Set<number>();
|
const visibleAvatarIds = new Set<number>();
|
||||||
|
|
||||||
const addReflectionSprite = (texture: Texture, location: IVector3D, alpha: number): boolean => {
|
const addReflectionSprite = (texture: Texture, location: IVector3D, alpha: number): boolean => {
|
||||||
if(!texture || !location || alpha < 0) return false;
|
if(!texture?.source || !location || alpha < 0) return false;
|
||||||
|
|
||||||
const relative = Vector3d.dif(location, this._location);
|
const relative = Vector3d.dif(location, this._location);
|
||||||
const planeDistance = Math.abs(Vector3d.scalarProjection(relative, this._normal));
|
const planeDistance = Math.abs(Vector3d.scalarProjection(relative, this._normal));
|
||||||
@@ -922,7 +922,7 @@ export class RoomPlane implements IRoomPlane
|
|||||||
|
|
||||||
for(const avatar of avatars)
|
for(const avatar of avatars)
|
||||||
{
|
{
|
||||||
if(!avatar?.texture || !avatar.location) continue;
|
if(!avatar?.texture?.source || !avatar.location) continue;
|
||||||
|
|
||||||
let firstSeenAt = this._windowReflectionFirstSeenAt.get(avatar.id);
|
let firstSeenAt = this._windowReflectionFirstSeenAt.get(avatar.id);
|
||||||
|
|
||||||
@@ -955,6 +955,14 @@ export class RoomPlane implements IRoomPlane
|
|||||||
{
|
{
|
||||||
if(visibleAvatarIds.has(id) || this._windowReflectionFadeOut.has(id)) continue;
|
if(visibleAvatarIds.has(id) || this._windowReflectionFadeOut.has(id)) continue;
|
||||||
|
|
||||||
|
if(!lastVisible.texture?.source)
|
||||||
|
{
|
||||||
|
this._windowReflectionLastVisible.delete(id);
|
||||||
|
this._windowReflectionFirstSeenAt.delete(id);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
this._windowReflectionFadeOut.set(id, {
|
this._windowReflectionFadeOut.set(id, {
|
||||||
texture: lastVisible.texture,
|
texture: lastVisible.texture,
|
||||||
location: lastVisible.location,
|
location: lastVisible.location,
|
||||||
|
|||||||
@@ -409,7 +409,7 @@ export class RoomSpriteCanvas implements IRoomRenderingCanvas
|
|||||||
const texture = sprite.texture;
|
const texture = sprite.texture;
|
||||||
const baseTexture = texture && texture.source;
|
const baseTexture = texture && texture.source;
|
||||||
|
|
||||||
if(!texture || !baseTexture) continue;
|
if(!texture || !baseTexture || baseTexture.destroyed) continue;
|
||||||
|
|
||||||
const spriteX = ((x + sprite.offsetX) + this._screenOffsetX);
|
const spriteX = ((x + sprite.offsetX) + this._screenOffsetX);
|
||||||
const spriteY = ((y + sprite.offsetY) + this._screenOffsetY);
|
const spriteY = ((y + sprite.offsetY) + this._screenOffsetY);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export class ExtendedSprite extends Sprite
|
|||||||
|
|
||||||
public setTexture(texture: Texture): void
|
public setTexture(texture: Texture): void
|
||||||
{
|
{
|
||||||
if(!texture) texture = Texture.EMPTY;
|
if(!texture || texture.source?.destroyed) texture = Texture.EMPTY;
|
||||||
|
|
||||||
if(texture === this.texture) return;
|
if(texture === this.texture) return;
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ export class PaletteMapFilter extends Filter
|
|||||||
|
|
||||||
uniform sampler2D uTexture;
|
uniform sampler2D uTexture;
|
||||||
uniform sampler2D uLutTexture;
|
uniform sampler2D uLutTexture;
|
||||||
uniform int channel;
|
uniform int uChannel;
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
vec4 currentColor = texture(uTexture, vTextureCoord);
|
vec4 currentColor = texture(uTexture, vTextureCoord);
|
||||||
@@ -69,15 +69,15 @@ export class PaletteMapFilter extends Filter
|
|||||||
|
|
||||||
if(currentColor.a > 0.0)
|
if(currentColor.a > 0.0)
|
||||||
{
|
{
|
||||||
if(channel == 0)
|
if(uChannel == 0)
|
||||||
{
|
{
|
||||||
adjusted = texture2D(uLutTexture, vec2((currentColor.r * 255.0 + 0.5) / 256.0, 0.5));
|
adjusted = texture(uLutTexture, vec2((currentColor.r * 255.0 + 0.5) / 256.0, 0.5));
|
||||||
} else if(channel == 1) {
|
} else if(uChannel == 1) {
|
||||||
adjusted = texture2D(uLutTexture, vec2((currentColor.g * 255.0 + 0.5) / 256.0, 0.5));
|
adjusted = texture(uLutTexture, vec2((currentColor.g * 255.0 + 0.5) / 256.0, 0.5));
|
||||||
} else if(channel == 2) {
|
} else if(uChannel == 2) {
|
||||||
adjusted = texture2D(uLutTexture, vec2((currentColor.b * 255.0 + 0.5) / 256.0, 0.5));
|
adjusted = texture(uLutTexture, vec2((currentColor.b * 255.0 + 0.5) / 256.0, 0.5));
|
||||||
} else if(channel == 3) {
|
} else if(uChannel == 3) {
|
||||||
adjusted = texture2D(uLutTexture, vec2((currentColor.a * 255.0 + 0.5) / 256.0, 0.5));
|
adjusted = texture(uLutTexture, vec2((currentColor.a * 255.0 + 0.5) / 256.0, 0.5));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ export class PaletteMapFilter extends Filter
|
|||||||
glProgram,
|
glProgram,
|
||||||
resources: {
|
resources: {
|
||||||
paletteMapUniforms: {
|
paletteMapUniforms: {
|
||||||
uChannel: { value: options.channel, type: 'int' }
|
uChannel: { value: options.channel, type: 'i32' }
|
||||||
},
|
},
|
||||||
uLutTexture: lutTexture.source
|
uLutTexture: lutTexture.source
|
||||||
},
|
},
|
||||||
@@ -133,7 +133,7 @@ export class PaletteMapFilter extends Filter
|
|||||||
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_RED] = ((data[i] >> 16) & 0xFF);
|
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_RED] = ((data[i] >> 16) & 0xFF);
|
||||||
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_GREEN] = ((data[i] >> 8) & 0xFF);
|
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_GREEN] = ((data[i] >> 8) & 0xFF);
|
||||||
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_BLUE] = (data[i] & 0xFF);
|
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_BLUE] = (data[i] & 0xFF);
|
||||||
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_ALPHA] = ((data[i] >> 24) & 0xFF);
|
lookUpTable[(i * 4) + PaletteMapFilter.CHANNEL_ALPHA] = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
return lookUpTable;
|
return lookUpTable;
|
||||||
|
|||||||
Reference in New Issue
Block a user