Skip to content

Commit 8654b57

Browse files
committed
Fixed 3D physics entity enabling parameter, frustum culling fixes, made default materials take 6 point lights by default
1 parent 0812c68 commit 8654b57

File tree

10 files changed

+42
-12
lines changed

10 files changed

+42
-12
lines changed
1 Byte
Binary file not shown.

Assets/Default asset pack/default/default.mat

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
<?xml version="1.0" ?>
22
<polycode>
33
<shaders>
4-
<shader type="glsl" name="DefaultShader" numPointLights="4" numSpotLights="2">
4+
<shader type="glsl" name="DefaultShader" numPointLights="6" numSpotLights="2">
55
<vp source="default/DefaultShader.vert"/>
66
<fp source="default/DefaultShader.frag"/>
77
</shader>
8-
<shader type="glsl" name="DefaultShaderNoTexture" numPointLights="4" numSpotLights="2">
8+
<shader type="glsl" name="DefaultShaderNoTexture" numPointLights="6" numSpotLights="2">
99
<vp source="default/DefaultShader.vert"/>
1010
<fp source="default/DefaultShaderNoTexture.frag"/>
1111
</shader>
12-
<shader type="glsl" name="DefaultShaderShadows" numPointLights="4" numSpotLights="2">
12+
<shader type="glsl" name="DefaultShaderShadows" numPointLights="6" numSpotLights="2">
1313
<vp source="default/DefaultShaderShadows.vert"/>
1414
<fp source="default/DefaultShaderShadows.frag"/>
1515
</shader>
16-
<shader type="glsl" name="DefaultShaderVertex" numPointLights="4" numSpotLights="2">
16+
<shader type="glsl" name="DefaultShaderVertex" numPointLights="6" numSpotLights="2">
1717
<vp source="default/DefaultShaderVertex.vert"/>
1818
<fp source="default/DefaultShaderVertex.frag"/>
1919
</shader>
20-
<shader type="glsl" name="DefaultShaderVertexNoTexture" numPointLights="4" numSpotLights="2">
20+
<shader type="glsl" name="DefaultShaderVertexNoTexture" numPointLights="6" numSpotLights="2">
2121
<vp source="default/DefaultShaderVertex.vert"/>
2222
<fp source="default/DefaultShaderVertexNoTexture.frag"/>
2323
</shader>
24-
<shader type="glsl" name="DefaultParticleShader" numPointLights="4" numSpotLights="2">
24+
<shader type="glsl" name="DefaultParticleShader" numPointLights="6" numSpotLights="2">
2525
<vp source="default/DefaultShader.vert"/>
2626
<fp source="default/DefaultParticleShader.frag"/>
2727
</shader>
@@ -41,7 +41,7 @@
4141
<vp source="default/LightCube.vert"/>
4242
<fp source="default/SkyBox.frag"/>
4343
</shader>
44-
<shader type="glsl" name="NorColSpec" numPointLights="4" numSpotLights="2">
44+
<shader type="glsl" name="NorColSpec" numPointLights="6" numSpotLights="2">
4545
<vp source="default/NormalShader.vert"/>
4646
<fp source="default/NorColSpec.frag"/>
4747
</shader>

Core/Contents/Source/PolyEntity.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,9 @@ void Entity::recalculateAABB() {
602602

603603
Matrix4 fullMatrix = getAnchorAdjustedMatrix();
604604
if(ignoreParentMatrix) {
605+
if(matrixDirty) {
606+
rebuildTransformMatrix();
607+
}
605608
fullMatrix = transformMatrix;
606609
}
607610

Core/Contents/Source/PolyScene.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ void Scene::setEntityVisibilityBool(Entity *entity, bool val) {
197197

198198
void Scene::setEntityVisibility(Entity *entity, Camera *camera) {
199199
if(camera->frustumCulling) {
200+
entity->recalculateAABB();
200201
entity->rendererVis = camera->isAABBInFrustum(entity->getWorldAABB());
201202
} else {
202203
entity->rendererVis = true;

IDE/Contents/Source/PolycodeEntityEditor.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ CameraPreviewWindow::CameraPreviewWindow() : UIElement() {
215215
aspectCombo->addComboItem("16:9");
216216
aspectCombo->addComboItem("16:10");
217217
aspectCombo->addComboItem("4:3");
218+
aspectCombo->addComboItem("16:18");
218219
aspectCombo->addEventListener(this, UIEvent::CHANGE_EVENT);
219220

220221
pinButton = new UIButton("Pin", 60);
@@ -280,6 +281,9 @@ void CameraPreviewWindow::handleEvent(Event *event) {
280281
case 2:
281282
Resize(bBox.y * 1.3, bBox.y);
282283
break;
284+
case 3:
285+
Resize(bBox.y * 0.888, bBox.y);
286+
break;
283287

284288
}
285289
}

Modules/Contents/3DPhysics/Include/PolyCollisionScene.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,10 @@ struct CollisionResult {
109109
CollisionEntity *getCollisionByScreenEntity(Entity *ent);
110110
CollisionResult testCollision(Entity *ent1, Entity *ent2);
111111
CollisionResult testCollisionOnCollisionChild(CollisionEntity *cEnt1, CollisionEntity *cEnt2);
112-
CollisionResult testCollisionOnCollisionChild_Convex(CollisionEntity *cEnt1, CollisionEntity *cEnt2);
112+
CollisionResult testCollisionOnCollisionChild_Convex(CollisionEntity *cEnt1, CollisionEntity *cEnt2);
113113

114+
bool isColliding(Entity *ent1);
115+
114116
virtual CollisionEntity *addCollisionChild(Entity *newEntity, int type=0, int group=1);
115117
CollisionEntity *trackCollision(Entity *newEntity, int type=0, int group=1);
116118
void removeCollision(Entity *entity);

Modules/Contents/3DPhysics/Include/PolyPhysicsSceneEntity.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,6 @@ namespace Polycode {
117117
static const int SHAPE_CYLINDER = 8;
118118

119119

120-
bool enabled;
121-
122120
btRigidBody* rigidBody;
123121

124122
protected:

Modules/Contents/3DPhysics/Source/PolyCollisionScene.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,27 @@ CollisionEntity *CollisionScene::getCollisionByScreenEntity(Entity *ent) {
9494

9595
}
9696

97+
bool CollisionScene::isColliding(Entity *ent1) {
98+
CollisionEntity *cEnt1 = getCollisionByScreenEntity(ent1);
99+
if(cEnt1) {
100+
int numManifolds = world->getDispatcher()->getNumManifolds();
101+
for (int i=0;i<numManifolds;i++)
102+
{
103+
btPersistentManifold* contactManifold = world->getDispatcher()->getManifoldByIndexInternal(i);
104+
105+
btCollisionObject* obA = static_cast<btCollisionObject*>(contactManifold->getBody0());
106+
btCollisionObject* obB = static_cast<btCollisionObject*>(contactManifold->getBody1());
107+
108+
if(obA == cEnt1->collisionObject || obB == cEnt1->collisionObject) {
109+
return true;
110+
}
111+
}
112+
} else {
113+
return false;
114+
}
115+
return false;
116+
}
117+
97118
CollisionResult CollisionScene::testCollisionOnCollisionChild_Convex(CollisionEntity *cEnt1, CollisionEntity *cEnt2) {
98119
CollisionResult result;
99120
result.collided = false;

Modules/Contents/3DPhysics/Source/PolyPhysicsScene.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ void PhysicsScene::processWorldCollisions() {
145145
void PhysicsScene::Update() {
146146
if(!pausePhysics) {
147147
for(int i=0; i < physicsChildren.size(); i++) {
148-
// if(physicsChildren[i]->enabled)
148+
if(physicsChildren[i]->enabled) {
149149
physicsChildren[i]->Update();
150+
}
150151
}
151152

152153

Modules/Contents/3DPhysics/Source/PolyPhysicsSceneEntity.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ PhysicsCharacter::~PhysicsCharacter() {
182182
}
183183

184184
PhysicsEntity::PhysicsEntity(Entity *entity, int type, Number mass, Number friction, Number restitution, bool compoundChildren) : CollisionEntity(entity, type, compoundChildren) {
185-
185+
enabled = true;
186186
this->mass = mass;
187187
btVector3 localInertia(0,0,0);
188188
Vector3 pos = entity->getPosition();

0 commit comments

Comments
 (0)