void ObjectRenderer::buildRenderList(GameObject* object, RenderList& outList) { // Right now specialized on each object type switch (object->type()) { case GameObject::Instance: renderInstance(static_cast<InstanceObject*>(object), outList); break; case GameObject::Character: renderCharacter(static_cast<CharacterObject*>(object), outList); break; ; case GameObject::Vehicle: renderVehicle(static_cast<VehicleObject*>(object), outList); break; ; case GameObject::Pickup: renderPickup(static_cast<PickupObject*>(object), outList); break; case GameObject::Projectile: renderProjectile(static_cast<ProjectileObject*>(object), outList); break; case GameObject::Cutscene: renderCutsceneObject(static_cast<CutsceneObject*>(object), outList); break; default: break; } }
/* render Objects in list */ void bucketRenderCurrentList(void) { std::sort(bucketArray.begin(), bucketArray.end()); pie_MatBegin(true); for (std::vector<BUCKET_TAG>::const_iterator thisTag = bucketArray.begin(); thisTag != bucketArray.end(); ++thisTag) { switch(thisTag->objectType) { case RENDER_PARTICLE: renderParticle((ATPART*)thisTag->pObject); break; case RENDER_EFFECT: renderEffect((EFFECT*)thisTag->pObject); break; case RENDER_DROID: renderDroid((DROID*)thisTag->pObject); break; case RENDER_SHADOW: renderShadow((DROID*)thisTag->pObject, getImdFromIndex(MI_SHADOW)); break; case RENDER_STRUCTURE: renderStructure((STRUCTURE*)thisTag->pObject); break; case RENDER_FEATURE: renderFeature((FEATURE*)thisTag->pObject); break; case RENDER_PROXMSG: renderProximityMsg((PROXIMITY_DISPLAY*)thisTag->pObject); break; case RENDER_PROJECTILE: renderProjectile((PROJECTILE*)thisTag->pObject); break; case RENDER_ANIMATION: renderAnimComponent((COMPONENT_OBJECT*)thisTag->pObject); break; case RENDER_DELIVPOINT: renderDeliveryPoint((FLAG_POSITION*)thisTag->pObject, false); break; } } pie_MatEnd(); //reset the bucket array as we go bucketArray.resize(0); }
/* render Objects in list */ void bucketRenderCurrentList(const glm::mat4 &viewMatrix) { std::sort(bucketArray.begin(), bucketArray.end()); for (std::vector<BUCKET_TAG>::const_iterator thisTag = bucketArray.begin(); thisTag != bucketArray.end(); ++thisTag) { switch (thisTag->objectType) { case RENDER_PARTICLE: renderParticle((ATPART *)thisTag->pObject, viewMatrix); break; case RENDER_EFFECT: renderEffect((EFFECT *)thisTag->pObject, viewMatrix); break; case RENDER_DROID: displayComponentObject((DROID *)thisTag->pObject, viewMatrix); break; case RENDER_STRUCTURE: renderStructure((STRUCTURE *)thisTag->pObject, viewMatrix); break; case RENDER_FEATURE: renderFeature((FEATURE *)thisTag->pObject, viewMatrix); break; case RENDER_PROXMSG: renderProximityMsg((PROXIMITY_DISPLAY *)thisTag->pObject, viewMatrix); break; case RENDER_PROJECTILE: renderProjectile((PROJECTILE *)thisTag->pObject, viewMatrix); break; case RENDER_DELIVPOINT: renderDeliveryPoint((FLAG_POSITION *)thisTag->pObject, false, viewMatrix); break; } } //reset the bucket array as we go bucketArray.resize(0); }