mirror of
https://github.com/catfoolyou/Alpha-1.1.2_01.git
synced 2025-06-03 21:20:57 -05:00
Compile
This commit is contained in:
parent
e042c6ff4b
commit
e0dded89fb
@ -1,2 +1,2 @@
|
||||
#!/bin/sh
|
||||
java -Xmx4G -Xms4G -Djava.library.path=. -cp "eaglercraft.jar:UnsafeMemcpy.jar:lwjgl.jar:lwjgl-egl.jar:lwjgl-glfw.jar:lwjgl-jemalloc.jar:lwjgl-openal.jar:lwjgl-opengles.jar:soundsystem-20120107.jar:codecjorbis-20101023.jar:codecwav-20101023.jar:Java-WebSocket-1.5.1-with-dependencies.jar" net.lax1dude.eaglercraft.internal.LWJGLEntryPoint
|
||||
java -Xmx4G -Xms4G -Djava.library.path=. -cp "eaglercraft.jar:UnsafeMemcpy.jar:lwjgl.jar:lwjgl-egl.jar:lwjgl-glfw.jar:lwjgl-jemalloc.jar:lwjgl-openal.jar:lwjgl-opengles.jar:soundsystem-20120107.jar:codecjorbis-20101023.jar:codecwav-20101023.jar:Java-WebSocket-1.5.1-with-dependencies.jar" net.lax1dude.eaglercraft.internal.MainClass
|
||||
|
BIN
lwjgl-rundir/eaglercraft.jar
Normal file
BIN
lwjgl-rundir/eaglercraft.jar
Normal file
Binary file not shown.
BIN
lwjgl-rundir/resources/assets/eagler/audioctx_test_ogg.dat
Normal file
BIN
lwjgl-rundir/resources/assets/eagler/audioctx_test_ogg.dat
Normal file
Binary file not shown.
BIN
lwjgl-rundir/resources/assets/eagler/audioctx_test_wav16.dat
Normal file
BIN
lwjgl-rundir/resources/assets/eagler/audioctx_test_wav16.dat
Normal file
Binary file not shown.
BIN
lwjgl-rundir/resources/assets/eagler/audioctx_test_wav32f.dat
Normal file
BIN
lwjgl-rundir/resources/assets/eagler/audioctx_test_wav32f.dat
Normal file
Binary file not shown.
BIN
lwjgl-rundir/resources/assets/eagler/eagtek.png
Normal file
BIN
lwjgl-rundir/resources/assets/eagler/eagtek.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
32
lwjgl-rundir/resources/assets/eagler/glsl/accel_font.fsh
Normal file
32
lwjgl-rundir/resources/assets/eagler/glsl/accel_font.fsh
Normal file
@ -0,0 +1,32 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_IN(vec2, v_texCoord2f)
|
||||
EAGLER_IN(vec4, v_color4f)
|
||||
|
||||
EAGLER_FRAG_OUT()
|
||||
|
||||
uniform sampler2D u_inputTexture;
|
||||
uniform vec4 u_colorBias4f;
|
||||
|
||||
void main() {
|
||||
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, v_texCoord2f) * v_color4f + u_colorBias4f;
|
||||
if(EAGLER_FRAG_COLOR.a < 0.004) {
|
||||
discard;
|
||||
}
|
||||
}
|
50
lwjgl-rundir/resources/assets/eagler/glsl/accel_font.vsh
Normal file
50
lwjgl-rundir/resources/assets/eagler/glsl/accel_font.vsh
Normal file
@ -0,0 +1,50 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_VSH_LAYOUT_BEGIN()
|
||||
EAGLER_IN(0, vec3, a_position3f)
|
||||
EAGLER_IN(1, vec2, c_position2i)
|
||||
EAGLER_IN(2, vec2, c_coords2i)
|
||||
EAGLER_IN(3, vec4, c_color4f)
|
||||
EAGLER_VSH_LAYOUT_END()
|
||||
|
||||
EAGLER_OUT(vec2, v_texCoord2f)
|
||||
EAGLER_OUT(vec4, v_color4f)
|
||||
|
||||
uniform mat4 u_matrixTransform;
|
||||
uniform vec2 u_charSize2f;
|
||||
uniform vec2 u_charCoordSize2f;
|
||||
uniform vec4 u_color4f;
|
||||
|
||||
void main() {
|
||||
v_color4f = c_color4f.bgra;
|
||||
float shadowBit = a_position3f.z;
|
||||
float boldBit = shadowBit >= 0.5 ? 1.0 : 0.0;
|
||||
shadowBit -= boldBit * 0.5;
|
||||
v_color4f.rgb *= (1.0 - shadowBit * 3.0);
|
||||
v_texCoord2f = (c_coords2i + a_position3f.xy) * u_charCoordSize2f;
|
||||
vec2 pos2d = c_position2i + vec2(shadowBit * 4.0);
|
||||
pos2d += a_position3f.xy * u_charSize2f;
|
||||
pos2d.x += boldBit;
|
||||
float italicBit = v_color4f.a >= 0.5 ? 2.0 : 0.0;
|
||||
v_color4f.a -= italicBit * 0.25;
|
||||
pos2d.x -= (a_position3f.y - 0.5) * italicBit;
|
||||
v_color4f.a *= 2.0;
|
||||
v_color4f *= u_color4f;
|
||||
EAGLER_VERT_POSITION = u_matrixTransform * vec4(pos2d, 0.0, 1.0);
|
||||
}
|
31
lwjgl-rundir/resources/assets/eagler/glsl/accel_particle.fsh
Normal file
31
lwjgl-rundir/resources/assets/eagler/glsl/accel_particle.fsh
Normal file
@ -0,0 +1,31 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_IN(vec2, v_texCoord2f)
|
||||
EAGLER_IN(vec4, v_color4f)
|
||||
|
||||
EAGLER_FRAG_OUT()
|
||||
|
||||
uniform sampler2D u_inputTexture;
|
||||
|
||||
void main() {
|
||||
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, v_texCoord2f) * v_color4f;
|
||||
if(EAGLER_FRAG_COLOR.a < 0.004) {
|
||||
discard;
|
||||
}
|
||||
}
|
55
lwjgl-rundir/resources/assets/eagler/glsl/accel_particle.vsh
Normal file
55
lwjgl-rundir/resources/assets/eagler/glsl/accel_particle.vsh
Normal file
@ -0,0 +1,55 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_VSH_LAYOUT_BEGIN()
|
||||
EAGLER_IN(0, vec2, a_position2f)
|
||||
EAGLER_IN(1, vec3, p_position3f)
|
||||
EAGLER_IN(2, vec2, p_texCoords2i)
|
||||
EAGLER_IN(3, vec2, p_lightMap2f)
|
||||
EAGLER_IN(4, vec2, p_particleSize_texCoordsSize_2i)
|
||||
EAGLER_IN(5, vec4, p_color4f)
|
||||
EAGLER_VSH_LAYOUT_END()
|
||||
|
||||
EAGLER_OUT(vec2, v_texCoord2f)
|
||||
EAGLER_OUT(vec4, v_color4f)
|
||||
|
||||
uniform mat4 u_matrixTransform;
|
||||
uniform vec3 u_texCoordSize2f_particleSize1f;
|
||||
uniform vec3 u_transformParam_1_2_5_f;
|
||||
uniform vec2 u_transformParam_3_4_f;
|
||||
uniform vec4 u_color4f;
|
||||
|
||||
uniform sampler2D u_lightmapTexture;
|
||||
|
||||
void main() {
|
||||
v_color4f = u_color4f * p_color4f.bgra * EAGLER_TEXTURE_2D(u_lightmapTexture, p_lightMap2f);
|
||||
|
||||
vec2 tex2f = a_position2f * 0.5 + 0.5;
|
||||
tex2f.y = 1.0 - tex2f.y;
|
||||
tex2f = p_texCoords2i + tex2f * p_particleSize_texCoordsSize_2i.y;
|
||||
v_texCoord2f = tex2f * u_texCoordSize2f_particleSize1f.xy;
|
||||
|
||||
float particleSize = u_texCoordSize2f_particleSize1f.z * p_particleSize_texCoordsSize_2i.x;
|
||||
|
||||
vec3 pos3f = p_position3f;
|
||||
vec2 spos2f = a_position2f * particleSize;
|
||||
pos3f += u_transformParam_1_2_5_f * spos2f.xyy;
|
||||
pos3f.zx += u_transformParam_3_4_f * spos2f;
|
||||
|
||||
EAGLER_VERT_POSITION = u_matrixTransform * vec4(pos3f, 1.0);
|
||||
}
|
199
lwjgl-rundir/resources/assets/eagler/glsl/core.fsh
Normal file
199
lwjgl-rundir/resources/assets/eagler/glsl/core.fsh
Normal file
@ -0,0 +1,199 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined(COMPILE_ENABLE_TEX_GEN) || defined(COMPILE_ENABLE_FOG)
|
||||
EAGLER_IN(vec4, v_position4f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_TEXTURE_ATTRIB
|
||||
EAGLER_IN(vec2, v_texture2f)
|
||||
#endif
|
||||
|
||||
uniform vec4 u_color4f;
|
||||
|
||||
#ifdef COMPILE_BLEND_ADD
|
||||
uniform vec4 u_colorBlendSrc4f;
|
||||
uniform vec4 u_colorBlendAdd4f;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_COLOR_ATTRIB
|
||||
EAGLER_IN(vec4, v_color4f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_NORMAL_ATTRIB
|
||||
EAGLER_IN(vec3, v_normal3f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_LIGHTMAP_ATTRIB
|
||||
EAGLER_IN(vec2, v_lightmap2f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_TEXTURE2D
|
||||
uniform sampler2D u_samplerTexture;
|
||||
#if !defined(COMPILE_TEXTURE_ATTRIB) && !defined(COMPILE_ENABLE_TEX_GEN)
|
||||
uniform vec2 u_textureCoords01;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_LIGHTMAP
|
||||
uniform sampler2D u_samplerLightmap;
|
||||
#ifndef COMPILE_LIGHTMAP_ATTRIB
|
||||
uniform vec2 u_textureCoords02;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_ALPHA_TEST
|
||||
uniform float u_alphaTestRef1f;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_MC_LIGHTING
|
||||
uniform int u_lightsEnabled1i;
|
||||
uniform vec4 u_lightsDirections4fv[4];
|
||||
uniform vec3 u_lightsAmbient3f;
|
||||
#ifndef COMPILE_NORMAL_ATTRIB
|
||||
uniform vec3 u_uniformNormal3f;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_FOG
|
||||
uniform vec4 u_fogParameters4f;
|
||||
uniform vec4 u_fogColor4f;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_TEX_GEN
|
||||
EAGLER_IN(vec3, v_objectPosition3f)
|
||||
uniform ivec4 u_texGenPlane4i;
|
||||
uniform vec4 u_texGenS4f;
|
||||
uniform vec4 u_texGenT4f;
|
||||
uniform vec4 u_texGenR4f;
|
||||
uniform vec4 u_texGenQ4f;
|
||||
uniform mat4 u_textureMat4f01;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_ANISOTROPIC_FIX
|
||||
uniform vec2 u_textureAnisotropicFix;
|
||||
#endif
|
||||
|
||||
EAGLER_FRAG_OUT()
|
||||
|
||||
void main() {
|
||||
|
||||
#ifdef COMPILE_COLOR_ATTRIB
|
||||
vec4 color = v_color4f * u_color4f;
|
||||
#else
|
||||
vec4 color = u_color4f;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_TEX_GEN
|
||||
vec4 tmpVec4 = vec4(v_objectPosition3f, 1.0);
|
||||
vec4 texGenVector;
|
||||
texGenVector.x = dot(u_texGenPlane4i.x == 1 ? v_position4f : tmpVec4, u_texGenS4f);
|
||||
texGenVector.y = dot(u_texGenPlane4i.y == 1 ? v_position4f : tmpVec4, u_texGenT4f);
|
||||
texGenVector.z = dot(u_texGenPlane4i.z == 1 ? v_position4f : tmpVec4, u_texGenR4f);
|
||||
texGenVector.w = dot(u_texGenPlane4i.w == 1 ? v_position4f : tmpVec4, u_texGenQ4f);
|
||||
#ifdef EAGLER_HAS_GLES_300
|
||||
texGenVector.xyz = mat4x3(
|
||||
u_textureMat4f01[0].xyw,
|
||||
u_textureMat4f01[1].xyw,
|
||||
u_textureMat4f01[2].xyw,
|
||||
u_textureMat4f01[3].xyw
|
||||
) * texGenVector;
|
||||
texGenVector.xy /= texGenVector.z;
|
||||
#else
|
||||
texGenVector = u_textureMat4f01 * texGenVector;
|
||||
texGenVector.xy /= texGenVector.w;
|
||||
#endif
|
||||
|
||||
color *= EAGLER_TEXTURE_2D(u_samplerTexture, texGenVector.xy);
|
||||
|
||||
#ifdef COMPILE_ENABLE_ALPHA_TEST
|
||||
if(color.a < u_alphaTestRef1f) discard;
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#ifdef COMPILE_ENABLE_TEXTURE2D
|
||||
#ifdef COMPILE_TEXTURE_ATTRIB
|
||||
#ifdef COMPILE_ENABLE_ANISOTROPIC_FIX
|
||||
// d3d11 doesn't support GL_NEAREST upscaling with anisotropic
|
||||
// filtering enabled, so it needs this stupid fix to 'work'
|
||||
vec2 uv = floor(v_texture2f * u_textureAnisotropicFix) + 0.5;
|
||||
color *= EAGLER_TEXTURE_2D(u_samplerTexture, uv / u_textureAnisotropicFix);
|
||||
#else
|
||||
color *= EAGLER_TEXTURE_2D(u_samplerTexture, v_texture2f);
|
||||
#endif
|
||||
#else
|
||||
color *= EAGLER_TEXTURE_2D(u_samplerTexture, u_textureCoords01);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_LIGHTMAP
|
||||
#ifdef COMPILE_LIGHTMAP_ATTRIB
|
||||
color *= EAGLER_TEXTURE_2D(u_samplerLightmap, v_lightmap2f);
|
||||
#else
|
||||
color *= EAGLER_TEXTURE_2D(u_samplerLightmap, u_textureCoords02);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_BLEND_ADD
|
||||
color = color * u_colorBlendSrc4f + u_colorBlendAdd4f;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_ALPHA_TEST
|
||||
if(color.a < u_alphaTestRef1f) discard;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_MC_LIGHTING
|
||||
#ifdef COMPILE_NORMAL_ATTRIB
|
||||
vec3 normal = normalize(v_normal3f);
|
||||
#else
|
||||
vec3 normal = u_uniformNormal3f;
|
||||
#endif
|
||||
float diffuse = 0.0;
|
||||
vec4 light;
|
||||
#ifdef EAGLER_HAS_GLES_300
|
||||
for(int i = 0; i < u_lightsEnabled1i; ++i) {
|
||||
#else
|
||||
for(int i = 0; i < 4; ++i) {
|
||||
#endif
|
||||
light = u_lightsDirections4fv[i];
|
||||
diffuse += max(dot(light.xyz, normal), 0.0) * light.w;
|
||||
#ifndef EAGLER_HAS_GLES_300
|
||||
if(i + 1 >= u_lightsEnabled1i) {
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
color.rgb *= min(u_lightsAmbient3f + vec3(diffuse), 1.0);
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_FOG
|
||||
vec3 fogPos = v_position4f.xyz / v_position4f.w;
|
||||
float dist = length(fogPos);
|
||||
float fogDensity = u_fogParameters4f.y;
|
||||
float fogStart = u_fogParameters4f.z;
|
||||
float fogEnd = u_fogParameters4f.w;
|
||||
float f = u_fogParameters4f.x > 0.0 ? 1.0 - exp(-fogDensity * dist) :
|
||||
(dist - fogStart) / (fogEnd - fogStart);
|
||||
color.rgb = mix(color.rgb, u_fogColor4f.rgb, clamp(f, 0.0, 1.0) * u_fogColor4f.a);
|
||||
#endif
|
||||
|
||||
EAGLER_FRAG_COLOR = color;
|
||||
}
|
99
lwjgl-rundir/resources/assets/eagler/glsl/core.vsh
Normal file
99
lwjgl-rundir/resources/assets/eagler/glsl/core.vsh
Normal file
@ -0,0 +1,99 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_IN_AUTO(vec3, a_position3f)
|
||||
|
||||
#if defined(COMPILE_ENABLE_TEX_GEN) || defined(COMPILE_ENABLE_FOG)
|
||||
#define _COMPILE_VARYING_POSITION
|
||||
#endif
|
||||
|
||||
#ifdef _COMPILE_VARYING_POSITION
|
||||
EAGLER_OUT(vec4, v_position4f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_ENABLE_TEX_GEN
|
||||
EAGLER_OUT(vec3, v_objectPosition3f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_TEXTURE_ATTRIB
|
||||
EAGLER_IN_AUTO(vec2, a_texture2f)
|
||||
EAGLER_OUT(vec2, v_texture2f)
|
||||
uniform mat4 u_textureMat4f01;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_COLOR_ATTRIB
|
||||
EAGLER_IN_AUTO(vec4, a_color4f)
|
||||
EAGLER_OUT(vec4, v_color4f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_NORMAL_ATTRIB
|
||||
EAGLER_IN_AUTO(vec4, a_normal4f)
|
||||
EAGLER_OUT(vec3, v_normal3f)
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_LIGHTMAP_ATTRIB
|
||||
EAGLER_IN_AUTO(vec2, a_lightmap2f)
|
||||
EAGLER_OUT(vec2, v_lightmap2f)
|
||||
uniform mat4 u_textureMat4f02;
|
||||
#endif
|
||||
|
||||
#ifdef _COMPILE_VARYING_POSITION
|
||||
uniform mat4 u_modelviewMat4f;
|
||||
uniform mat4 u_projectionMat4f;
|
||||
#else
|
||||
uniform mat4 u_modelviewProjMat4f;
|
||||
#ifdef COMPILE_NORMAL_ATTRIB
|
||||
uniform mat4 u_modelviewMat4f;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define TEX_MAT3(mat4In) mat3(mat4In[0].xyw,mat4In[1].xyw,mat4In[3].xyw)
|
||||
|
||||
void main() {
|
||||
#ifdef COMPILE_ENABLE_TEX_GEN
|
||||
v_objectPosition3f = a_position3f;
|
||||
#endif
|
||||
|
||||
#ifdef _COMPILE_VARYING_POSITION
|
||||
v_position4f = u_modelviewMat4f * vec4(a_position3f, 1.0);
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_TEXTURE_ATTRIB
|
||||
vec3 v_textureTmp3f = TEX_MAT3(u_textureMat4f01) * vec3(a_texture2f, 1.0);
|
||||
v_texture2f = v_textureTmp3f.xy / v_textureTmp3f.z;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_COLOR_ATTRIB
|
||||
v_color4f = a_color4f;
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_NORMAL_ATTRIB
|
||||
v_normal3f = normalize(mat3(u_modelviewMat4f) * a_normal4f.xyz);
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_LIGHTMAP_ATTRIB
|
||||
vec3 v_lightmapTmp3f = TEX_MAT3(u_textureMat4f02) * vec3(a_lightmap2f, 1.0);
|
||||
v_lightmap2f = v_lightmapTmp3f.xy / v_lightmapTmp3f.z;
|
||||
#endif
|
||||
|
||||
#ifdef _COMPILE_VARYING_POSITION
|
||||
EAGLER_VERT_POSITION = u_projectionMat4f * v_position4f;
|
||||
#else
|
||||
EAGLER_VERT_POSITION = u_modelviewProjMat4f * vec4(a_position3f, 1.0);
|
||||
#endif
|
||||
}
|
98
lwjgl-rundir/resources/assets/eagler/glsl/gles2_compat.glsl
Normal file
98
lwjgl-rundir/resources/assets/eagler/glsl/gles2_compat.glsl
Normal file
@ -0,0 +1,98 @@
|
||||
#line 2 6969
|
||||
|
||||
/*
|
||||
* Copyright (c) 2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef EAGLER_HAS_GLES_300
|
||||
|
||||
// For GLES 3.00+ (WebGL 2.0)
|
||||
#ifdef EAGLER_IS_VERTEX_SHADER
|
||||
|
||||
// Vertex Shaders:
|
||||
#define EAGLER_VSH_LAYOUT_BEGIN()
|
||||
#define EAGLER_VSH_LAYOUT_END()
|
||||
#define EAGLER_IN(_loc, _type, _name) layout(location = _loc) in _type _name;
|
||||
#define EAGLER_IN_AUTO(_type, _name) in _type _name;
|
||||
#define EAGLER_OUT(_type, _name) out _type _name;
|
||||
#define EAGLER_VERT_POSITION gl_Position
|
||||
|
||||
#else
|
||||
#ifdef EAGLER_IS_FRAGMENT_SHADER
|
||||
|
||||
// Fragment Shaders:
|
||||
#define EAGLER_IN(_type, _name) in _type _name;
|
||||
#define EAGLER_FRAG_COLOR eagler_FragColor
|
||||
#define EAGLER_FRAG_DEPTH gl_FragDepth
|
||||
|
||||
#define EAGLER_FRAG_OUT() layout(location = 0) out vec4 EAGLER_FRAG_COLOR;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// All Shaders:
|
||||
|
||||
#define EAGLER_TEXTURE_2D(tex, coord2f) texture(tex, coord2f)
|
||||
#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) textureLod(_tex, _coord2f, _lod1f)
|
||||
#define EAGLER_HAS_TEXTURE_2D_LOD
|
||||
|
||||
|
||||
#else
|
||||
#ifdef EAGLER_HAS_GLES_200
|
||||
|
||||
// For GLES 2.00 (WebGL 1.0)
|
||||
#ifdef EAGLER_IS_VERTEX_SHADER
|
||||
|
||||
// Vertex Shaders:
|
||||
#define EAGLER_VSH_LAYOUT_BEGIN()
|
||||
#define EAGLER_VSH_LAYOUT_END()
|
||||
#define EAGLER_IN(_loc, _type, _name) attribute _type _name;
|
||||
#define EAGLER_IN_AUTO(_type, _name) attribute _type _name;
|
||||
#define EAGLER_OUT(_type, _name) varying _type _name;
|
||||
#define EAGLER_VERT_POSITION gl_Position
|
||||
|
||||
#else
|
||||
#ifdef EAGLER_IS_FRAGMENT_SHADER
|
||||
|
||||
// Fragment Shaders:
|
||||
#define EAGLER_IN(_type, _name) varying _type _name;
|
||||
#define EAGLER_FRAG_COLOR gl_FragColor
|
||||
// TODO: Must require EXT_frag_depth to use this on GLES 2.0 (currently not needed)
|
||||
#define EAGLER_FRAG_DEPTH gl_FragDepth
|
||||
|
||||
#define EAGLER_FRAG_OUT()
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// All Shaders:
|
||||
|
||||
#define EAGLER_TEXTURE_2D(_tex, _coord2f) texture2D(_tex, _coord2f)
|
||||
|
||||
#ifdef EAGLER_HAS_GLES_200_SHADER_TEXTURE_LOD
|
||||
#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) texture2DLodEXT(_tex, _coord2f, _lod1f)
|
||||
#define EAGLER_HAS_TEXTURE_2D_LOD
|
||||
#else
|
||||
// Beware!
|
||||
#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) texture2D(_tex, _coord2f)
|
||||
#define EAGLER_HAS_TEXTURE_2D_LOD
|
||||
#endif
|
||||
|
||||
#else
|
||||
#error Unable to determine API version! (Missing directive EAGLER_HAS_GLES_200 or 300)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#line 1 0
|
55
lwjgl-rundir/resources/assets/eagler/glsl/hw_fingerprint.fsh
Normal file
55
lwjgl-rundir/resources/assets/eagler/glsl/hw_fingerprint.fsh
Normal file
@ -0,0 +1,55 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_IN(vec2, v_position2f)
|
||||
|
||||
EAGLER_FRAG_OUT()
|
||||
|
||||
uniform sampler2D u_inputTexture;
|
||||
uniform mat4 u_textureMatrix;
|
||||
|
||||
vec2 rand(in vec2 co){
|
||||
float f = dot(co, vec2(12.98984576, 78.23378678));
|
||||
return fract(vec2(sin(f + 0.32490982), cos(f - 0.69890)) * 43758.54576873);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec4 coords4f = vec4(v_position2f.x * 0.25 - 0.125, v_position2f.y * 0.25 - 0.125, v_position2f.y * 10.0 - 9.0, 1.0);
|
||||
coords4f = u_textureMatrix * coords4f;
|
||||
coords4f.xy /= coords4f.w;
|
||||
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, coords4f.xy * 0.5 + 0.5);
|
||||
EAGLER_FRAG_COLOR.rg += rand(v_position2f * 1.2344574345) * 0.05;
|
||||
EAGLER_FRAG_COLOR.ba -= rand(v_position2f * 1.2343525225) * 0.05;
|
||||
EAGLER_FRAG_COLOR.a = fract(sin(dot(coords4f.yz, vec2(12.9898, 78.233))) * 43758.5453);
|
||||
EAGLER_FRAG_COLOR.a += exp(length(rand(coords4f.xw)) * -69.420);
|
||||
EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(1.0 / 2.423952));
|
||||
EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(5.4523856));
|
||||
EAGLER_FRAG_COLOR += 0.00004423 + EAGLER_FRAG_COLOR.a * 0.02;
|
||||
EAGLER_FRAG_COLOR = sqrt(EAGLER_FRAG_COLOR);
|
||||
EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(1.0 / 1.9023576));
|
||||
#ifdef EAGLER_HAS_GLES_300
|
||||
EAGLER_FRAG_COLOR.ra += tanh(fract(EAGLER_FRAG_COLOR.a * 32.324834)) * 0.1012426;
|
||||
#endif
|
||||
EAGLER_FRAG_COLOR.b *= 0.934924;
|
||||
EAGLER_FRAG_COLOR.b += (1.23213 / inversesqrt(EAGLER_FRAG_COLOR.a)) * 0.156365;
|
||||
EAGLER_FRAG_COLOR.ga += rand(gl_FragCoord.xy) * 0.13423567;
|
||||
EAGLER_FRAG_COLOR.rb += gl_PointCoord * 0.0124264565;
|
||||
#ifdef EAGLER_HAS_GLES_300
|
||||
EAGLER_FRAG_COLOR *= 0.95234 + asinh(EAGLER_FRAG_COLOR.g * 5.23423) * 0.0254325;
|
||||
#endif
|
||||
}
|
28
lwjgl-rundir/resources/assets/eagler/glsl/local.vsh
Normal file
28
lwjgl-rundir/resources/assets/eagler/glsl/local.vsh
Normal file
@ -0,0 +1,28 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_VSH_LAYOUT_BEGIN()
|
||||
EAGLER_IN(0, vec2, a_position2f)
|
||||
EAGLER_VSH_LAYOUT_END()
|
||||
|
||||
EAGLER_OUT(vec2, v_position2f)
|
||||
|
||||
void main() {
|
||||
v_position2f = a_position2f * 0.5 + 0.5;
|
||||
EAGLER_VERT_POSITION = vec4(a_position2f, 0.0, 1.0);
|
||||
}
|
369
lwjgl-rundir/resources/assets/eagler/glsl/post_fxaa.fsh
Normal file
369
lwjgl-rundir/resources/assets/eagler/glsl/post_fxaa.fsh
Normal file
@ -0,0 +1,369 @@
|
||||
#line 2
|
||||
|
||||
// Remove this line below if you plan to modify this file
|
||||
#ifndef EAGLER_IS_GLES_200
|
||||
#define USE_OPTIMIZED
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* This file was modified by lax1dude to remove dead code
|
||||
*
|
||||
* Original: https://gist.github.com/kosua20/0c506b81b3812ac900048059d2383126
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* ============================================================================
|
||||
*
|
||||
*
|
||||
* NVIDIA FXAA 3.11 by TIMOTHY LOTTES
|
||||
*
|
||||
*
|
||||
* ------------------------------------------------------------------------------
|
||||
* COPYRIGHT (C) 2010, 2011 NVIDIA CORPORATION. ALL RIGHTS RESERVED.
|
||||
* ------------------------------------------------------------------------------
|
||||
* TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
|
||||
* *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
|
||||
* OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA
|
||||
* OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
|
||||
* LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
|
||||
* OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
|
||||
* THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGES.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_IN(vec2, v_position2f)
|
||||
|
||||
EAGLER_FRAG_OUT()
|
||||
|
||||
uniform sampler2D u_screenTexture;
|
||||
uniform vec2 u_screenSize2f;
|
||||
|
||||
#ifndef USE_OPTIMIZED
|
||||
#ifndef FXAA_GREEN_AS_LUMA
|
||||
// For those using non-linear color,
|
||||
// and either not able to get luma in alpha, or not wanting to,
|
||||
// this enables FXAA to run using green as a proxy for luma.
|
||||
// So with this enabled, no need to pack luma in alpha.
|
||||
//
|
||||
// This will turn off AA on anything which lacks some amount of green.
|
||||
// Pure red and blue or combination of only R and B, will get no AA.
|
||||
//
|
||||
// Might want to lower the settings for both,
|
||||
// fxaaConsoleEdgeThresholdMin
|
||||
// fxaaQualityEdgeThresholdMin
|
||||
// In order to insure AA does not get turned off on colors
|
||||
// which contain a minor amount of green.
|
||||
//
|
||||
// 1 = On.
|
||||
// 0 = Off.
|
||||
//
|
||||
#define FXAA_GREEN_AS_LUMA 0
|
||||
#endif
|
||||
|
||||
#ifndef FXAA_DISCARD
|
||||
// 1 = Use discard on pixels which don't need AA.
|
||||
// 0 = Return unchanged color on pixels which don't need AA.
|
||||
#define FXAA_DISCARD 0
|
||||
#endif
|
||||
|
||||
/*============================================================================
|
||||
API PORTING
|
||||
============================================================================*/
|
||||
#define FxaaBool bool
|
||||
#define FxaaDiscard discard
|
||||
#define FxaaFloat float
|
||||
#define FxaaFloat2 vec2
|
||||
#define FxaaFloat3 vec3
|
||||
#define FxaaFloat4 vec4
|
||||
#define FxaaHalf float
|
||||
#define FxaaHalf2 vec2
|
||||
#define FxaaHalf3 vec3
|
||||
#define FxaaHalf4 vec4
|
||||
#define FxaaInt2 ivec2
|
||||
#define FxaaSat(x) clamp(x, 0.0, 1.0)
|
||||
#define FxaaTex sampler2D
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
#define FxaaTexTop(t, p) EAGLER_TEXTURE_2D_LOD(t, p, 0.0)
|
||||
|
||||
/*============================================================================
|
||||
GREEN AS LUMA OPTION SUPPORT FUNCTION
|
||||
============================================================================*/
|
||||
#if (FXAA_GREEN_AS_LUMA == 0)
|
||||
FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return dot(rgba.xyz * rgba.xyz, vec3(0.299, 0.587, 0.114)); }
|
||||
#else
|
||||
FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
|
||||
#endif
|
||||
|
||||
/*============================================================================
|
||||
FXAA3 CONSOLE - PC VERSION
|
||||
============================================================================*/
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat4 FxaaPixelShader(
|
||||
// See FXAA Quality FxaaPixelShader() source for docs on Inputs!
|
||||
//
|
||||
// Use noperspective interpolation here (turn off perspective interpolation).
|
||||
// {xy} = center of pixel
|
||||
FxaaFloat2 pos,
|
||||
//
|
||||
// Used only for FXAA Console, and not used on the 360 version.
|
||||
// Use noperspective interpolation here (turn off perspective interpolation).
|
||||
// {xy__} = upper left of pixel
|
||||
// {__zw} = lower right of pixel
|
||||
FxaaFloat4 fxaaConsolePosPos,
|
||||
//
|
||||
// Input color texture.
|
||||
// {rgb_} = color in linear or perceptual color space
|
||||
// if (FXAA_GREEN_AS_LUMA == 0)
|
||||
// {___a} = luma in perceptual color space (not linear)
|
||||
FxaaTex tex,
|
||||
//
|
||||
// Only used on FXAA Console.
|
||||
// This must be from a constant/uniform.
|
||||
// This effects sub-pixel AA quality and inversely sharpness.
|
||||
// Where N ranges between,
|
||||
// N = 0.50 (default)
|
||||
// N = 0.33 (sharper)
|
||||
// {x___} = -N/screenWidthInPixels
|
||||
// {_y__} = -N/screenHeightInPixels
|
||||
// {__z_} = N/screenWidthInPixels
|
||||
// {___w} = N/screenHeightInPixels
|
||||
FxaaFloat4 fxaaConsoleRcpFrameOpt,
|
||||
//
|
||||
// Only used on FXAA Console.
|
||||
// Not used on 360, but used on PS3 and PC.
|
||||
// This must be from a constant/uniform.
|
||||
// {x___} = -2.0/screenWidthInPixels
|
||||
// {_y__} = -2.0/screenHeightInPixels
|
||||
// {__z_} = 2.0/screenWidthInPixels
|
||||
// {___w} = 2.0/screenHeightInPixels
|
||||
FxaaFloat4 fxaaConsoleRcpFrameOpt2,
|
||||
//
|
||||
// Only used on FXAA Console.
|
||||
// This used to be the FXAA_CONSOLE__EDGE_SHARPNESS define.
|
||||
// It is here now to allow easier tuning.
|
||||
// This does not effect PS3, as this needs to be compiled in.
|
||||
// Use FXAA_CONSOLE__PS3_EDGE_SHARPNESS for PS3.
|
||||
// Due to the PS3 being ALU bound,
|
||||
// there are only three safe values here: 2 and 4 and 8.
|
||||
// These options use the shaders ability to a free *|/ by 2|4|8.
|
||||
// For all other platforms can be a non-power of two.
|
||||
// 8.0 is sharper (default!!!)
|
||||
// 4.0 is softer
|
||||
// 2.0 is really soft (good only for vector graphics inputs)
|
||||
FxaaFloat fxaaConsoleEdgeSharpness,
|
||||
//
|
||||
// Only used on FXAA Console.
|
||||
// This used to be the FXAA_CONSOLE__EDGE_THRESHOLD define.
|
||||
// It is here now to allow easier tuning.
|
||||
// This does not effect PS3, as this needs to be compiled in.
|
||||
// Use FXAA_CONSOLE__PS3_EDGE_THRESHOLD for PS3.
|
||||
// Due to the PS3 being ALU bound,
|
||||
// there are only two safe values here: 1/4 and 1/8.
|
||||
// These options use the shaders ability to a free *|/ by 2|4|8.
|
||||
// The console setting has a different mapping than the quality setting.
|
||||
// Other platforms can use other values.
|
||||
// 0.125 leaves less aliasing, but is softer (default!!!)
|
||||
// 0.25 leaves more aliasing, and is sharper
|
||||
FxaaFloat fxaaConsoleEdgeThreshold,
|
||||
//
|
||||
// Only used on FXAA Console.
|
||||
// This used to be the FXAA_CONSOLE__EDGE_THRESHOLD_MIN define.
|
||||
// It is here now to allow easier tuning.
|
||||
// Trims the algorithm from processing darks.
|
||||
// The console setting has a different mapping than the quality setting.
|
||||
// This does not apply to PS3,
|
||||
// PS3 was simplified to avoid more shader instructions.
|
||||
// 0.06 - faster but more aliasing in darks
|
||||
// 0.05 - default
|
||||
// 0.04 - slower and less aliasing in darks
|
||||
// Special notes when using FXAA_GREEN_AS_LUMA,
|
||||
// Likely want to set this to zero.
|
||||
// As colors that are mostly not-green
|
||||
// will appear very dark in the green channel!
|
||||
// Tune by looking at mostly non-green content,
|
||||
// then start at zero and increase until aliasing is a problem.
|
||||
FxaaFloat fxaaConsoleEdgeThresholdMin
|
||||
) {
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat lumaNw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xy));
|
||||
FxaaFloat lumaSw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xw));
|
||||
FxaaFloat lumaNe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zy));
|
||||
FxaaFloat lumaSe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zw));
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat4 rgbyM = FxaaTexTop(tex, pos.xy);
|
||||
#if (FXAA_GREEN_AS_LUMA == 0)
|
||||
// TODO Luma
|
||||
FxaaFloat lumaM = FxaaLuma(rgbyM);
|
||||
#else
|
||||
FxaaFloat lumaM = rgbyM.y;
|
||||
#endif
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat lumaMaxNwSw = max(lumaNw, lumaSw);
|
||||
lumaNe += 1.0/384.0;
|
||||
FxaaFloat lumaMinNwSw = min(lumaNw, lumaSw);
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat lumaMaxNeSe = max(lumaNe, lumaSe);
|
||||
FxaaFloat lumaMinNeSe = min(lumaNe, lumaSe);
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);
|
||||
FxaaFloat lumaMin = min(lumaMinNeSe, lumaMinNwSw);
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat lumaMinM = min(lumaMin, lumaM);
|
||||
FxaaFloat lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);
|
||||
FxaaFloat lumaMaxM = max(lumaMax, lumaM);
|
||||
FxaaFloat dirSwMinusNe = lumaSw - lumaNe;
|
||||
FxaaFloat lumaMaxSubMinM = lumaMaxM - lumaMinM;
|
||||
FxaaFloat dirSeMinusNw = lumaSe - lumaNw;
|
||||
if(lumaMaxSubMinM < lumaMaxScaledClamped)
|
||||
{
|
||||
#if (FXAA_DISCARD == 1)
|
||||
FxaaDiscard;
|
||||
#else
|
||||
return rgbyM;
|
||||
#endif
|
||||
}
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat2 dir;
|
||||
dir.x = dirSwMinusNe + dirSeMinusNw;
|
||||
dir.y = dirSwMinusNe - dirSeMinusNw;
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat2 dir1 = normalize(dir.xy);
|
||||
FxaaFloat4 rgbyN1 = FxaaTexTop(tex, pos.xy - dir1 * fxaaConsoleRcpFrameOpt.zw);
|
||||
FxaaFloat4 rgbyP1 = FxaaTexTop(tex, pos.xy + dir1 * fxaaConsoleRcpFrameOpt.zw);
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;
|
||||
FxaaFloat2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat2 dir2x = dir2 * fxaaConsoleRcpFrameOpt2.zw;
|
||||
FxaaFloat4 rgbyN2 = FxaaTexTop(tex, pos.xy - dir2x);
|
||||
FxaaFloat4 rgbyP2 = FxaaTexTop(tex, pos.xy + dir2x);
|
||||
/*--------------------------------------------------------------------------*/
|
||||
FxaaFloat4 rgbyA = rgbyN1 + rgbyP1;
|
||||
FxaaFloat4 rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);
|
||||
/*--------------------------------------------------------------------------*/
|
||||
#if (FXAA_GREEN_AS_LUMA == 0)
|
||||
// TODO Luma
|
||||
float lumaB = FxaaLuma(rgbyB);
|
||||
#else
|
||||
float lumaB = rgbyB.y;
|
||||
#endif
|
||||
if((lumaB < lumaMin) || (lumaB > lumaMax))
|
||||
rgbyB.xyz = rgbyA.xyz * 0.5;
|
||||
//
|
||||
return rgbyB;
|
||||
}
|
||||
/*==========================================================================*/
|
||||
|
||||
#define edgeSharpness 3.0
|
||||
#define edgeThreshold 0.15
|
||||
#define edgeThresholdMin 0.05
|
||||
|
||||
void main(){
|
||||
vec2 screenSize05 = 0.5 * u_screenSize2f;
|
||||
|
||||
vec4 posPos;
|
||||
posPos.xy = v_position2f;
|
||||
posPos.zw = v_position2f + u_screenSize2f;
|
||||
|
||||
vec4 rcpFrameOpt;
|
||||
rcpFrameOpt.xy = -screenSize05;
|
||||
rcpFrameOpt.zw = screenSize05;
|
||||
|
||||
EAGLER_FRAG_COLOR = vec4(FxaaPixelShader(v_position2f + screenSize05, posPos, u_screenTexture, rcpFrameOpt, rcpFrameOpt * 4.0, edgeSharpness, edgeThreshold, edgeThresholdMin).rgb, 1.0);
|
||||
}
|
||||
#else
|
||||
|
||||
// This 'optimized' code was generated using glslangValidator + spirv-cross + spirv-opt on the source code above
|
||||
// Is it faster? Idfk, probably compiles faster at least, what matters it I tried
|
||||
|
||||
float _616;
|
||||
|
||||
void main()
|
||||
{
|
||||
mediump vec2 _257 = u_screenSize2f * 0.5;
|
||||
mediump vec4 _611 = vec4(v_position2f, v_position2f + u_screenSize2f);
|
||||
mediump vec4 _612 = vec4(_616, _616, _257);
|
||||
mediump vec2 _290 = v_position2f + _257;
|
||||
mediump vec4 _608;
|
||||
for(;;)
|
||||
{
|
||||
mediump vec3 _532 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.xy, 0.0).xyz;
|
||||
mediump float _536 = dot(_532 * _532, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
|
||||
mediump vec3 _540 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.xw, 0.0).xyz;
|
||||
mediump float _544 = dot(_540 * _540, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
|
||||
mediump vec3 _548 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.zy, 0.0).xyz;
|
||||
mediump vec3 _556 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.zw, 0.0).xyz;
|
||||
mediump float _560 = dot(_556 * _556, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
|
||||
mediump vec4 _390 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _290, 0.0);
|
||||
mediump vec3 _564 = _390.xyz;
|
||||
mediump float _568 = dot(_564 * _564, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
|
||||
mediump float _397 = dot(_548 * _548, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)) + 0.00260416674427688121795654296875;
|
||||
mediump float _409 = max(max(_397, _560), max(_536, _544));
|
||||
mediump float _412 = min(min(_397, _560), min(_536, _544));
|
||||
mediump float _427 = _544 - _397;
|
||||
mediump float _433 = _560 - _536;
|
||||
if ((max(_409, _568) - min(_412, _568)) < max(0.0500000007450580596923828125, _409 * 0.1500000059604644775390625))
|
||||
{
|
||||
_608 = _390;
|
||||
break;
|
||||
}
|
||||
mediump vec2 _449 = normalize(vec2(_427 + _433, _427 - _433));
|
||||
vec2 hp_copy_449 = _449;
|
||||
mediump vec2 _454 = _612.zw;
|
||||
vec2 _614 = -hp_copy_449;
|
||||
mediump vec2 mp_copy_614 = _614;
|
||||
mediump vec2 _481 = clamp(_449 / vec2(min(abs(_449.x), abs(_449.y)) * 3.0), vec2(-2.0), vec2(2.0));
|
||||
vec2 hp_copy_481 = _481;
|
||||
mediump vec2 _484 = (_612 * 4.0).zw;
|
||||
vec2 _615 = -hp_copy_481;
|
||||
mediump vec2 mp_copy_615 = _615;
|
||||
mediump vec4 _498 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, mp_copy_614 * _454 + _290, 0.0) + EAGLER_TEXTURE_2D_LOD(u_screenTexture, _449 * _454 + _290, 0.0);
|
||||
mediump vec4 _505 = ((EAGLER_TEXTURE_2D_LOD(u_screenTexture, mp_copy_615 * _484 + _290, 0.0) + EAGLER_TEXTURE_2D_LOD(u_screenTexture, _481 * _484 + _290, 0.0)) * 0.25) + (_498 * 0.25);
|
||||
mediump float _576 = dot(_505.xyz * _505.xyz, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625));
|
||||
mediump vec4 _607;
|
||||
if ((_576 < _412) || (_576 > _409))
|
||||
{
|
||||
mediump vec3 _518 = _498.xyz * 0.5;
|
||||
mediump vec4 _600;
|
||||
_600.x = _518.x;
|
||||
_600.y = _518.y;
|
||||
_600.z = _518.z;
|
||||
_607 = _600;
|
||||
}
|
||||
else
|
||||
{
|
||||
_607 = _505;
|
||||
}
|
||||
_608 = _607;
|
||||
break;
|
||||
}
|
||||
EAGLER_FRAG_COLOR = vec4(_608.xyz, 1.0);
|
||||
}
|
||||
|
||||
#endif
|
43
lwjgl-rundir/resources/assets/eagler/glsl/texture_blit.fsh
Normal file
43
lwjgl-rundir/resources/assets/eagler/glsl/texture_blit.fsh
Normal file
@ -0,0 +1,43 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2023-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_IN(vec2, v_texCoords2f)
|
||||
|
||||
#ifndef COMPILE_BLIT_DEPTH
|
||||
EAGLER_FRAG_OUT()
|
||||
#endif
|
||||
|
||||
uniform sampler2D u_inputTexture;
|
||||
uniform float u_textureLod1f;
|
||||
|
||||
#ifdef COMPILE_PIXEL_ALIGNMENT
|
||||
uniform vec4 u_pixelAlignmentSizes4f;
|
||||
uniform vec2 u_pixelAlignmentOffset2f;
|
||||
#endif
|
||||
|
||||
void main() {
|
||||
vec2 uv2f = v_texCoords2f;
|
||||
#ifdef COMPILE_PIXEL_ALIGNMENT
|
||||
uv2f = (floor(uv2f * u_pixelAlignmentSizes4f.xy) + u_pixelAlignmentOffset2f) * u_pixelAlignmentSizes4f.zw;
|
||||
#endif
|
||||
#ifndef COMPILE_BLIT_DEPTH
|
||||
EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D_LOD(u_inputTexture, uv2f, u_textureLod1f);
|
||||
#else
|
||||
EAGLER_FRAG_DEPTH = EAGLER_TEXTURE_2D_LOD(u_inputTexture, uv2f, u_textureLod1f).r;
|
||||
#endif
|
||||
}
|
32
lwjgl-rundir/resources/assets/eagler/glsl/texture_blit.vsh
Normal file
32
lwjgl-rundir/resources/assets/eagler/glsl/texture_blit.vsh
Normal file
@ -0,0 +1,32 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2023-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_VSH_LAYOUT_BEGIN()
|
||||
EAGLER_IN(0, vec2, a_position2f)
|
||||
EAGLER_VSH_LAYOUT_END()
|
||||
|
||||
EAGLER_OUT(vec2, v_texCoords2f)
|
||||
|
||||
uniform vec4 u_srcCoords4f;
|
||||
uniform vec4 u_dstCoords4f;
|
||||
|
||||
void main() {
|
||||
vec2 uv = a_position2f * 0.5 + 0.5;
|
||||
v_texCoords2f = u_srcCoords4f.xy + u_srcCoords4f.zw * uv;
|
||||
EAGLER_VERT_POSITION = vec4(u_dstCoords4f.xy + u_dstCoords4f.zw * uv, 0.0, 1.0);
|
||||
}
|
33
lwjgl-rundir/resources/assets/eagler/glsl/texture_mix.fsh
Normal file
33
lwjgl-rundir/resources/assets/eagler/glsl/texture_mix.fsh
Normal file
@ -0,0 +1,33 @@
|
||||
#line 2
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
EAGLER_IN(vec2, v_position2f)
|
||||
|
||||
EAGLER_FRAG_OUT()
|
||||
|
||||
uniform sampler2D u_inputTexture;
|
||||
uniform float u_textureLod1f;
|
||||
uniform vec4 u_blendFactor4f;
|
||||
uniform vec4 u_blendBias4f;
|
||||
uniform mat3 u_matrixTransform;
|
||||
|
||||
void main() {
|
||||
vec3 coords = u_matrixTransform * vec3(v_position2f, 1.0);
|
||||
vec4 color4f = EAGLER_TEXTURE_2D_LOD(u_inputTexture, coords.xy, u_textureLod1f);
|
||||
EAGLER_FRAG_COLOR = color4f * u_blendFactor4f + u_blendBias4f;
|
||||
}
|
BIN
lwjgl-rundir/resources/assets/eagler/gui/eagler_gui.png
Normal file
BIN
lwjgl-rundir/resources/assets/eagler/gui/eagler_gui.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
@ -15,7 +15,6 @@ import net.minecraft.src.EnumOS;
|
||||
import net.minecraft.src.FontRenderer;
|
||||
import net.minecraft.src.GLAllocation;
|
||||
import net.minecraft.src.GameSettings;
|
||||
import net.minecraft.src.GameWindowListener;
|
||||
import net.minecraft.src.GuiChat;
|
||||
import net.minecraft.src.GuiConflictWarning;
|
||||
import net.minecraft.src.GuiConnecting;
|
||||
@ -36,7 +35,6 @@ import net.minecraft.src.ModelBiped;
|
||||
import net.minecraft.src.MouseHelper;
|
||||
import net.minecraft.src.MovementInputFromOptions;
|
||||
import net.minecraft.src.MovingObjectPosition;
|
||||
import net.minecraft.src.OpenGlCapsChecker;
|
||||
import net.minecraft.src.PlayerController;
|
||||
import net.minecraft.src.PlayerControllerCreative;
|
||||
import net.minecraft.src.RenderEngine;
|
||||
@ -54,7 +52,6 @@ import net.minecraft.src.TextureWaterFX;
|
||||
import net.minecraft.src.TextureWaterFlowFX;
|
||||
import net.minecraft.src.ThreadSleepForever;
|
||||
import net.minecraft.src.Timer;
|
||||
import net.minecraft.src.UnexpectedThrowable;
|
||||
import net.minecraft.src.Vec3D;
|
||||
import net.minecraft.src.World;
|
||||
import net.minecraft.src.WorldRenderer;
|
||||
@ -72,7 +69,6 @@ public class Minecraft implements Runnable {
|
||||
public int displayHeight;
|
||||
public float dpi;
|
||||
public int debugFPS;
|
||||
private OpenGlCapsChecker glCapabilities;
|
||||
private Timer timer = new Timer(20.0F);
|
||||
public World theWorld;
|
||||
public RenderGlobal renderGlobal;
|
||||
@ -117,6 +113,8 @@ public class Minecraft implements Runnable {
|
||||
|
||||
public ScaledResolution scaledResolution = null;
|
||||
|
||||
private static Minecraft theMinecraft;
|
||||
|
||||
public Minecraft() {
|
||||
this.tempDisplayWidth = 640;
|
||||
this.tempDisplayHeight = 480;
|
||||
@ -124,6 +122,11 @@ public class Minecraft implements Runnable {
|
||||
new ThreadSleepForever(this, "Timer hack thread");
|
||||
this.displayWidth = 640;
|
||||
this.displayHeight = 480;
|
||||
theMinecraft = this;
|
||||
}
|
||||
|
||||
public static Minecraft getMinecraft(){
|
||||
return theMinecraft;
|
||||
}
|
||||
|
||||
public void updateDisplay() {
|
||||
@ -191,7 +194,7 @@ public class Minecraft implements Runnable {
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
this.checkGLError("Startup");
|
||||
this.glCapabilities = new OpenGlCapsChecker();
|
||||
// this.glCapabilities = new OpenGlCapsChecker();
|
||||
this.sndManager.loadSoundSettings(this.options);
|
||||
this.renderEngine.registerTextureFX(this.textureLavaFX);
|
||||
this.renderEngine.registerTextureFX(this.textureWaterFX);
|
||||
@ -1035,10 +1038,6 @@ public class Minecraft implements Runnable {
|
||||
//
|
||||
// }
|
||||
|
||||
public OpenGlCapsChecker getOpenGlCapsChecker() {
|
||||
return this.glCapabilities;
|
||||
}
|
||||
|
||||
public String debugInfoRenders() {
|
||||
return this.renderGlobal.getDebugInfoRenders();
|
||||
}
|
||||
|
@ -1,378 +0,0 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.awt.Canvas;
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.KeyListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.image.BufferStrategy;
|
||||
import java.awt.image.ImageObserver;
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class CanvasIsomPreview extends Canvas implements KeyListener, MouseListener, MouseMotionListener, Runnable {
|
||||
private int currentRender = 0;
|
||||
private int zoomLevel = 2;
|
||||
private boolean displayHelpText = true;
|
||||
private World level;
|
||||
private File dataFolder = this.getWorkingDirectory();
|
||||
private boolean running = true;
|
||||
private List zonesToRender = Collections.synchronizedList(new LinkedList());
|
||||
private IsoImageBuffer[][] zoneMap = new IsoImageBuffer[64][64];
|
||||
private int translateX;
|
||||
private int translateY;
|
||||
private int xPosition;
|
||||
private int yPosition;
|
||||
|
||||
public File getWorkingDirectory() {
|
||||
if(this.dataFolder == null) {
|
||||
this.dataFolder = this.getWorkingDirectory("minecraft");
|
||||
}
|
||||
|
||||
return this.dataFolder;
|
||||
}
|
||||
|
||||
public File getWorkingDirectory(String var1) {
|
||||
String var2 = System.getProperty("user.home", ".");
|
||||
File var3;
|
||||
switch(OSMapIsom.osValues[getPlatform().ordinal()]) {
|
||||
case 1:
|
||||
case 2:
|
||||
var3 = new File(var2, '.' + var1 + '/');
|
||||
break;
|
||||
case 3:
|
||||
String var4 = System.getenv("APPDATA");
|
||||
if(var4 != null) {
|
||||
var3 = new File(var4, "." + var1 + '/');
|
||||
} else {
|
||||
var3 = new File(var2, '.' + var1 + '/');
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
var3 = new File(var2, "Library/Application Support/" + var1);
|
||||
break;
|
||||
default:
|
||||
var3 = new File(var2, var1 + '/');
|
||||
}
|
||||
|
||||
if(!var3.exists() && !var3.mkdirs()) {
|
||||
throw new RuntimeException("The working directory could not be created: " + var3);
|
||||
} else {
|
||||
return var3;
|
||||
}
|
||||
}
|
||||
|
||||
private static EnumOSIsom getPlatform() {
|
||||
String var0 = System.getProperty("os.name").toLowerCase();
|
||||
return var0.contains("win") ? EnumOSIsom.windows : (var0.contains("mac") ? EnumOSIsom.macos : (var0.contains("solaris") ? EnumOSIsom.solaris : (var0.contains("sunos") ? EnumOSIsom.solaris : (var0.contains("linux") ? EnumOSIsom.linux : (var0.contains("unix") ? EnumOSIsom.linux : EnumOSIsom.unknown)))));
|
||||
}
|
||||
|
||||
public CanvasIsomPreview() {
|
||||
for(int var1 = 0; var1 < 64; ++var1) {
|
||||
for(int var2 = 0; var2 < 64; ++var2) {
|
||||
this.zoneMap[var1][var2] = new IsoImageBuffer((World)null, var1, var2);
|
||||
}
|
||||
}
|
||||
|
||||
this.addMouseListener(this);
|
||||
this.addMouseMotionListener(this);
|
||||
this.addKeyListener(this);
|
||||
this.setFocusable(true);
|
||||
this.requestFocus();
|
||||
this.setBackground(Color.red);
|
||||
}
|
||||
|
||||
public void loadLevel(String var1) {
|
||||
this.translateX = this.translateY = 0;
|
||||
this.level = new WorldIso(this, new File(this.dataFolder, "saves"), var1);
|
||||
this.level.skylightSubtracted = 0;
|
||||
List var2 = this.zonesToRender;
|
||||
synchronized(var2) {
|
||||
this.zonesToRender.clear();
|
||||
|
||||
for(int var3 = 0; var3 < 64; ++var3) {
|
||||
for(int var4 = 0; var4 < 64; ++var4) {
|
||||
this.zoneMap[var3][var4].setLevel(this.level, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void setBrightness(int var1) {
|
||||
List var2 = this.zonesToRender;
|
||||
synchronized(var2) {
|
||||
this.level.skylightSubtracted = var1;
|
||||
this.zonesToRender.clear();
|
||||
|
||||
for(int var3 = 0; var3 < 64; ++var3) {
|
||||
for(int var4 = 0; var4 < 64; ++var4) {
|
||||
this.zoneMap[var3][var4].setLevel(this.level, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
(new ThreadRunIsoClient(this)).start();
|
||||
|
||||
for(int var1 = 0; var1 < 8; ++var1) {
|
||||
(new Thread(this)).start();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
private IsoImageBuffer getZone(int var1, int var2) {
|
||||
int var3 = var1 & 63;
|
||||
int var4 = var2 & 63;
|
||||
IsoImageBuffer var5 = this.zoneMap[var3][var4];
|
||||
if(var5.x == var1 && var5.y == var2) {
|
||||
return var5;
|
||||
} else {
|
||||
List var6 = this.zonesToRender;
|
||||
synchronized(var6) {
|
||||
this.zonesToRender.remove(var5);
|
||||
}
|
||||
|
||||
var5.init(var1, var2);
|
||||
return var5;
|
||||
}
|
||||
}
|
||||
|
||||
public void run() {
|
||||
TerrainTextureManager var1 = new TerrainTextureManager();
|
||||
|
||||
while(this.running) {
|
||||
IsoImageBuffer var2 = null;
|
||||
List var3 = this.zonesToRender;
|
||||
synchronized(var3) {
|
||||
if(this.zonesToRender.size() > 0) {
|
||||
var2 = (IsoImageBuffer)this.zonesToRender.remove(0);
|
||||
}
|
||||
}
|
||||
|
||||
if(var2 != null) {
|
||||
if(this.currentRender - var2.lastVisible < 2) {
|
||||
var1.render(var2);
|
||||
this.repaint();
|
||||
} else {
|
||||
var2.addedToRenderQueue = false;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
Thread.sleep(2L);
|
||||
} catch (InterruptedException var5) {
|
||||
var5.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void update(Graphics var1) {
|
||||
}
|
||||
|
||||
public void paint(Graphics var1) {
|
||||
}
|
||||
|
||||
public void render() {
|
||||
BufferStrategy var1 = this.getBufferStrategy();
|
||||
if(var1 == null) {
|
||||
this.createBufferStrategy(2);
|
||||
} else {
|
||||
this.render((Graphics2D)var1.getDrawGraphics());
|
||||
var1.show();
|
||||
}
|
||||
}
|
||||
|
||||
public void render(Graphics2D var1) {
|
||||
++this.currentRender;
|
||||
AffineTransform var2 = var1.getTransform();
|
||||
var1.setClip(0, 0, this.getWidth(), this.getHeight());
|
||||
var1.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
|
||||
var1.translate(this.getWidth() / 2, this.getHeight() / 2);
|
||||
var1.scale((double)this.zoomLevel, (double)this.zoomLevel);
|
||||
var1.translate(this.translateX, this.translateY);
|
||||
if(this.level != null) {
|
||||
var1.translate(-(this.level.spawnX + this.level.spawnZ), -(-this.level.spawnX + this.level.spawnZ) + 64);
|
||||
}
|
||||
|
||||
Rectangle var3 = var1.getClipBounds();
|
||||
var1.setColor(new Color(-15724512));
|
||||
var1.fillRect(var3.x, var3.y, var3.width, var3.height);
|
||||
byte var4 = 16;
|
||||
byte var5 = 3;
|
||||
int var6 = var3.x / var4 / 2 - 2 - var5;
|
||||
int var7 = (var3.x + var3.width) / var4 / 2 + 1 + var5;
|
||||
int var8 = var3.y / var4 - 1 - var5 * 2;
|
||||
int var9 = (var3.y + var3.height + 16 + 128) / var4 + 1 + var5 * 2;
|
||||
|
||||
int var10;
|
||||
for(var10 = var8; var10 <= var9; ++var10) {
|
||||
for(int var11 = var6; var11 <= var7; ++var11) {
|
||||
int var12 = var11 - (var10 >> 1);
|
||||
int var13 = var11 + (var10 + 1 >> 1);
|
||||
IsoImageBuffer var14 = this.getZone(var12, var13);
|
||||
var14.lastVisible = this.currentRender;
|
||||
if(!var14.rendered) {
|
||||
if(!var14.addedToRenderQueue) {
|
||||
var14.addedToRenderQueue = true;
|
||||
this.zonesToRender.add(var14);
|
||||
}
|
||||
} else {
|
||||
var14.addedToRenderQueue = false;
|
||||
if(!var14.noContent) {
|
||||
int var15 = var11 * var4 * 2 + (var10 & 1) * var4;
|
||||
int var16 = var10 * var4 - 128 - 16;
|
||||
var1.drawImage(var14.image, var15, var16, (ImageObserver)null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(this.displayHelpText) {
|
||||
var1.setTransform(var2);
|
||||
var10 = this.getHeight() - 32 - 4;
|
||||
var1.setColor(new Color(Integer.MIN_VALUE, true));
|
||||
var1.fillRect(4, this.getHeight() - 32 - 4, this.getWidth() - 8, 32);
|
||||
var1.setColor(Color.WHITE);
|
||||
String var17 = "F1 - F5: load levels | 0-9: Set time of day | Space: return to spawn | Double click: zoom | Escape: hide this text";
|
||||
var1.drawString(var17, this.getWidth() / 2 - var1.getFontMetrics().stringWidth(var17) / 2, var10 + 20);
|
||||
}
|
||||
|
||||
var1.dispose();
|
||||
}
|
||||
|
||||
public void mouseDragged(MouseEvent var1) {
|
||||
int var2 = var1.getX() / this.zoomLevel;
|
||||
int var3 = var1.getY() / this.zoomLevel;
|
||||
this.translateX += var2 - this.xPosition;
|
||||
this.translateY += var3 - this.yPosition;
|
||||
this.xPosition = var2;
|
||||
this.yPosition = var3;
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
public void mouseMoved(MouseEvent var1) {
|
||||
}
|
||||
|
||||
public void mouseClicked(MouseEvent var1) {
|
||||
if(var1.getClickCount() == 2) {
|
||||
this.zoomLevel = 3 - this.zoomLevel;
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void mouseEntered(MouseEvent var1) {
|
||||
}
|
||||
|
||||
public void mouseExited(MouseEvent var1) {
|
||||
}
|
||||
|
||||
public void mousePressed(MouseEvent var1) {
|
||||
int var2 = var1.getX() / this.zoomLevel;
|
||||
int var3 = var1.getY() / this.zoomLevel;
|
||||
this.xPosition = var2;
|
||||
this.yPosition = var3;
|
||||
}
|
||||
|
||||
public void mouseReleased(MouseEvent var1) {
|
||||
}
|
||||
|
||||
public void keyPressed(KeyEvent var1) {
|
||||
if(var1.getKeyCode() == 48) {
|
||||
this.setBrightness(11);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 49) {
|
||||
this.setBrightness(10);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 50) {
|
||||
this.setBrightness(9);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 51) {
|
||||
this.setBrightness(7);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 52) {
|
||||
this.setBrightness(6);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 53) {
|
||||
this.setBrightness(5);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 54) {
|
||||
this.setBrightness(3);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 55) {
|
||||
this.setBrightness(2);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 56) {
|
||||
this.setBrightness(1);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 57) {
|
||||
this.setBrightness(0);
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 112) {
|
||||
this.loadLevel("World1");
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 113) {
|
||||
this.loadLevel("World2");
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 114) {
|
||||
this.loadLevel("World3");
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 115) {
|
||||
this.loadLevel("World4");
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 116) {
|
||||
this.loadLevel("World5");
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 32) {
|
||||
this.translateX = this.translateY = 0;
|
||||
}
|
||||
|
||||
if(var1.getKeyCode() == 27) {
|
||||
this.displayHelpText = !this.displayHelpText;
|
||||
}
|
||||
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
public void keyReleased(KeyEvent var1) {
|
||||
}
|
||||
|
||||
public void keyTyped(KeyEvent var1) {
|
||||
}
|
||||
|
||||
static boolean isRunning(CanvasIsomPreview var0) {
|
||||
return var0.running;
|
||||
}
|
||||
}
|
66
src/game/java/net/minecraft/src/ChatAllowedCharacters.java
Normal file
66
src/game/java/net/minecraft/src/ChatAllowedCharacters.java
Normal file
@ -0,0 +1,66 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
public class ChatAllowedCharacters {
|
||||
/**
|
||||
* This String have the characters allowed in any text drawing of minecraft.
|
||||
*/
|
||||
public static String allowedCharacters = null;
|
||||
|
||||
/**
|
||||
* Array of the special characters that are allowed in any text drawing of
|
||||
* Minecraft.
|
||||
*/
|
||||
public static final char[] allowedCharactersArray = new char[] { '/', '\n', '\r', '\t', '\u0000', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':' };
|
||||
|
||||
/**
|
||||
* Load the font.txt resource file, that is on UTF-8 format. This file contains
|
||||
* the characters that minecraft can render Strings on screen.
|
||||
*/
|
||||
// public static void getAllowedCharacters() {
|
||||
// String var0 = "";
|
||||
//
|
||||
// try {
|
||||
// BufferedReader var1 = new BufferedReader(new InputStreamReader(EaglerAdapter.loadResource("/font.txt"), "UTF-8"));
|
||||
// String var2 = "";
|
||||
//
|
||||
// while ((var2 = var1.readLine()) != null) {
|
||||
// if (!var2.startsWith("#")) {
|
||||
// var0 = var0 + var2;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// var1.close();
|
||||
// } catch (Exception var3) {
|
||||
// ;
|
||||
// }
|
||||
//
|
||||
// allowedCharacters = var0;
|
||||
// }
|
||||
|
||||
public static final boolean isAllowedCharacter(char par0) {
|
||||
return par0 != 167 && (allowedCharacters.indexOf(par0) >= 0 || par0 > 32);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter string by only keeping those characters for which isAllowedCharacter()
|
||||
* returns true.
|
||||
*/
|
||||
public static String filerAllowedCharacters(String par0Str) {
|
||||
StringBuilder var1 = new StringBuilder();
|
||||
char[] var2 = par0Str.toCharArray();
|
||||
int var3 = var2.length;
|
||||
|
||||
for (int var4 = 0; var4 < var3; ++var4) {
|
||||
char var5 = var2[var4];
|
||||
|
||||
if (isAllowedCharacter(var5)) {
|
||||
var1.append(var5);
|
||||
}
|
||||
}
|
||||
|
||||
return var1.toString();
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.nio.FloatBuffer;
|
||||
import net.lax1dude.eaglercraft.internal.buffer.FloatBuffer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class ClippingHelperImplementation extends ClippingHelper {
|
||||
|
@ -1,11 +0,0 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import paulscode.sound.codecs.CodecJOrbis;
|
||||
|
||||
public class CodecMus extends CodecJOrbis {
|
||||
protected InputStream openInputStream() throws IOException {
|
||||
return new MusInputStream(this, this.url, this.urlConnection.getInputStream());
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@ package net.minecraft.src;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.nio.IntBuffer;
|
||||
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
|
||||
import javax.imageio.ImageIO;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
@ -12,6 +12,8 @@ public class FontRenderer {
|
||||
private int fontDisplayLists;
|
||||
private IntBuffer buffer = GLAllocation.createDirectIntBuffer(1024);
|
||||
|
||||
public int FONT_HEIGHT = 9;
|
||||
|
||||
public FontRenderer(GameSettings var1, String var2, RenderEngine var3) {
|
||||
BufferedImage var4;
|
||||
try {
|
||||
@ -112,6 +114,86 @@ public class FontRenderer {
|
||||
|
||||
}
|
||||
|
||||
public String trimStringToWidth(String par1Str, int par2) {
|
||||
return this.trimStringToWidth(par1Str, par2, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trims a string to a specified width, and will reverse it if par3 is set.
|
||||
*/
|
||||
public String trimStringToWidth(String par1Str, int par2, boolean par3) {
|
||||
StringBuilder var4 = new StringBuilder();
|
||||
int var5 = 0;
|
||||
int var6 = par3 ? par1Str.length() - 1 : 0;
|
||||
int var7 = par3 ? -1 : 1;
|
||||
boolean var8 = false;
|
||||
boolean var9 = false;
|
||||
|
||||
for (int var10 = var6; var10 >= 0 && var10 < par1Str.length() && var5 < par2; var10 += var7) {
|
||||
char var11 = par1Str.charAt(var10);
|
||||
int var12 = this.getCharWidth(var11);
|
||||
|
||||
if (var8) {
|
||||
var8 = false;
|
||||
|
||||
if (var11 != 108 && var11 != 76) {
|
||||
if (var11 == 114 || var11 == 82) {
|
||||
var9 = false;
|
||||
}
|
||||
} else {
|
||||
var9 = true;
|
||||
}
|
||||
} else if (var12 < 0) {
|
||||
var8 = true;
|
||||
} else {
|
||||
var5 += var12;
|
||||
|
||||
if (var9) {
|
||||
++var5;
|
||||
}
|
||||
}
|
||||
|
||||
if (var5 > par2) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (par3) {
|
||||
var4.insert(0, var11);
|
||||
} else {
|
||||
var4.append(var11);
|
||||
}
|
||||
}
|
||||
|
||||
return var4.toString();
|
||||
}
|
||||
|
||||
public int getCharWidth(char par1) {
|
||||
if (par1 == 167) {
|
||||
return -1;
|
||||
} else if (par1 == 32) {
|
||||
return 4;
|
||||
} else {
|
||||
int var2 = ChatAllowedCharacters.allowedCharacters.indexOf(par1);
|
||||
|
||||
if (var2 >= 0) {
|
||||
return this.charWidth[var2 + 32];
|
||||
} else if (this.charWidth[par1] != 0) {
|
||||
int var3 = this.charWidth[par1] >>> 4;
|
||||
int var4 = this.charWidth[par1] & 15;
|
||||
|
||||
if (var4 > 7) {
|
||||
var4 = 15;
|
||||
var3 = 0;
|
||||
}
|
||||
|
||||
++var4;
|
||||
return (var4 - var3) / 2 + 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void drawStringWithShadow(String var1, int var2, int var3, int var4) {
|
||||
this.renderString(var1, var2 + 1, var3 + 1, var4, true);
|
||||
this.drawString(var1, var2, var3, var4);
|
||||
|
@ -5,7 +5,7 @@ import org.lwjgl.opengl.GL11;
|
||||
public class Gui {
|
||||
protected float zLevel = 0.0F;
|
||||
|
||||
protected void drawRect(int var1, int var2, int var3, int var4, int var5) {
|
||||
protected static void drawRect(int var1, int var2, int var3, int var4, int var5) {
|
||||
float var6 = (float)(var5 >> 24 & 255) / 255.0F;
|
||||
float var7 = (float)(var5 >> 16 & 255) / 255.0F;
|
||||
float var8 = (float)(var5 >> 8 & 255) / 255.0F;
|
||||
|
@ -17,7 +17,7 @@ public class GuiButton extends Gui {
|
||||
this(var1, var2, var3, 200, 20, var4);
|
||||
}
|
||||
|
||||
protected GuiButton(int var1, int var2, int var3, int var4, int var5, String var6) {
|
||||
public GuiButton(int var1, int var2, int var3, int var4, int var5, String var6) {
|
||||
this.width = 200;
|
||||
this.height = 20;
|
||||
this.enabled = true;
|
||||
|
@ -5,6 +5,8 @@ import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.Transferable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.lax1dude.eaglercraft.EagRuntime;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
@ -48,6 +50,18 @@ public class GuiScreen extends Gui {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void setClipboardString(String text){
|
||||
EagRuntime.setClipboard(text);
|
||||
}
|
||||
|
||||
public static boolean isCtrlKeyDown() {
|
||||
return Keyboard.isKeyDown(29) || Keyboard.isKeyDown(157);
|
||||
}
|
||||
|
||||
public static boolean isShiftKeyDown() {
|
||||
return Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54);
|
||||
}
|
||||
|
||||
protected void mouseClicked(int var1, int var2, int var3) {
|
||||
if(var3 == 0) {
|
||||
for(int var4 = 0; var4 < this.controlList.size(); ++var4) {
|
||||
|
757
src/game/java/net/minecraft/src/GuiTextField.java
Normal file
757
src/game/java/net/minecraft/src/GuiTextField.java
Normal file
@ -0,0 +1,757 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class GuiTextField extends Gui
|
||||
{
|
||||
/**
|
||||
* Have the font renderer from GuiScreen to render the textbox text into the screen.
|
||||
*/
|
||||
private final FontRenderer fontRenderer;
|
||||
private final int xPos;
|
||||
private final int yPos;
|
||||
|
||||
/** The width of this text field. */
|
||||
private final int width;
|
||||
private final int height;
|
||||
|
||||
/** Have the current text beign edited on the textbox. */
|
||||
private String text = "";
|
||||
private int maxStringLength = 32;
|
||||
private int cursorCounter;
|
||||
private boolean enableBackgroundDrawing = true;
|
||||
|
||||
/**
|
||||
* if true the textbox can lose focus by clicking elsewhere on the screen
|
||||
*/
|
||||
private boolean canLoseFocus = true;
|
||||
|
||||
/**
|
||||
* If this value is true along isEnabled, keyTyped will process the keys.
|
||||
*/
|
||||
private boolean isFocused;
|
||||
|
||||
/**
|
||||
* If this value is true along isFocused, keyTyped will process the keys.
|
||||
*/
|
||||
private boolean isEnabled = true;
|
||||
|
||||
/**
|
||||
* The current character index that should be used as start of the rendered text.
|
||||
*/
|
||||
private int lineScrollOffset;
|
||||
private int cursorPosition;
|
||||
|
||||
/** other selection position, maybe the same as the cursor */
|
||||
private int selectionEnd;
|
||||
private int enabledColor = 14737632;
|
||||
private int disabledColor = 7368816;
|
||||
|
||||
/** True if this textbox is visible */
|
||||
private boolean visible = true;
|
||||
|
||||
public GuiTextField(FontRenderer par1FontRenderer, int par2, int par3, int par4, int par5)
|
||||
{
|
||||
this.fontRenderer = par1FontRenderer;
|
||||
this.xPos = par2;
|
||||
this.yPos = par3;
|
||||
this.width = par4;
|
||||
this.height = par5;
|
||||
}
|
||||
|
||||
/**
|
||||
* Increments the cursor counter
|
||||
*/
|
||||
public void updateCursorCounter()
|
||||
{
|
||||
++this.cursorCounter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the text of the textbox.
|
||||
*/
|
||||
public void setText(String par1Str)
|
||||
{
|
||||
if (par1Str.length() > this.maxStringLength)
|
||||
{
|
||||
this.text = par1Str.substring(0, this.maxStringLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.text = par1Str;
|
||||
}
|
||||
|
||||
this.setCursorPositionEnd();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the text beign edited on the textbox.
|
||||
*/
|
||||
public String getText()
|
||||
{
|
||||
return this.text;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return returns the text between the cursor and selectionEnd
|
||||
*/
|
||||
public String getSelectedtext()
|
||||
{
|
||||
int var1 = this.cursorPosition < this.selectionEnd ? this.cursorPosition : this.selectionEnd;
|
||||
int var2 = this.cursorPosition < this.selectionEnd ? this.selectionEnd : this.cursorPosition;
|
||||
return this.text.substring(var1, var2);
|
||||
}
|
||||
|
||||
/**
|
||||
* replaces selected text, or inserts text at the position on the cursor
|
||||
*/
|
||||
public void writeText(String par1Str)
|
||||
{
|
||||
String var2 = "";
|
||||
String var3 = ChatAllowedCharacters.filerAllowedCharacters(par1Str);
|
||||
int var4 = this.cursorPosition < this.selectionEnd ? this.cursorPosition : this.selectionEnd;
|
||||
int var5 = this.cursorPosition < this.selectionEnd ? this.selectionEnd : this.cursorPosition;
|
||||
int var6 = this.maxStringLength - this.text.length() - (var4 - this.selectionEnd);
|
||||
boolean var7 = false;
|
||||
|
||||
if (this.text.length() > 0)
|
||||
{
|
||||
var2 = var2 + this.text.substring(0, var4);
|
||||
}
|
||||
|
||||
int var8;
|
||||
|
||||
if (var6 < var3.length())
|
||||
{
|
||||
var2 = var2 + var3.substring(0, var6);
|
||||
var8 = var6;
|
||||
}
|
||||
else
|
||||
{
|
||||
var2 = var2 + var3;
|
||||
var8 = var3.length();
|
||||
}
|
||||
|
||||
if (this.text.length() > 0 && var5 < this.text.length())
|
||||
{
|
||||
var2 = var2 + this.text.substring(var5);
|
||||
}
|
||||
|
||||
this.text = var2;
|
||||
this.moveCursorBy(var4 - this.selectionEnd + var8);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the specified number of words starting at the cursor position. Negative numbers will delete words left of
|
||||
* the cursor.
|
||||
*/
|
||||
public void deleteWords(int par1)
|
||||
{
|
||||
if (this.text.length() != 0)
|
||||
{
|
||||
if (this.selectionEnd != this.cursorPosition)
|
||||
{
|
||||
this.writeText("");
|
||||
}
|
||||
else
|
||||
{
|
||||
this.deleteFromCursor(this.getNthWordFromCursor(par1) - this.cursorPosition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete the selected text, otherwsie deletes characters from either side of the cursor. params: delete num
|
||||
*/
|
||||
public void deleteFromCursor(int par1)
|
||||
{
|
||||
if (this.text.length() != 0)
|
||||
{
|
||||
if (this.selectionEnd != this.cursorPosition)
|
||||
{
|
||||
this.writeText("");
|
||||
}
|
||||
else
|
||||
{
|
||||
boolean var2 = par1 < 0;
|
||||
int var3 = var2 ? this.cursorPosition + par1 : this.cursorPosition;
|
||||
int var4 = var2 ? this.cursorPosition : this.cursorPosition + par1;
|
||||
String var5 = "";
|
||||
|
||||
if (var3 >= 0)
|
||||
{
|
||||
var5 = this.text.substring(0, var3);
|
||||
}
|
||||
|
||||
if (var4 < this.text.length())
|
||||
{
|
||||
var5 = var5 + this.text.substring(var4);
|
||||
}
|
||||
|
||||
this.text = var5;
|
||||
|
||||
if (var2)
|
||||
{
|
||||
this.moveCursorBy(par1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* see @getNthNextWordFromPos() params: N, position
|
||||
*/
|
||||
public int getNthWordFromCursor(int par1)
|
||||
{
|
||||
return this.getNthWordFromPos(par1, this.getCursorPosition());
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the position of the nth word. N may be negative, then it looks backwards. params: N, position
|
||||
*/
|
||||
public int getNthWordFromPos(int par1, int par2)
|
||||
{
|
||||
return this.func_73798_a(par1, this.getCursorPosition(), true);
|
||||
}
|
||||
|
||||
public int func_73798_a(int par1, int par2, boolean par3)
|
||||
{
|
||||
int var4 = par2;
|
||||
boolean var5 = par1 < 0;
|
||||
int var6 = Math.abs(par1);
|
||||
|
||||
for (int var7 = 0; var7 < var6; ++var7)
|
||||
{
|
||||
if (var5)
|
||||
{
|
||||
while (par3 && var4 > 0 && this.text.charAt(var4 - 1) == 32)
|
||||
{
|
||||
--var4;
|
||||
}
|
||||
|
||||
while (var4 > 0 && this.text.charAt(var4 - 1) != 32)
|
||||
{
|
||||
--var4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int var8 = this.text.length();
|
||||
var4 = this.text.indexOf(32, var4);
|
||||
|
||||
if (var4 == -1)
|
||||
{
|
||||
var4 = var8;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (par3 && var4 < var8 && this.text.charAt(var4) == 32)
|
||||
{
|
||||
++var4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var4;
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves the text cursor by a specified number of characters and clears the selection
|
||||
*/
|
||||
public void moveCursorBy(int par1)
|
||||
{
|
||||
this.setCursorPosition(this.selectionEnd + par1);
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the position of the cursor to the provided index
|
||||
*/
|
||||
public void setCursorPosition(int par1)
|
||||
{
|
||||
this.cursorPosition = par1;
|
||||
int var2 = this.text.length();
|
||||
|
||||
if (this.cursorPosition < 0)
|
||||
{
|
||||
this.cursorPosition = 0;
|
||||
}
|
||||
|
||||
if (this.cursorPosition > var2)
|
||||
{
|
||||
this.cursorPosition = var2;
|
||||
}
|
||||
|
||||
this.setSelectionPos(this.cursorPosition);
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the cursors position to the beginning
|
||||
*/
|
||||
public void setCursorPositionZero()
|
||||
{
|
||||
this.setCursorPosition(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the cursors position to after the text
|
||||
*/
|
||||
public void setCursorPositionEnd()
|
||||
{
|
||||
this.setCursorPosition(this.text.length());
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method from you GuiScreen to process the keys into textbox.
|
||||
*/
|
||||
public boolean textboxKeyTyped(char par1, int par2)
|
||||
{
|
||||
if (this.isEnabled && this.isFocused)
|
||||
{
|
||||
switch (par1)
|
||||
{
|
||||
case 1:
|
||||
this.setCursorPositionEnd();
|
||||
this.setSelectionPos(0);
|
||||
return true;
|
||||
|
||||
case 3:
|
||||
GuiScreen.setClipboardString(this.getSelectedtext());
|
||||
return true;
|
||||
|
||||
case 22:
|
||||
this.writeText(GuiScreen.getClipboardString());
|
||||
return true;
|
||||
|
||||
case 24:
|
||||
GuiScreen.setClipboardString(this.getSelectedtext());
|
||||
this.writeText("");
|
||||
return true;
|
||||
|
||||
default:
|
||||
switch (par2)
|
||||
{
|
||||
case 14:
|
||||
if (GuiScreen.isCtrlKeyDown())
|
||||
{
|
||||
this.deleteWords(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.deleteFromCursor(-1);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case 199:
|
||||
if (GuiScreen.isShiftKeyDown())
|
||||
{
|
||||
this.setSelectionPos(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setCursorPositionZero();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case 203:
|
||||
if (GuiScreen.isShiftKeyDown())
|
||||
{
|
||||
if (GuiScreen.isCtrlKeyDown())
|
||||
{
|
||||
this.setSelectionPos(this.getNthWordFromPos(-1, this.getSelectionEnd()));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setSelectionPos(this.getSelectionEnd() - 1);
|
||||
}
|
||||
}
|
||||
else if (GuiScreen.isCtrlKeyDown())
|
||||
{
|
||||
this.setCursorPosition(this.getNthWordFromCursor(-1));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.moveCursorBy(-1);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case 205:
|
||||
if (GuiScreen.isShiftKeyDown())
|
||||
{
|
||||
if (GuiScreen.isCtrlKeyDown())
|
||||
{
|
||||
this.setSelectionPos(this.getNthWordFromPos(1, this.getSelectionEnd()));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setSelectionPos(this.getSelectionEnd() + 1);
|
||||
}
|
||||
}
|
||||
else if (GuiScreen.isCtrlKeyDown())
|
||||
{
|
||||
this.setCursorPosition(this.getNthWordFromCursor(1));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.moveCursorBy(1);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case 207:
|
||||
if (GuiScreen.isShiftKeyDown())
|
||||
{
|
||||
this.setSelectionPos(this.text.length());
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setCursorPositionEnd();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case 211:
|
||||
if (GuiScreen.isCtrlKeyDown())
|
||||
{
|
||||
this.deleteWords(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.deleteFromCursor(1);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
default:
|
||||
if (ChatAllowedCharacters.isAllowedCharacter(par1))
|
||||
{
|
||||
this.writeText(Character.toString(par1));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Args: x, y, buttonClicked
|
||||
*/
|
||||
public void mouseClicked(int par1, int par2, int par3)
|
||||
{
|
||||
boolean var4 = par1 >= this.xPos && par1 < this.xPos + this.width && par2 >= this.yPos && par2 < this.yPos + this.height;
|
||||
|
||||
if (this.canLoseFocus)
|
||||
{
|
||||
this.setFocused(this.isEnabled && var4);
|
||||
}
|
||||
|
||||
if (this.isFocused && par3 == 0)
|
||||
{
|
||||
int var5 = par1 - this.xPos;
|
||||
|
||||
if (this.enableBackgroundDrawing)
|
||||
{
|
||||
var5 -= 4;
|
||||
}
|
||||
|
||||
String var6 = this.fontRenderer.trimStringToWidth(this.text.substring(this.lineScrollOffset), this.getWidth());
|
||||
this.setCursorPosition(this.fontRenderer.trimStringToWidth(var6, var5).length() + this.lineScrollOffset);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws the textbox
|
||||
*/
|
||||
public void drawTextBox()
|
||||
{
|
||||
if (this.getVisible())
|
||||
{
|
||||
if (this.getEnableBackgroundDrawing())
|
||||
{
|
||||
drawRect(this.xPos - 1, this.yPos - 1, this.xPos + this.width + 1, this.yPos + this.height + 1, -6250336);
|
||||
drawRect(this.xPos, this.yPos, this.xPos + this.width, this.yPos + this.height, -16777216);
|
||||
}
|
||||
|
||||
int var1 = this.isEnabled ? this.enabledColor : this.disabledColor;
|
||||
int var2 = this.cursorPosition - this.lineScrollOffset;
|
||||
int var3 = this.selectionEnd - this.lineScrollOffset;
|
||||
String var4 = this.fontRenderer.trimStringToWidth(this.text.substring(this.lineScrollOffset), this.getWidth());
|
||||
boolean var5 = var2 >= 0 && var2 <= var4.length();
|
||||
boolean var6 = this.isFocused && this.cursorCounter / 6 % 2 == 0 && var5;
|
||||
int var7 = this.enableBackgroundDrawing ? this.xPos + 4 : this.xPos;
|
||||
int var8 = this.enableBackgroundDrawing ? this.yPos + (this.height - 8) / 2 : this.yPos;
|
||||
int var9 = var7;
|
||||
|
||||
if (var3 > var4.length())
|
||||
{
|
||||
var3 = var4.length();
|
||||
}
|
||||
|
||||
if (var4.length() > 0)
|
||||
{
|
||||
String var10 = var5 ? var4.substring(0, var2) : var4;
|
||||
this.fontRenderer.drawStringWithShadow(var10, var7, var8, var1);
|
||||
}
|
||||
|
||||
boolean var13 = this.cursorPosition < this.text.length() || this.text.length() >= this.getMaxStringLength();
|
||||
int var11 = var9;
|
||||
|
||||
if (!var5)
|
||||
{
|
||||
var11 = var2 > 0 ? var7 + this.width : var7;
|
||||
}
|
||||
else if (var13)
|
||||
{
|
||||
var11 = var9 - 1;
|
||||
--var9;
|
||||
}
|
||||
|
||||
if (var4.length() > 0 && var5 && var2 < var4.length())
|
||||
{
|
||||
this.fontRenderer.drawStringWithShadow(var4.substring(var2), var9, var8, var1);
|
||||
}
|
||||
|
||||
if (var6)
|
||||
{
|
||||
if (var13)
|
||||
{
|
||||
Gui.drawRect(var11, var8 - 1, var11 + 1, var8 + 1 + this.fontRenderer.FONT_HEIGHT, -3092272);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.fontRenderer.drawStringWithShadow("_", var11, var8, var1);
|
||||
}
|
||||
}
|
||||
|
||||
if (var3 != var2)
|
||||
{
|
||||
int var12 = var7 + this.fontRenderer.getStringWidth(var4.substring(0, var3));
|
||||
this.drawCursorVertical(var11, var8 - 1, var12 - 1, var8 + 1 + this.fontRenderer.FONT_HEIGHT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* draws the vertical line cursor in the textbox
|
||||
*/
|
||||
private void drawCursorVertical(int par1, int par2, int par3, int par4)
|
||||
{
|
||||
int var5;
|
||||
|
||||
if (par1 < par3)
|
||||
{
|
||||
var5 = par1;
|
||||
par1 = par3;
|
||||
par3 = var5;
|
||||
}
|
||||
|
||||
if (par2 < par4)
|
||||
{
|
||||
var5 = par2;
|
||||
par2 = par4;
|
||||
par4 = var5;
|
||||
}
|
||||
|
||||
Tessellator var6 = Tessellator.instance;
|
||||
GL11.glColor4f(0.0F, 0.0F, 255.0F, 255.0F);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glEnable(GL11.GL_COLOR_LOGIC_OP);
|
||||
//GL11.glLogicOp(GL11.GL_OR_REVERSE);
|
||||
var6.startDrawingQuads();
|
||||
var6.addVertex((double)par1, (double)par4, 0.0D);
|
||||
var6.addVertex((double)par3, (double)par4, 0.0D);
|
||||
var6.addVertex((double)par3, (double)par2, 0.0D);
|
||||
var6.addVertex((double)par1, (double)par2, 0.0D);
|
||||
var6.draw();
|
||||
GL11.glDisable(GL11.GL_COLOR_LOGIC_OP);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
public void setMaxStringLength(int par1)
|
||||
{
|
||||
this.maxStringLength = par1;
|
||||
|
||||
if (this.text.length() > par1)
|
||||
{
|
||||
this.text = this.text.substring(0, par1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the maximum number of character that can be contained in this textbox
|
||||
*/
|
||||
public int getMaxStringLength()
|
||||
{
|
||||
return this.maxStringLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the current position of the cursor
|
||||
*/
|
||||
public int getCursorPosition()
|
||||
{
|
||||
return this.cursorPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* get enable drawing background and outline
|
||||
*/
|
||||
public boolean getEnableBackgroundDrawing()
|
||||
{
|
||||
return this.enableBackgroundDrawing;
|
||||
}
|
||||
|
||||
/**
|
||||
* enable drawing background and outline
|
||||
*/
|
||||
public void setEnableBackgroundDrawing(boolean par1)
|
||||
{
|
||||
this.enableBackgroundDrawing = par1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the text colour for this textbox (disabled text will not use this colour)
|
||||
*/
|
||||
public void setTextColor(int par1)
|
||||
{
|
||||
this.enabledColor = par1;
|
||||
}
|
||||
|
||||
public void setDisabledTextColour(int par1)
|
||||
{
|
||||
this.disabledColor = par1;
|
||||
}
|
||||
|
||||
/**
|
||||
* setter for the focused field
|
||||
*/
|
||||
public void setFocused(boolean par1)
|
||||
{
|
||||
if (par1 && !this.isFocused)
|
||||
{
|
||||
this.cursorCounter = 0;
|
||||
}
|
||||
|
||||
this.isFocused = par1;
|
||||
}
|
||||
|
||||
/**
|
||||
* getter for the focused field
|
||||
*/
|
||||
public boolean isFocused()
|
||||
{
|
||||
return this.isFocused;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean par1)
|
||||
{
|
||||
this.isEnabled = par1;
|
||||
}
|
||||
|
||||
/**
|
||||
* the side of the selection that is not the cursor, maye be the same as the cursor
|
||||
*/
|
||||
public int getSelectionEnd()
|
||||
{
|
||||
return this.selectionEnd;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the width of the textbox depending on if the the box is enabled
|
||||
*/
|
||||
public int getWidth()
|
||||
{
|
||||
return this.getEnableBackgroundDrawing() ? this.width - 8 : this.width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the position of the selection anchor (i.e. position the selection was started at)
|
||||
*/
|
||||
public void setSelectionPos(int par1)
|
||||
{
|
||||
int var2 = this.text.length();
|
||||
|
||||
if (par1 > var2)
|
||||
{
|
||||
par1 = var2;
|
||||
}
|
||||
|
||||
if (par1 < 0)
|
||||
{
|
||||
par1 = 0;
|
||||
}
|
||||
|
||||
this.selectionEnd = par1;
|
||||
|
||||
if (this.fontRenderer != null)
|
||||
{
|
||||
if (this.lineScrollOffset > var2)
|
||||
{
|
||||
this.lineScrollOffset = var2;
|
||||
}
|
||||
|
||||
int var3 = this.getWidth();
|
||||
String var4 = this.fontRenderer.trimStringToWidth(this.text.substring(this.lineScrollOffset), var3);
|
||||
int var5 = var4.length() + this.lineScrollOffset;
|
||||
|
||||
if (par1 == this.lineScrollOffset)
|
||||
{
|
||||
this.lineScrollOffset -= this.fontRenderer.trimStringToWidth(this.text, var3, true).length();
|
||||
}
|
||||
|
||||
if (par1 > var5)
|
||||
{
|
||||
this.lineScrollOffset += par1 - var5;
|
||||
}
|
||||
else if (par1 <= this.lineScrollOffset)
|
||||
{
|
||||
this.lineScrollOffset -= this.lineScrollOffset - par1;
|
||||
}
|
||||
|
||||
if (this.lineScrollOffset < 0)
|
||||
{
|
||||
this.lineScrollOffset = 0;
|
||||
}
|
||||
|
||||
if (this.lineScrollOffset > var2)
|
||||
{
|
||||
this.lineScrollOffset = var2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* if true the textbox can lose focus by clicking elsewhere on the screen
|
||||
*/
|
||||
public void setCanLoseFocus(boolean par1)
|
||||
{
|
||||
this.canLoseFocus = par1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code true} if this textbox is visible
|
||||
*/
|
||||
public boolean getVisible()
|
||||
{
|
||||
return this.visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether or not this textbox is visible
|
||||
*/
|
||||
public void setVisible(boolean par1)
|
||||
{
|
||||
this.visible = par1;
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
|
||||
class MusInputStream extends InputStream {
|
||||
private int hash;
|
||||
private InputStream inputStream;
|
||||
byte[] buffer;
|
||||
final CodecMus codec;
|
||||
|
||||
public MusInputStream(CodecMus var1, URL var2, InputStream var3) {
|
||||
this.codec = var1;
|
||||
this.buffer = new byte[1];
|
||||
this.inputStream = var3;
|
||||
String var4 = var2.getPath();
|
||||
var4 = var4.substring(var4.lastIndexOf("/") + 1);
|
||||
this.hash = var4.hashCode();
|
||||
}
|
||||
|
||||
public int read() throws IOException {
|
||||
int var1 = this.read(this.buffer, 0, 1);
|
||||
return var1 < 0 ? var1 : this.buffer[0];
|
||||
}
|
||||
|
||||
public int read(byte[] var1, int var2, int var3) throws IOException {
|
||||
var3 = this.inputStream.read(var1, var2, var3);
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
byte var5 = var1[var2 + var4] = (byte)(var1[var2 + var4] ^ this.hash >> 8);
|
||||
this.hash = this.hash * 498729871 + 85731 * var5;
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
}
|
@ -126,6 +126,10 @@ public class NBTTagCompound extends NBTBase {
|
||||
return !this.tagMap.containsKey(var1) ? new NBTTagList() : (NBTTagList)this.tagMap.get(var1);
|
||||
}
|
||||
|
||||
public boolean hasNoTags() {
|
||||
return this.tagMap.isEmpty();
|
||||
}
|
||||
|
||||
public boolean getBoolean(String var1) {
|
||||
return this.getByte(var1) != 0;
|
||||
}
|
||||
|
@ -275,25 +275,7 @@ public class NetClientHandler extends NetHandler {
|
||||
}
|
||||
|
||||
public void handleHandshake(Packet2Handshake var1) {
|
||||
if(var1.username.equals("-")) {
|
||||
this.addToSendQueue(new Packet1Login(this.mc.session.username, "Password", 2));
|
||||
} else {
|
||||
try {
|
||||
URL var2 = new URL("http://www.minecraft.net/game/joinserver.jsp?user=" + this.mc.session.username + "&sessionId=" + this.mc.session.sessionId + "&serverId=" + var1.username);
|
||||
BufferedReader var3 = new BufferedReader(new InputStreamReader(var2.openStream()));
|
||||
String var4 = var3.readLine();
|
||||
var3.close();
|
||||
if(var4.equalsIgnoreCase("ok")) {
|
||||
this.addToSendQueue(new Packet1Login(this.mc.session.username, "Password", 2));
|
||||
} else {
|
||||
this.netManager.networkShutdown("Failed to login: " + var4);
|
||||
}
|
||||
} catch (Exception var5) {
|
||||
var5.printStackTrace();
|
||||
this.netManager.networkShutdown("Internal client error: " + var5.toString());
|
||||
}
|
||||
}
|
||||
|
||||
this.addToSendQueue(new Packet1Login(this.mc.session.username, "Password", 8));
|
||||
}
|
||||
|
||||
public void disconnect() {
|
||||
|
@ -1,11 +0,0 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import org.lwjgl.opengl.GLContext;
|
||||
|
||||
public class OpenGlCapsChecker {
|
||||
private static boolean tryCheckOcclusionCapable = false;
|
||||
|
||||
public boolean checkARBOcclusion() {
|
||||
return tryCheckOcclusionCapable && GLContext.getCapabilities().GL_ARB_occlusion_query;
|
||||
}
|
||||
}
|
@ -4,8 +4,8 @@ import java.awt.Graphics;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.ImageObserver;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import net.lax1dude.eaglercraft.internal.buffer.ByteBuffer;
|
||||
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.nio.IntBuffer;
|
||||
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
@ -61,15 +61,15 @@ public class RenderGlobal implements IWorldAccess {
|
||||
this.renderEngine = var2;
|
||||
byte var3 = 64;
|
||||
this.glRenderListBase = GLAllocation.generateDisplayLists(var3 * var3 * var3 * 3);
|
||||
this.occlusionEnabled = var1.getOpenGlCapsChecker().checkARBOcclusion();
|
||||
if(this.occlusionEnabled) {
|
||||
this.occlusionResult.clear();
|
||||
this.glOcclusionQueryBase = GLAllocation.createDirectIntBuffer(var3 * var3 * var3);
|
||||
this.glOcclusionQueryBase.clear();
|
||||
this.glOcclusionQueryBase.position(0);
|
||||
this.glOcclusionQueryBase.limit(var3 * var3 * var3);
|
||||
ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase);
|
||||
}
|
||||
// this.occlusionEnabled = var1.getOpenGlCapsChecker().checkARBOcclusion();
|
||||
// if(this.occlusionEnabled) {
|
||||
// this.occlusionResult.clear();
|
||||
// this.glOcclusionQueryBase = GLAllocation.createDirectIntBuffer(var3 * var3 * var3);
|
||||
// this.glOcclusionQueryBase.clear();
|
||||
// this.glOcclusionQueryBase.position(0);
|
||||
// this.glOcclusionQueryBase.limit(var3 * var3 * var3);
|
||||
// ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase);
|
||||
// }
|
||||
|
||||
this.starGLCallList = GLAllocation.generateDisplayLists(3);
|
||||
GL11.glPushMatrix();
|
||||
@ -391,7 +391,7 @@ public class RenderGlobal implements IWorldAccess {
|
||||
if(this.occlusionEnabled && !this.mc.options.anaglyph && var2 == 0) {
|
||||
byte var18 = 0;
|
||||
int var19 = 16;
|
||||
this.checkOcclusionQueryResult(var18, var19);
|
||||
//this.checkOcclusionQueryResult(var18, var19);
|
||||
|
||||
for(int var20 = var18; var20 < var19; ++var20) {
|
||||
this.sortedWorldRenderers[var20].isVisible = true;
|
||||
@ -412,7 +412,7 @@ public class RenderGlobal implements IWorldAccess {
|
||||
GL11.glDisable(GL11.GL_FOG);
|
||||
GL11.glColorMask(false, false, false, false);
|
||||
GL11.glDepthMask(false);
|
||||
this.checkOcclusionQueryResult(var34, var19);
|
||||
//this.checkOcclusionQueryResult(var34, var19);
|
||||
GL11.glPushMatrix();
|
||||
float var35 = 0.0F;
|
||||
float var21 = 0.0F;
|
||||
@ -444,9 +444,9 @@ public class RenderGlobal implements IWorldAccess {
|
||||
var22 += var32;
|
||||
}
|
||||
|
||||
ARBOcclusionQuery.glBeginQueryARB(GL15.GL_SAMPLES_PASSED, this.sortedWorldRenderers[var23].glOcclusionQuery);
|
||||
//ARBOcclusionQuery.glBeginQueryARB(GL15.GL_SAMPLES_PASSED, this.sortedWorldRenderers[var23].glOcclusionQuery);
|
||||
this.sortedWorldRenderers[var23].callOcclusionQueryList();
|
||||
ARBOcclusionQuery.glEndQueryARB(GL15.GL_SAMPLES_PASSED);
|
||||
//ARBOcclusionQuery.glEndQueryARB(GL15.GL_SAMPLES_PASSED);
|
||||
this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery = true;
|
||||
}
|
||||
}
|
||||
@ -468,21 +468,21 @@ public class RenderGlobal implements IWorldAccess {
|
||||
return var33;
|
||||
}
|
||||
|
||||
private void checkOcclusionQueryResult(int var1, int var2) {
|
||||
for(int var3 = var1; var3 < var2; ++var3) {
|
||||
if(this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery) {
|
||||
this.occlusionResult.clear();
|
||||
ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT_AVAILABLE, this.occlusionResult);
|
||||
if(this.occlusionResult.get(0) != 0) {
|
||||
this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false;
|
||||
this.occlusionResult.clear();
|
||||
ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT, this.occlusionResult);
|
||||
this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// private void checkOcclusionQueryResult(int var1, int var2) {
|
||||
// for(int var3 = var1; var3 < var2; ++var3) {
|
||||
// if(this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery) {
|
||||
// this.occlusionResult.clear();
|
||||
// ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT_AVAILABLE, this.occlusionResult);
|
||||
// if(this.occlusionResult.get(0) != 0) {
|
||||
// this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false;
|
||||
// this.occlusionResult.clear();
|
||||
// ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT, this.occlusionResult);
|
||||
// this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
private int renderSortedRenderers(int var1, int var2, int var3, double var4) {
|
||||
this.glRenderLists.clear();
|
||||
|
@ -1,10 +1,14 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.nio.FloatBuffer;
|
||||
import net.lax1dude.eaglercraft.internal.buffer.FloatBuffer;
|
||||
import net.lax1dude.eaglercraft.opengl.GlStateManager;
|
||||
import net.peyton.eagler.v1_12.vec.Vec3D_112;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class RenderHelper {
|
||||
private static FloatBuffer colorBuffer = GLAllocation.createDirectFloatBuffer(16);
|
||||
private static final Vec3D_112 LIGHT0_POS = (new Vec3D_112(0.20000000298023224D, 1.0D, -0.699999988079071D)).normalize();
|
||||
private static final Vec3D_112 LIGHT1_POS = (new Vec3D_112(-0.20000000298023224D, 1.0D, 0.699999988079071D)).normalize();
|
||||
|
||||
public static void disableStandardItemLighting() {
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
@ -15,25 +19,10 @@ public class RenderHelper {
|
||||
|
||||
public static void enableStandardItemLighting() {
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_LIGHT0);
|
||||
GL11.glEnable(GL11.GL_LIGHT1);
|
||||
GlStateManager.enableMCLight(0, 0.6f, LIGHT0_POS.xCoord, LIGHT0_POS.yCoord, LIGHT0_POS.zCoord, 0.0D);
|
||||
GlStateManager.enableMCLight(1, 0.6f, LIGHT1_POS.xCoord, LIGHT1_POS.yCoord, LIGHT1_POS.zCoord, 0.0D);
|
||||
GlStateManager.setMCLightAmbient(0.4f, 0.4f, 0.4f);
|
||||
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
|
||||
GL11.glColorMaterial(GL11.GL_FRONT_AND_BACK, GL11.GL_AMBIENT_AND_DIFFUSE);
|
||||
float var0 = 0.4F;
|
||||
float var1 = 0.6F;
|
||||
float var2 = 0.0F;
|
||||
Vec3D var3 = Vec3D.createVector((double)0.2F, 1.0D, (double)-0.7F).normalize();
|
||||
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, setColorBuffer(var3.xCoord, var3.yCoord, var3.zCoord, 0.0D));
|
||||
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_DIFFUSE, setColorBuffer(var1, var1, var1, 1.0F));
|
||||
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_AMBIENT, setColorBuffer(0.0F, 0.0F, 0.0F, 1.0F));
|
||||
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_SPECULAR, setColorBuffer(var2, var2, var2, 1.0F));
|
||||
var3 = Vec3D.createVector((double)-0.2F, 1.0D, (double)0.7F).normalize();
|
||||
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, setColorBuffer(var3.xCoord, var3.yCoord, var3.zCoord, 0.0D));
|
||||
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, setColorBuffer(var1, var1, var1, 1.0F));
|
||||
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_AMBIENT, setColorBuffer(0.0F, 0.0F, 0.0F, 1.0F));
|
||||
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_SPECULAR, setColorBuffer(var2, var2, var2, 1.0F));
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, setColorBuffer(var0, var0, var0, 1.0F));
|
||||
}
|
||||
|
||||
private static FloatBuffer setColorBuffer(double var0, double var2, double var4, double var6) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.nio.IntBuffer;
|
||||
import net.lax1dude.eaglercraft.internal.buffer.IntBuffer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class RenderList {
|
||||
|
@ -30,26 +30,26 @@ public class SoundManager {
|
||||
}
|
||||
|
||||
private void tryToSetLibraryAndCodecs() {
|
||||
try {
|
||||
float var1 = this.options.soundVolume;
|
||||
float var2 = this.options.musicVolume;
|
||||
this.options.soundVolume = 0.0F;
|
||||
this.options.musicVolume = 0.0F;
|
||||
this.options.saveOptions();
|
||||
SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class);
|
||||
SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
|
||||
SoundSystemConfig.setCodec("mus", CodecMus.class);
|
||||
SoundSystemConfig.setCodec("wav", CodecWav.class);
|
||||
sndSystem = new SoundSystem();
|
||||
this.options.soundVolume = var1;
|
||||
this.options.musicVolume = var2;
|
||||
this.options.saveOptions();
|
||||
} catch (Throwable var3) {
|
||||
var3.printStackTrace();
|
||||
System.err.println("error linking with the LibraryJavaSound plug-in");
|
||||
}
|
||||
|
||||
loaded = true;
|
||||
// try {
|
||||
// float var1 = this.options.soundVolume;
|
||||
// float var2 = this.options.musicVolume;
|
||||
// this.options.soundVolume = 0.0F;
|
||||
// this.options.musicVolume = 0.0F;
|
||||
// this.options.saveOptions();
|
||||
// SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class);
|
||||
// SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
|
||||
// SoundSystemConfig.setCodec("mus", CodecMus.class);
|
||||
// SoundSystemConfig.setCodec("wav", CodecWav.class);
|
||||
// sndSystem = new SoundSystem();
|
||||
// this.options.soundVolume = var1;
|
||||
// this.options.musicVolume = var2;
|
||||
// this.options.saveOptions();
|
||||
// } catch (Throwable var3) {
|
||||
// var3.printStackTrace();
|
||||
// System.err.println("error linking with the LibraryJavaSound plug-in");
|
||||
// }
|
||||
//
|
||||
// loaded = true;
|
||||
}
|
||||
|
||||
public void onSoundOptionsChanged() {
|
||||
|
@ -1,21 +0,0 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
class ThreadRunIsoClient extends Thread {
|
||||
final CanvasIsomPreview isomPreview;
|
||||
|
||||
ThreadRunIsoClient(CanvasIsomPreview var1) {
|
||||
this.isomPreview = var1;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
while(CanvasIsomPreview.isRunning(this.isomPreview)) {
|
||||
this.isomPreview.render();
|
||||
|
||||
try {
|
||||
Thread.sleep(1L);
|
||||
} catch (Exception var2) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import net.lax1dude.eaglercraft.internal.vfs2.VFile2;
|
||||
|
||||
class WorldIso extends World {
|
||||
final CanvasIsomPreview isomPreview;
|
||||
|
||||
WorldIso(CanvasIsomPreview var1, VFile2 var2, String var3) {
|
||||
super(var2, var3);
|
||||
this.isomPreview = var1;
|
||||
}
|
||||
|
||||
protected IChunkProvider getChunkProvider(VFile2 var1) {
|
||||
return new ChunkProviderIso(this, new ChunkLoader(var1, false));
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
@ -11,7 +11,7 @@
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
package net.lax1dude.eaglercraft.profile;
|
||||
@ -28,7 +28,7 @@ import net.minecraft.src.NBTTagCompound;
|
||||
public class EaglerProfile {
|
||||
|
||||
private static String username;
|
||||
|
||||
|
||||
public static String getName() {
|
||||
return username;
|
||||
}
|
||||
@ -37,7 +37,7 @@ public class EaglerProfile {
|
||||
username = str;
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
if(mc != null && mc.session != null) {
|
||||
mc.session.playerName = str;
|
||||
mc.session.username = str;
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ public class EaglerProfile {
|
||||
|
||||
NBTTagCompound profile;
|
||||
try {
|
||||
profile = CompressedStreamTools.func_1138_a(new EaglerInputStream(profileStorage));
|
||||
profile = CompressedStreamTools.readCompressed(new EaglerInputStream(profileStorage));
|
||||
}catch(IOException ex) {
|
||||
return;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user