-
Notifications
You must be signed in to change notification settings - Fork 0
/
Environment.cpp
133 lines (98 loc) · 4.33 KB
/
Environment.cpp
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*
-----------------------------------------------------------------------------
Filename: Environment.cpp
-----------------------------------------------------------------------------
*/
#include "Environment.h"
#include <cstdlib>
using namespace std;
Environment::Environment(void)
{
}
//---------------------------------------------------------------------------
Environment::~Environment(void)
{
}
//---------------------------------------------------------------------------
void Environment::initEnvironment(Ogre::SceneManager*
pSceneMgr, PhysicsSimulator* sim, bool isMultiplayer)
{
mSceneMgr = pSceneMgr;
bullet = sim;
int floorSize = 10000;
int edgeSize = 500;
Ogre::Plane plane(Ogre::Vector3::UNIT_Y, 0);
Ogre::MeshManager::getSingleton().createPlane("base",
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
plane, floorSize, floorSize, 20, 20, true, 1, 10, 10, Ogre::Vector3::UNIT_X);
//Ground----------------------------------------------------------------------
{
Ogre::Entity* ent = mSceneMgr->createEntity("GroundEntity", "base");
Ogre::SceneNode* snode = mSceneMgr->getRootSceneNode()->
createChildSceneNode("snode0", Ogre::Vector3(0,-edgeSize/2,0));
snode->attachObject(ent);
ent->setMaterialName("Examples/Wood");
ent->setCastShadows(false);
Ogre::Vector3 shapeDim = Ogre::Vector3(floorSize, 0.1, floorSize);
Ogre::Vector3 position = Ogre::Vector3(0, -edgeSize/2, 0);
bullet->setRigidBoxBody(snode, shapeDim, position, 0.0);
}
//Ceiling---------------------------------------------------------------------
{
Ogre::Entity* ent = mSceneMgr->createEntity("CeilingEntity", "cube.mesh");
Ogre::SceneNode* snode = mSceneMgr->getRootSceneNode()->
createChildSceneNode("snode1");
Ogre::Vector3 shapeDim = Ogre::Vector3(floorSize, 0.01, floorSize);
Ogre::Vector3 position = Ogre::Vector3(0, edgeSize/2, 0);
snode->attachObject(ent);
snode->scale(shapeDim.x/100, shapeDim.y, shapeDim.z/100);
snode->translate(position);
ent->setMaterialName("Examples/CloudySky");
ent->setCastShadows(false);
bullet->setRigidBoxBody(snode, shapeDim, position, 0.0);
}
//NegWall YZ------------------------------------------------------------------
/*{
Ogre::Entity* ent = mSceneMgr->createEntity("NegYZEntity", "cube.mesh");
Ogre::SceneNode* snode = mSceneMgr->getRootSceneNode()->
createChildSceneNode("snode2");
Ogre::Vector3 shapeDim = Ogre::Vector3(0.01, edgeSize, edgeSize);
Ogre::Vector3 position = Ogre::Vector3(-edgeSize/2, 0, 0);
snode->attachObject(ent);
snode->scale(shapeDim.x, shapeDim.y/100, shapeDim.z/100);
snode->translate(position);
ent->setMaterialName("Examples/Blue50");
ent->setCastShadows(false);
bullet->setRigidBoxBody(snode, shapeDim, position, 0.0);
}
//PosWall YZ------------------------------------------------------------------
{
Ogre::Entity* ent = mSceneMgr->createEntity("PosYZEntity", "cube.mesh");
Ogre::SceneNode* snode = mSceneMgr->getRootSceneNode()->
createChildSceneNode("snode3");
Ogre::Vector3 shapeDim = Ogre::Vector3(0.01, edgeSize, edgeSize);
Ogre::Vector3 position = Ogre::Vector3(edgeSize/2, 0, 0);
snode->attachObject(ent);
snode->scale(shapeDim.x, shapeDim.y/100, shapeDim.z/100);
snode->translate(position);
ent->setMaterialName("Examples/Blue50");
ent->setCastShadows(false);
bullet->setRigidBoxBody(snode, shapeDim, position, 0.0);
}
//NegWall XY------------------------------------------------------------------
if(!isMultiplayer)
{
Ogre::Entity* ent = mSceneMgr->createEntity("NegXYEntity", "cube.mesh");
Ogre::SceneNode* snode = mSceneMgr->getRootSceneNode()->
createChildSceneNode("snode4");
Ogre::Vector3 shapeDim = Ogre::Vector3(edgeSize, edgeSize, 0.01);
Ogre::Vector3 position = Ogre::Vector3(0, 0, -edgeSize/2);
snode->attachObject(ent);
snode->scale(shapeDim.x/100, shapeDim.y/100, shapeDim.z);
snode->translate(position);
ent->setMaterialName("Examples/Blue50");
ent->setCastShadows(false);
bullet->setRigidBoxBody(snode, shapeDim, position, 0.0);
}*/
}
//---------------------------------------------------------------------------