support new Camera/CameraControl
This commit is contained in:
parent
fa986d369f
commit
b58af7ac23
2
CMCore
2
CMCore
@ -1 +1 @@
|
||||
Subproject commit 41b70d47446a8da4dfaaf6ce3c89750495678ceb
|
||||
Subproject commit 16f8e89f5b72387d1ca49457558235834d8e9e49
|
@ -1 +1 @@
|
||||
Subproject commit ad2504b4bd5390b887ef9abfc395552493cd5d0c
|
||||
Subproject commit 656dabd560b5f27e190baf3899104c38019ae9e2
|
@ -105,7 +105,7 @@ private:
|
||||
ro_round_rectangle=CreateRenderableRoundRectangle(db,m2d.material,&rrci);
|
||||
}
|
||||
|
||||
camera.eye.Set(200,200,200,1.0);
|
||||
camera.pos.Set(200,200,200,1.0);
|
||||
}
|
||||
|
||||
bool InitScene()
|
||||
|
@ -304,14 +304,18 @@ private:
|
||||
|
||||
protected:
|
||||
|
||||
ControlCamera camera;
|
||||
Camera camera;
|
||||
FreeCameraControl * fcc=nullptr;
|
||||
float move_speed=1;
|
||||
|
||||
Vector2f mouse_last_pos;
|
||||
|
||||
public:
|
||||
|
||||
virtual ~CameraAppFramework()=default;
|
||||
virtual ~CameraAppFramework()
|
||||
{
|
||||
SAFE_CLEAR(fcc);
|
||||
}
|
||||
|
||||
virtual bool Init(int w,int h)
|
||||
{
|
||||
@ -329,11 +333,13 @@ public:
|
||||
camera.height=h;
|
||||
camera.vp_width=w;
|
||||
camera.vp_height=h;
|
||||
camera.center.Set(0,0,0,1);
|
||||
camera.eye.Set(10,10,10,1); //xyz三个值不要一样,以方便调试
|
||||
camera.target.Set(0,0,0,1);
|
||||
camera.pos.Set(10,10,10,1); //xyz三个值不要一样,以方便调试
|
||||
|
||||
camera.Refresh(); //更新矩阵计算
|
||||
|
||||
fcc=new FreeCameraControl(&camera);
|
||||
|
||||
ubo_world_matrix=db->CreateUBO(sizeof(WorldMatrix),&camera.matrix);
|
||||
}
|
||||
|
||||
@ -361,17 +367,17 @@ public:
|
||||
|
||||
SubmitDraw(index);
|
||||
|
||||
if(key_status[kbW])camera.Forward (move_speed);else
|
||||
if(key_status[kbS])camera.Backward (move_speed);else
|
||||
if(key_status[kbA])camera.Left (move_speed);else
|
||||
if(key_status[kbD])camera.Right (move_speed);else
|
||||
if(key_status[kbR])camera.Up (move_speed);else
|
||||
if(key_status[kbF])camera.Down (move_speed);else
|
||||
if(key_status[kbW])fcc->Forward (move_speed);else
|
||||
if(key_status[kbS])fcc->Backward (move_speed);else
|
||||
if(key_status[kbA])fcc->Left (move_speed);else
|
||||
if(key_status[kbD])fcc->Right (move_speed);else
|
||||
if(key_status[kbR])fcc->Up (move_speed);else
|
||||
if(key_status[kbF])fcc->Down (move_speed);else
|
||||
|
||||
if(key_status[kbLeft ])camera.WrapHorzRotate( move_speed);else
|
||||
if(key_status[kbRight ])camera.WrapHorzRotate(-move_speed);else
|
||||
if(key_status[kbUp ])camera.WrapVertRotate( move_speed);else
|
||||
if(key_status[kbDown ])camera.WrapVertRotate(-move_speed);else
|
||||
//if(key_status[kbLeft ])camera.WrapHorzRotate( move_speed);else
|
||||
//if(key_status[kbRight ])camera.WrapHorzRotate(-move_speed);else
|
||||
//if(key_status[kbUp ])camera.WrapVertRotate( move_speed);else
|
||||
//if(key_status[kbDown ])camera.WrapVertRotate(-move_speed);else
|
||||
return;
|
||||
}
|
||||
|
||||
@ -394,8 +400,8 @@ public:
|
||||
Vector2f gap=mouse_pos-mouse_last_pos;
|
||||
|
||||
bool update=false;
|
||||
if(gap.x!=0){update=true;if(mouse_key&mbLeft)camera.HorzRotate(-gap.x/10.0f);else camera.WrapHorzRotate(gap.x);}
|
||||
if(gap.y!=0){update=true;if(mouse_key&mbLeft)camera.VertRotate(-gap.y/10.0f);else camera.WrapVertRotate(gap.y);}
|
||||
// if(gap.x!=0){update=true;if(mouse_key&mbLeft)camera.HorzRotate(-gap.x/10.0f);else camera.WrapHorzRotate(gap.x);}
|
||||
// if(gap.y!=0){update=true;if(mouse_key&mbLeft)camera.VertRotate(-gap.y/10.0f);else camera.WrapVertRotate(gap.y);}
|
||||
|
||||
mouse_last_pos=mouse_pos;
|
||||
}
|
||||
|
@ -16,8 +16,8 @@ namespace hgl
|
||||
if(!cam||!obj_one||!obj_two)
|
||||
return(0);
|
||||
|
||||
return( length_squared(obj_one->GetCenter(),cam->eye)-
|
||||
length_squared(obj_two->GetCenter(),cam->eye));
|
||||
return( length_squared(obj_one->GetCenter(),cam->pos)-
|
||||
length_squared(obj_two->GetCenter(),cam->pos));
|
||||
}
|
||||
|
||||
//bool FrustumClipFilter(const SceneNode *node,void *fc)
|
||||
|
Loading…
x
Reference in New Issue
Block a user