1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
// Variables
MyEventReceiver receiver;
device = irr::createDevice( irr::video::EDT_DIRECT3D9, irr::core::dimension2d<irr::s32>( 640, 480 ),
32, false, false, false, &receiver );
irr::video::IVideoDriver *driver = NULL;
irr::scene::ISceneManager *smgr = NULL;
irr::gui::IGUIEnvironment *guienv = NULL;
irr::scene::IAnimatedMesh *mesh = NULL;
irr::scene::IAnimatedMeshSceneNode *node = NULL;
irr::scene::IAnimatedMesh *mesh2 = NULL;
irr::scene::ISceneNode *node2 = NULL;
irr::scene::ITriangleSelector *selector = NULL;
irr::scene::ITriangleSelector *selector2 = NULL;
// ...
/* **************************************************************
* !!! KOLLISIONSPART START - HIER MUSS ETWAS GEÄNDERT WERDEN !!!
* *************************************************************/
if( mesh2 )
node2 = smgr->addOctTreeSceneNode( mesh2->getMesh(0) );
if( node2 )
{
node2->setPosition( irr::core::vector3df( -1300, -144, -1249 ) );
selector = smgr->createOctTreeTriangleSelector( mesh2->getMesh(0), node2, 128 );
node2->setTriangleSelector( selector );
selector->drop();
}
// testface laden
irr::scene::IAnimatedMesh *face = smgr->getMesh( "face.x" );
irr::scene::ISceneNode *facenode = smgr->addAnimatedMeshSceneNode( face );
facenode->setMaterialFlag( irr::video::EMF_LIGHTING, false );
facenode->setPosition( irr::core::vector3df( -90, 150, -150 ) );
facenode->setRotation( irr::core::vector3df( 0, 0, 180 ) );
facenode->setRotation( irr::core::vector3df( 90, 0, 0 ) );
facenode->setScale( irr::core::vector3df( 3, 3, 3 ) );
// add faerie
irr::video::SMaterial material;
material.setTexture( 0, driver->getTexture( "faerie2.bmp" ) );
material.Lighting = true;
irr::scene::IAnimatedMeshSceneNode *n2 = NULL;
irr::scene::IAnimatedMesh *faerie = smgr->getMesh( "faerie.md2" );
if( faerie )
{
n2 = smgr->addAnimatedMeshSceneNode( faerie );
n2->setPosition( irr::core::vector3df(0,300,-250) );
n2->setFrameLoop( 1, 250 );
n2->setAnimationSpeed( 30 );
n2->getMaterial(0) = material;
selector2 = smgr->createOctTreeTriangleSelector( faerie, n2, 128 );
n2->setTriangleSelector( selector2 );
selector2->drop();
irr::scene::ISceneNodeAnimator *a2 = smgr->createFlyStraightAnimator( irr::core::vector3df(-130,100,-150),
irr::core::vector3df(250,100,-150),2500,true);
irr::scene::ISceneNodeAnimator *coll2 = smgr->createCollisionResponseAnimator( selector, n2, irr::core::vector3df(30,50,30),
irr::core::vector3df(0,-3,0), irr::core::vector3df(0,25,0) );
// n2->setScale( irr::core::vector3df(2,2,2) );
n2->addAnimator( coll2 );
coll2->drop();
// n2->addAnimator(a2);
a2->drop();
}
material.Lighting = false;
// set the collsiion ellipsoid - the camera
irr::scene::ICameraSceneNode *camera = smgr->addCameraSceneNodeFPS( 0, 100, 250 );
camera->setPosition( irr::core::vector3df( 25, 0, 30 ) );
irr::scene::ISceneNodeAnimator *a = smgr->createCollisionResponseAnimator( selector, camera, irr::core::vector3df(30,50,30),
irr::core::vector3df( 0,-3,0 ), irr::core::vector3df(0,50,0) );
irr::scene::ISceneNodeAnimator *a2 = smgr->createCollisionResponseAnimator( selector2, camera, irr::core::vector3df(30,50,30),
irr::core::vector3df( 0,0,0 ), irr::core::vector3df(0,50,0) );
camera->addAnimator( a );
camera->addAnimator( a2 );
a->drop();
device->getCursorControl()->setVisible( false );
/* *************************************************************
* !!! KOLLISIONSPART ENDE - HIER MUSS ETWAS GEÄNDERT WERDEN !!!
* ************************************************************/
// ...
|