void draw_test(SDL_Surface* s, Point mid) { return; Point start = {100.0,100.0}; Point end = {200.0,200.0}; Point towards = add_Point(end,mult_Point(0.3,subs_Point(end,start))); filledCircleColor(s,(int)start.x, (int) start.y, 5,intColor(c_fuchsia)); filledCircleColor(s,(int) end.x, (int) end.y, 5,intColor(c_fuchsia)); filledCircleColor(s,(int)mid.x, (int) mid.y, 5,intColor(c_fuchsia)); filledCircleColor(s,(int)towards.x, (int) towards.y, 5,intColor(c_fuchsia)); draw_B_spline(s, start, subs_Point(mult_Point(2.0,start),mid), end, towards, c_fuchsia); }
SDL_Surface* limit_Selection(SDL_Surface* origin, Selection* select) { if(origin && select && select->active) { SDL_Rect left = {.x = 0, .y = 0, .w = select->area.x, .h = origin->h}; SDL_Rect right = {.x = select->area.x + select->area.w, .y=0, .w = origin->w - (select->area.x + select->area.w), .h=origin->h}; SDL_Rect upper = {.x = select->area.x, .y= 0, .w = select->area.w, .h= select->area.y}; SDL_Rect lower = {.x = select->area.x, .y= select->area.y + select->area.h, .w = select->area.w, .h= origin->h - (select->area.y + select->area.h)}; SDL_FillRect(origin, &left, intColor_fmt(c_trans,origin->format)); SDL_FillRect(origin, &right, intColor_fmt(c_trans,origin->format)); SDL_FillRect(origin, &upper, intColor_fmt(c_trans,origin->format)); SDL_FillRect(origin, &lower, intColor_fmt(c_trans,origin->format)); } return origin; } void draw_selection(SDL_Surface* where, Selection* select, Color c){ rectangleColor(where,select->area.x,select->area.y, select->area.x + select->area.w, select->area.y + select->area.h,intColor(c)); }
void draw_B_spline(SDL_Surface* s, Point start, Point startfrom, Point end , Point endto, Color c) { Point p1 = subs_Point(mult_Point(2.0,start),startfrom); Point p2; if(endto.x == startfrom.x && endto.y == startfrom.y) p2 = p1; else p2 = subs_Point(mult_Point(2.0,end),endto); float t = 0; Point prev = start; for(; t<=1.01; t+=0.01) { Point cur = add_Point(add_Point( mult_Point(splinefunc0(t),start),mult_Point(splinefunc1(t),p1)), add_Point( mult_Point(splinefunc2(t),p2),mult_Point(splinefunc3(t),end))); lineColor(s,prev.x,prev.y,cur.x,cur.y,intColor(c)); prev = cur; } }
osgOceanScene::osgOceanScene(double offsetp[3], double offsetr[3], const osg::Vec2f& windDirection, float windSpeed, float depth, float reflectionDamping, float scale, bool isChoppy, float choppyFactor, float crestFoamHeight, bool useVBO, const std::string& terrain_shader_basename) { _sceneType = CLEAR; _useVBO = useVBO; _cubemapDirs.push_back( "sky_clear" ); _cubemapDirs.push_back( "sky_dusk" ); _cubemapDirs.push_back( "sky_fair_cloudy" ); _fogColors.push_back( intColor( 199,226,255 ) ); _fogColors.push_back( intColor( 244,228,179 ) ); _fogColors.push_back( intColor( 172,224,251 ) ); _waterFogColors.push_back( intColor(27,57,109) ); _waterFogColors.push_back( intColor(44,69,106 ) ); _waterFogColors.push_back( intColor(84,135,172 ) ); _underwaterAttenuations.push_back( osg::Vec3f(0.015f, 0.0075f, 0.005f) ); _underwaterAttenuations.push_back( osg::Vec3f(0.015f, 0.0075f, 0.005f) ); _underwaterAttenuations.push_back( osg::Vec3f(0.008f, 0.003f, 0.002f) ); _underwaterDiffuse.push_back( intColor(27,57,109) ); _underwaterDiffuse.push_back( intColor(44,69,106) ); _underwaterDiffuse.push_back( intColor(84,135,172) ); _lightColors.push_back( intColor( 105,138,174 ) ); _lightColors.push_back( intColor( 105,138,174 ) ); _lightColors.push_back( intColor( 105,138,174 ) ); _sunPositions.push_back( osg::Vec3f(326.573, 1212.99 ,1275.19) ); _sunPositions.push_back( osg::Vec3f(520.f, 1900.f, 550.f ) ); _sunPositions.push_back( osg::Vec3f(-1056.89f, -771.886f, 1221.18f ) ); _sunDiffuse.push_back( intColor( 191, 191, 191 ) ); _sunDiffuse.push_back( intColor( 251, 251, 161 ) ); _sunDiffuse.push_back( intColor( 191, 191, 191 ) ); build(offsetp, offsetr, windDirection, windSpeed, depth, reflectionDamping, scale, isChoppy, choppyFactor, crestFoamHeight, _useVBO, terrain_shader_basename); }