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