aboutsummaryrefslogtreecommitdiffstats
path: root/main.cpp
diff options
context:
space:
mode:
authordrumsetmonkey <abelleisle@roadrunner.com>2015-11-04 08:42:23 -0500
committerdrumsetmonkey <abelleisle@roadrunner.com>2015-11-04 08:42:23 -0500
commitb3c87a7b30a7faf0f4366a01ed7e9b07b60370d0 (patch)
tree6689919933e0d56cba79d982868a67600c758cf8 /main.cpp
parent6b7dd6a9c031fd2129676500bc8e8633d3fcf234 (diff)
Made ray casting example
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp112
1 files changed, 65 insertions, 47 deletions
diff --git a/main.cpp b/main.cpp
index a49873c..41e1227 100644
--- a/main.cpp
+++ b/main.cpp
@@ -768,81 +768,100 @@ void render(){
glUniform2f(glGetUniformLocation(shaderProgram, "lightLocation"), 640,100);
glUniform3f(glGetUniformLocation(shaderProgram, "lightColor"), 1,1,1);
glUniform1f(glGetUniformLocation(shaderProgram, "lightStrength"), 100 + (1000-(shade*10)));
- std::cout << 100 + (1000-(shade*10)) << std::endl;
+ //std::cout << 100 + (1000-(shade*10)) << std::endl;
glColor4ub(0,0,0,200);
glRectf(offset.x-SCREEN_WIDTH/2,0,offset.x+SCREEN_WIDTH/2,SCREEN_HEIGHT);
glUseProgramObjectARB(0);
#endif //SHADERS
- #define pi 3.1415926535
- #define raysNOPE
+
+
+
+
+
+ #define rays
#ifdef rays
//LIGHT
- static vec2 light;
- float lightStr = 100;
+ vec2 light;
+ int lightStr = 150;
vec2 curCoord;
- light.x = player->loc.x;
- light.y = player->loc.y;
- std::vector<Ray>ray(30);
+
+ light.x = 0;
+ light.y = 300;
+
+ std::vector<Ray>ray(180);
unsigned int a = 0;
- int angle = 0;
+ float angle = 0;
+
glColor3f(0.0f, 0.0f, 0.0f);
for(auto &r : ray){
r.start = light;
- angle = 12*a;
- for(int l = 0;l<lightStr;l+=36){
- //switch
- switch(angle){
- case 0:
+ curCoord = r.start;
+ angle = 2*a;
+ //for length
+ for(int l = 0;l<=lightStr;l++){
+ //std::cout << a << ": " << curCoord.x << "," << curCoord.y << "\n";
+ if(angle == 0){
curCoord.x += HLINE;
curCoord.y += 0;
- break;
- case 180:
+ }
+ if(angle == 90){
+ curCoord.y += HLINE;
+ curCoord.x += 0;
+ }
+ if(angle == 180){
curCoord.x -= HLINE;
- curCoord.y -= 0;
- break;
- case 360:
+ curCoord.y += 0;
+ }
+ if(angle == 270){
+ curCoord.y -= HLINE;
+ curCoord.x += 0;
+ }
+ if(angle == 360){
curCoord.x += HLINE;
curCoord.y += 0;
- angle = 0;
- break;
- default:
- if(angle > 0 && angle < 90){
- curCoord.x = r.start.x + float(HLINE / cos(angle*pi/180));
- curCoord.y = r.start.y + float(HLINE / sin(angle*pi/180));
- }
- if(angle > 90 && angle < 180){
- curCoord.x = r.start.x - float(HLINE / cos((90-angle)*pi/180));
- curCoord.y = r.start.y + float(HLINE / sin((90-angle)*pi/180));
- }
- if(angle > 180 && angle < 270){
- curCoord.x = r.start.x - float(HLINE / cos((270-angle)*pi/180));
- curCoord.y = r.start.y - float(HLINE / sin((270-angle)*pi/180));
- }
- if(angle > 270 && angle < 360){
- curCoord.x = r.start.x + float(HLINE / cos((360-angle)*pi/180));
- curCoord.y = r.start.y - float(HLINE / sin((360-angle)*pi/180));
- }
- }//end swtich
- /*for(auto &en : entity){
+ }
+ else{
+ curCoord.x += float((HLINE) * cos(angle*PI/180));
+ curCoord.y += float((HLINE) * sin(angle*PI/180));
+ }
+ for(auto &en : entity){
if(curCoord.x > en->loc.x && curCoord.x < en->loc.x + en->width){
if(curCoord.y > en->loc.y && curCoord .y < en->loc.y + en->height){
r.end = curCoord;
+ l=lightStr;
}
}
- }*/
-
+ }
+ if(curCoord.x > player->loc.x && curCoord.x < player->loc.x + player->width){
+ if(curCoord.y > player->loc.y && curCoord .y < player->loc.y + player->height){
+ r.end = curCoord;
+ l=lightStr;
+ }
+ }if(l==lightStr)r.end = curCoord;
}//end length
- r.end = curCoord;
- glBegin(GL_LINES);
+ /*glBegin(GL_LINES);
glVertex2f(r.start.x,r.start.y);
glVertex2f(r.end.x, r.end.y);
- glEnd();
+ glEnd();*/
//std::cout << angle << "\n";
a++;
}
- #endif //rays
+ glUseProgramObjectARB(shaderProgram);
+ glUniform2f(glGetUniformLocation(shaderProgram, "lightLocation"), 640,300);
+ glUniform3f(glGetUniformLocation(shaderProgram, "lightColor"), 1,1,1);
+ glUniform1f(glGetUniformLocation(shaderProgram, "lightStrength"), 5);
+ glColor4f(1.0f, 1.0f, 1.0f, .5f);
+ for(auto r = 0; r < ray.size(); r++){
+ glBegin(GL_TRIANGLES);
+ glVertex2f(ray[r].start.x, ray[r].start.y);
+ glVertex2f(ray[r].end.x, ray[r].end.y);
+ r==ray.size()-1 ? glVertex2f(ray[0].end.x, ray[0].end.y) : glVertex2f(ray[r+1].end.x, ray[r+1].end.y);
+ glEnd();
+ }
+ glUseProgramObjectARB(0);
+ #endif //ray
//LIGHT
@@ -1092,7 +1111,6 @@ void logic(){
* Calculate an in-game shading value (as opposed to GLSL shading).
*/
- #define PI 3.1415926535
worldShade=50*sin((tickCount+(DAY_CYCLE/2))/(DAY_CYCLE/PI));
/*