⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listener.h

📁 本人刚学游戏编程时开发的一个游戏项目《魔幻森林》中的地图编辑器源码
💻 H
字号:
#pragma once
#include "CEGUI.h"
#include "OgreCEGUIRenderer.h"
#include "OgreCEGUIResourceProvider.h"
#include "exampleframelistener.h"
#include "vector"
#include "windows.h"
#include <iostream>


using namespace Ogre;

class CListener :
	public ExampleFrameListener,public MouseMotionListener, public MouseListener
{
public:
	CListener(SceneManager* sm,RenderWindow* win , Camera* cam , CEGUI::OgreCEGUIRenderer* mGUIRenderer);
	~CListener(void);
	
	struct MAPOBJECT
	{
		String name;
		Ogre::Vector3 pos;
		Ogre::Vector3 scale;
		float angleY;
	};

	bool m_bShutDown;
	bool frameStarted(const FrameEvent& evt);
    bool frameEnded(const FrameEvent& evt);
	void mouseDragged(MouseEvent* e);
	void mouseMoved(MouseEvent* e);
	void mousePressed (MouseEvent *e);
	void mouseReleased (MouseEvent *e);
	void mouseClicked(MouseEvent* e);
	void mouseEntered(MouseEvent* e);
	void mouseExited(MouseEvent* e);
	void keyPressed(KeyEvent* e);
	void keyReleased(KeyEvent* e);
	void keyClicked(KeyEvent* e) ;
	void keyFocusIn(KeyEvent* e);
	void moveCamera(float x=0,float y=0,Vector3 move=Vector3::ZERO)
	{
		mCamera->yaw(-Radian(x));
		mCamera->pitch(-Radian(y));
		mCamera->moveRelative(move);
	}
	CEGUI::MouseButton convertOgreButtonToCegui(int buttonID);

    //按钮方法
	void exit();
	void saveMap();
	void loadMap();
	void selectTree();
	void selectRock();
	void selectGrass();
	void selectFlower();
	void selectHouse();
	void selectCamera();

	
private:
	CEGUI::OgreCEGUIRenderer* m_GUIRenderer;
	SceneManager* m_sceneMgr;
    RaySceneQuery* m_pRaySceneQuery;
	int m_iTreeCount;     //树当前数量
	int m_iRockCount;     //石头当前数量
    int m_iGrassCount;    //草当前数量
	int m_iFlowerCount;    //花当前数量
	int m_iHouseCount;    //房子当前数量
	int m_iCameraCount;    //摄像机当前数量
	int m_iObjectType;    //0:空 1:树 2:石头 3:草 4:花 5:房子 6:摄像机

	SceneNode* m_pSnTreeRoot;   //树根结点

	SceneNode* m_snTree;              //树结点
	SceneNode* m_snRock;              //石头结点
	SceneNode* m_snGrass;              //草结点
	SceneNode* m_snFlower;              //花结点
	SceneNode* m_snHouse;              //房子结点
	SceneNode* m_snCamera;              //摄像机结点
	SceneNode* m_snCurrentObject;     //当前鼠标移动的物体的结点

	bool m_bNegativeScale;

	std::vector<MAPOBJECT> m_vecTree;      //树信息数组
	std::vector<MAPOBJECT> m_vecRock; //石头信息数组
	std::vector<MAPOBJECT> m_vecGrass; //草信息数组
	std::vector<MAPOBJECT> m_vecFlower; //花信息数组
	std::vector<MAPOBJECT> m_vecHouse; //房子信息数组
	std::vector<MAPOBJECT> m_vecCamera; //摄像机信息数组
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -