absence_thelab

annotate src/greetspart.cpp @ 0:1cffe3409164

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 23 Oct 2014 01:46:07 +0300
parents
children
rev   line source
nuclear@0 1 #include "greetspart.h"
nuclear@0 2 #include "nwt/widget.h"
nuclear@0 3
nuclear@0 4 extern Widget *win;
nuclear@0 5
nuclear@0 6 GreetsPart::GreetsPart(GraphicsContext *gc) {
nuclear@0 7 this->gc = gc;
nuclear@0 8
nuclear@0 9 gc->Clear(0);
nuclear@0 10 gc->ClearZBufferStencil(1.0f, 0);
nuclear@0 11
nuclear@0 12
nuclear@0 13 SceneLoader::SetNormalFileSaving(false);
nuclear@0 14 SceneLoader::SetDataPath("data/textures/");
nuclear@0 15 SceneLoader::LoadScene("data/geometry/greets.3ds", &scene);
nuclear@0 16 SceneLoader::SetNormalFileSaving(true);
nuclear@0 17
nuclear@0 18 Parchment = scene->GetObject("Plane01");
nuclear@0 19 //Scroll1 = scene->GetObject("Object01");
nuclear@0 20 //Scroll2 = scene->GetObject("Object02");
nuclear@0 21
nuclear@0 22 // load the flame textures
nuclear@0 23 for(int i=0; i<52; i++) {
nuclear@0 24 char num[3];
nuclear@0 25 itoa(i, num, 10);
nuclear@0 26 string fname = string("data/textures/flame/flame") + (i < 10 ? string("0") : string("")) + string(num) + string(".jpg");
nuclear@0 27 FlameTex[i] = gc->texman->LoadTexture(fname.c_str());
nuclear@0 28 }
nuclear@0 29
nuclear@0 30 flame = scene->GetObject("Plane02");
nuclear@0 31 scene->RemoveObject(flame);
nuclear@0 32
nuclear@0 33 Parchment->SetScaling(9.0f, 1.0f, 1.0f);
nuclear@0 34
nuclear@0 35 Bottle = scene->GetObject("Bottle");
nuclear@0 36 scene->RemoveObject(Bottle);
nuclear@0 37
nuclear@0 38 light = scene->GetLight("Omni01");
nuclear@0 39
nuclear@0 40 scene->SetShadows(true);
nuclear@0 41 light->SetShadowCasting(true);
nuclear@0 42 //scene->GetObject("CHolder")->SetShadowCasting(true);
nuclear@0 43 scene->GetObject("Candle")->SetShadowCasting(true);
nuclear@0 44 //scene->GetObject("Bottle01")->SetShadowCasting(true);
nuclear@0 45
nuclear@0 46 const Light *l[] = {light};
nuclear@0 47 scene->GetObject("Cylinder01")->CalculateShadows(l, 1);
nuclear@0 48 scene->GetObject("Cylinder02")->CalculateShadows(l, 1);
nuclear@0 49 scene->GetObject("Bottle01")->CalculateShadows(l, 1);
nuclear@0 50 scene->GetObject("Plane01")->CalculateShadows(l, 1);
nuclear@0 51
nuclear@0 52 scene->SetAmbientLight(Color(0.58f, 0.3f, 0.3f));
nuclear@0 53
nuclear@0 54 LightPos = light->GetPosition();
nuclear@0 55 light->SetIntensity(0.5f);
nuclear@0 56 light->SetAttenuation(0.0f, 0.1f, 0.0f);
nuclear@0 57
nuclear@0 58 }
nuclear@0 59
nuclear@0 60 GreetsPart::~GreetsPart() {
nuclear@0 61 delete scene;
nuclear@0 62 }
nuclear@0 63
nuclear@0 64 void GreetsPart::MainLoop() {
nuclear@0 65
nuclear@0 66 gc->Clear(0);
nuclear@0 67 gc->ClearZBufferStencil(1.0f, 0);
nuclear@0 68
nuclear@0 69 Vector3 LightPosDiff(frand(0.005f) - 0.0025f, frand(0.005f) - 0.0025f, frand(0.005f) - 0.0025f);
nuclear@0 70 light->SetPosition(LightPos + LightPosDiff);
nuclear@0 71
nuclear@0 72 light->SetIntensity(0.5f + (frand(0.1f) - 0.05f));
nuclear@0 73
nuclear@0 74 dword msec = timer.GetMilliSec();
nuclear@0 75 float t = msec / 1000.0f;
nuclear@0 76
nuclear@0 77 scene->Render();
nuclear@0 78
nuclear@0 79 Bottle->Render();
nuclear@0 80
nuclear@0 81 gc->SetLighting(false);
nuclear@0 82 int ftexnum = (int)((float)msec / 33.35f) % 52;
nuclear@0 83 gc->SetAlphaBlending(true);
nuclear@0 84 gc->SetBackfaceCulling(false);
nuclear@0 85 gc->SetBlendFunc(BLEND_ONE, BLEND_ONE);
nuclear@0 86 gc->SetTextureStageColor(0, TexBlendSelectArg1, TexArgTexture, TexArgCurrent);
nuclear@0 87 gc->SetTextureStageAlpha(0, TexBlendSelectArg1, TexArgTexture, TexArgTexture);
nuclear@0 88 gc->SetMaterial(Material(1.0f, 1.0f, 1.0f));
nuclear@0 89 gc->SetTextureCoordIndex(0, 0);
nuclear@0 90 gc->SetTexture(1, 0);
nuclear@0 91 gc->SetTexture(0, FlameTex[ftexnum]);
nuclear@0 92 gc->SetWorldMatrix(flame->GetWorldTransform());
nuclear@0 93 flame->RenderBare();
nuclear@0 94 gc->SetBackfaceCulling(true);
nuclear@0 95 gc->SetAlphaBlending(false);
nuclear@0 96 gc->SetLighting(true);
nuclear@0 97 }