Thursday, July 24, 2008

Watermark for TGE

Sometimes you dont want your engine used by other, so why dont use watermark ?

add this snippet to your engine/gui/core/guicanvas.cc on void GuiCanvas::renderFrame(bool preRenderOnly, bool bufferSwap /* = true */) exactly after




if (cursorON && mouseCursor && mShowCursor)
{
Point2I pos((S32)cursorPt.x, (S32)cursorPt.y);
Point2I spot = mouseCursor->getHotSpot();

pos -= spot;
mouseCursor->render(pos);
}




This is the code, and after adding this you should rebuild the engine.




// enable/disable watermark ?
bool WT = true;

if(WT)
{
// get the default profile for text
GuiControlProfile *mtProfile;
mtProfile = NULL;

// Ok lets check to see if that worked
if( !mtProfile ) {
SimObject *obj = Sim::findObject( "GuiDefaultProfile" );

if( obj )
mtProfile = dynamic_cast(obj);
else
return;
}

if(mtProfile)
{
// changed the text into your watermark text
const char* wtText = "TGE Licenced HD";

ColorF mForegroundColor;
mForegroundColor.set( 1, 1, 1, 1 );
ColorI mFillColor;

//Vars used:
//Screensize (for position check)
//Offset to get position of cursor
//textBounds for text extent.
Point2I offset;
Point2I textBounds;
S32 textWidth = mtProfile->mFont->getStrWidth(renderTip);

//Create text bounds.
textBounds.x = textWidth+8;
textBounds.y = mtProfile->mFont->getHeight() + 4;

//Offset below cursor image
offset.y = size.y - textBounds.y - 10;
offset.x = size.x - textBounds.x - 10;

// Set rectangle for the box, and set the clip rectangle.
RectI rect(offset, textBounds);
dglSetClipRect(rect);

mFillColor.set(0,0,0,255);
dglDrawRectFill(rect, mFillColor);

mFillColor.set(255,255,255,255);
dglDrawRect( rect, mFillColor );

// Draw the text centered in the tool tip box
dglSetBitmapModulation( mForegroundColor );
Point2I start;
start.set( ( textBounds.x - textWidth) / 2, ( textBounds.y - mtProfile->mFont->getHeight() ) / 2 );
dglDrawText( mtProfile->mFont, start + offset, wtText, mtProfile->mFontColors );
dglClearBitmapModulation();

// end hd watermark
}

// free the pointer ?
mtProfile = NULL;
}

Wednesday, July 16, 2008

Intel Laptop Gaming TDK API Implementation on your game

Well after browsing for mods @ GG site, I found this interesting engine modification about adding this Intel Laptop Gaming TDK API. With this API we can get the current status of the hardware running our game, is it running on a PC or Laptop. and we also can extract the battery and wireless signal strength of our laptop/PC.

Of course we can use this API on other game engines or maybe our self made game engine. This API is available for free from Intel, you can donwload it here http://softwarecommunity.intel.com/articles/eng/1017.htm and install it on your PC. You can see the methods you can call from this API in the IntelLaptopGamingTDK.h

This is a sample source code I've made just to try the features.




#include "StdAfx.h"
#include "Testing.h"
#include "IntelGamingTDKAPI.h"

#define _CRTDBG_MAP_ALLOC
#include
#include

#include
#include

using namespace std;

#ifdef _DEBUG
#define SET_CRT_DEBUG_FIELD(a) \
_CrtSetDbgFlag((a) _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
#define CLEAR_CRT_DEBUG_FIELD(a) \
_CrtSetDbgFlag(~(a) & _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
#else
#define SET_CRT_DEBUG_FIELD(a) ((void) 0)
#define CLEAR_CRT_DEBUG_FIELD(a) ((void) 0)
#endif

Testing::Testing(void)
{
Feature();
}

void Testing::Feature()
{
IntelLaptopGamingTDKInterface *IGT = IntelLaptopGamingTDKInterface::GetTDKInterface();

if(!IGT)
return;

/**
* Is this a laptop ??
*/
cout << "\nIS LAPTOP ? " <<>IsLaptop();

/**
* Get number of core on per physical processor
*/
cout << "\nCPU CORE ? " <<>GetNumCoresPerProcessor();

/**
* Get total number of processors as seen by OS
*/
cout << "\nCPU COUNT ? " <GetNumProcessors();

// and just try the other methods..

// Memory leaks checking
// 6 mem leaks because pointers on heap aren't deleted till function
// exits. We call this function before the pointers go out of scope.
_CrtDumpMemoryLeaks();
}

Testing::~Testing(void)
{
}


I use VC 2005 for the compiler.

Following are the steps to compile your code using this API.

  1. Go to project properties
  2. In the configuration properties > C++ @ the additional include directory, point to your directory where u put the headers and IntelLaptopGaming.lib
  3. In the configuration properties > Linker @ the additional include directory, point to your directory where u put the headers and IntelLaptopGaming.lib
  4. In the configuration properties > Linker > Input @ the additional dependency type IntelLaptopGaming.lib
  5. Copy your IntelLaptopGaming.dll to your exe output directory (the dll depends on your OS if u use vista copy dll for vista, if u use xp copy dll for xp)
  6. Compile, build, and RUN.

Have fun and cheers.

Monday, July 7, 2008

My second resource @ GG for Torque Game Engine :: Grow and Shrink GUI

The resource is about GUI animation which can grow and shrink.

Here's the link to the complete resource and comments
http://www.garagegames.com/index.php?sec=mg&mod=resource&page=view&qid=15018

And this is the result when applying the resource

Cheers!

Sunday, July 6, 2008

Multiplayer Gaming and Engine Coding for the Torque Game Engine


Yes, after waiting about 3 weeks the book finally arrived :D.

Well the book contents is quite easy to understand and makin a few things more clear to me. And after a few hours reading it, I soon realized that it's already chapter 4 of 14.