| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*
- * PolyParticle.cpp
- * Poly
- *
- * Created by Ivan Safrin on 7/18/08.
- * Copyright 2008 __MyCompanyName__. All rights reserved.
- *
- */
- #include "PolyParticle.h"
- using namespace Polycode;
- Particle::Particle(int particleType, Material *texture, Mesh *particleMesh) {
- switch(particleType) {
- case BILLBOARD_PARTICLE:
- {
- ScenePrimitive *primitive = new ScenePrimitive(ScenePrimitive::TYPE_PLANE, 1.0f, 1.0f);
- primitive->setMaterial(texture);
- primitive->billboardMode = true;
- primitive->billboardRoll = true;
- primitive->setDepthWrite(false);
- primitive->backfaceCulled = false;
- particleBody = primitive;
- }
- break;
- case MESH_PARTICLE:
- {
- SceneMesh *primitive = new SceneMesh(particleMesh);
- if(particleMesh->getMeshType() == Mesh::TRI_MESH)
- primitive->cacheToVertexBuffer(true);
- primitive->setMaterial(texture);
- // primitive->billboardMode = true;
- // primitive->billboardRoll = true;
- //primitive->depthTest = false;
- // primitive->backfaceCulled = false;
- particleBody = primitive;
- }
- break;
- }
- life = 0;
- Reset();
- }
- void Particle::Reset() {
- if(life > lifespan)
- life = 0 + (life - lifespan);
- else
- life = 0;
- perlinPosX = (float)rand()/RAND_MAX;
- perlinPosY = (float)rand()/RAND_MAX;
- perlinPosZ = (float)rand()/RAND_MAX;
-
- }
- Particle::~Particle() {
- }
|