protected override void LoadContent() { _font = Content.LoadBitmapFont("Content/Broadway_64x64.fnt"); _text = _font.Build("Hello, Graffiti!", new Brush { new Layer { Texture = Content.Load<Texture2D>("Content/Gradient"), Color = (ConstantColor)Color.White, BlendState = BlendState.AlphaBlend, Transform = new TranslateTransform { Mode = Mode.Loop, Keyframes = new Keyframes<Vector3> { { 0f, Vector3.Zero }, { 1000f, Vector3.One } } } } }); _text.Transform = new TransformGroup { new RotateTransform { Keyframes = new Keyframes<Quaternion> { { 0f, Quaternion.CreateFromYawPitchRoll(0, 0, 0) }, { 100f, Quaternion.CreateFromYawPitchRoll(0, 0, 0.1f) }, { 200f, Quaternion.CreateFromYawPitchRoll(0, 0, 0) }, { 300f, Quaternion.CreateFromYawPitchRoll(0, 0, -0.1f) }, { 400f, Quaternion.CreateFromYawPitchRoll(0, 0, 0) }, }, Mode = Mode.Loop }, new ScaleTransform { Keyframes = new Keyframes<Vector3> { { 0f, Vector3.One }, { 250f, new Vector3(1.2f, 1.2f, 1f) }, { 500f, Vector3.One }, }, Mode = Mode.Loop } }; }
static void Init(IntPtr pParam) { IEngineSubSystem subSys = null; IResourceManager resman; engCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out subSys); resman = (IResourceManager)subSys; IEngineBaseObject obj; resman.GetDefaultResource(E_ENGINE_OBJECT_TYPE.EOT_BITMAP_FONT, out obj); mainFont = (IBitmapFont)obj; engCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_INPUT, out subSys); engInput = (IInput)subSys; }
void Init(IntPtr pParam) { IRender pRender; IEngineSubSystem pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RENDER, out pSubSys); pRender = (IRender)pSubSys; pRender.GetRender2D(out pRender2D); // All game logic is developed for this screen resolution, so will keep it (on logical level). pRender2D.SetResolutionCorrection(Res.GameVpWidth, Res.GameVpHeight); pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_INPUT, out pSubSys); pInput = (IInput)pSubSys; pInput.Configure(E_INPUT_CONFIGURATION_FLAGS.ICF_HIDE_CURSOR); IResourceManager pResMan; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out pSubSys); pResMan = (IResourceManager)pSubSys; // Load resources and give them names to use in future via resource manager. IEngineBaseObject pBaseObj; pResMan.Load(ResPath + "meshes\\planets\\planet.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH, Res.MeshPlanet); pResMan.Load(ResPath + "meshes\\planets\\clouds.jpg", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_3D, Res.TexClouds); pResMan.Load(ResPath + "meshes\\planets\\earth.jpg", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_3D, Res.TexPlanet); pResMan.Load(ResPath + "sprites\\space_bg.jpg", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D, Res.TexStars); pResMan.Load(ResPath + "meshes\\planets\\asteroid.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH, Res.MeshAsteroid); pResMan.Load(ResPath + "meshes\\planets\\asteroid.jpg", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_3D, Res.TexAsteroid); pResMan.Load(ResPath + "meshes\\space_ship\\ship.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH, Res.MeshShip); pResMan.Load(ResPath + "meshes\\space_ship\\ship.jpg", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_3D, Res.TexShip); pResMan.Load(ResPath + "sprites\\spark.bmp", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D, Res.TexSpark); pResMan.Load(ResPath + "sounds\\explo.wav", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.RES_LOAD_DEFAULT, Res.SndExplo); pResMan.Load(ResPath + "sounds\\fire.wav", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.RES_LOAD_DEFAULT, Res.SndFire); pResMan.Load(ResPath + "sprites\\explo.jpg", out pBaseObj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D, Res.TexExplo); ((ITexture)pBaseObj).SetFrameSize(Res.ExploAnimationFramesSize, Res.ExploAnimationFramesSize); pResMan.Load(ResPath + "fonts\\Times_New_Roman_18_Bold.dft", out pBaseObj, 0, Res.FntMain); pFnt = (IBitmapFont)pBaseObj; StartGame(); }
public CScorePopup(IGameObjectManager pObjMan, IEngineCore pEngineCore, TPoint2 stPos, float fSize, uint uiScore) : base(pObjMan, pEngineCore) { _uiScore = uiScore; pObjMan.IncreaseGameScore(uiScore); RenderLayer = 5; _fSize = Res.Clamp(fSize / 100f, 0.25f, 5f); _stPos = stPos; IResourceManager pResMan; IEngineSubSystem pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out pSubSys); pResMan = (IResourceManager)pSubSys; IEngineBaseObject pBaseObj; pResMan.GetResourceByName(Res.FntMain, out pBaseObj); _pFnt = (IBitmapFont)pBaseObj; }
void Init(IntPtr pParam) { IEngineSubSystem pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_INPUT, out pSubSys); pInput = (IInput)pSubSys; IResourceManager pResMan; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out pSubSys); pResMan = (IResourceManager)pSubSys; IEngineBaseObject pBaseObj = null; pResMan.Load(ResPath + "sprites\\cartoon_cloudy_night_sky.jpg", out pBaseObj, 0); pTex = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_owl.png", out pBaseObj, 0); pTexSprite = (ITexture)pBaseObj; pResMan.GetDefaultResource(E_ENGINE_OBJECT_TYPE.EOT_BITMAP_FONT, out pBaseObj); pFont = (IBitmapFont)pBaseObj; pTexSprite.SetFrameSize(48, 128); }
void Init(IntPtr pParam) { IEngineSubSystem p_sub_sys = null; IResourceManager p_res_man = null; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out p_sub_sys); p_res_man = (IResourceManager)p_sub_sys; IRender p_render = null; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RENDER, out p_sub_sys); p_render = (IRender)p_sub_sys; p_render.GetRender2D(out pRender2D); IEngineBaseObject p_obj = null; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_INPUT, out p_sub_sys); pInput = (IInput)p_sub_sys; pInput.Configure(E_INPUT_CONFIGURATION_FLAGS.ICF_HIDE_CURSOR); p_res_man.GetDefaultResource(E_ENGINE_OBJECT_TYPE.EOT_BITMAP_FONT, out p_obj); pFont = (IBitmapFont)p_obj; // Background clear color setup. TColor4 tc = new TColor4(38, 38, 55, 255); p_render.SetClearColor(ref tc); // This example adapted only for 800X600 resolution, if even resolution will be higher it won't effect it. pRender2D.SetResolutionCorrection(GAME_VP_WIDTH, GAME_VP_HEIGHT, true); p_res_man.Load(RESOURCE_PATH + "sounds\\owl.wav", out p_obj, 0); pSndOwl = (ISoundSample)p_obj; p_res_man.Load(RESOURCE_PATH + "sounds\\forest_ambient.wav", out p_obj, 0); pForestAmbient = (ISoundSample)p_obj; pForestAmbient.PlayEx(out pChannelAmbientLoop, E_SOUND_SAMPLE_PARAMS.SSP_LOOPED); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_forest_background.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pBg = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_cloudy_night_sky.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pSky = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "textures\\smoke.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pFog = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "textures\\light.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pLightRound = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "sprites\\vox.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pVox = (ITexture)p_obj; pVox.SetFrameSize(149, 149); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_owl.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pOwl = (ITexture)p_obj; pOwl.SetFrameSize(48, 128); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_anime_girl.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pTexGirl = (ITexture)p_obj; pTexGirl.SetFrameSize(55, 117); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_mistery_light.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pLight = (ITexture)p_obj; pLight.SetFrameSize(64, 128); }
void Init(IntPtr pParam) { IEngineSubSystem p_sub_sys = null; IResourceManager p_res_man = null; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out p_sub_sys); p_res_man = (IResourceManager)p_sub_sys; IRender p_render = null; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RENDER, out p_sub_sys); p_render = (IRender)p_sub_sys; p_render.GetRender2D(out pRender2D); IEngineBaseObject p_obj = null; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_INPUT, out p_sub_sys); pInput = (IInput)p_sub_sys; pInput.Configure(E_INPUT_CONFIGURATION_FLAGS.ICF_HIDE_CURSOR); p_res_man.GetDefaultResource(E_ENGINE_OBJECT_TYPE.EOT_BITMAP_FONT, out p_obj); pFont = (IBitmapFont)p_obj; // Background clear color setup. TColor4 tc = new TColor4(38, 38, 55, 255); p_render.SetClearColor(ref tc); // This example adapted only for 800X600 resolution, if even resolution will be higher it won't effect it. pRender2D.SetResolutionCorrection(GAME_VP_WIDTH, GAME_VP_HEIGHT, true); p_res_man.Load(RESOURCE_PATH + "sounds\\owl.wav", out p_obj, 0); pSndOwl = (ISoundSample)p_obj; p_res_man.Load(RESOURCE_PATH + "sounds\\forest_ambient.wav", out p_obj, 0); pForestAmbient = (ISoundSample)p_obj; pForestAmbient.PlayEx(out pChannelAmbientLoop, E_SOUND_SAMPLE_PARAMS.SSP_LOOPED); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_forest_background.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pBg = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_cloudy_night_sky.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pSky = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "sprites\\smoke.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pFog = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "sprites\\light.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pLightRound = (ITexture)p_obj; p_res_man.Load(RESOURCE_PATH + "sprites\\vox.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pVox = (ITexture)p_obj; pVox.SetFrameSize(149, 149); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_owl.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pOwl = (ITexture)p_obj; pOwl.SetFrameSize(48, 128); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_anime_girl.png", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pTexGirl = (ITexture)p_obj; pTexGirl.SetFrameSize(55, 117); p_res_man.Load(RESOURCE_PATH + "sprites\\cartoon_mistery_light.jpg", out p_obj, (uint)E_TEXTURE_LOAD_FLAGS.TEXTURE_LOAD_DEFAULT_2D); pLight = (ITexture)p_obj; pLight.SetFrameSize(64, 128); }
void Init(IntPtr pParam) { IEngineSubSystem pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RENDER, out pSubSys); pRender = (IRender)pSubSys; TColor4 c = TColor4.ColorOfficialBlack(); pRender.SetClearColor(ref c); pRender.GetRender2D(out pRender2D); IResourceManager pResMan; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out pSubSys); pResMan = (IResourceManager)pSubSys; IEngineBaseObject pBaseObj = null; // for fonts part pResMan.Load(ResPath + "fonts\\Times_New_Roman_12_rus.dft", out pBaseObj, 0); pFont = (IBitmapFont)pBaseObj; pResMan.Load(ResPath + "fonts\\Times_New_Roman_18_Bold.dft", out pBaseObj, 0); pFontBold = (IBitmapFont)pBaseObj; pResMan.Load(ResPath + "fonts\\TheHard_18.dft", out pBaseObj, 0); pFontHard = (IBitmapFont)pBaseObj; // for sprites part const uint unfiltered_2d_flag = (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_NONE /* for cool old-school pixelized image */ | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pResMan.Load(ResPath + "textures\\cartoon_grass.tga", out pBaseObj, unfiltered_2d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_DECREASE_QUALITY_MEDIUM /* decrease texture size to make it more pixelized */); pTexGrass = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_tank_body.png", out pBaseObj, unfiltered_2d_flag); pTexTankBody = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_tank_turret.png", out pBaseObj, unfiltered_2d_flag); pTexTankTurret = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_anime_girl.png", out pBaseObj, unfiltered_2d_flag); pTexGirl = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_mistery_light.jpg", out pBaseObj, unfiltered_2d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_DECREASE_QUALITY_HIGH); pTexLight = (ITexture)pBaseObj; pTexGirl.SetFrameSize(55, 117); pTexLight.SetFrameSize(64, 128); // for advanced part pResMan.Load(ResPath + "meshes\\planets\\asteroid.jpg", out pBaseObj, (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_BILINEAR | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_MIRROR_REPEAT)); pTexPlanet = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\light.jpg", out pBaseObj, 0); pTexLightRound = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\sphere_mask.png", out pBaseObj, 0); pTexMask = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_cloudy_night_sky.jpg", out pBaseObj, 0); pTexBg = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\jellyfish.png", out pBaseObj, 0); pTexJellyFish = (ITexture)pBaseObj; for (int i = 0; i < 11; i++) { pResMan.Load(ResPath + "textures\\water\\water_" + i + ".tga", out pBaseObj, (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_BILINEAR | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_MIRROR_REPEAT /* let's repeat the texture this way to make it little weird */)); pTexAnimWater[i] = (ITexture)pBaseObj; } pResMan.CreateTexture(out pTexPlanetRenderIn, null, 256, 256, E_TEXTURE_DATA_FORMAT.TDF_RGBA8, E_TEXTURE_CREATE_FLAGS.TCF_DEFAULT, E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_BILINEAR | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); }
void Init(IntPtr pParam) { IEngineSubSystem pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_CORE_RENDERER, out pSubSys); pCoreRenderer = (ICoreRenderer)pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RENDER, out pSubSys); IRender pRender = (IRender)pSubSys; pRender.GetRender3D(out pRender3D); TColor4 c = TColor4.ColorGray(); pRender.SetClearColor(ref c); IResourceManager pResMan; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out pSubSys); pResMan = (IResourceManager)pSubSys; IEngineBaseObject pBaseObj; const uint load_3d_flag = (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_ANISOTROPIC | E_TEXTURE_LOAD_FLAGS.TLF_ANISOTROPY_4X | E_TEXTURE_LOAD_FLAGS.TLF_GENERATE_MIPMAPS); pResMan.Load(RESOURCE_PATH + "fonts\\Times_New_Roman_18_Bold.dft", out pBaseObj, (uint)E_BITMAP_FONT_LOAD_FLAGS.BFLF_GENERATE_MIPMAPS); pFont = (IBitmapFont)pBaseObj; pResMan.Load(RESOURCE_PATH + "textures\\grass.jpg", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_REPEAT /* cause we will tile this texture */); pTexGrass = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "sprites\\cartoon_owl.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexOwl = (ITexture)pBaseObj; pTexOwl.SetFrameSize(48, 128); pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_1.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexTree1 = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_1.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH); pMeshTree1 = (IMesh)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_2.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexTree2 = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_2.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH); pMeshTree2 = (IMesh)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_3.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexTree3 = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_3.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH); pMeshTree3 = (IMesh)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\zard\\zard_diff.dds", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexZard = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\zard\\zard_walk.dmd", out pBaseObj, 0); pModelZard = (IModel)pBaseObj; // add some fog to the scene pRender3D.SetFogColor(ref c); pRender3D.SetLinearFogBounds(1.5f, 4f); pRender3D.ToggleFog(true); PlaneDataPtr = Unmanaged.New <float>(c_afPlane.Length); PlaneDataPtr.Copy(c_afPlane); desc = new TDrawDataDesc ( PlaneDataPtr, 12 * sizeof(float), 24 * sizeof(float), false ); }
void Init(IntPtr pParam) { IEngineSubSystem pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_CORE_RENDERER, out pSubSys); pCoreRenderer = (ICoreRenderer)pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RENDER, out pSubSys); IRender pRender = (IRender)pSubSys; pRender.GetRender3D(out pRender3D); TColor4 c = TColor4.ColorGray(); pRender.SetClearColor(ref c); IResourceManager pResMan; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out pSubSys); pResMan = (IResourceManager)pSubSys; IEngineBaseObject pBaseObj; const uint load_3d_flag = (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_ANISOTROPIC | E_TEXTURE_LOAD_FLAGS.TLF_ANISOTROPY_4X | E_TEXTURE_LOAD_FLAGS.TLF_GENERATE_MIPMAPS); pResMan.Load(RESOURCE_PATH + "fonts\\Times_New_Roman_18_Bold.dft", out pBaseObj, (uint)E_BITMAP_FONT_LOAD_FLAGS.BFLF_GENERATE_MIPMAPS); pFont = (IBitmapFont)pBaseObj; pResMan.Load(RESOURCE_PATH + "textures\\grass.jpg", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_REPEAT /* cause we will tile this texture */); pTexGrass = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "sprites\\cartoon_owl.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexOwl = (ITexture)pBaseObj; pTexOwl.SetFrameSize(48, 128); pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_1.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexTree1 = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_1.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH); pMeshTree1 = (IMesh)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_2.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexTree2 = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_2.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH); pMeshTree2 = (IMesh)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_3.png", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexTree3 = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\trees\\tree_3.dmd", out pBaseObj, (uint)E_MESH_MODEL_LOAD_FLAGS.MMLF_FORCE_MODEL_TO_MESH); pMeshTree3 = (IMesh)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\zard\\zard_diff.dds", out pBaseObj, load_3d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pTexZard = (ITexture)pBaseObj; pResMan.Load(RESOURCE_PATH + "meshes\\zard\\zard_walk.dmd", out pBaseObj, 0); pModelZard = (IModel)pBaseObj; // add some fog to the scene pRender3D.SetFogColor(ref c); pRender3D.SetLinearFogBounds(1.5f, 4f); pRender3D.ToggleFog(true); PlaneDataPtr = Unmanaged.New<float>(c_afPlane.Length); PlaneDataPtr.Copy(c_afPlane); desc = new TDrawDataDesc ( PlaneDataPtr, 12 * sizeof(float), 24 * sizeof(float), false ); }
void Init(IntPtr pParam) { IEngineSubSystem pSubSys; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RENDER, out pSubSys); pRender = (IRender)pSubSys; TColor4 c = TColor4.ColorOfficialBlack(); pRender.SetClearColor(ref c); pRender.GetRender2D(out pRender2D); IResourceManager pResMan; pEngineCore.GetSubSystem(E_ENGINE_SUB_SYSTEM.ESS_RESOURCE_MANAGER, out pSubSys); pResMan = (IResourceManager)pSubSys; IEngineBaseObject pBaseObj = null; // for fonts part pResMan.Load(ResPath + "fonts\\Times_New_Roman_12_rus.dft", out pBaseObj, 0); pFont = (IBitmapFont)pBaseObj; pResMan.Load(ResPath + "fonts\\Times_New_Roman_18_Bold.dft", out pBaseObj, 0); pFontBold = (IBitmapFont)pBaseObj; pResMan.Load(ResPath + "fonts\\TheHard_18.dft", out pBaseObj, 0); pFontHard = (IBitmapFont)pBaseObj; // for sprites part const uint unfiltered_2d_flag = (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_NONE /* for cool old-school pixelized image */ | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); pResMan.Load(ResPath + "textures\\cartoon_grass.tga", out pBaseObj, unfiltered_2d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_DECREASE_QUALITY_MEDIUM /* decrease texture size to make it more pixelized */); pTexGrass = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_tank_body.png", out pBaseObj, unfiltered_2d_flag); pTexTankBody = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_tank_turret.png", out pBaseObj, unfiltered_2d_flag); pTexTankTurret = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_anime_girl.png", out pBaseObj, unfiltered_2d_flag); pTexGirl = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_mistery_light.jpg", out pBaseObj, unfiltered_2d_flag | (uint)E_TEXTURE_LOAD_FLAGS.TLF_DECREASE_QUALITY_HIGH); pTexLight = (ITexture)pBaseObj; pTexGirl.SetFrameSize(55, 117); pTexLight.SetFrameSize(64, 128); // for advanced part pResMan.Load(ResPath + "meshes\\planets\\asteroid.jpg", out pBaseObj, (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_BILINEAR | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_MIRROR_REPEAT)); pTexPlanet = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\light.jpg", out pBaseObj, 0); pTexLightRound = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\sphere_mask.png", out pBaseObj, 0); pTexMask = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\cartoon_cloudy_night_sky.jpg", out pBaseObj, 0); pTexBg = (ITexture)pBaseObj; pResMan.Load(ResPath + "sprites\\jellyfish.png", out pBaseObj, 0); pTexJellyFish = (ITexture)pBaseObj; for (int i = 0; i < 11; i++) { pResMan.Load(ResPath + "textures\\water\\water_" + i + ".tga", out pBaseObj, (uint)(E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_BILINEAR | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_MIRROR_REPEAT/* let's repeat the texture this way to make it little weird */)); pTexAnimWater[i] = (ITexture)pBaseObj; } pResMan.CreateTexture(out pTexPlanetRenderIn, null, 256, 256, E_TEXTURE_DATA_FORMAT.TDF_RGBA8, E_TEXTURE_CREATE_FLAGS.TCF_DEFAULT, E_TEXTURE_LOAD_FLAGS.TLF_FILTERING_BILINEAR | E_TEXTURE_LOAD_FLAGS.TLF_COORDS_CLAMP); }
public BitmapText(IBitmapFont bitmapFont, IBrush brush, string text, TexcoordGenerationMode uMappingMode = TexcoordGenerationMode.FullBoundingBox, TexcoordGenerationMode vMappingMode = TexcoordGenerationMode.FullBoundingBox, HAlignment hAlignment = HAlignment.Middle, VAlignment vAlignment = VAlignment.Middle) { Transform = (ConstantMatrix) Matrix.Identity; Rectangle fullRect = bitmapFont.Measure(text); Vector3 centerOffset = Vector3.Zero; switch (hAlignment) { case HAlignment.Left: centerOffset.X = 0; break; case HAlignment.Middle: centerOffset.X = fullRect.Width / 2f; break; case HAlignment.Right: centerOffset.X = fullRect.Width; break; } switch (vAlignment) { case VAlignment.Top: centerOffset.Y = 0; break; case VAlignment.Middle: centerOffset.Y = fullRect.Height / 2f; break; case VAlignment.Bottom: centerOffset.Y = fullRect.Height; break; } _bitmapFont = bitmapFont as BitmapFont; var pageCount = _bitmapFont.PageLayers.Count; _text = text; Brush = brush; _textQuads = new IIndexedMesh[pageCount]; var charactersByPage = (from char ch in text select new KeyValuePair<int, char>(_bitmapFont.Chars[ch].Page, ch)).ToMultiValueDictionary(); var w = (float)_bitmapFont.ScaleW; var h = (float)_bitmapFont.ScaleH; var xPos = 0f; foreach (var kvp in charactersByPage) { var charCount = kvp.Value.Count; _textQuads[kvp.Key] = new IndexedMesh(charCount * 4, charCount * 6) { Brush = new TextBrush { TextLayer = _bitmapFont.PageLayers[kvp.Key], SubBrush = Brush } }; } var vertexIndexCounts = (from i in Enumerable.Range(0, _bitmapFont.Pages.Count) select Tuple.Create(0, 0)).ToArray(); foreach (var ch in text) { var ci = _bitmapFont.Chars[ch]; var vertices = _textQuads[ci.Page].Vertices; var indices = _textQuads[ci.Page].Indices; var vertexCount = vertexIndexCounts[ci.Page].Item1; var indexCount = vertexIndexCounts[ci.Page].Item2; var saveVertexCount = vertexCount; Vector2 quadTopLeft; Vector2 quadTopRight; Vector2 quadBottomRight; Vector2 quadBottomLeft; var left = xPos + ci.XOffset; var top = 0f + ci.YOffset; switch (uMappingMode) { case TexcoordGenerationMode.PerQuad: quadTopLeft.X = 0f; quadTopRight.X = 1f; quadBottomRight.X = 1f; quadBottomLeft.X = 0f; break; // These two modes are the same in this case case TexcoordGenerationMode.FullBoundingBox: case TexcoordGenerationMode.Unwrapped_Linear: quadTopLeft.X = left / fullRect.Width; quadTopRight.X = (left + ci.Width) / fullRect.Width; quadBottomRight.X = (left + ci.Width) / fullRect.Width; quadBottomLeft.X = left / fullRect.Width; break; default: throw new NotSupportedException(string.Format("Unsupported texture mapping mode along X-Axis: {0}", uMappingMode)); } switch (vMappingMode) { case TexcoordGenerationMode.PerQuad: quadTopLeft.Y = 0f; quadTopRight.Y = 0f; quadBottomRight.Y = 1f; quadBottomLeft.Y = 1f; break; // These two modes are the same in this case case TexcoordGenerationMode.FullBoundingBox: case TexcoordGenerationMode.Unwrapped_Linear: quadTopLeft.Y = top / fullRect.Height; quadTopRight.Y = top / fullRect.Height; quadBottomRight.Y = (top + ci.Height) / fullRect.Height; quadBottomLeft.Y = (top + ci.Height) / fullRect.Height; break; default: throw new NotSupportedException(string.Format("Unsupported texture mapping mode along Y-Axis: {0}", vMappingMode)); } var topLeft = new Texcoords(quadTopLeft, new Vector2(ci.X / w, ci.Y / h)); var topRight = new Texcoords(quadTopRight, new Vector2(((ci.X + ci.Width) / w), ci.Y / h)); var bottomRight = new Texcoords(quadBottomRight, new Vector2(((ci.X + ci.Width) / w), ((ci.Y + ci.Height) / h))); var bottomLeft = new Texcoords(quadBottomLeft, new Vector2(ci.X / w, ((ci.Y + ci.Height) / h))); vertices[vertexCount++] = new Vertex { Position = new Vector3(left - centerOffset.X, top - centerOffset.Y, 0f), Texcoords = topLeft, Color = Color.White }; vertices[vertexCount++] = new Vertex { Position = new Vector3(left + ci.Width - centerOffset.X, top - centerOffset.Y, 0f), Texcoords = topRight, Color = Color.White }; vertices[vertexCount++] = new Vertex { Position = new Vector3(left + ci.Width - centerOffset.X, top + ci.Height - centerOffset.Y, 0f), Texcoords = bottomRight, Color = Color.White }; vertices[vertexCount++] = new Vertex { Position = new Vector3(left - centerOffset.X, top + ci.Height - centerOffset.Y, 0f), Texcoords = bottomLeft, Color = Color.White }; xPos += ci.XAdvance; indices[indexCount++] = (short)(saveVertexCount + 0); indices[indexCount++] = (short)(saveVertexCount + 1); indices[indexCount++] = (short)(saveVertexCount + 2); indices[indexCount++] = (short)(saveVertexCount + 0); indices[indexCount++] = (short)(saveVertexCount + 2); indices[indexCount++] = (short)(saveVertexCount + 3); vertexIndexCounts[ci.Page] = Tuple.Create(vertexCount, indexCount); } }