I'm getting this weird error:
Quote: "Run-Time Check Failure #2 - Stack around the variable 'Raptor' was corrupted."
Heres my main:
// Dark GDK - The Game Creators - www.thegamecreators.com
// include the Dark GDK header
#include "DarkGDK.h"
#define DIRECTINPUT_VERSION 0x0800
#include "dinput.h"
#include "Start Up.h"
#include "controls.h"
#include "Monsters.h"
#include "hud.h"
#include "Weapons.h"
void DarkGDK ( void )
{
// entry point for the application
Start();
// switch on sync rate and set to a maximum of 60 fps
dbSyncOn ( );
dbSyncRate ( 60 );
dbAutoCamOff();
// we are going to use a skybox in this demo and it will
// be scaled up to quite a large size, this will initially
// result in it being outside of the cameras default range
// therefore it will not be drawn, to adjust this we simply
// increase the cameras range
dbSetCameraRange ( 1.0f, 30000.0f );
// two textures are going to be used for the terrain, the first
// will be the diffuse part and the second will be used to
// create extra detail on the terrain
dbLoadImage ( "texture.jpg", 1 );
dbLoadImage ( "detail.jpg", 2 );
// the first step in creating a terrain is to call the
// function dbSetupTerrain, this will perform some internal
// work that allows us to get started
dbSetupTerrain ( );
// now we can get started on making the terrain object
dbMakeObjectTerrain ( 1 );
// here we pass in a heightmap that will be used to create the terrain
dbSetTerrainHeightMap ( 1, "map.bmp" );
// now we set the scale, this will have the effect of making
// the terrain large on the X and Z axis but quite small on the Y
dbSetTerrainScale ( 1, 3.0f, 0.6f, 3.0f );
// adjust the lighting for the terrain, this function takes the ID
// number, then a direction for the light, then 3 colours for the light
// and finally the scale, by using this function we can adjust the
// overall colour of the terrain
dbSetTerrainLight ( 1, 1.0f, -0.25f, 0.0f, 1.0f, 1.0f, 0.78f, 0.5f );
// in this call we're telling the terrain that its diffuse texture
// will come from image 1 and its detail texture will come from
// image 2
dbSetTerrainTexture ( 1, 1, 2 );
// once we have set all properties of the terrain we can build it,
// at this point it gets created and added into your world
dbBuildTerrain ( 1 );
//// with the terrain in place we can now load a skybox
//dbLoadObject ( "skybox2.x", 2 );
//// we dont need it to respond to light so switch light off
//dbSetObjectLight ( 2, 0 );
//// make the skybox much larger
//dbScaleObject ( 2, 30000, 30000, 30000 );
// position the camera
// adjust texture properties of sky box
dbSetObjectTexture ( 2, 3, 1 );
dbSetGlobalCollisionOn();
dbAutomaticCameraCollision(1,1,1);
Monsters Raptor = Monsters(40);
Weapons AK = Weapons(1);
Weapons MP = Weapons(2);
float fCameraAngleX = 0.0f;
float fCameraAngleY = 0.0f;
dbPositionCamera ( 1, 23, 1 );
dbPositionObject(10,dbCameraPositionX()+200,dbCameraPositionY()-200,dbCameraPositionZ()+20);
dbPositionObject(11,dbCameraPositionX()-200,dbCameraPositionY()-200,dbCameraPositionZ()+20);
// now onto our main loop
while ( LoopGDK ( ) )
{
// let the user move the camera around with the arrow keys
dbControlCameraUsingArrowKeys ( 0, 2.0f, 2.0f );
// find the ground height of the terrain
float fHeight = dbGetTerrainGroundHeight ( 1, dbCameraPositionX ( ), dbCameraPositionZ ( ) );
// reposition the camera so it is directly above the ground
dbPositionCamera ( dbCameraPositionX ( ), fHeight + 20.0f, dbCameraPositionZ ( ) );
// create a rotation axis based on mouse movement
fCameraAngleX = dbWrapValue ( fCameraAngleX + dbMouseMoveY ( ) * 0.04f );
fCameraAngleY = dbWrapValue ( fCameraAngleY + dbMouseMoveX ( ) * 0.04f );
dbXRotateCamera ( fCameraAngleX );
dbYRotateCamera ( fCameraAngleY );
// update the terrain
dbUpdateTerrain ( );
hud();
controls(2);
Raptor.MonstersUpdate();
AK.WeaponsUpdate();
MP.WeaponsUpdate();
// update the screen
dbSync ( );
}
}
And heres my Monsters Class Header Followed by the CPP.
#ifndef MONSTERS
#define MONSTERS
#include "DarkGDK.h"
class Monsters
{
public:
int MonsterID;
int MonsterHealth;
float MonsterHeight;
Monsters(int MonsterID);
void MonstersUpdate();
};
#endif
#include "Monsters.h"
Monsters::Monsters(int MonsterID)
{
Monsters::MonsterID = MonsterID;
Monsters::MonsterHealth = 10;
dbLoadObject ( "M-Raptor-Static.x", MonsterID );
dbScaleObject(MonsterID,1000,1000,1000);
dbPositionObject(MonsterID, 100,1, 100);
dbRotateObject(MonsterID,0,180,0);
dbFixObjectPivot(MonsterID);
}
void Monsters::MonstersUpdate()
{
Monsters::MonsterHeight = dbGetTerrainGroundHeight( 1, dbObjectPositionX(MonsterID), dbObjectPositionZ (MonsterID ) );
dbPositionObject(40, dbObjectPositionX(40),MonsterHeight, 100);
dbPointObject(40,dbCameraPositionX(),MonsterHeight,dbCameraPositionZ());
dbMoveObject(40,1);
}