mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 18:45:23 -04:00
Include username in window title and add rand() to direct connect screen (Thanks Fudgie), also avoid rendering empty translucent batches twice. Improves FPS by 4-5 on 1024^3 maps.
This commit is contained in:
parent
e150da7e85
commit
cac62b14db
@ -463,7 +463,7 @@ namespace ClassicalSharp {
|
||||
|
||||
public Game( string username, string mppass, string skinServer,
|
||||
bool nullContext, int width, int height )
|
||||
: base( width, height, GraphicsMode.Default, Program.AppName, nullContext, 0, DisplayDevice.Default ) {
|
||||
: base( width, height, GraphicsMode.Default, Program.AppName + " (" + username + ")", nullContext, 0, DisplayDevice.Default ) {
|
||||
Username = username;
|
||||
Mppass = mppass;
|
||||
this.skinServer = skinServer;
|
||||
|
@ -36,7 +36,7 @@ namespace ClassicalSharp {
|
||||
if( args.Length == 0 || args.Length == 1 ) {
|
||||
const string skinServer = "http://s3.amazonaws.com/MinecraftSkins/";
|
||||
|
||||
using( Game game = new Game( "LocalPlayer", null, skinServer, nullContext, width, height ) )
|
||||
using( Game game = new Game( "Singleplayer", null, skinServer, nullContext, width, height ) )
|
||||
game.Run();
|
||||
} else if( args.Length < 4 ) {
|
||||
Utils.LogDebug( "ClassicalSharp.exe is only the raw client. You must either use the launcher or"
|
||||
|
@ -49,6 +49,7 @@ namespace ClassicalSharp {
|
||||
|
||||
ChunkPartInfo part = info.TranslucentParts[batch];
|
||||
if( part.IndicesCount == 0 ) continue;
|
||||
usedTranslucent[batch] = true;
|
||||
DrawTranslucentPart( info, ref part );
|
||||
}
|
||||
}
|
||||
|
@ -36,11 +36,13 @@ namespace ClassicalSharp {
|
||||
ChunkInfo[] chunks, unsortedChunks;
|
||||
Vector3I chunkPos = new Vector3I( int.MaxValue, int.MaxValue, int.MaxValue );
|
||||
int elementsPerBitmap = 0;
|
||||
bool[] usedTranslucent;
|
||||
|
||||
public MapRenderer( Game game ) {
|
||||
this.game = game;
|
||||
_1Dcount = game.TerrainAtlas1D.TexIds.Length;
|
||||
_1DUsed = game.TerrainAtlas1D.CalcMaxUsedRow( game.TerrainAtlas, game.BlockInfo );
|
||||
usedTranslucent = new bool[_1DUsed];
|
||||
|
||||
builder = new ChunkMeshBuilder( game );
|
||||
api = game.Graphics;
|
||||
@ -91,10 +93,12 @@ namespace ClassicalSharp {
|
||||
}
|
||||
elementsPerBitmap = game.TerrainAtlas1D.elementsPerBitmap;
|
||||
_1DUsed = game.TerrainAtlas1D.CalcMaxUsedRow( game.TerrainAtlas, game.BlockInfo );
|
||||
usedTranslucent = new bool[_1DUsed];
|
||||
}
|
||||
|
||||
void BlockDefinitionChanged( object sender, EventArgs e ) {
|
||||
_1DUsed = game.TerrainAtlas1D.CalcMaxUsedRow( game.TerrainAtlas, game.BlockInfo );
|
||||
usedTranslucent = new bool[_1DUsed];
|
||||
}
|
||||
|
||||
void OnNewMap( object sender, EventArgs e ) {
|
||||
@ -316,6 +320,7 @@ namespace ClassicalSharp {
|
||||
api.AlphaBlending = false;
|
||||
api.ColourWrite = false;
|
||||
for( int batch = 0; batch < _1DUsed; batch++ ) {
|
||||
usedTranslucent[batch] = false;
|
||||
RenderTranslucentBatchDepthPass( batch );
|
||||
}
|
||||
|
||||
@ -326,6 +331,7 @@ namespace ClassicalSharp {
|
||||
api.DepthWrite = false; // we already calculated depth values in depth pass
|
||||
|
||||
for( int batch = 0; batch < _1DUsed; batch++ ) {
|
||||
if( !usedTranslucent[batch] ) continue;
|
||||
api.BindTexture( texIds[batch] );
|
||||
RenderTranslucentBatch( batch );
|
||||
}
|
||||
|
@ -134,10 +134,10 @@ namespace Launcher2 {
|
||||
if( !Options.Load() )
|
||||
return;
|
||||
|
||||
Options.Set( "launcher-dc-username", data.Username );
|
||||
Options.Set( "launcher-dc-username", data.RealUsername );
|
||||
Options.Set( "launcher-dc-ip", data.Ip );
|
||||
Options.Set( "launcher-dc-port", data.Port );
|
||||
Options.Set( "launcher-dc-mppass", Secure.Encode( data.Mppass, data.Username ) );
|
||||
Options.Set( "launcher-dc-mppass", Secure.Encode( data.Mppass, data.RealUsername ) );
|
||||
Options.Set( "launcher-dc-ccskins", ccSkins );
|
||||
Options.Save();
|
||||
}
|
||||
@ -159,6 +159,8 @@ namespace Launcher2 {
|
||||
Client.Start( data, ccSkins, ref game.ShouldExit );
|
||||
}
|
||||
|
||||
static Random rnd = new Random();
|
||||
static byte[] rndBytes = new byte[8];
|
||||
ClientStartData GetStartData( string user, string mppass, string ip, string port ) {
|
||||
SetStatus( "" );
|
||||
|
||||
@ -179,7 +181,13 @@ namespace Launcher2 {
|
||||
|
||||
if( String.IsNullOrEmpty( mppass ) )
|
||||
mppass = "(none)";
|
||||
return new ClientStartData( user, mppass, ip, port );
|
||||
|
||||
ClientStartData data = new ClientStartData( user, mppass, ip, port );
|
||||
if( user.ToLowerInvariant() == "rand()" || user.ToLowerInvariant() == "random()") {
|
||||
rnd.NextBytes( rndBytes );
|
||||
data.Username = Convert.ToBase64String( rndBytes ).TrimEnd( '=' );
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -48,10 +48,10 @@ namespace Launcher2 {
|
||||
shouldExit = Options.GetBool( OptionsKey.AutoCloseLauncher, false );
|
||||
if( data == null ) return;
|
||||
|
||||
Options.Set( "launcher-username", data.Username );
|
||||
Options.Set( "launcher-username", data.RealUsername );
|
||||
Options.Set( "launcher-ip", data.Ip );
|
||||
Options.Set( "launcher-port", data.Port );
|
||||
Options.Set( "launcher-mppass", Secure.Encode( data.Mppass, data.Username ) );
|
||||
Options.Set( "launcher-mppass", Secure.Encode( data.Mppass, data.RealUsername ) );
|
||||
Options.Set( "launcher-ccskins", classiCubeSkins );
|
||||
Options.Save();
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ namespace Launcher2 {
|
||||
|
||||
public string Username;
|
||||
|
||||
public string RealUsername;
|
||||
|
||||
public string Mppass;
|
||||
|
||||
public string Ip;
|
||||
@ -17,6 +19,7 @@ namespace Launcher2 {
|
||||
|
||||
public ClientStartData( string user, string mppass, string ip, string port ) {
|
||||
Username = user;
|
||||
RealUsername = user;
|
||||
Mppass = mppass;
|
||||
Ip = ip;
|
||||
Port = port;
|
||||
|
Loading…
x
Reference in New Issue
Block a user