29#include "ui/UISlider.h"
30#include "platform/CCFileUtils.h"
31#include "renderer/backend/Device.h"
35#define SET_UNIFORM(name, addr, size) do { \
36 auto _loc_ = _programState1->getUniformLocation(name); \
37 _programState1->setUniform(_loc_, (addr), (size)); \
38 _loc_ = _programState2->getUniformLocation(name); \
39 _programState2->setUniform(_loc_, (addr), (size)); \
49Camera3DTests::Camera3DTests()
68 auto s = Director::getInstance()->getWinSize();
75 _camNode->setPositionZ(Camera::getDefaultCamera()->getPosition3D().z);
78 auto sp3d = Sprite3D::create();
79 sp3d->setPosition(s.width/2, s.height/2);
82 auto lship = Label::create();
83 lship->setString(
"Ship");
84 lship->setPosition(0, 20);
85 sp3d->addChild(lship);
89 bill1 = BillBoard::create(
"Images/Icon.png");
90 bill1->setPosition3D(Vec3(50.0f, 10.0f, -10.0f));
91 bill1->setColor(Color3B::YELLOW);
92 bill1->setScale(0.6f);
93 sp3d->addChild(
bill1);
96 l1->setPosition(Vec2(0.0f,-10.0f));
97 l1->setString(
"Billboard1");
98 l1->setColor(Color3B::WHITE);
102 auto p1 = ParticleSystemQuad::create(
"Particles/SmallSun.plist");
103 p1->setPosition(30.0f,80.0f);
106 bill2 = BillBoard::create(
"Images/Icon.png");
107 bill2->setPosition3D(Vec3(-50.0f, -10.0f, 10.0f));
108 bill2->setScale(0.6f);
109 sp3d->addChild(
bill2);
111 l2 = Label::create();
112 l2->setString(
"Billboard2");
113 l2->setPosition(Vec2(0.0f,-10.0f));
114 l2->setColor(Color3B::WHITE);
118 auto p2 = ParticleSystemQuad::create(
"Particles/SmallSun.plist");
119 p2->setPosition(30,80);
123 auto model = Sprite3D::create(
"Sprite3DTest/boss1.obj");
125 model->setTexture(
"Sprite3DTest/boss.png");
126 model->setPosition3D(Vec3(s.width/2, s.height/2, 0));
130 _lis = EventListenerTouchOneByOne::create();
131 _lis->onTouchBegan = [](Touch* t, Event* e) {
135 _lis->onTouchMoved = [
this](Touch* t, Event* e) {
136 float dx = t->getDelta().x;
142 _camNode->getNodeToWorldTransform().getTranslation(&worldPos);
144 Camera::getDefaultCamera()->setPosition3D(worldPos);
148 Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(
_lis,
this);
155 Director::getInstance()->getEventDispatcher()->removeEventListener(
_lis);
160 return "Camera Rotation Test";
165 return "Slide to rotate";
175 CameraBaseTest::onExit();
195, _bRotateRight(false)
206 return "Testing Camera";
213 Vec3 cameraPos=
_camera->getPosition3D();
214 cameraPos+= cameraPos.getNormalized()*value;
215 _camera->setPosition3D(cameraPos);
222 Vec3 rotation3D=
_camera->getRotation3D();
223 rotation3D.y+= value;
224 _camera->setRotation3D(rotation3D);
247 _sprite3D->getWorldToNodeTransform().getForwardVector(&newFaceDir);
248 newFaceDir.normalize();
272 auto s = Director::getInstance()->getWinSize();
273 auto listener = EventListenerTouchAllAtOnce::create();
277 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
278 auto layer3D=Layer::create();
283 TTFConfig ttfConfig(
"fonts/arial.ttf", 20);
285 auto containerForLabel1 = Node::create();
289 addChild(containerForLabel1, 10);
291 auto listener1 = EventListenerTouchOneByOne::create();
292 listener1->setSwallowTouches(
true);
297 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1,
_ZoomOutlabel);
299 auto containerForLabel2 = Node::create();
300 _ZoomInlabel = Label::createWithTTF(ttfConfig,
"zoom in");
303 addChild(containerForLabel2, 10);
305 auto listener2 = EventListenerTouchOneByOne::create();
306 listener2->setSwallowTouches(
true);
311 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener2,
_ZoomInlabel);
313 auto containerForLabel3 = Node::create();
317 addChild(containerForLabel3, 10);
319 auto listener3 = EventListenerTouchOneByOne::create();
320 listener3->setSwallowTouches(
true);
325 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener3,
_RotateLeftlabel);
327 auto containerForLabel4 = Node::create();
331 addChild(containerForLabel4, 10);
333 auto listener4 = EventListenerTouchOneByOne::create();
334 listener4->setSwallowTouches(
true);
339 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener4,
_RotateRightlabel);
341 auto label1 = Label::createWithTTF(ttfConfig,
"free ");
343 auto label2 = Label::createWithTTF(ttfConfig,
"third person");
345 auto label3 = Label::createWithTTF(ttfConfig,
"first person");
347 auto menu = Menu::create(menuItem1, menuItem2, menuItem3,
nullptr);
349 menu->setPosition(Vec2::ZERO);
358 _camera=Camera::createPerspective(60, (
float)s.width/s.height, 1, 1000);
359 _camera->setCameraFlag(CameraFlag::USER1);
365 for(
int j =-20; j<=20 ;j++)
367 line->
drawLine(Vec3(-100.0f, 0.0f, 5.0f*j),Vec3(100.0f,0.0f,5.0f*j),Color4F(1,0,0,1));
370 for(
int j =-20; j<=20 ;j++)
372 line->
drawLine(Vec3(5.0f*j, 0.0f, -100.0f),Vec3(5.0f*j,0.0f,100.0f),Color4F(0,0,1,1));
375 line->
drawLine(Vec3(0.0f, -50.0f, 0.0f),Vec3(0,0,0),Color4F(0,0.5,0,1));
376 line->
drawLine(Vec3(0, 0, 0),Vec3(0,50.0f,0),Color4F(0,1,0,1));
383 CameraBaseTest::onExit();
392 auto sprite = Sprite3D::create(fileName);
394 float globalZOrder=sprite->getGlobalZOrder();
395 sprite->setPosition3D( Vec3( p.x, p.y,p.z) );
396 sprite->setGlobalZOrder(globalZOrder);
399 auto animation = Animation3D::create(fileName,
"Take 001");
402 auto animate = Animate3D::create(animation);
403 sprite->runAction(RepeatForever::create(animate));
410 sprite->setScale(scale);
417 if(touches.size()==1)
419 auto touch = touches[0];
420 auto location = touch->getLocation();
421 Point newPos = touch->getPreviousLocation()-location;
426 _camera->getNodeToWorldTransform().getForwardVector(&cameraDir);
427 cameraDir.normalize();
429 _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir);
430 cameraRightDir.normalize();
432 Vec3 cameraPos=
_camera->getPosition3D();
433 cameraPos+=cameraDir*newPos.y*0.1f;
434 cameraPos+=cameraRightDir*newPos.x*0.1f;
435 _camera->setPosition3D(cameraPos);
451 newFaceDir.normalize();
452 Vec3 offset = newFaceDir * 25.0f * elapsedTime;
457 Vec3 cameraPos=
_camera->getPosition3D();
458 cameraPos.x+=offset.x;
459 cameraPos.z+=offset.z;
460 _camera->setPosition3D(cameraPos);
470 _sprite3D->getNodeToWorldTransform().getForwardVector(&curFaceDir);
471 curFaceDir=-curFaceDir;
472 curFaceDir.normalize();
475 newFaceDir.normalize();
476 float cosAngle = std::fabs(Vec3::dot(curFaceDir,newFaceDir) - 1.0f);
477 float dist = curPos.distanceSquared(
_targetPos);
496 for (
auto &item: touches )
499 auto location = touch->getLocationInView();
504 Vec3 nearP(location.x, location.y, -1.0f), farP(location.x, location.y, 1.0f);
506 auto size = Director::getInstance()->getWinSize();
507 nearP =
_camera->unproject(nearP);
508 farP =
_camera->unproject(farP);
509 Vec3 dir(farP - nearP);
511 float ndd = Vec3::dot(Vec3(0,1,0),dir);
514 float ndo = Vec3::dot(Vec3(0,1,0),nearP);
515 dist= (0 - ndo) / ndd;
516 Vec3 p = nearP + dist * dir;
547 Vec3 curPos =
_sprite3D->getPosition3D();
551 newFaceDir.normalize();
553 _sprite3D->getNodeToWorldTransform().getUpVector(&up);
556 Vec3::cross(-newFaceDir,up,&right);
558 Vec3 pos = Vec3(0,0,0);
570 mat.m[8] = newFaceDir.x;
571 mat.m[9] = newFaceDir.y;
572 mat.m[10] = newFaceDir.z;
590 Vec3 cameraPos =
_camera->getPosition3D();
591 if(lookDir.length() <= 300)
593 cameraPos += lookDir.getNormalized();
594 _camera->setPosition3D(cameraPos);
599 Vec3 cameraPos =
_camera->getPosition3D();
600 if(cameraPos.length() <= 300)
602 cameraPos += cameraPos.getNormalized();
603 _camera->setPosition3D(cameraPos);
615 Vec3 cameraPos =
_camera->getPosition3D();
616 if(lookDir.length() >= 50)
618 cameraPos -= lookDir.getNormalized();
619 _camera->setPosition3D(cameraPos);
624 Vec3 cameraPos =
_camera->getPosition3D();
625 if(cameraPos.length() >= 50)
627 cameraPos -= cameraPos.getNormalized();
628 _camera->setPosition3D(cameraPos);
637 Vec3 rotation3D=
_camera->getRotation3D();
639 _camera->setRotation3D(rotation3D);
646 Vec3 rotation3D=
_camera->getRotation3D();
648 _camera->setRotation3D(rotation3D);
655 auto target =
static_cast<Label*
>(
event->getCurrentTarget());
657 Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());
658 Size s = target->getContentSize();
659 Rect rect = Rect(0, 0, s.width, s.height);
661 if (rect.containsPoint(locationInNode))
663 *touchProperty =
true;
670 return (state & bit) == bit;
710, _cameraFirst(nullptr)
711, _cameraThird(nullptr)
712, _moveAction(nullptr)
714, _drawFrustum(nullptr)
724 return "Camera Frustum Clipping";
733 auto s = Director::getInstance()->getWinSize();
739 auto layer3D=Layer::create();
744 MenuItemFont::setFontName(
"fonts/arial.ttf");
745 MenuItemFont::setFontSize(20);
748 menuItem1->setColor(Color3B(0,200,20));
749 auto menu = Menu::create(menuItem1,NULL);
750 menu->setPosition(Vec2::ZERO);
755 MenuItemFont::setFontSize(40);
757 decrease->setColor(Color3B(0,200,20));
759 increase->setColor(Color3B(0,200,20));
761 menu = Menu::create(decrease, increase,
nullptr);
762 menu->alignItemsHorizontally();
766 TTFConfig ttfCount(
"fonts/Marker Felt.ttf", 30);
774 _drawAABB->setCameraMask((
unsigned short) CameraFlag::USER1);
779 _drawFrustum->setCameraMask((
unsigned short) CameraFlag::USER1);
791 CameraBaseTest::onExit();
809 Vector<Node*>& children =
_layer3D->getChildren();
812 for (
const auto& iter: children)
814 const AABB& aabb =
static_cast<Sprite3D*
>(iter)->getAABB();
817 aabb.getCorners(corners);
818 _drawAABB->drawCube(corners, Color4F(0, 1, 0, 1));
826 auto inverse = MoveTo::create(4.f, Vec2(-
_cameraFirst->getPositionX(), 0.0f));
831 auto rot = RotateBy::create(1.f, Vec3(0.f, 180.f, 0.f));
839 auto s = Director::getInstance()->getWinSize();
843 _cameraFirst = Camera::createPerspective(30.0f, (
float)s.width/s.height, 10.0f, 200.0f);
857 _cameraThird = Camera::createPerspective(60, (
float)s.width/s.height, 1, 1000);
859 _cameraThird->setPosition3D(Vec3(0.0f, 130.0f, 130.0f));
890 auto sprite = Sprite3D::create(
"Sprite3DTest/orc.c3b");
891 sprite->setPosition3D(Vec3(x * 30.0f, 0.0f, z * 30.0f));
892 sprite->setRotation3D(Vec3(0.0f,180.0f,0.0f));
899 _layer3D->setCameraMask( (
unsigned short) CameraFlag::USER1);
903 sprintf(szText,
"%ld sprits",
static_cast<long>(
_layer3D->getChildrenCount()));
909 if (
_row == 0)
return;
919 auto sprite = Sprite3D::create(
"Sprite3DTest/orc.c3b");
920 sprite->setPosition3D(Vec3(x * 30.0f, 0.0f, z * 30.0f));
927 _layer3D->setCameraMask((
unsigned short) CameraFlag::USER1);
931 sprintf(szText,
"%ld sprits",
static_cast<long>(
_layer3D->getChildrenCount()));
938 auto size = Director::getInstance()->getWinSize();
940 Color4F color(1.f, 1.f, 0.f, 1);
951 src = Vec3(size.width,0,0);
953 src = Vec3(size.width,0,1);
958 src = Vec3(0,size.height,0);
960 src = Vec3(0,size.height,1);
965 src = Vec3(size.width,size.height,0);
967 src = Vec3(size.width,size.height,1);
997, _center(Vec3(0,0,0))
1000, _sprite3D2(nullptr)
1009 return "Camera ArcBall Moving";
1017 auto s = Director::getInstance()->getWinSize();
1018 auto listener = EventListenerTouchAllAtOnce::create();
1020 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
1023 MenuItemFont::setFontName(
"fonts/arial.ttf");
1024 MenuItemFont::setFontSize(20);
1027 menuItem1->setColor(Color3B(0,200,20));
1029 menuItem2->setColor(Color3B(0,200,20));
1030 auto menu = Menu::create(menuItem1,menuItem2,NULL);
1031 menu->setPosition(Vec2::ZERO);
1036 auto layer3D=Layer::create();
1037 addChild(layer3D,0);
1042 _camera=Camera::createPerspective(60, (
float)s.width/s.height, 1, 1000);
1043 _camera->setCameraFlag(CameraFlag::USER1);
1044 _camera->setPosition3D(Vec3(0.0f, 10.0f, 50.0f));
1045 _camera->lookAt(Vec3(0, 0, 0), Vec3(0.0f, 1.0f, 0.0f));
1050 _sprite3D1 = Sprite3D::create(
"Sprite3DTest/orc.c3b");
1052 _sprite3D1->setRotation3D(Vec3(0.0f,180.0f,0.0f));
1056 _sprite3D2 = Sprite3D::create(
"Sprite3DTest/boss.c3b");
1058 _sprite3D2->setRotation3D(Vec3(-90.0f,0.0f,0.0f));
1059 _sprite3D2->setPosition3D(Vec3(20.0f,0.0f,0.0f));
1065 for(
int j =-20; j<=20 ;j++)
1067 _drawGrid->drawLine(Vec3(-100.0f, 0, 5.0f*j),Vec3(100.0f,0,5.0f*j),Color4F(1,0,0,1));
1070 for(
int j =-20; j<=20 ;j++)
1072 _drawGrid->drawLine(Vec3(5.0f*j, 0, -100.0f),Vec3(5.0f*j,0,100.0f),Color4F(0,0,1,1));
1075 _drawGrid->drawLine(Vec3(0, 0, 0),Vec3(0,50.0f,0),Color4F(0,1,0,1));
1086 CameraBaseTest::onExit();
1095 if (!touchs.empty())
1099 Size visibleSize = Director::getInstance()->getVisibleSize();
1100 Vec2 prelocation = touchs[0]->getPreviousLocationInView();
1101 Vec2 location = touchs[0]->getLocationInView();
1102 location.x = 2.0f * (location.x) / (visibleSize.width) - 1.0f;
1103 location.y = 2.0f * (visibleSize.height - location.y) / (visibleSize.height) - 1.0f;
1104 prelocation.x = 2.0f * (prelocation.x) / (visibleSize.width) - 1.0f;
1105 prelocation.y = 2.0f * (visibleSize.height - prelocation.y) / (visibleSize.height) - 1.0f;
1109 calculateArcBall(axes, angle, prelocation.x, prelocation.y, location.x, location.y);
1110 Quaternion quat(axes, angle);
1117 Point newPos = touchs[0]->getPreviousLocation() - touchs[0]->getLocation();
1127 Mat4 rotation_matrix;
1130 Vec3 uv = rotation_matrix * Vec3(0.0f,1.0f,0.0f);
1131 Vec3 sv = rotation_matrix * Vec3(1.0f,0.0f,0.0f);
1132 Vec3 lv = rotation_matrix * Vec3(0.0f,0.0f,-1.0f);
1137 Vec3::cross(p2, p1, &axis);
1140 float t = (p2 - p1).length() / (2.0f *
_radius);
1142 if (t > 1.0) t = 1.0;
1143 if (t < -1.0) t = -1.0;
1152 d = sqrt(x*x + y*y);
1153 if (d < r * 0.70710678118654752440)
1155 z = sqrt(r*r - d*d);
1159 t = r / 1.41421356237309504880f;
1167 Mat4 trans, rot, center;
1168 Mat4::createTranslation(Vec3(0.0f, 10.0f,
_distanceZ), &trans);
1170 Mat4::createTranslation(
_center, ¢er);
1171 Mat4 result = center * rot * trans;
1172 _camera->setNodeToParentTransform(result);
1222 return "Fog Test Demo";
1229 Director::getInstance()->setClearColor(Color4F(0.5,0.5,0.5,1));
1231 auto s = Director::getInstance()->getWinSize();
1232 auto listener = EventListenerTouchAllAtOnce::create();
1234 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,
this);
1237 TTFConfig ttfConfig(
"fonts/arial.ttf", 20);
1239 auto label1 = Label::createWithTTF(ttfConfig,
"Linear ");
1241 auto label2 = Label::createWithTTF(ttfConfig,
"Exp");
1243 auto label3 = Label::createWithTTF(ttfConfig,
"Exp2");
1245 auto menu = Menu::create(menuItem1, menuItem2, menuItem3,
nullptr);
1247 menu->setPosition(Vec2::ZERO);
1255 auto layer3D=Layer::create();
1256 addChild(layer3D,0);
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);
1267 CC_SAFE_RELEASE(program);
1269 _sprite3D1 = Sprite3D::create(
"Sprite3DTest/teapot.c3b");
1270 _sprite3D2 = Sprite3D::create(
"Sprite3DTest/teapot.c3b");
1275 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1276 float fogStart = 10;
1278 int fogEquation = 0;
1280 SET_UNIFORM(
"u_fogColor", &fogColor,
sizeof(fogColor));
1281 SET_UNIFORM(
"u_fogStart", &fogStart,
sizeof(fogStart));
1283 SET_UNIFORM(
"u_fogEquation", &fogEquation,
sizeof(fogEquation));
1288 _sprite3D1->setRotation3D(Vec3(-90.0f,180.0f,0.0f));
1291 _sprite3D2->setPosition3D( Vec3( 0.0f, 0.0f,-20.0f) );
1293 _sprite3D2->setRotation3D(Vec3(-90.0f,180.0f,0.0f));
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));
1307#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
1309 [
this](EventCustom*)
1311 Director::getInstance()->setClearColor(Color4F(0.5,0.5,0.5,1));
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);
1323 CC_SAFE_RELEASE(program);
1325 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1326 float fogStart = 10;
1328 int fogEquation = 0;
1330 SET_UNIFORM(
"u_fogColor", &fogColor,
sizeof(fogColor));
1331 SET_UNIFORM(
"u_fogStart", &fogStart,
sizeof(fogStart));
1333 SET_UNIFORM(
"u_fogEquation", &fogEquation,
sizeof(fogEquation));
1345 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1346 float fogStart = 10;
1348 int fogEquation = 0;
1350 SET_UNIFORM(
"u_fogColor", &fogColor,
sizeof(fogColor));
1351 SET_UNIFORM(
"u_fogStart", &fogStart,
sizeof(fogStart));
1353 SET_UNIFORM(
"u_fogEquation", &fogEquation,
sizeof(fogEquation));
1358 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1359 float fogDensity = 0.03f;
1360 int fogEquation = 1;
1362 SET_UNIFORM(
"u_fogColor", &fogColor,
sizeof(fogColor));
1363 SET_UNIFORM(
"u_fogDensity", &fogDensity,
sizeof(fogDensity));
1364 SET_UNIFORM(
"u_fogEquation", &fogEquation,
sizeof(fogEquation));
1368 auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0);
1369 float fogDensity = 0.03f;
1370 int fogEquation = 2;
1372 SET_UNIFORM(
"u_fogColor", &fogColor,
sizeof(fogColor));
1373 SET_UNIFORM(
"u_fogDensity", &fogDensity,
sizeof(fogDensity));
1374 SET_UNIFORM(
"u_fogEquation", &fogEquation,
sizeof(fogEquation));
1380 CameraBaseTest::onExit();
1381 Director::getInstance()->setClearColor(Color4F(0,0,0,1));
1387#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
1398 if(touches.size()==1)
1400 Vec2 prelocation = touches[0]->getPreviousLocationInView();
1401 Vec2 location = touches[0]->getLocationInView();
1402 Vec2 newPos = prelocation - location;
1406 Vec3 cameraRightDir;
1407 _camera->getNodeToWorldTransform().getForwardVector(&cameraDir);
1408 cameraDir.normalize();
1410 _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir);
1411 cameraRightDir.normalize();
1413 Vec3 cameraPos=
_camera->getPosition3D();
1414 cameraPos-=cameraDir*newPos.y*0.1f;
1415 cameraPos+=cameraRightDir*newPos.x*0.1f;
1416 _camera->setPosition3D(cameraPos);
1497 return "CameraBackgroundColorBrush Test";
1502 return "right side object colored by CameraBG";
1509 auto s = Director::getInstance()->getWinSize();
1513 auto camera = Camera::createPerspective(60.0f, (
float)s.width/s.height, 1.0f, 1000.0f);
1514 camera->setPosition3D(Vec3(0.0f, 0.0f, 200.0f));
1515 camera->lookAt(Vec3::ZERO);
1516 camera->setDepth(-2);
1517 camera->setCameraFlag(CameraFlag::USER1);
1521 auto model = Sprite3D::create(
"Sprite3DTest/boss1.obj");
1523 model->setPosition3D(Vec3(20.0f, 0.0f, 0.0f));
1524 model->setTexture(
"Sprite3DTest/boss.png");
1525 model->setCameraMask(
static_cast<unsigned short>(CameraFlag::USER1));
1527 model->runAction(RepeatForever::create(RotateBy::create(1.f, Vec3(10.0f, 20.0f, 30.0f))));
1531 auto base = Node::create();
1532 base->setContentSize(s);
1533 base->setCameraMask(
static_cast<unsigned short>(CameraFlag::USER2));
1537 auto camera = Camera::createPerspective(60, (
float)s.width/s.height, 1, 1000);
1538 auto colorBrush = CameraBackgroundBrush::createColorBrush(Color4F(.1f, .1f, 1.f, .5f), 1.f);
1539 camera->setBackgroundBrush(colorBrush);
1540 camera->setPosition3D(Vec3(0.0f, 0.0f, 200.0f));
1541 camera->lookAt(Vec3::ZERO);
1542 camera->setDepth(-1);
1543 camera->setCameraFlag(CameraFlag::USER2);
1544 base->addChild(camera);
1547 auto slider = ui::Slider::create();
1548 slider->loadBarTexture(
"cocosui/sliderTrack.png");
1549 slider->loadSlidBallTextures(
"cocosui/sliderThumb.png",
"cocosui/sliderThumb.png",
"");
1550 slider->loadProgressBarTexture(
"cocosui/sliderProgress.png");
1551 slider->setPosition(Vec2(s.width/2, s.height/4));
1552 slider->setPercent(50);
1553 slider->addEventListener([slider, colorBrush](Ref*, ui::Slider::EventType){
1554 colorBrush->setColor(Color4F(.1f, .1f, 1.f, (
float)slider->getPercent()/100.f));
1559 auto model = Sprite3D::create(
"Sprite3DTest/boss1.obj");
1561 model->setPosition3D(Vec3(-20.0f, 0.0f, 0.0f));
1562 model->setTexture(
"Sprite3DTest/boss.png");
1563 model->setCameraMask(
static_cast<unsigned short>(CameraFlag::USER2));
1564 base->addChild(model);
1565 model->runAction(RepeatForever::create(RotateBy::create(1.f, Vec3(10.0f, 20.0f, 30.0f))));
#define ADD_TEST_CASE(__className__)
#define SET_UNIFORM(name, addr, size)
void onTouchesCancelled(const std::vector< Touch * > &touches, cocos2d::Event *event)
virtual ~BackgroundColorBrushTest()
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
BackgroundColorBrushTest()
void SwitchViewCallback(cocos2d::Ref *sender, CameraType cameraType)
bool onTouchesZoomIn(cocos2d::Touch *touch, cocos2d::Event *event)
cocos2d::Label * _ZoomOutlabel
bool onTouchesRotateLeft(cocos2d::Touch *touch, cocos2d::Event *event)
bool onTouchesZoomOut(cocos2d::Touch *touch, cocos2d::Event *event)
void updateState(float elapsedTime)
bool onTouchesCommon(cocos2d::Touch *touch, cocos2d::Event *event, bool *touchProperty)
bool isState(unsigned int state, unsigned int bit) const
virtual ~Camera3DTestDemo()
cocos2d::Label * _ZoomInlabel
virtual void onEnter() override
cocos2d::Layer * _layer3D
void addNewSpriteWithCoords(cocos2d::Vec3 p, std::string fileName, bool playAnimation=false, float scale=1.0f, bool bindCamera=false)
cocos2d::Camera * _camera
void onTouchesBegan(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
void onTouchesEnded(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
cocos2d::Label * _RotateLeftlabel
void scaleCameraCallback(cocos2d::Ref *sender, float value)
cocos2d::Sprite3D * _sprite3D
void rotateCameraCallback(cocos2d::Ref *sender, float value)
virtual std::string title() const override
void updateCamera(float fDelta)
void onTouchesRotateRightEnd(cocos2d::Touch *touch, cocos2d::Event *event)
void onTouchesZoomOutEnd(cocos2d::Touch *touch, cocos2d::Event *event)
void move3D(float elapsedTime)
void onTouchesRotateLeftEnd(cocos2d::Touch *touch, cocos2d::Event *event)
bool onTouchesRotateRight(cocos2d::Touch *touch, cocos2d::Event *event)
void onTouchesZoomInEnd(cocos2d::Touch *touch, cocos2d::Event *event)
virtual void onExit() override
void onTouchesMoved(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
cocos2d::Label * _RotateRightlabel
void onTouchsMoved(const std::vector< cocos2d::Touch * > &touchs, cocos2d::Event *event)
cocos2d::Quaternion _rotationQuat
float projectToSphere(float r, float x, float y)
virtual void onEnter() override
void updateCameraTransform()
cocos2d::Camera * _camera
void switchTargetCallback(cocos2d::Ref *sender)
cocos2d::DrawNode3D * _drawGrid
virtual std::string title() const override
void switchOperateCallback(cocos2d::Ref *sender)
cocos2d::Layer * _layer3D
void calculateArcBall(cocos2d::Vec3 &axis, float &angle, float p1x, float p1y, float p2x, float p2y)
virtual void onExit() override
cocos2d::Sprite3D * _sprite3D2
virtual ~CameraArcBallDemo()
virtual void update(float dt) override
cocos2d::Sprite3D * _sprite3D1
cocos2d::BillBoard * bill1
cocos2d::BillBoard * bill2
cocos2d::DrawNode3D * _drawFrustum
cocos2d::Layer * _layer3D
cocos2d::Camera * _cameraFirst
virtual ~CameraCullingDemo()
void addSpriteCallback(cocos2d::Ref *sender)
virtual void update(float dt) override
void switchViewCallback(cocos2d::Ref *sender)
virtual void onEnter() override
void delSpriteCallback(cocos2d::Ref *sender)
cocos2d::DrawNode3D * _drawAABB
cocos2d::Camera * _cameraThird
virtual void onExit() override
cocos2d::Label * _labelSprite3DCount
virtual std::string title() const override
std::vector< cocos2d::Sprite3D * > _objects
cocos2d::MoveBy * _moveAction
cocos2d::Node * _camControlNode
virtual ~CameraRotationTest()
cocos2d::EventListenerTouchOneByOne * _lis
virtual void update(float dt) override
virtual void onExit() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
static cocos2d::DrawNode3D * create()
void drawLine(const cocos2d::Vec3 &from, const cocos2d::Vec3 &to, const Color4F &color)
cocos2d::backend::ProgramState * _programState1
void switchTypeCallback(cocos2d::Ref *sender, int type)
cocos2d::Layer * _layer3D
virtual std::string title() const override
cocos2d::Camera * _camera
cocos2d::EventListenerCustom * _backToForegroundListener
cocos2d::Sprite3D * _sprite3D1
cocos2d::Sprite3D * _sprite3D2
cocos2d::backend::ProgramState * _programState2
void onTouchesMoved(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
virtual void onEnter() override
virtual void update(float dt) override
virtual void onExit() override
virtual void onEnter() override
static cocos2d::Vec2 top()
static cocos2d::Vec2 left()