本文整理汇总了C++中Matrix32::set_rotation方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix32::set_rotation方法的具体用法?C++ Matrix32::set_rotation怎么用?C++ Matrix32::set_rotation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix32
的用法示例。
在下文中一共展示了Matrix32::set_rotation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: screen_rect
//.........这里部分代码省略.........
camera_pos.y = MAX( camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_TOP]));
} else {
if (v_ofs<0) {
camera_pos.y = new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_TOP] * v_ofs;
} else {
camera_pos.y = new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM] * v_ofs;
}
}
} else if (anchor_mode==ANCHOR_MODE_FIXED_TOP_LEFT){
camera_pos=new_camera_pos;
}
if (smoothing_enabled && !get_tree()->is_editor_hint()) {
float c = smoothing*get_fixed_process_delta_time();
smoothed_camera_pos = ((camera_pos-smoothed_camera_pos)*c)+smoothed_camera_pos;
ret_camera_pos=smoothed_camera_pos;
// camera_pos=camera_pos*(1.0-smoothing)+new_camera_pos*smoothing;
} else {
ret_camera_pos=smoothed_camera_pos=camera_pos;
}
} else {
ret_camera_pos=smoothed_camera_pos=camera_pos=new_camera_pos;
first=false;
}
Point2 screen_offset = (anchor_mode==ANCHOR_MODE_DRAG_CENTER ? (screen_size * 0.5 * zoom) : Point2());
float angle = get_global_transform().get_rotation();
if(rotating){
screen_offset = screen_offset.rotated(angle);
}
Rect2 screen_rect(-screen_offset+ret_camera_pos,screen_size*zoom);
if (screen_rect.pos.x + screen_rect.size.x > limit[MARGIN_RIGHT])
screen_rect.pos.x = limit[MARGIN_RIGHT] - screen_rect.size.x;
if (screen_rect.pos.y + screen_rect.size.y > limit[MARGIN_BOTTOM])
screen_rect.pos.y = limit[MARGIN_BOTTOM] - screen_rect.size.y;
if (screen_rect.pos.x < limit[MARGIN_LEFT])
screen_rect.pos.x=limit[MARGIN_LEFT];
if (screen_rect.pos.y < limit[MARGIN_TOP])
screen_rect.pos.y =limit[MARGIN_TOP];
if (offset!=Vector2()) {
screen_rect.pos+=offset;
if (screen_rect.pos.x + screen_rect.size.x > limit[MARGIN_RIGHT])
screen_rect.pos.x = limit[MARGIN_RIGHT] - screen_rect.size.x;
if (screen_rect.pos.y + screen_rect.size.y > limit[MARGIN_BOTTOM])
screen_rect.pos.y = limit[MARGIN_BOTTOM] - screen_rect.size.y;
if (screen_rect.pos.x < limit[MARGIN_LEFT])
screen_rect.pos.x=limit[MARGIN_LEFT];
if (screen_rect.pos.y < limit[MARGIN_TOP])
screen_rect.pos.y =limit[MARGIN_TOP];
}
camera_screen_center=screen_rect.pos+screen_rect.size*0.5;
Matrix32 xform;
if(rotating){
xform.set_rotation(angle);
}
xform.scale_basis(zoom);
xform.set_origin(screen_rect.pos/*.floor()*/);
/*
if (0) {
xform = get_global_transform() * xform;
} else {
xform.elements[2]+=get_global_transform().get_origin();
}
*/
return (xform).affine_inverse();
}
示例2: size
//.........这里部分代码省略.........
float ptime = ((float)i / particle_count)*explosiveness;
if (ptime<time_pos)
ptime=time_pos-ptime;
else
ptime=(1.0-ptime)+time_pos;
uint32_t rand_seed=p.seed*(i+1);
Color color;
if(color_ramp.is_valid())
{
color = color_ramp->get_color_at_offset(ptime);
} else
{
color = default_color;
}
{
float huerand=_rand_from_seed(&rand_seed);
float huerot = param[PARAM_HUE_VARIATION] + randomness[PARAM_HUE_VARIATION] * huerand;
if (Math::abs(huerot) > CMP_EPSILON) {
float h=color.get_h();
float s=color.get_s();
float v=color.get_v();
float a=color.a;
//float preh=h;
h+=huerot;
h=Math::abs(Math::fposmod(h,1.0));
//print_line("rand: "+rtos(randomness[PARAM_HUE_VARIATION])+" rand: "+rtos(huerand));
//print_line(itos(i)+":hue: "+rtos(preh)+" + "+rtos(huerot)+" = "+rtos(h));
color.set_hsv(h,s,v);
color.a=a;
}
}
float initial_size = param[PARAM_INITIAL_SIZE]+param[PARAM_INITIAL_SIZE]*_rand_from_seed(&rand_seed)*randomness[PARAM_FINAL_SIZE];
float final_size = param[PARAM_FINAL_SIZE]+param[PARAM_FINAL_SIZE]*_rand_from_seed(&rand_seed)*randomness[PARAM_FINAL_SIZE];
float size_mult=initial_size*(1.0-ptime) + final_size*ptime;
//Size2 rectsize=size * size_mult;
//rectsize=rectsize.floor();
//Rect2 r = Rect2(Vecto,rectsize);
Matrix32 xform;
if (p.rot) {
xform.set_rotation(p.rot);
xform.translate(-size*size_mult/2.0);
xform.elements[2]+=p.pos;
} else {
xform.elements[2]=-size*size_mult/2.0;
xform.elements[2]+=p.pos;
}
if (!local_space) {
xform = invxform * xform;
}
xform.scale_basis(Size2(size_mult,size_mult));
VisualServer::get_singleton()->canvas_item_add_set_transform(ci,xform);
if (texrid.is_valid()) {
Rect2 src_rect;
src_rect.size=size;
if (total_frames>1) {
int frame = Math::fast_ftoi(Math::floor(p.frame*total_frames)) % total_frames;
src_rect.pos.x = size.x * (frame%h_frames);
src_rect.pos.y = size.y * (frame/h_frames);
}
texture->draw_rect_region(ci,Rect2(Point2(),size),src_rect,color);
//VisualServer::get_singleton()->canvas_item_add_texture_rect(ci,r,texrid,false,color);
} else {
VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2(),size),color);
}
}
} break;
}
}