PuzzleSDK
FogTestDemo类 参考

#include <Camera3DTest.h>

+ 类 FogTestDemo 继承关系图:
+ FogTestDemo 的协作图:

Public 成员函数

 CREATE_FUNC (FogTestDemo)
 
 FogTestDemo ()
 
virtual ~FogTestDemo ()
 
virtual void onEnter () override
 
virtual void onExit () override
 
virtual void update (float dt) override
 
virtual std::string title () const override
 
void onTouchesMoved (const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
 
void switchTypeCallback (cocos2d::Ref *sender, int type)
 
- Public 成员函数 继承自 TestCase
 TestCase ()
 
 ~TestCase ()
 
virtual std::string subtitle () const
 
virtual Type getTestType () const
 
virtual float getDuration () const
 
virtual std::string getExpectedOutput () const
 
virtual std::string getActualOutput () const
 
virtual void restartTestCallback (cocos2d::Ref *sender)
 
virtual void nextTestCallback (cocos2d::Ref *sender)
 
virtual void priorTestCallback (cocos2d::Ref *sender)
 
virtual void onBackCallback (cocos2d::Ref *sender)
 
void setTestSuite (TestSuite *testSuite)
 
TestSuitegetTestSuite () const
 
float getRunTime () const
 
void setTestCaseName (const std::string &name)
 
std::string getTestCaseName () const
 
const cocos2d::Label * getSubtitleLable () const
 
const cocos2d::MenuItemImage * getRestartTestItem () const
 

Protected 属性

CameraType _cameraType = CameraType::Free
 
cocos2d::Layer * _layer3D = nullptr
 
cocos2d::Camera * _camera = nullptr
 
cocos2d::Sprite3D * _sprite3D1 = nullptr
 
cocos2d::Sprite3D * _sprite3D2 = nullptr
 
cocos2d::backend::ProgramState * _programState1 = nullptr
 
cocos2d::backend::ProgramState * _programState2 = nullptr
 
cocos2d::EventListenerCustom * _backToForegroundListener
 
- Protected 属性 继承自 CameraBaseTest
cocos2d::BillBoard * bill1
 
cocos2d::BillBoard * bill2
 
cocos2d::Label * l1
 
cocos2d::Label * l2
 
- Protected 属性 继承自 TestCase
cocos2d::MenuItemImage * _priorTestItem
 
cocos2d::MenuItemImage * _restartTestItem
 
cocos2d::MenuItemImage * _nextTestItem
 
cocos2d::Label * _titleLabel
 
cocos2d::Label * _subtitleLabel
 

额外继承的成员函数

- Public 类型 继承自 TestCase
enum class  Type { ROBUSTNESS , UNIT , GRAPHICAL_STATIC , MANUAL }
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 

详细描述

在文件 Camera3DTest.h229 行定义.

构造及析构函数说明

◆ FogTestDemo()

FogTestDemo::FogTestDemo ( )

在文件 Camera3DTest.cpp1210 行定义.

1212{
1213}

◆ ~FogTestDemo()

FogTestDemo::~FogTestDemo ( )
virtual

在文件 Camera3DTest.cpp1214 行定义.

1215{
1216 CC_SAFE_RELEASE_NULL(_programState1);
1217 CC_SAFE_RELEASE_NULL(_programState2);
1218}
cocos2d::backend::ProgramState * _programState1
Definition: Camera3DTest.h:254
cocos2d::backend::ProgramState * _programState2
Definition: Camera3DTest.h:255

引用了 _programState1 , 以及 _programState2.

成员函数说明

◆ CREATE_FUNC()

FogTestDemo::CREATE_FUNC ( FogTestDemo  )

◆ onEnter()

void FogTestDemo::onEnter ( )
overridevirtual

重载 TestCase .

在文件 Camera3DTest.cpp1225 行定义.

1226{
1228 schedule(CC_SCHEDULE_SELECTOR(FogTestDemo::update), 0.0f);
1229 Director::getInstance()->setClearColor(Color4F(0.5,0.5,0.5,1));
1230
1231 auto s = Director::getInstance()->getWinSize();
1232 auto listener = EventListenerTouchAllAtOnce::create();
1233 listener->onTouchesMoved = CC_CALLBACK_2(FogTestDemo::onTouchesMoved, this);
1234 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
1235
1236 // switch fog type
1237 TTFConfig ttfConfig("fonts/arial.ttf", 20);
1238
1239 auto label1 = Label::createWithTTF(ttfConfig,"Linear ");
1240 auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(FogTestDemo::switchTypeCallback,this,0));
1241 auto label2 = Label::createWithTTF(ttfConfig,"Exp");
1242 auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(FogTestDemo::switchTypeCallback,this,1));
1243 auto label3 = Label::createWithTTF(ttfConfig,"Exp2");
1244 auto menuItem3 = MenuItemLabel::create(label3, CC_CALLBACK_1(FogTestDemo::switchTypeCallback,this,2));
1245 auto menu = Menu::create(menuItem1, menuItem2, menuItem3, nullptr);
1246
1247 menu->setPosition(Vec2::ZERO);
1248
1249 menuItem1->setPosition(VisibleRect::left().x+60, VisibleRect::top().y-50);
1250 menuItem2->setPosition(VisibleRect::left().x+60, VisibleRect::top().y -100);
1251 menuItem3->setPosition(VisibleRect::left().x+60, VisibleRect::top().y -150);
1252 addChild(menu, 0);
1253
1254
1255 auto layer3D=Layer::create();
1256 addChild(layer3D,0);
1257 _layer3D=layer3D;
1258
1259 CC_SAFE_RELEASE_NULL(_programState1);
1260 CC_SAFE_RELEASE_NULL(_programState2);
1261
1262 auto vertexSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.vert");
1263 auto fragSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.frag");
1264 auto program = backend::Device::getInstance()->newProgram(vertexSource, fragSource);
1265 _programState1 = new backend::ProgramState(program);
1266 _programState2 = new backend::ProgramState(program);
1267 CC_SAFE_RELEASE(program);
1268
1269 _sprite3D1 = Sprite3D::create("Sprite3DTest/teapot.c3b");
1270 _sprite3D2 = Sprite3D::create("Sprite3DTest/teapot.c3b");
1271
1272 _sprite3D1->setProgramState(_programState1);
1273 _sprite3D2->setProgramState(_programState2);
1274
1275 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1276 float fogStart = 10;
1277 float fogEnd = 60;
1278 int fogEquation = 0;
1279
1280 SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor));
1281 SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart));
1282 SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd));
1283 SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation));
1284
1285 _layer3D->addChild(_sprite3D1);
1286 _sprite3D1->setPosition3D( Vec3( 0, 0,0 ) );
1287 _sprite3D1->setScale(2.0f);
1288 _sprite3D1->setRotation3D(Vec3(-90.0f,180.0f,0.0f));
1289
1290 _layer3D->addChild(_sprite3D2);
1291 _sprite3D2->setPosition3D( Vec3( 0.0f, 0.0f,-20.0f) );
1292 _sprite3D2->setScale(2.0f);
1293 _sprite3D2->setRotation3D(Vec3(-90.0f,180.0f,0.0f));
1294
1295 if (_camera == nullptr)
1296 {
1297 _camera=Camera::createPerspective(60, (float)s.width/s.height, 1, 1000);
1298 _camera->setCameraFlag(CameraFlag::USER1);
1299 _camera->setPosition3D(Vec3(0.0f, 30.0f, 40.0f));
1300 _camera->lookAt(Vec3(0,0,0), Vec3(0.0f, 1.0f, 0.0f));
1301
1302 _layer3D->addChild(_camera);
1303 }
1304 _layer3D->setCameraMask(2);
1305
1306
1307#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
1308 _backToForegroundListener = EventListenerCustom::create(EVENT_RENDERER_RECREATED,
1309 [this](EventCustom*)
1310 {
1311 Director::getInstance()->setClearColor(Color4F(0.5,0.5,0.5,1));
1312 CC_SAFE_RELEASE_NULL(_programState1);
1313 CC_SAFE_RELEASE_NULL(_programState2);
1314
1315 auto vertexSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.vert");
1316 auto fragSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.frag");
1317 auto program = backend::Device::getInstance()->newProgram(vertexSource, fragSource);
1318 _programState1 = new backend::ProgramState(program);
1319 _programState2 = new backend::ProgramState(program);
1320
1321 _sprite3D1->setProgramState(_programState1);
1322 _sprite3D2->setProgramState(_programState2);
1323 CC_SAFE_RELEASE(program);
1324
1325 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1326 float fogStart = 10;
1327 float fogEnd = 60;
1328 int fogEquation = 0;
1329
1330 SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor));
1331 SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart));
1332 SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd));
1333 SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation));
1334 }
1335 );
1336 Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_backToForegroundListener, -1);
1337#endif
1338
1339}
#define SET_UNIFORM(name, addr, size)
void switchTypeCallback(cocos2d::Ref *sender, int type)
cocos2d::Layer * _layer3D
Definition: Camera3DTest.h:250
cocos2d::Camera * _camera
Definition: Camera3DTest.h:251
cocos2d::EventListenerCustom * _backToForegroundListener
Definition: Camera3DTest.h:258
cocos2d::Sprite3D * _sprite3D1
Definition: Camera3DTest.h:252
cocos2d::Sprite3D * _sprite3D2
Definition: Camera3DTest.h:253
void onTouchesMoved(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
virtual void update(float dt) override
virtual void onEnter() override
Definition: BaseTest.cpp:430
static cocos2d::Vec2 top()
Definition: VisibleRect.cpp:57
static cocos2d::Vec2 left()
Definition: VisibleRect.cpp:45

引用了 _backToForegroundListener, _camera, _layer3D, _programState1, _programState2, _sprite3D1, _sprite3D2, VisibleRect::left(), TestCase::onEnter(), onTouchesMoved(), SET_UNIFORM, switchTypeCallback(), VisibleRect::top() , 以及 update().

+ 函数调用图:

◆ onExit()

void FogTestDemo::onExit ( )
overridevirtual

在文件 Camera3DTest.cpp1378 行定义.

1379{
1380 CameraBaseTest::onExit();
1381 Director::getInstance()->setClearColor(Color4F(0,0,0,1));
1382 if (_camera)
1383 {
1384 _camera = nullptr;
1385 }
1386
1387#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
1388 Director::getInstance()->getEventDispatcher()->removeEventListener(_backToForegroundListener);
1389#endif
1390}

引用了 _backToForegroundListener , 以及 _camera.

◆ onTouchesMoved()

void FogTestDemo::onTouchesMoved ( const std::vector< cocos2d::Touch * > &  touches,
cocos2d::Event *  event 
)

在文件 Camera3DTest.cpp1396 行定义.

1397{
1398 if(touches.size()==1)
1399 {
1400 Vec2 prelocation = touches[0]->getPreviousLocationInView();
1401 Vec2 location = touches[0]->getLocationInView();
1402 Vec2 newPos = prelocation - location;
1404 {
1405 Vec3 cameraDir;
1406 Vec3 cameraRightDir;
1407 _camera->getNodeToWorldTransform().getForwardVector(&cameraDir);
1408 cameraDir.normalize();
1409 cameraDir.y=0;
1410 _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir);
1411 cameraRightDir.normalize();
1412 cameraRightDir.y=0;
1413 Vec3 cameraPos= _camera->getPosition3D();
1414 cameraPos-=cameraDir*newPos.y*0.1f;
1415 cameraPos+=cameraRightDir*newPos.x*0.1f;
1416 _camera->setPosition3D(cameraPos);
1417 }
1418 }
1419}
CameraType _cameraType
Definition: Camera3DTest.h:249

引用了 _camera, _cameraType , 以及 Free.

被这些函数引用 onEnter().

+ 这是这个函数的调用关系图:

◆ switchTypeCallback()

void FogTestDemo::switchTypeCallback ( cocos2d::Ref *  sender,
int  type 
)

在文件 Camera3DTest.cpp1341 行定义.

1342{
1343 if(type == 0)
1344 {
1345 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1346 float fogStart = 10;
1347 float fogEnd = 60;
1348 int fogEquation = 0;
1349
1350 SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor));
1351 SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart));
1352 SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd));
1353 SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation));
1354
1355 }
1356 else if(type == 1)
1357 {
1358 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1359 float fogDensity = 0.03f;
1360 int fogEquation = 1;
1361
1362 SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor));
1363 SET_UNIFORM("u_fogDensity", &fogDensity, sizeof(fogDensity));
1364 SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation));
1365 }
1366 else if(type == 2)
1367 {
1368 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1369 float fogDensity = 0.03f;
1370 int fogEquation = 2;
1371
1372 SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor));
1373 SET_UNIFORM("u_fogDensity", &fogDensity, sizeof(fogDensity));
1374 SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation));
1375 }
1376}

引用了 SET_UNIFORM.

被这些函数引用 onEnter().

+ 这是这个函数的调用关系图:

◆ title()

std::string FogTestDemo::title ( ) const
overridevirtual

重载 TestCase .

在文件 Camera3DTest.cpp1220 行定义.

1221{
1222 return "Fog Test Demo";
1223}

◆ update()

void FogTestDemo::update ( float  dt)
overridevirtual

在文件 Camera3DTest.cpp1392 行定义.

1393{
1394}

被这些函数引用 onEnter().

+ 这是这个函数的调用关系图:

类成员变量说明

◆ _backToForegroundListener

cocos2d::EventListenerCustom* FogTestDemo::_backToForegroundListener
protected

在文件 Camera3DTest.h258 行定义.

被这些函数引用 onEnter() , 以及 onExit().

◆ _camera

cocos2d::Camera* FogTestDemo::_camera = nullptr
protected

在文件 Camera3DTest.h251 行定义.

被这些函数引用 onEnter(), onExit() , 以及 onTouchesMoved().

◆ _cameraType

CameraType FogTestDemo::_cameraType = CameraType::Free
protected

在文件 Camera3DTest.h249 行定义.

被这些函数引用 onTouchesMoved().

◆ _layer3D

cocos2d::Layer* FogTestDemo::_layer3D = nullptr
protected

在文件 Camera3DTest.h250 行定义.

被这些函数引用 onEnter().

◆ _programState1

cocos2d::backend::ProgramState* FogTestDemo::_programState1 = nullptr
protected

在文件 Camera3DTest.h254 行定义.

被这些函数引用 onEnter() , 以及 ~FogTestDemo().

◆ _programState2

cocos2d::backend::ProgramState* FogTestDemo::_programState2 = nullptr
protected

在文件 Camera3DTest.h255 行定义.

被这些函数引用 onEnter() , 以及 ~FogTestDemo().

◆ _sprite3D1

cocos2d::Sprite3D* FogTestDemo::_sprite3D1 = nullptr
protected

在文件 Camera3DTest.h252 行定义.

被这些函数引用 onEnter().

◆ _sprite3D2

cocos2d::Sprite3D* FogTestDemo::_sprite3D2 = nullptr
protected

在文件 Camera3DTest.h253 行定义.

被这些函数引用 onEnter().


该类的文档由以下文件生成: