Hello,
Can someone, please, copy that code (i assume you have the SDK oildrum model)and do:
First execute it and try collide with some object.
Then delete oildrum2 from code,execute and try collide with some object.
Any difference? please, tell me. THankyou
the code:
#include "engine.h"
#include <math.h>
#include <string>
#include <vector>
#include "monsterfuncs.h"
using namespace std;
string nametext;
#pragma warning(disable:4996)
int state;
float fb;
float fe;
TController player;
class Monster
{
public:
TController monstercont;
TMesh monsterent;
TVec3 monsterpos;
TVec3 monsterrot;
int monsterstate;
float mstartframe;
float mendframe;
};
vector<Monster> monsterarray;
vector<Monster>::iterator monsteriter;
void UpdateMonsters()
{
for(monsteriter=monsterarray.begin();monsteriter!=monsterarray.end();monsteriter++)
{
SlowPointEnt((*monsteriter).monstercont,player,.5);
(*monsteriter).monsterrot=EntityRotation((*monsteriter).monstercont);
UpdateController((*monsteriter).monstercont,(*monsteriter).monsterrot.Y,0.0f,0.0f,0.0f,10000);
RotateEntity((*monsteriter).monsterent,(*monsteriter).monsterrot);
//PositionEntity((*monsteriter).monsterent,EntityPosition((*monsteriter).monstercont));
PositionEntity((*monsteriter).monsterent,Vec3((*monsteriter).monsterpos.X,(*monsteriter).monsterpos.Y-1.5,(*monsteriter).monsterpos.Z));
if(KeyHit(KEY_UP))
{
if((*monsteriter).monsterstate <3)
{
monsteriter->monsterstate++;
}
else
{
monsteriter->monsterstate=0;
}
}
if(KeyHit(KEY_DOWN))
{
if((*monsteriter).monsterstate >0)
{
monsteriter->monsterstate--;
}
else
{
monsteriter->monsterstate=3;
}
}
switch ((*monsteriter).monsterstate)
{
case 1:
monsteriter->mstartframe=41.0f;
monsteriter->mendframe=85.0f;
break;
case 2:
monsteriter->mstartframe=90.0f;
monsteriter->mendframe=117.0f;
break;
case 3:
monsteriter->mstartframe=149.0f;
monsteriter->mendframe=184.0f;
break;
default:
monsteriter->mstartframe=1.0f;
monsteriter->mendframe=40.0f;
break;
}
AnimeEntitySeq((*monsteriter).monsterent,(*monsteriter).mstartframe,(*monsteriter).mendframe,3.0f,100.0f);
}
}
int main( int argn, char* argv[] )
{
int screenx=1024, screeny=768, camx=screenx/2, camy=screeny/2;
Initialize() ;
//RegisterAbstractPath("C:/Archivos de programa/Leadwerks Engine SDK 2 28");
//Create a graphics context
Graphics(screenx,screeny);
//Create a world
if (!CreateWorld()) {
MessageBoxA(0,"Error","Failed to create world.",0);
goto exitapp;
}
//Create a camera
TCamera cam=CreateCamera();
CameraClearColor(cam,Vec4(0,0,1,1));
PositionEntity(cam,Vec3(0,2,-10));
Collisions(1,1,1);
Collisions(1,2,1);
Collisions(2,2,1);
//Load a model
TModel scene=LoadModel("scene/scene.gmf");
if (scene==0) {
MessageBoxA(0,"Error","Failed to load model.",0);
goto exitapp;
}
EntityType(scene,2);
//Create lightent
TMesh lightent=CreateSphere();
ScaleEntity(lightent,Vec3(.5,.5,.5));
PositionEntity(lightent,Vec3(0,5,0));
//Create a light
TLight light=CreatePointLight();
PositionEntity(light,Vec3(3,5,-3));
EntityColor(light,Vec4(2,2,2,1));
SetShadowmapSize(light,1024);
AmbientLight(Vec3(0.2));
EntityParent(light,lightent);
//Create a render buffer
TBuffer buffer=CreateBuffer(screenx,screeny,BUFFER_COLOR|BUFFER_DEPTH|BUFFER_NORMAL);
//Monster m;
//m.monstercont=CreateController(2.7f,0.9f,0.25f,45);
//m.monsterent=LoadMesh("objs/monsters/DK1/dk1.gmf");
//m.monsterrot=Vec3(0.0f,0.0f,0.0f);
//m.monsterpos=Vec3(0.0f,1.5f,0.0f);
//m.monsterstate=0;
//RotateEntity(m.monstercont,m.monsterrot);
//RotateEntity(m.monsterent,m.monsterrot);
//PositionEntity(m.monstercont,m.monsterpos);
//PositionEntity(m.monsterent,m.monsterpos);
//EntityType(m.monstercont,2);
//SetBodyMass(m.monstercont,1.0f);
//monsterarray.push_back(m);
int sequence=1;
float framebegin;
float frameend;
float frame;
//Create a physics body
TBody body=CreateBodyBox();
SetBodyMass(body,1.0f);
TMesh mesh=CreateCube();
EntityParent(mesh,body);
PositionEntity(body,Vec3(-3,5,0));
EntityType(body,2);
//Create another physics body
TModel oildrum=LoadModel("scene/oildrum.gmf");
PositionEntity(oildrum,Vec3(3,5,0));
EntityType(oildrum,2);
SetBodyMass(oildrum,1.0f);
TModel oildrum2=LoadModel("scene/oildrum.gmf");
PositionEntity(oildrum2,Vec3(0,5,0));
EntityType(oildrum2,2);
SetBodyMass(oildrum2,1.0f);
player=CreateController(1.84f,0.50f,0.25f,45);
EntityType(player,1);
//SetBodyDamping(player,.5f,.5f);
SetBodyMass(player,1.0f);
//SetWorldGravity(Vec3(0,-9.8f,0));
float move=0.0;
float strafe=0.0;
TVec3 camrotation=Vec3(0);
TVec3 playerpos;
float mx=0;
float my=0;
HideMouse();
MoveMouse(GraphicsWidth()/2,GraphicsHeight()/2);
PositionEntity(player,Vec3(0,0,-3));
SetWorldGravity(Vec3(0,-9.8f,0));
SetPhysicsQuality(1);
int debphy=0;
//Main loop
// Game loop
while( !KeyHit() && !AppTerminate() )
{
if( !AppSuspended() ) // We are not in focus!
{
// Update timing and world
UpdateAppTime();
UpdateWorld(AppSpeed()) ;
//UpdateAppTime();
if(KeyHit(KEY_P)){debphy=1-debphy;DebugPhysics(debphy);}
//DebugPhysics(KeyHit(KEY_P));
TurnEntity(lightent,Vec3(0,.5f,0));
//Player movement
move=2*(KeyDown(KEY_W)-KeyDown(KEY_S));
strafe=2*(KeyDown(KEY_D)-KeyDown(KEY_A));
//Jumping
float jump=0.0;
if (KeyHit(KEY_SPACE)) {
if (!ControllerAirborne(player)) {
jump=4.0;
}
}
//Run
if (KeyDown(KEY_LSHIFT)||KeyDown(KEY_RSHIFT)) {
if (!ControllerAirborne(player)) {
move*=2.0;
strafe*=2.0;
}
}
playerpos=EntityPosition(player);
//Camera looking
mx=Curve(MouseX()-GraphicsWidth()/2,mx,6);
my=Curve(MouseY()-GraphicsHeight()/2,my,6);
MoveMouse(GraphicsWidth()/2,GraphicsHeight()/2);
camrotation.X=camrotation.X+my/5.0;
if (camrotation.X < -90){ camrotation.X = -90;}
if (camrotation.X > 90){ camrotation.X = 90;}
camrotation.Y=camrotation.Y-mx/5.0;
RotateEntity(cam,camrotation);
////Set controller input
PositionEntity(cam,Vec3(playerpos.X,playerpos.Y+.84,playerpos.Z));
TVec3 camerapos=EntityPosition(cam);
TVec3 poscont=EntityPosition(player);
PositionEntity(cam,camerapos);
//UpdateController(player,camrotation.Y,move,strafe,jump,15000.0);
UpdateController(player,camrotation.Y,move,strafe,jump,10000);
//Render the scene
//UpdateAppTime();
//UpdateWorld();
if(KeyHit(KEY_NUM8))
{
if(state < 3)
{
state++;
}
else
{
state=0;
}
}
if(KeyHit(KEY_NUM2))
{
if(state > 0)
{
state--;
}
else
{
state=3;
}
}
switch(state)
{
case 1:
fb=41.0;
fe=85.0;
break;
case 2:
fb=90.0;
fe=116.0;
break;
case 3:
fb=149.0;
fe=184.0;
break;
default:
fb=0;
fe=40;
break;
}
UpdateMonsters();
// Render
SetBuffer(buffer);
RenderWorld();
SetBuffer(BackBuffer());
RenderLights(buffer);
DrawText(10,10,"%.3f",UPS());
DrawText(10,30,"%d",TrisRendered());
// Send to screen
Flip(0) ;
}
}
// Done
exitapp:
return Terminate() ;
}