public Game() { one = 1; map = new Map(); performanceinfo = new DictionaryStringString(); AudioEnabled = true; AutoJumpEnabled = false; playerPositionSpawnX = 15 + one / 2; playerPositionSpawnY = 64; playerPositionSpawnZ = 15 + one / 2; TextureId = new int[MaxBlockTypes][]; for (int i = 0; i < MaxBlockTypes; i++) { TextureId[i] = new int[6]; } TextureIdForInventory = new int[MaxBlockTypes]; language = new Language(); lastplacedblockX = -1; lastplacedblockY = -1; lastplacedblockZ = -1; mLightLevels = new float[16]; sunlight_ = 15; mvMatrix = new StackMatrix4(); pMatrix = new StackMatrix4(); mvMatrix.Push(Mat4.Create()); pMatrix.Push(Mat4.Create()); whitetexture = -1; cachedTextTexturesMax = 1024; cachedTextTextures = new CachedTextTexture[cachedTextTexturesMax]; for (int i = 0; i < cachedTextTexturesMax; i++) { cachedTextTextures[i] = null; } packetLen = new IntRef(); ENABLE_DRAW2D = true; AllowFreemove = true; enableCameraControl = true; textures = new DictionaryStringInt1024(); ServerInfo = new ServerInformation(); menustate = new MenuState(); mouseleftclick = false; mouseleftdeclick = false; wasmouseleft = false; mouserightclick = false; mouserightdeclick = false; wasmouseright = false; ENABLE_LAG = 0; znear = one / 10; CameraMatrix = new GetCameraMatrix(); ENABLE_ZFAR = true; TotalAmmo = new int[GlobalVar.MAX_BLOCKTYPES]; LoadedAmmo = new int[GlobalVar.MAX_BLOCKTYPES]; AllowedFontsCount = 1; AllowedFonts = new string[AllowedFontsCount]; AllowedFonts[0] = "Verdana"; fov = Game.GetPi() / 3; cameratype = CameraType.Fpp; ENABLE_TPP_VIEW = false; basemovespeed = 5; movespeed = 5; RadiusWhenMoving = one * 3 / 10; playervelocity = new Vector3Ref(); LocalPlayerId = -1; dialogs = new VisibleDialog[512]; dialogsCount = 512; blockHealth = new DictionaryVector3Float(); playertexturedefault = -1; a = new AnimationState(); constRotationSpeed = one * 180 / 20; modmanager = new ClientModManager1(); particleEffectBlockBreak = new ModDrawParticleEffectBlockBreak(); PICK_DISTANCE = 4.1f; selectedmodelid = -1; grenadetime = 3; rotationspeed = one * 15 / 100; entities = new Entity[entitiesMax]; for (int i = 0; i < entitiesMax; i++) { entities[i] = null; } entitiesCount = 512; PlayerPushDistance = 2; const int KeysMax = 256; keyboardState = new bool[KeysMax]; for (int i = 0; i < KeysMax; i++) { keyboardState[i] = false; } keyboardStateRaw = new bool[KeysMax]; for (int i = 0; i < KeysMax; i++) { keyboardStateRaw[i] = false; } overheadcameradistance = 10; tppcameradistance = 3; TPP_CAMERA_DISTANCE_MIN = 1; TPP_CAMERA_DISTANCE_MAX = 10; options = new OptionsCi(); overheadcameraK = new Kamera(); fillAreaLimit = 200; speculativeCount = 0; speculative = new Speculative[speculativeMax]; typinglog = new string[1024 * 16]; typinglogCount = 0; NewBlockTypes = new Packet_BlockType[GlobalVar.MAX_BLOCKTYPES]; localplayeranim = new AnimationState(); localplayeranimationhint = new AnimationHint(); enable_move = true; handTexture = -1; modelViewInverted = new float[16]; GLScaleTempVec3 = Vec3.Create(); GLRotateTempVec3 = Vec3.Create(); GLTranslateTempVec3 = Vec3.Create(); identityMatrix = Mat4.Identity_(Mat4.Create()); Set3dProjectionTempMat4 = Mat4.Create(); getAsset = new string[1024 * 2]; PlayerStats = new Packet_ServerPlayerStats(); mLightLevels = new float[16]; for (int i = 0; i < 16; i++) { mLightLevels[i] = one * i / 15; } soundnow = new BoolRef(); camera = Mat4.Create(); packetHandlers = new ClientPacketHandler[256]; player = new Entity(); player.position = new EntityPosition_(); currentlyAttackedEntity = -1; ChatLinesMax = 1; ChatLines = new Chatline[ChatLinesMax]; ChatLineLength = 64; audio = new AudioControl(); CameraEyeX = -1; CameraEyeY = -1; CameraEyeZ = -1; controls = new Controls(); movedz = 0; taskScheduler = new TaskScheduler(); commitActions = ListAction.Create(16 * 1024); constWallDistance = 0.3f; mouseSmoothing = true; }
public void Start() { textColorRenderer = new TextColorRenderer(); textColorRenderer.platform = platform; language.platform = platform; language.LoadTranslations(); GameData gamedata = new GameData(); gamedata.Start(); Config3d config3d = new Config3d(); if (platform.IsFastSystem()) { config3d.viewdistance = 128; } else { config3d.viewdistance = 32; } ITerrainTextures terrainTextures = new ITerrainTextures(); terrainTextures.game = this; d_TextureAtlasConverter = new TextureAtlasConverter(); d_TerrainTextures = terrainTextures; FrustumCulling frustumculling = new FrustumCulling(); frustumculling.d_GetCameraMatrix = this.CameraMatrix; frustumculling.platform = platform; d_FrustumCulling = frustumculling; TerrainChunkTesselatorCi terrainchunktesselator = new TerrainChunkTesselatorCi(); d_TerrainChunkTesselator = terrainchunktesselator; d_Batcher = new MeshBatcher(); d_Batcher.d_FrustumCulling = frustumculling; d_Batcher.game = this; d_FrustumCulling = frustumculling; d_Data = gamedata; d_DataMonsters = new GameDataMonsters(); d_Config3d = config3d; ModDrawParticleEffectBlockBreak particle = new ModDrawParticleEffectBlockBreak(); this.particleEffectBlockBreak = particle; this.d_Data = gamedata; d_TerrainTextures = terrainTextures; map.Reset(256, 256, 128); SunMoonRenderer sunmoonrenderer = new SunMoonRenderer(); d_SunMoonRenderer = sunmoonrenderer; d_SunMoonRenderer = sunmoonrenderer; d_Heightmap = new InfiniteMapChunked2d(); d_Heightmap.d_Map = this; d_Heightmap.Restart(); d_TerrainChunkTesselator = terrainchunktesselator; terrainchunktesselator.game = this; Packet_Inventory inventory = new Packet_Inventory(); inventory.RightHand = new Packet_Item[10]; GameDataItemsClient dataItems = new GameDataItemsClient(); dataItems.game = this; InventoryUtilClient inventoryUtil = new InventoryUtilClient(); d_Inventory = inventory; d_InventoryUtil = inventoryUtil; inventoryUtil.d_Inventory = inventory; inventoryUtil.d_Items = dataItems; d_Inventory = inventory; platform.AddOnCrash(OnCrashHandlerLeave.Create(this)); rnd = platform.RandomCreate(); clientmods = new ClientMod[128]; clientmodsCount = 0; modmanager.game = this; AddMod(new ModDrawMain()); AddMod(new ModUpdateMain()); AddMod(new ModNetworkProcess()); AddMod(new ModUnloadRendererChunks()); AddMod(new ModAutoCamera()); AddMod(new ModFpsHistoryGraph()); AddMod(new ModWalkSound()); AddMod(new ModFallDamageToPlayer()); AddMod(new ModBlockDamageToPlayer()); AddMod(new ModLoadPlayerTextures()); AddMod(new ModSendPosition()); AddMod(new ModInterpolatePositions()); AddMod(new ModRail()); AddMod(new ModCompass()); AddMod(new ModGrenade()); AddMod(new ModBullet()); AddMod(new ModExpire()); AddMod(new ModReloadAmmo()); AddMod(new ModPush()); if (platform.IsFastSystem()) { AddMod(new ModSkySphereAnimated()); } else { AddMod(new ModSkySphereStatic()); } AddMod(sunmoonrenderer); AddMod(new ModDrawTestModel()); AddMod(new ModDrawLinesAroundSelectedBlock()); AddMod(new ModDebugChunk()); AddMod(new ModDrawArea()); AddMod(new ModDrawTerrain()); AddMod(new ModDrawPlayers()); AddMod(new ModDrawPlayerNames()); AddMod(new ModDrawText()); AddMod(new ModDrawParticleEffectBlockBreak()); AddMod(new ModDrawSprites()); AddMod(new ModDrawMinecarts()); AddMod(new ModDrawHand2d()); AddMod(new ModDrawHand3d()); AddMod(new ModGuiCrafting()); AddMod(new ModDialog()); AddMod(new ModPicking()); AddMod(new ModClearInactivePlayersDrawInfo()); AddMod(new ModCameraKeys()); AddMod(new ModSendActiveMaterial()); AddMod(new ModCamera()); AddMod(new ModNetworkEntity()); AddMod(new ModGuiInventory()); AddMod(new ModGuiTouchButtons()); AddMod(new ModGuiEscapeMenu()); AddMod(new ModGuiMapLoading()); AddMod(new ModDraw2dMisc()); AddMod(new ModGuiChat()); AddMod(new ModScreenshot()); AddMod(new ModAudio()); s = new BlockOctreeSearcher(); s.platform = platform; //Prevent loding screen from immediately displaying lag symbol LastReceivedMilliseconds = platform.TimeMillisecondsFromStart(); ENABLE_DRAW_TEST_CHARACTER = platform.IsDebuggerAttached(); int maxTextureSize_ = platform.GlGetMaxTextureSize(); if (maxTextureSize_ < 1024) { maxTextureSize_ = 1024; } maxTextureSize = maxTextureSize_; MapLoadingStart(); platform.GlClearColorRgbaf(0, 0, 0, 1); if (d_Config3d.ENABLE_BACKFACECULLING) { platform.GlDepthMask(true); platform.GlEnableDepthTest(); platform.GlCullFaceBack(); platform.GlEnableCullFace(); } platform.GlEnableLighting(); platform.GlEnableColorMaterial(); platform.GlColorMaterialFrontAndBackAmbientAndDiffuse(); platform.GlShadeModelSmooth(); }