mirror of https://github.com/axmolengine/axmol.git
commit
bb0b7a9b8a
|
@ -1799,6 +1799,10 @@
|
||||||
B37510841823ACA100B3BA6A /* CCPhysicsShapeInfo_chipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = B375104D1823AC7B00B3BA6A /* CCPhysicsShapeInfo_chipmunk.h */; };
|
B37510841823ACA100B3BA6A /* CCPhysicsShapeInfo_chipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = B375104D1823AC7B00B3BA6A /* CCPhysicsShapeInfo_chipmunk.h */; };
|
||||||
B37510851823ACA100B3BA6A /* CCPhysicsWorldInfo_chipmunk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B375104E1823AC7B00B3BA6A /* CCPhysicsWorldInfo_chipmunk.cpp */; };
|
B37510851823ACA100B3BA6A /* CCPhysicsWorldInfo_chipmunk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B375104E1823AC7B00B3BA6A /* CCPhysicsWorldInfo_chipmunk.cpp */; };
|
||||||
B37510861823ACA100B3BA6A /* CCPhysicsWorldInfo_chipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = B375104F1823AC7B00B3BA6A /* CCPhysicsWorldInfo_chipmunk.h */; };
|
B37510861823ACA100B3BA6A /* CCPhysicsWorldInfo_chipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = B375104F1823AC7B00B3BA6A /* CCPhysicsWorldInfo_chipmunk.h */; };
|
||||||
|
B60C5BD419AC68B10056FBDE /* CCBillBoard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B60C5BD219AC68B10056FBDE /* CCBillBoard.cpp */; };
|
||||||
|
B60C5BD519AC68B10056FBDE /* CCBillBoard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B60C5BD219AC68B10056FBDE /* CCBillBoard.cpp */; };
|
||||||
|
B60C5BD619AC68B10056FBDE /* CCBillBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = B60C5BD319AC68B10056FBDE /* CCBillBoard.h */; };
|
||||||
|
B60C5BD719AC68B10056FBDE /* CCBillBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = B60C5BD319AC68B10056FBDE /* CCBillBoard.h */; };
|
||||||
ED9C6A9418599AD8000A5232 /* CCNodeGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */; };
|
ED9C6A9418599AD8000A5232 /* CCNodeGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */; };
|
||||||
ED9C6A9518599AD8000A5232 /* CCNodeGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */; };
|
ED9C6A9518599AD8000A5232 /* CCNodeGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */; };
|
||||||
ED9C6A9618599AD8000A5232 /* CCNodeGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9C6A9318599AD8000A5232 /* CCNodeGrid.h */; };
|
ED9C6A9618599AD8000A5232 /* CCNodeGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9C6A9318599AD8000A5232 /* CCNodeGrid.h */; };
|
||||||
|
@ -2782,6 +2786,8 @@
|
||||||
B375104F1823AC7B00B3BA6A /* CCPhysicsWorldInfo_chipmunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsWorldInfo_chipmunk.h; sourceTree = "<group>"; };
|
B375104F1823AC7B00B3BA6A /* CCPhysicsWorldInfo_chipmunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsWorldInfo_chipmunk.h; sourceTree = "<group>"; };
|
||||||
B3AF019E1842FBA400A98B85 /* b2MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MotorJoint.cpp; sourceTree = "<group>"; };
|
B3AF019E1842FBA400A98B85 /* b2MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MotorJoint.cpp; sourceTree = "<group>"; };
|
||||||
B3AF019F1842FBA400A98B85 /* b2MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MotorJoint.h; sourceTree = "<group>"; };
|
B3AF019F1842FBA400A98B85 /* b2MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MotorJoint.h; sourceTree = "<group>"; };
|
||||||
|
B60C5BD219AC68B10056FBDE /* CCBillBoard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCBillBoard.cpp; sourceTree = "<group>"; };
|
||||||
|
B60C5BD319AC68B10056FBDE /* CCBillBoard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBillBoard.h; sourceTree = "<group>"; };
|
||||||
ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CCNodeGrid.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CCNodeGrid.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
||||||
ED9C6A9318599AD8000A5232 /* CCNodeGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNodeGrid.h; sourceTree = "<group>"; };
|
ED9C6A9318599AD8000A5232 /* CCNodeGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNodeGrid.h; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
@ -4727,6 +4733,8 @@
|
||||||
B29594B81926D61F003EEF37 /* 3d */ = {
|
B29594B81926D61F003EEF37 /* 3d */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
B60C5BD219AC68B10056FBDE /* CCBillBoard.cpp */,
|
||||||
|
B60C5BD319AC68B10056FBDE /* CCBillBoard.h */,
|
||||||
15AE17E319AAD2F700C27E9E /* 3dExport.h */,
|
15AE17E319AAD2F700C27E9E /* 3dExport.h */,
|
||||||
15AE17E419AAD2F700C27E9E /* CCAABB.cpp */,
|
15AE17E419AAD2F700C27E9E /* CCAABB.cpp */,
|
||||||
15AE17E519AAD2F700C27E9E /* CCAABB.h */,
|
15AE17E519AAD2F700C27E9E /* CCAABB.h */,
|
||||||
|
@ -5094,6 +5102,7 @@
|
||||||
15AE199119AAD37200C27E9E /* ImageViewReader.h in Headers */,
|
15AE199119AAD37200C27E9E /* ImageViewReader.h in Headers */,
|
||||||
15AE18FE19AAD35000C27E9E /* CCComAttribute.h in Headers */,
|
15AE18FE19AAD35000C27E9E /* CCComAttribute.h in Headers */,
|
||||||
50ABBD621925AB0000A911A9 /* Vec4.h in Headers */,
|
50ABBD621925AB0000A911A9 /* Vec4.h in Headers */,
|
||||||
|
B60C5BD619AC68B10056FBDE /* CCBillBoard.h in Headers */,
|
||||||
15AE1BA419AADFDF00C27E9E /* UILayoutManager.h in Headers */,
|
15AE1BA419AADFDF00C27E9E /* UILayoutManager.h in Headers */,
|
||||||
1A01C69418F57BE800EFE3A6 /* CCFloat.h in Headers */,
|
1A01C69418F57BE800EFE3A6 /* CCFloat.h in Headers */,
|
||||||
1A57034D180BD09B0088DEC7 /* tinyxml2.h in Headers */,
|
1A57034D180BD09B0088DEC7 /* tinyxml2.h in Headers */,
|
||||||
|
@ -5397,6 +5406,7 @@
|
||||||
15AE181D19AAD2F700C27E9E /* CCBundle3D.h in Headers */,
|
15AE181D19AAD2F700C27E9E /* CCBundle3D.h in Headers */,
|
||||||
15AE192519AAD35100C27E9E /* CocoLoader.h in Headers */,
|
15AE192519AAD35100C27E9E /* CocoLoader.h in Headers */,
|
||||||
15AE1BBB19AADFF000C27E9E /* HttpRequest.h in Headers */,
|
15AE1BBB19AADFF000C27E9E /* HttpRequest.h in Headers */,
|
||||||
|
B60C5BD719AC68B10056FBDE /* CCBillBoard.h in Headers */,
|
||||||
B230ED7419B417AE00364AA8 /* CCTrianglesCommand.h in Headers */,
|
B230ED7419B417AE00364AA8 /* CCTrianglesCommand.h in Headers */,
|
||||||
15AE1A0019AAD3A700C27E9E /* AtlasAttachmentLoader.h in Headers */,
|
15AE1A0019AAD3A700C27E9E /* AtlasAttachmentLoader.h in Headers */,
|
||||||
50ED2BE119BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */,
|
50ED2BE119BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */,
|
||||||
|
@ -6013,6 +6023,7 @@
|
||||||
1A570282180BCC900088DEC7 /* CCSpriteBatchNode.cpp in Sources */,
|
1A570282180BCC900088DEC7 /* CCSpriteBatchNode.cpp in Sources */,
|
||||||
1A570286180BCC900088DEC7 /* CCSpriteFrame.cpp in Sources */,
|
1A570286180BCC900088DEC7 /* CCSpriteFrame.cpp in Sources */,
|
||||||
B24AA989195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */,
|
B24AA989195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */,
|
||||||
|
B60C5BD419AC68B10056FBDE /* CCBillBoard.cpp in Sources */,
|
||||||
15AE199619AAD39600C27E9E /* ListViewReader.cpp in Sources */,
|
15AE199619AAD39600C27E9E /* ListViewReader.cpp in Sources */,
|
||||||
50ABC0191926664800A911A9 /* CCSAXParser.cpp in Sources */,
|
50ABC0191926664800A911A9 /* CCSAXParser.cpp in Sources */,
|
||||||
15AE189219AAD33D00C27E9E /* CCLayerGradientLoader.cpp in Sources */,
|
15AE189219AAD33D00C27E9E /* CCLayerGradientLoader.cpp in Sources */,
|
||||||
|
@ -6420,6 +6431,7 @@
|
||||||
50ABBDBE1925AB4100A911A9 /* CCTextureCache.cpp in Sources */,
|
50ABBDBE1925AB4100A911A9 /* CCTextureCache.cpp in Sources */,
|
||||||
1A5701E3180BCB8C0088DEC7 /* CCScene.cpp in Sources */,
|
1A5701E3180BCB8C0088DEC7 /* CCScene.cpp in Sources */,
|
||||||
50ABBD611925AB0000A911A9 /* Vec4.cpp in Sources */,
|
50ABBD611925AB0000A911A9 /* Vec4.cpp in Sources */,
|
||||||
|
B60C5BD519AC68B10056FBDE /* CCBillBoard.cpp in Sources */,
|
||||||
15AE184519AAD2F700C27E9E /* CCSprite3DMaterial.cpp in Sources */,
|
15AE184519AAD2F700C27E9E /* CCSprite3DMaterial.cpp in Sources */,
|
||||||
50ABBD9C1925AB4100A911A9 /* ccGLStateCache.cpp in Sources */,
|
50ABBD9C1925AB4100A911A9 /* ccGLStateCache.cpp in Sources */,
|
||||||
1A5701E7180BCB8C0088DEC7 /* CCTransition.cpp in Sources */,
|
1A5701E7180BCB8C0088DEC7 /* CCTransition.cpp in Sources */,
|
||||||
|
|
|
@ -933,6 +933,8 @@
|
||||||
A07A52C31783B02C0073F6A7 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A07A52C11783B01F0073F6A7 /* AVFoundation.framework */; };
|
A07A52C31783B02C0073F6A7 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A07A52C11783B01F0073F6A7 /* AVFoundation.framework */; };
|
||||||
B2507B6B192589AF00FA4972 /* Shaders3D in Resources */ = {isa = PBXBuildFile; fileRef = B2507B6A192589AF00FA4972 /* Shaders3D */; };
|
B2507B6B192589AF00FA4972 /* Shaders3D in Resources */ = {isa = PBXBuildFile; fileRef = B2507B6A192589AF00FA4972 /* Shaders3D */; };
|
||||||
B2507B6C192589AF00FA4972 /* Shaders3D in Resources */ = {isa = PBXBuildFile; fileRef = B2507B6A192589AF00FA4972 /* Shaders3D */; };
|
B2507B6C192589AF00FA4972 /* Shaders3D in Resources */ = {isa = PBXBuildFile; fileRef = B2507B6A192589AF00FA4972 /* Shaders3D */; };
|
||||||
|
B609E67319C18DAD003D0074 /* BillBoardTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B609E67119C18DAD003D0074 /* BillBoardTest.cpp */; };
|
||||||
|
B609E67419C18DAD003D0074 /* BillBoardTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B609E67119C18DAD003D0074 /* BillBoardTest.cpp */; };
|
||||||
C04F935A1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; };
|
C04F935A1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; };
|
||||||
C04F935B1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; };
|
C04F935B1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; };
|
||||||
C08689C118D370C90093E810 /* background.caf in Resources */ = {isa = PBXBuildFile; fileRef = C08689C018D370C90093E810 /* background.caf */; };
|
C08689C118D370C90093E810 /* background.caf in Resources */ = {isa = PBXBuildFile; fileRef = C08689C018D370C90093E810 /* background.caf */; };
|
||||||
|
@ -2953,6 +2955,8 @@
|
||||||
A07A52BB1783AEB80073F6A7 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
|
A07A52BB1783AEB80073F6A7 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
A07A52C11783B01F0073F6A7 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
|
A07A52C11783B01F0073F6A7 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
B2507B6A192589AF00FA4972 /* Shaders3D */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Shaders3D; path = "../tests/cpp-tests/Resources/Shaders3D"; sourceTree = "<group>"; };
|
B2507B6A192589AF00FA4972 /* Shaders3D */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Shaders3D; path = "../tests/cpp-tests/Resources/Shaders3D"; sourceTree = "<group>"; };
|
||||||
|
B609E67119C18DAD003D0074 /* BillBoardTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BillBoardTest.cpp; path = BillBoardTest/BillBoardTest.cpp; sourceTree = "<group>"; };
|
||||||
|
B609E67219C18DAD003D0074 /* BillBoardTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BillBoardTest.h; path = BillBoardTest/BillBoardTest.h; sourceTree = "<group>"; };
|
||||||
C04F93581941B05400E9FEAB /* TileMapTest2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TileMapTest2.cpp; sourceTree = "<group>"; };
|
C04F93581941B05400E9FEAB /* TileMapTest2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TileMapTest2.cpp; sourceTree = "<group>"; };
|
||||||
C04F93591941B05400E9FEAB /* TileMapTest2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TileMapTest2.h; sourceTree = "<group>"; };
|
C04F93591941B05400E9FEAB /* TileMapTest2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TileMapTest2.h; sourceTree = "<group>"; };
|
||||||
C08689C018D370C90093E810 /* background.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = background.caf; path = "../tests/cpp-tests/Resources/background.caf"; sourceTree = "<group>"; };
|
C08689C018D370C90093E810 /* background.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = background.caf; path = "../tests/cpp-tests/Resources/background.caf"; sourceTree = "<group>"; };
|
||||||
|
@ -5427,6 +5431,7 @@
|
||||||
1AC3592418CECF0A00F37B72 /* Classes */ = {
|
1AC3592418CECF0A00F37B72 /* Classes */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
B609E67019C18D90003D0074 /* BillBoardTest */,
|
||||||
3E2BDACD19BEA3410055CDCD /* NewAudioEngineTest */,
|
3E2BDACD19BEA3410055CDCD /* NewAudioEngineTest */,
|
||||||
3E9E75CB199324A8005B7047 /* Camera3DTest */,
|
3E9E75CB199324A8005B7047 /* Camera3DTest */,
|
||||||
1AC3592818CECF0A00F37B72 /* ActionManagerTest */,
|
1AC3592818CECF0A00F37B72 /* ActionManagerTest */,
|
||||||
|
@ -7141,6 +7146,15 @@
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
B609E67019C18D90003D0074 /* BillBoardTest */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
B609E67119C18DAD003D0074 /* BillBoardTest.cpp */,
|
||||||
|
B609E67219C18DAD003D0074 /* BillBoardTest.h */,
|
||||||
|
);
|
||||||
|
name = BillBoardTest;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
@ -8033,6 +8047,7 @@
|
||||||
1AC35B7D18CECF0C00F37B72 /* PlayerController.cpp in Sources */,
|
1AC35B7D18CECF0C00F37B72 /* PlayerController.cpp in Sources */,
|
||||||
29080D9F191B595E0066F8DF /* CustomReader.cpp in Sources */,
|
29080D9F191B595E0066F8DF /* CustomReader.cpp in Sources */,
|
||||||
1AC35BE718CECF0C00F37B72 /* CCControlScene.cpp in Sources */,
|
1AC35BE718CECF0C00F37B72 /* CCControlScene.cpp in Sources */,
|
||||||
|
B609E67319C18DAD003D0074 /* BillBoardTest.cpp in Sources */,
|
||||||
292CF01419A1965E00E8E6A0 /* UIEditBoxTest.cpp in Sources */,
|
292CF01419A1965E00E8E6A0 /* UIEditBoxTest.cpp in Sources */,
|
||||||
29080DBF191B595E0066F8DF /* UIPageViewTest_Editor.cpp in Sources */,
|
29080DBF191B595E0066F8DF /* UIPageViewTest_Editor.cpp in Sources */,
|
||||||
1AC35B5F18CECF0C00F37B72 /* DataVisitorTest.cpp in Sources */,
|
1AC35B5F18CECF0C00F37B72 /* DataVisitorTest.cpp in Sources */,
|
||||||
|
@ -8217,6 +8232,7 @@
|
||||||
292CF01519A1965E00E8E6A0 /* UIEditBoxTest.cpp in Sources */,
|
292CF01519A1965E00E8E6A0 /* UIEditBoxTest.cpp in Sources */,
|
||||||
1AC35B2818CECF0C00F37B72 /* ActionsTest.cpp in Sources */,
|
1AC35B2818CECF0C00F37B72 /* ActionsTest.cpp in Sources */,
|
||||||
1AC35C4A18CECF0C00F37B72 /* ShaderTest.cpp in Sources */,
|
1AC35C4A18CECF0C00F37B72 /* ShaderTest.cpp in Sources */,
|
||||||
|
B609E67419C18DAD003D0074 /* BillBoardTest.cpp in Sources */,
|
||||||
C04F935B1941B05400E9FEAB /* TileMapTest2.cpp in Sources */,
|
C04F935B1941B05400E9FEAB /* TileMapTest2.cpp in Sources */,
|
||||||
1AC35B4418CECF0C00F37B72 /* Bug-624.cpp in Sources */,
|
1AC35B4418CECF0C00F37B72 /* Bug-624.cpp in Sources */,
|
||||||
1AC35BF818CECF0C00F37B72 /* SocketIOTest.cpp in Sources */,
|
1AC35BF818CECF0C00F37B72 /* SocketIOTest.cpp in Sources */,
|
||||||
|
|
|
@ -205,6 +205,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
|
||||||
<ClCompile Include="..\3d\CCAnimate3D.cpp" />
|
<ClCompile Include="..\3d\CCAnimate3D.cpp" />
|
||||||
<ClCompile Include="..\3d\CCAnimation3D.cpp" />
|
<ClCompile Include="..\3d\CCAnimation3D.cpp" />
|
||||||
<ClCompile Include="..\3d\CCAttachNode.cpp" />
|
<ClCompile Include="..\3d\CCAttachNode.cpp" />
|
||||||
|
<ClCompile Include="..\3d\CCBillBoard.cpp" />
|
||||||
<ClCompile Include="..\3d\CCBundle3D.cpp" />
|
<ClCompile Include="..\3d\CCBundle3D.cpp" />
|
||||||
<ClCompile Include="..\3d\CCBundleReader.cpp" />
|
<ClCompile Include="..\3d\CCBundleReader.cpp" />
|
||||||
<ClCompile Include="..\3d\CCMesh.cpp" />
|
<ClCompile Include="..\3d\CCMesh.cpp" />
|
||||||
|
@ -540,6 +541,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
|
||||||
<ClInclude Include="..\3d\CCAnimation3D.h" />
|
<ClInclude Include="..\3d\CCAnimation3D.h" />
|
||||||
<ClInclude Include="..\3d\CCAnimationCurve.h" />
|
<ClInclude Include="..\3d\CCAnimationCurve.h" />
|
||||||
<ClInclude Include="..\3d\CCAttachNode.h" />
|
<ClInclude Include="..\3d\CCAttachNode.h" />
|
||||||
|
<ClInclude Include="..\3d\CCBillBoard.h" />
|
||||||
<ClInclude Include="..\3d\CCBundle3D.h" />
|
<ClInclude Include="..\3d\CCBundle3D.h" />
|
||||||
<ClInclude Include="..\3d\CCBundle3DData.h" />
|
<ClInclude Include="..\3d\CCBundle3DData.h" />
|
||||||
<ClInclude Include="..\3d\CCBundleReader.h" />
|
<ClInclude Include="..\3d\CCBundleReader.h" />
|
||||||
|
|
|
@ -1105,6 +1105,9 @@
|
||||||
<ClCompile Include="..\editor-support\cocosbuilder\CCSpriteLoader.cpp">
|
<ClCompile Include="..\editor-support\cocosbuilder\CCSpriteLoader.cpp">
|
||||||
<Filter>cocosbuilder\Source Files</Filter>
|
<Filter>cocosbuilder\Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\3d\CCBillBoard.cpp">
|
||||||
|
<Filter>3d</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\ui\UIEditBox\UIEditBox.cpp">
|
<ClCompile Include="..\ui\UIEditBox\UIEditBox.cpp">
|
||||||
<Filter>ui\UIWidgets\EditBox</Filter>
|
<Filter>ui\UIWidgets\EditBox</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -2224,6 +2227,9 @@
|
||||||
<ClInclude Include="..\editor-support\cocosbuilder\CocosBuilder.h">
|
<ClInclude Include="..\editor-support\cocosbuilder\CocosBuilder.h">
|
||||||
<Filter>cocosbuilder\Header Files</Filter>
|
<Filter>cocosbuilder\Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\3d\CCBillBoard.h">
|
||||||
|
<Filter>3d</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\ui\UIEditBox\UIEditBox.h">
|
<ClInclude Include="..\ui\UIEditBox\UIEditBox.h">
|
||||||
<Filter>ui\UIWidgets\EditBox</Filter>
|
<Filter>ui\UIWidgets\EditBox</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
@ -12,6 +12,7 @@ CCOBB.cpp \
|
||||||
CCAnimate3D.cpp \
|
CCAnimate3D.cpp \
|
||||||
CCAnimation3D.cpp \
|
CCAnimation3D.cpp \
|
||||||
CCAttachNode.cpp \
|
CCAttachNode.cpp \
|
||||||
|
CCBillBoard.cpp \
|
||||||
CCBundle3D.cpp \
|
CCBundle3D.cpp \
|
||||||
CCBundleReader.cpp \
|
CCBundleReader.cpp \
|
||||||
CCMesh.cpp \
|
CCMesh.cpp \
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
/****************************************************************************
|
||||||
|
Copyright (c) 2014 Chukong Technologies Inc.
|
||||||
|
|
||||||
|
http://www.cocos2d-x.org
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "3d/CCBillBoard.h"
|
||||||
|
#include "2d/CCSpriteFrameCache.h"
|
||||||
|
#include "base/CCDirector.h"
|
||||||
|
#include "base/CCCamera.h"
|
||||||
|
#include "renderer/CCRenderer.h"
|
||||||
|
#include "renderer/CCGLProgramCache.h"
|
||||||
|
|
||||||
|
NS_CC_BEGIN
|
||||||
|
|
||||||
|
BillBoard::BillBoard()
|
||||||
|
: _zDepthInView(0.0f)
|
||||||
|
, _mode(Mode::VIEW_POINT_ORIENTED)
|
||||||
|
, _modeDirty(false)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
BillBoard::~BillBoard()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BillBoard* BillBoard::createWithTexture(Texture2D *texture, Mode mode)
|
||||||
|
{
|
||||||
|
BillBoard *billborad = new (std::nothrow) BillBoard();
|
||||||
|
if (billborad && billborad->initWithTexture(texture))
|
||||||
|
{
|
||||||
|
billborad->_mode = mode;
|
||||||
|
billborad->autorelease();
|
||||||
|
return billborad;
|
||||||
|
}
|
||||||
|
CC_SAFE_DELETE(billborad);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BillBoard* BillBoard::create(const std::string& filename, Mode mode)
|
||||||
|
{
|
||||||
|
BillBoard *billborad = new (std::nothrow) BillBoard();
|
||||||
|
if (billborad && billborad->initWithFile(filename))
|
||||||
|
{
|
||||||
|
billborad->_mode = mode;
|
||||||
|
billborad->autorelease();
|
||||||
|
return billborad;
|
||||||
|
}
|
||||||
|
CC_SAFE_DELETE(billborad);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
BillBoard* BillBoard::create(const std::string& filename, const Rect& rect, Mode mode)
|
||||||
|
{
|
||||||
|
BillBoard *billborad = new (std::nothrow) BillBoard();
|
||||||
|
if (billborad && billborad->initWithFile(filename, rect))
|
||||||
|
{
|
||||||
|
billborad->_mode = mode;
|
||||||
|
billborad->autorelease();
|
||||||
|
return billborad;
|
||||||
|
}
|
||||||
|
CC_SAFE_DELETE(billborad);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
BillBoard* BillBoard::create(Mode mode)
|
||||||
|
{
|
||||||
|
BillBoard *billborad = new (std::nothrow) BillBoard();
|
||||||
|
if (billborad && billborad->init())
|
||||||
|
{
|
||||||
|
billborad->_mode = mode;
|
||||||
|
billborad->autorelease();
|
||||||
|
return billborad;
|
||||||
|
}
|
||||||
|
CC_SAFE_DELETE(billborad);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BillBoard::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)
|
||||||
|
{
|
||||||
|
auto camera = Camera::getVisitingCamera();
|
||||||
|
|
||||||
|
const Mat4& camWorldMat = camera->getNodeToWorldTransform();
|
||||||
|
if (memcmp(_camWorldMat.m, camWorldMat.m, sizeof(float) * 16) != 0 || memcmp(_transform.m, transform.m, sizeof(float) * 16) != 0 || _modeDirty)
|
||||||
|
{
|
||||||
|
Vec3 camDir;
|
||||||
|
switch (_mode)
|
||||||
|
{
|
||||||
|
case Mode::VIEW_POINT_ORIENTED:
|
||||||
|
camDir = Vec3(transform.m[12] - camWorldMat.m[12], transform.m[13] - camWorldMat.m[13], transform.m[14] - camWorldMat.m[14]);
|
||||||
|
break;
|
||||||
|
case Mode::VIEW_PLANE_ORIENTED:
|
||||||
|
camWorldMat.transformVector(Vec3(0.0f, 0.0f, -1.0f), &camDir);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
CCASSERT(false, "invalid billboard mode");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_modeDirty = false;
|
||||||
|
|
||||||
|
if (camDir.length() < MATH_TOLERANCE)
|
||||||
|
{
|
||||||
|
camDir.set(camWorldMat.m[8], camWorldMat.m[9], camWorldMat.m[10]);
|
||||||
|
}
|
||||||
|
camDir.normalize();
|
||||||
|
|
||||||
|
static Vec3 upAxis(0.0f, 1.0f, 0.0f);
|
||||||
|
Vec3 x, y;
|
||||||
|
camWorldMat.transformVector(upAxis, &y);
|
||||||
|
Vec3::cross(camDir, y, &x);
|
||||||
|
x.normalize();
|
||||||
|
Vec3::cross(x, camDir, &y);
|
||||||
|
float xlen = sqrtf(transform.m[0] * transform.m[0] + transform.m[1] * transform.m[1] + transform.m[2] * transform.m[2]);
|
||||||
|
float ylen = sqrtf(transform.m[4] * transform.m[4] + transform.m[5] * transform.m[5] + transform.m[6] * transform.m[6]);
|
||||||
|
float zlen = sqrtf(transform.m[8] * transform.m[8] + transform.m[9] * transform.m[9] + transform.m[10] * transform.m[10]);
|
||||||
|
|
||||||
|
_billboardTransform.m[0] = x.x * xlen; _billboardTransform.m[1] = x.y * xlen; _billboardTransform.m[2] = x.z * xlen;
|
||||||
|
_billboardTransform.m[4] = y.x * ylen; _billboardTransform.m[5] = y.y * ylen; _billboardTransform.m[6] = y.z * ylen;
|
||||||
|
_billboardTransform.m[8] = -camDir.x * zlen; _billboardTransform.m[9] = -camDir.y * zlen; _billboardTransform.m[10] = -camDir.z * zlen;
|
||||||
|
_billboardTransform.m[12] = transform.m[12]; _billboardTransform.m[13] = transform.m[13]; _billboardTransform.m[14] = transform.m[14];
|
||||||
|
|
||||||
|
const Mat4 &viewMat = camWorldMat.getInversed();
|
||||||
|
_zDepthInView = -(viewMat.m[2] * transform.m[12] + viewMat.m[6] * transform.m[13] + viewMat.m[10] * transform.m[14] + viewMat.m[14]);
|
||||||
|
_transform = transform;
|
||||||
|
_camWorldMat = camWorldMat;
|
||||||
|
}
|
||||||
|
|
||||||
|
//FIXME: frustum culling here
|
||||||
|
{
|
||||||
|
_quadCommand.init(_zDepthInView, _texture->getName(), getGLProgramState(), _blendFunc, &_quad, 1, _billboardTransform);
|
||||||
|
renderer->addCommandToTransparentQueue(&_quadCommand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BillBoard::setMode( Mode mode )
|
||||||
|
{
|
||||||
|
_mode = mode;
|
||||||
|
_modeDirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
BillBoard::Mode BillBoard::getMode() const
|
||||||
|
{
|
||||||
|
return _mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_CC_END
|
|
@ -0,0 +1,121 @@
|
||||||
|
/****************************************************************************
|
||||||
|
Copyright (c) 2014 Chukong Technologies Inc.
|
||||||
|
|
||||||
|
http://www.cocos2d-x.org
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __CCBILLBOARD_H__
|
||||||
|
#define __CCBILLBOARD_H__
|
||||||
|
|
||||||
|
#include "2d/CCSprite.h"
|
||||||
|
#include "3d/3dExport.h"
|
||||||
|
|
||||||
|
NS_CC_BEGIN
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inherit from Sprite, achieve BillBoard.
|
||||||
|
*/
|
||||||
|
class CC_3D_DLL BillBoard : public Sprite
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum class Mode
|
||||||
|
{
|
||||||
|
VIEW_POINT_ORIENTED, // orient to the camera
|
||||||
|
VIEW_PLANE_ORIENTED // orient to the XOY plane of camera
|
||||||
|
};
|
||||||
|
/// @{
|
||||||
|
/// @name Creators
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an empty BillBoard without texture. You can call setTexture method subsequently.
|
||||||
|
*
|
||||||
|
* @return An autoreleased BillBoard object.
|
||||||
|
*/
|
||||||
|
static BillBoard* create(Mode mode = Mode::VIEW_POINT_ORIENTED);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a BillBoard with an image filename.
|
||||||
|
*
|
||||||
|
* After creation, the rect of BillBoard will be the size of the image,
|
||||||
|
* and the offset will be (0,0).
|
||||||
|
*
|
||||||
|
* @param filename A path to image file, e.g., "scene1/monster.png"
|
||||||
|
* @return An autoreleased BillBoard object.
|
||||||
|
*/
|
||||||
|
static BillBoard* create(const std::string& filename, Mode mode = Mode::VIEW_POINT_ORIENTED);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a BillBoard with an image filename and a rect.
|
||||||
|
*
|
||||||
|
* @param filename A path to image file, e.g., "scene1/monster.png"
|
||||||
|
* @param rect A subrect of the image file
|
||||||
|
* @return An autoreleased BillBoard object
|
||||||
|
*/
|
||||||
|
static BillBoard* create(const std::string& filename, const Rect& rect, Mode mode = Mode::VIEW_POINT_ORIENTED);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a BillBoard with a Texture2D object.
|
||||||
|
*
|
||||||
|
* After creation, the rect will be the size of the texture, and the offset will be (0,0).
|
||||||
|
*
|
||||||
|
* @param texture A pointer to a Texture2D object.
|
||||||
|
* @return An autoreleased BillBoard object
|
||||||
|
*/
|
||||||
|
static BillBoard* createWithTexture(Texture2D *texture, Mode mode = Mode::VIEW_POINT_ORIENTED);
|
||||||
|
|
||||||
|
/** Set the billboard rotation mode. */
|
||||||
|
void setMode(Mode mode);
|
||||||
|
|
||||||
|
/** Get the billboard rotation mode. */
|
||||||
|
Mode getMode() const;
|
||||||
|
|
||||||
|
//override
|
||||||
|
/** draw BillBoard object */
|
||||||
|
virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override;
|
||||||
|
|
||||||
|
|
||||||
|
CC_CONSTRUCTOR_ACCESS:
|
||||||
|
BillBoard();
|
||||||
|
virtual ~BillBoard();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
Mat4 _camWorldMat;
|
||||||
|
Mat4 _transform;
|
||||||
|
Mat4 _billboardTransform;
|
||||||
|
|
||||||
|
float _zDepthInView;
|
||||||
|
|
||||||
|
Mode _mode;
|
||||||
|
bool _modeDirty;
|
||||||
|
|
||||||
|
private:
|
||||||
|
CC_DISALLOW_COPY_AND_ASSIGN(BillBoard);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NS_CC_END
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __CCBILLBOARD_H__
|
|
@ -192,6 +192,7 @@ set(COCOS2D_BASE_SRC
|
||||||
3d/CCSkeleton3D.cpp
|
3d/CCSkeleton3D.cpp
|
||||||
3d/CCSprite3D.cpp
|
3d/CCSprite3D.cpp
|
||||||
3d/CCSprite3DMaterial.cpp
|
3d/CCSprite3DMaterial.cpp
|
||||||
|
3d/CCBillBoard.cpp
|
||||||
|
|
||||||
network/HttpClient.cpp
|
network/HttpClient.cpp
|
||||||
network/SocketIO.cpp
|
network/SocketIO.cpp
|
||||||
|
|
|
@ -284,6 +284,9 @@ void Director::drawScene()
|
||||||
|
|
||||||
if (_runningScene)
|
if (_runningScene)
|
||||||
{
|
{
|
||||||
|
//clear draw stats
|
||||||
|
_renderer->clearDrawStats();
|
||||||
|
|
||||||
Camera* defaultCamera = nullptr;
|
Camera* defaultCamera = nullptr;
|
||||||
const auto& cameras = _runningScene->_cameras;
|
const auto& cameras = _runningScene->_cameras;
|
||||||
//draw with camera
|
//draw with camera
|
||||||
|
|
|
@ -280,6 +280,7 @@ THE SOFTWARE.
|
||||||
#include "3d/CCAttachNode.h"
|
#include "3d/CCAttachNode.h"
|
||||||
#include "3d/CCMeshVertexIndexData.h"
|
#include "3d/CCMeshVertexIndexData.h"
|
||||||
#include "3d/CCSkeleton3D.h"
|
#include "3d/CCSkeleton3D.h"
|
||||||
|
#include "3d/CCBillBoard.h"
|
||||||
|
|
||||||
// Deprecated include
|
// Deprecated include
|
||||||
#include "deprecated/CCDictionary.h"
|
#include "deprecated/CCDictionary.h"
|
||||||
|
|
|
@ -102,6 +102,32 @@ void RenderQueue::clear()
|
||||||
_queuePosZ.clear();
|
_queuePosZ.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// helper
|
||||||
|
static bool compareTransparentRenderCommand(RenderCommand* a, RenderCommand* b)
|
||||||
|
{
|
||||||
|
return a->getGlobalOrder() > b->getGlobalOrder();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransparentRenderQueue::push_back(RenderCommand* command)
|
||||||
|
{
|
||||||
|
_queueCmd.push_back(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransparentRenderQueue::sort()
|
||||||
|
{
|
||||||
|
std::sort(std::begin(_queueCmd), std::end(_queueCmd), compareTransparentRenderCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
RenderCommand* TransparentRenderQueue::operator[](ssize_t index) const
|
||||||
|
{
|
||||||
|
return _queueCmd[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransparentRenderQueue::clear()
|
||||||
|
{
|
||||||
|
_queueCmd.clear();
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
@ -245,6 +271,11 @@ void Renderer::addCommand(RenderCommand* command, int renderQueue)
|
||||||
_renderGroups[renderQueue].push_back(command);
|
_renderGroups[renderQueue].push_back(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderer::addCommandToTransparentQueue(RenderCommand* command)
|
||||||
|
{
|
||||||
|
_transparentRenderGroups.push_back(command);
|
||||||
|
}
|
||||||
|
|
||||||
void Renderer::pushGroup(int renderQueueID)
|
void Renderer::pushGroup(int renderQueueID)
|
||||||
{
|
{
|
||||||
CCASSERT(!_isRendering, "Cannot change render queue while rendering");
|
CCASSERT(!_isRendering, "Cannot change render queue while rendering");
|
||||||
|
@ -337,6 +368,58 @@ void Renderer::visitRenderQueue(const RenderQueue& queue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderer::visitTransparentRenderQueue(const TransparentRenderQueue& queue)
|
||||||
|
{
|
||||||
|
// do not batch for transparent objects
|
||||||
|
ssize_t size = queue.size();
|
||||||
|
|
||||||
|
_batchedCommands.clear();
|
||||||
|
_filledVertex = 0;
|
||||||
|
_filledIndex = 0;
|
||||||
|
|
||||||
|
for (ssize_t index = 0; index < size; ++index)
|
||||||
|
{
|
||||||
|
auto command = queue[index];
|
||||||
|
auto commandType = command->getType();
|
||||||
|
if(RenderCommand::Type::QUAD_COMMAND == commandType || RenderCommand::Type::TRIANGLES_COMMAND == commandType)
|
||||||
|
{
|
||||||
|
auto cmd = static_cast<TrianglesCommand*>(command);
|
||||||
|
_batchedCommands.push_back(cmd);
|
||||||
|
fillVerticesAndIndices(cmd);
|
||||||
|
drawBatchedQuads();
|
||||||
|
}
|
||||||
|
else if(RenderCommand::Type::GROUP_COMMAND == commandType)
|
||||||
|
{
|
||||||
|
int renderQueueID = (static_cast<GroupCommand*>(command))->getRenderQueueID();
|
||||||
|
visitRenderQueue(_renderGroups[renderQueueID]);
|
||||||
|
}
|
||||||
|
else if(RenderCommand::Type::CUSTOM_COMMAND == commandType)
|
||||||
|
{
|
||||||
|
auto cmd = static_cast<CustomCommand*>(command);
|
||||||
|
cmd->execute();
|
||||||
|
}
|
||||||
|
else if(RenderCommand::Type::BATCH_COMMAND == commandType)
|
||||||
|
{
|
||||||
|
auto cmd = static_cast<BatchCommand*>(command);
|
||||||
|
cmd->execute();
|
||||||
|
}
|
||||||
|
else if(RenderCommand::Type::PRIMITIVE_COMMAND == commandType)
|
||||||
|
{
|
||||||
|
auto cmd = static_cast<PrimitiveCommand*>(command);
|
||||||
|
cmd->execute();
|
||||||
|
}
|
||||||
|
else if (RenderCommand::Type::MESH_COMMAND == commandType)
|
||||||
|
{
|
||||||
|
auto cmd = static_cast<MeshCommand*>(command);
|
||||||
|
cmd->execute();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CCLOGERROR("Unknown commands in renderQueue");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Renderer::render()
|
void Renderer::render()
|
||||||
{
|
{
|
||||||
//Uncomment this once everything is rendered by new renderer
|
//Uncomment this once everything is rendered by new renderer
|
||||||
|
@ -347,9 +430,6 @@ void Renderer::render()
|
||||||
|
|
||||||
if (_glViewAssigned)
|
if (_glViewAssigned)
|
||||||
{
|
{
|
||||||
// cleanup
|
|
||||||
_drawnBatches = _drawnVertices = 0;
|
|
||||||
|
|
||||||
//Process render commands
|
//Process render commands
|
||||||
//1. Sort render commands based on ID
|
//1. Sort render commands based on ID
|
||||||
for (auto &renderqueue : _renderGroups)
|
for (auto &renderqueue : _renderGroups)
|
||||||
|
@ -358,6 +438,16 @@ void Renderer::render()
|
||||||
}
|
}
|
||||||
visitRenderQueue(_renderGroups[0]);
|
visitRenderQueue(_renderGroups[0]);
|
||||||
flush();
|
flush();
|
||||||
|
|
||||||
|
//Process render commands
|
||||||
|
//draw transparent objects here, do not batch for transparent objects
|
||||||
|
if (0 < _transparentRenderGroups.size())
|
||||||
|
{
|
||||||
|
_transparentRenderGroups.sort();
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
visitTransparentRenderQueue(_transparentRenderGroups);
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
clean();
|
clean();
|
||||||
_isRendering = false;
|
_isRendering = false;
|
||||||
|
@ -382,6 +472,8 @@ void Renderer::clean()
|
||||||
_filledIndex = 0;
|
_filledIndex = 0;
|
||||||
_lastMaterialID = 0;
|
_lastMaterialID = 0;
|
||||||
_lastBatchedMeshCommand = nullptr;
|
_lastBatchedMeshCommand = nullptr;
|
||||||
|
|
||||||
|
_transparentRenderGroups.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::fillVerticesAndIndices(const TrianglesCommand* cmd)
|
void Renderer::fillVerticesAndIndices(const TrianglesCommand* cmd)
|
||||||
|
|
|
@ -61,6 +61,22 @@ protected:
|
||||||
std::vector<RenderCommand*> _queuePosZ;
|
std::vector<RenderCommand*> _queuePosZ;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//render queue for transparency object, NOTE that the _globalOrder of RenderCommand is the distance to the camera when added to the transparent queue
|
||||||
|
class TransparentRenderQueue {
|
||||||
|
public:
|
||||||
|
void push_back(RenderCommand* command);
|
||||||
|
ssize_t size() const
|
||||||
|
{
|
||||||
|
return _queueCmd.size();
|
||||||
|
}
|
||||||
|
void sort();
|
||||||
|
RenderCommand* operator[](ssize_t index) const;
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::vector<RenderCommand*> _queueCmd;
|
||||||
|
};
|
||||||
|
|
||||||
struct RenderStackElement
|
struct RenderStackElement
|
||||||
{
|
{
|
||||||
int renderQueueID;
|
int renderQueueID;
|
||||||
|
@ -92,6 +108,9 @@ public:
|
||||||
|
|
||||||
/** Adds a `RenderComamnd` into the renderer specifying a particular render queue ID */
|
/** Adds a `RenderComamnd` into the renderer specifying a particular render queue ID */
|
||||||
void addCommand(RenderCommand* command, int renderQueue);
|
void addCommand(RenderCommand* command, int renderQueue);
|
||||||
|
|
||||||
|
/** add transprent command */
|
||||||
|
void addCommandToTransparentQueue(RenderCommand* command);
|
||||||
|
|
||||||
/** Pushes a group into the render queue */
|
/** Pushes a group into the render queue */
|
||||||
void pushGroup(int renderQueueID);
|
void pushGroup(int renderQueueID);
|
||||||
|
@ -116,6 +135,8 @@ public:
|
||||||
ssize_t getDrawnVertices() const { return _drawnVertices; }
|
ssize_t getDrawnVertices() const { return _drawnVertices; }
|
||||||
/* RenderCommands (except) QuadCommand should update this value */
|
/* RenderCommands (except) QuadCommand should update this value */
|
||||||
void addDrawnVertices(ssize_t number) { _drawnVertices += number; };
|
void addDrawnVertices(ssize_t number) { _drawnVertices += number; };
|
||||||
|
/* clear draw stats */
|
||||||
|
void clearDrawStats() { _drawnBatches = _drawnVertices = 0; }
|
||||||
|
|
||||||
inline GroupCommandManager* getGroupCommandManager() const { return _groupCommandManager; };
|
inline GroupCommandManager* getGroupCommandManager() const { return _groupCommandManager; };
|
||||||
|
|
||||||
|
@ -140,12 +161,15 @@ protected:
|
||||||
void flush3D();
|
void flush3D();
|
||||||
|
|
||||||
void visitRenderQueue(const RenderQueue& queue);
|
void visitRenderQueue(const RenderQueue& queue);
|
||||||
|
|
||||||
|
void visitTransparentRenderQueue(const TransparentRenderQueue& queue);
|
||||||
|
|
||||||
void fillVerticesAndIndices(const TrianglesCommand* cmd);
|
void fillVerticesAndIndices(const TrianglesCommand* cmd);
|
||||||
|
|
||||||
std::stack<int> _commandGroupStack;
|
std::stack<int> _commandGroupStack;
|
||||||
|
|
||||||
std::vector<RenderQueue> _renderGroups;
|
std::vector<RenderQueue> _renderGroups;
|
||||||
|
TransparentRenderQueue _transparentRenderGroups; //transparency objects
|
||||||
|
|
||||||
uint32_t _lastMaterialID;
|
uint32_t _lastMaterialID;
|
||||||
|
|
||||||
|
|
|
@ -203,6 +203,8 @@
|
||||||
"cocos/3d/CCAnimationCurve.inl",
|
"cocos/3d/CCAnimationCurve.inl",
|
||||||
"cocos/3d/CCAttachNode.cpp",
|
"cocos/3d/CCAttachNode.cpp",
|
||||||
"cocos/3d/CCAttachNode.h",
|
"cocos/3d/CCAttachNode.h",
|
||||||
|
"cocos/3d/CCBillBoard.cpp",
|
||||||
|
"cocos/3d/CCBillBoard.h",
|
||||||
"cocos/3d/CCBundle3D.cpp",
|
"cocos/3d/CCBundle3D.cpp",
|
||||||
"cocos/3d/CCBundle3D.h",
|
"cocos/3d/CCBundle3D.h",
|
||||||
"cocos/3d/CCBundle3DData.h",
|
"cocos/3d/CCBundle3DData.h",
|
||||||
|
|
|
@ -16,6 +16,7 @@ Classes/ActionManagerTest/ActionManagerTest.cpp \
|
||||||
Classes/ActionsEaseTest/ActionsEaseTest.cpp \
|
Classes/ActionsEaseTest/ActionsEaseTest.cpp \
|
||||||
Classes/ActionsProgressTest/ActionsProgressTest.cpp \
|
Classes/ActionsProgressTest/ActionsProgressTest.cpp \
|
||||||
Classes/ActionsTest/ActionsTest.cpp \
|
Classes/ActionsTest/ActionsTest.cpp \
|
||||||
|
Classes/BillBoardTest/BillBoardTest.cpp \
|
||||||
Classes/Box2DTest/Box2dTest.cpp \
|
Classes/Box2DTest/Box2dTest.cpp \
|
||||||
Classes/Box2DTestBed/Box2dView.cpp \
|
Classes/Box2DTestBed/Box2dView.cpp \
|
||||||
Classes/Box2DTestBed/GLES-Render.cpp \
|
Classes/Box2DTestBed/GLES-Render.cpp \
|
||||||
|
|
|
@ -21,6 +21,7 @@ set(TESTS_SRC
|
||||||
Classes/ActionsEaseTest/ActionsEaseTest.cpp
|
Classes/ActionsEaseTest/ActionsEaseTest.cpp
|
||||||
Classes/ActionsProgressTest/ActionsProgressTest.cpp
|
Classes/ActionsProgressTest/ActionsProgressTest.cpp
|
||||||
Classes/ActionsTest/ActionsTest.cpp
|
Classes/ActionsTest/ActionsTest.cpp
|
||||||
|
Classes/BillBoardTest/BillBoardTest.cpp
|
||||||
Classes/Box2DTest/Box2dTest.cpp
|
Classes/Box2DTest/Box2dTest.cpp
|
||||||
Classes/Box2DTestBed/Box2dView.cpp
|
Classes/Box2DTestBed/Box2dView.cpp
|
||||||
Classes/Box2DTestBed/GLES-Render.cpp
|
Classes/Box2DTestBed/GLES-Render.cpp
|
||||||
|
|
|
@ -0,0 +1,255 @@
|
||||||
|
/****************************************************************************
|
||||||
|
Copyright (c) 2012 cocos2d-x.org
|
||||||
|
Copyright (c) 2013-2014 Chukong Technologies Inc.
|
||||||
|
|
||||||
|
http://www.cocos2d-x.org
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "BillBoardTest.h"
|
||||||
|
#include "3d/CCBillBoard.h"
|
||||||
|
#include "base/CCCamera.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include "../testResource.h"
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
IDC_NEXT = 100,
|
||||||
|
IDC_BACK,
|
||||||
|
IDC_RESTART
|
||||||
|
};
|
||||||
|
|
||||||
|
static int sceneIdx = -1;
|
||||||
|
|
||||||
|
|
||||||
|
static std::function<Layer*()> createFunctions[] =
|
||||||
|
{
|
||||||
|
CL(BillBoardTest)
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0]))
|
||||||
|
|
||||||
|
static Layer* nextSpriteTestAction()
|
||||||
|
{
|
||||||
|
sceneIdx++;
|
||||||
|
sceneIdx = sceneIdx % MAX_LAYER;
|
||||||
|
|
||||||
|
auto layer = (createFunctions[sceneIdx])();
|
||||||
|
return layer;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Layer* backSpriteTestAction()
|
||||||
|
{
|
||||||
|
sceneIdx--;
|
||||||
|
int total = MAX_LAYER;
|
||||||
|
if( sceneIdx < 0 )
|
||||||
|
sceneIdx += total;
|
||||||
|
|
||||||
|
auto layer = (createFunctions[sceneIdx])();
|
||||||
|
return layer;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Layer* restartSpriteTestAction()
|
||||||
|
{
|
||||||
|
auto layer = (createFunctions[sceneIdx])();
|
||||||
|
return layer;
|
||||||
|
}
|
||||||
|
|
||||||
|
BillBoardTest::BillBoardTest()
|
||||||
|
: _camera(nullptr)
|
||||||
|
{
|
||||||
|
auto listener = EventListenerTouchAllAtOnce::create();
|
||||||
|
listener->onTouchesMoved = CC_CALLBACK_2(BillBoardTest::onTouchesMoved, this);
|
||||||
|
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
||||||
|
auto layer3D=Layer::create();
|
||||||
|
addChild(layer3D,0);
|
||||||
|
_layerBillBorad=layer3D;
|
||||||
|
auto s = Director::getInstance()->getWinSize();
|
||||||
|
if (_camera == nullptr)
|
||||||
|
{
|
||||||
|
_camera=Camera::createPerspective(60, (GLfloat)s.width/s.height, 1, 500);
|
||||||
|
_camera->setCameraFlag(CameraFlag::USER1);
|
||||||
|
_layerBillBorad->addChild(_camera);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string imgs[3] = {"Images/Icon.png", "Images/r2.png"};
|
||||||
|
for (unsigned int i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
Layer *layer = Layer::create();
|
||||||
|
auto billboard = BillBoard::create(imgs[(unsigned int)(CCRANDOM_0_1() * 1 + 0.5)]);
|
||||||
|
billboard->setScale(0.5f);
|
||||||
|
billboard->setPosition3D(Vec3(0.0f, 0.0f, CCRANDOM_MINUS1_1() * 150.0f));
|
||||||
|
billboard->setBlendFunc(cocos2d::BlendFunc::ALPHA_NON_PREMULTIPLIED);
|
||||||
|
billboard->setOpacity(CCRANDOM_0_1() * 128 + 128);
|
||||||
|
_billboards.push_back(billboard);
|
||||||
|
layer->addChild(billboard);
|
||||||
|
_layerBillBorad->addChild(layer);
|
||||||
|
layer->runAction( RepeatForever::create( RotateBy::create( CCRANDOM_0_1(), Vec3(0.0f, 45.0f, 0.0f) ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
addNewBillBoradWithCoords(Vec3(20,5,0));
|
||||||
|
addNewBillBoradWithCoords(Vec3(60,5,0));
|
||||||
|
addNewBillBoradWithCoords(Vec3(100,5,0));
|
||||||
|
addNewBillBoradWithCoords(Vec3(140,5,0));
|
||||||
|
addNewBillBoradWithCoords(Vec3(180,5,0));
|
||||||
|
addNewAniBillBoradWithCoords(Vec3(-20,0,0));
|
||||||
|
addNewAniBillBoradWithCoords(Vec3(-60,0,0));
|
||||||
|
addNewAniBillBoradWithCoords(Vec3(-100,0,0));
|
||||||
|
addNewAniBillBoradWithCoords(Vec3(-140,0,0));
|
||||||
|
addNewAniBillBoradWithCoords(Vec3(-180,0,0));
|
||||||
|
_camera->setPosition3D(Vec3(0, 130, 230));
|
||||||
|
_camera->lookAt(Vec3(0,0,100), Vec3(0,1,0));
|
||||||
|
|
||||||
|
TTFConfig ttfConfig("fonts/arial.ttf", 16);
|
||||||
|
auto label1 = Label::createWithTTF(ttfConfig,"rotate+");
|
||||||
|
auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(BillBoardTest::rotateCameraCallback,this,10));
|
||||||
|
auto label2 = Label::createWithTTF(ttfConfig,"rotate-");
|
||||||
|
auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(BillBoardTest::rotateCameraCallback,this,-10));
|
||||||
|
auto menu = Menu::create(menuItem1,menuItem2,NULL);
|
||||||
|
menu->setPosition(Vec2::ZERO);
|
||||||
|
menuItem1->setPosition( Vec2( s.width-80, VisibleRect::top().y-160) );
|
||||||
|
menuItem2->setPosition( Vec2( s.width-80, VisibleRect::top().y-190) );
|
||||||
|
addChild(menu, 0);
|
||||||
|
_layerBillBorad->setCameraMask(2);
|
||||||
|
|
||||||
|
label1 = Label::createWithTTF(ttfConfig,"Point Oriented");
|
||||||
|
menuItem1 = MenuItemLabel::create(label1,CC_CALLBACK_1(BillBoardTest::menuCallback_orientedPoint,this) );
|
||||||
|
label2 = Label::createWithTTF(ttfConfig,"Plane Oriented");
|
||||||
|
menuItem2 = MenuItemLabel::create(label2,CC_CALLBACK_1(BillBoardTest::menuCallback_orientedPlane,this) );
|
||||||
|
menuItem1->setPosition( Vec2( s.width-80, VisibleRect::top().y-100) );
|
||||||
|
menuItem2->setPosition( Vec2( s.width-80, VisibleRect::top().y-130) );
|
||||||
|
|
||||||
|
menu = Menu::create(menuItem1,menuItem2,NULL);
|
||||||
|
menu->setPosition(Vec2(0,0));
|
||||||
|
this->addChild(menu, 10);
|
||||||
|
menuCallback_orientedPoint(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BillBoardTest::menuCallback_orientedPoint(Ref* sender)
|
||||||
|
{
|
||||||
|
for (auto& billboard : _billboards) {
|
||||||
|
billboard->setMode(BillBoard::Mode::VIEW_POINT_ORIENTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BillBoardTest::menuCallback_orientedPlane(Ref* sender)
|
||||||
|
{
|
||||||
|
for (auto& billboard : _billboards) {
|
||||||
|
billboard->setMode(BillBoard::Mode::VIEW_PLANE_ORIENTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BillBoardTest::~BillBoardTest()
|
||||||
|
{
|
||||||
|
if (_camera)
|
||||||
|
{
|
||||||
|
_camera = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::string BillBoardTest::title() const
|
||||||
|
{
|
||||||
|
return "Testing BillBoard";
|
||||||
|
}
|
||||||
|
std::string BillBoardTest::subtitle() const
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
void BillBoardTest::addNewBillBoradWithCoords(Vec3 p)
|
||||||
|
{
|
||||||
|
std::string imgs[3] = {"Images/Icon.png", "Images/r2.png"};
|
||||||
|
for (unsigned int i = 0; i < 10; ++i)
|
||||||
|
{
|
||||||
|
auto billborad = BillBoard::create(imgs[(unsigned int)(CCRANDOM_0_1() * 1 + 0.5)]);
|
||||||
|
billborad->setScale(0.5f);
|
||||||
|
billborad->setPosition3D(Vec3(p.x, p.y, -150.0f + 30 * i));
|
||||||
|
billborad->setBlendFunc(cocos2d::BlendFunc::ALPHA_NON_PREMULTIPLIED);
|
||||||
|
billborad->setOpacity(CCRANDOM_0_1() * 128 + 128);
|
||||||
|
_layerBillBorad->addChild(billborad);
|
||||||
|
_billboards.push_back(billborad);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void BillBoardTest::addNewAniBillBoradWithCoords(Vec3 p)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < 10; ++i)
|
||||||
|
{
|
||||||
|
auto billboradAni = BillBoard::create("Images/grossini.png");
|
||||||
|
billboradAni->setScale(0.5f);
|
||||||
|
billboradAni->setPosition3D(Vec3(p.x, p.y, -150.0f + 30 * i));
|
||||||
|
_layerBillBorad->addChild(billboradAni);
|
||||||
|
|
||||||
|
auto animation = Animation::create();
|
||||||
|
for( int i=1;i<15;i++)
|
||||||
|
{
|
||||||
|
char szName1[100] = {0};
|
||||||
|
sprintf(szName1, "Images/grossini_dance_%02d.png", i);
|
||||||
|
animation->addSpriteFrameWithFile(szName1);
|
||||||
|
}
|
||||||
|
// should last 2.8 seconds. And there are 14 frames.
|
||||||
|
animation->setDelayPerUnit(2.8f / 14.0f);
|
||||||
|
animation->setRestoreOriginalFrame(true);
|
||||||
|
|
||||||
|
auto action = Animate::create(animation);
|
||||||
|
billboradAni->runAction(RepeatForever::create(action));
|
||||||
|
billboradAni->setBlendFunc(cocos2d::BlendFunc::ALPHA_NON_PREMULTIPLIED);
|
||||||
|
billboradAni->setOpacity(CCRANDOM_0_1() * 128 + 128);
|
||||||
|
_billboards.push_back(billboradAni);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void BillBoardTest::update(float dt)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void BillBoardTest::onTouchesMoved(const std::vector<Touch*>& touches, Event* event)
|
||||||
|
{
|
||||||
|
if(touches.size()==1)
|
||||||
|
{
|
||||||
|
auto touch = touches[0];
|
||||||
|
auto location = touch->getLocation();
|
||||||
|
auto PreviousLocation = touch->getPreviousLocation();
|
||||||
|
Point newPos = PreviousLocation - location;
|
||||||
|
|
||||||
|
Vec3 cameraDir;
|
||||||
|
Vec3 cameraRightDir;
|
||||||
|
_camera->getNodeToWorldTransform().getForwardVector(&cameraDir);
|
||||||
|
cameraDir.normalize();
|
||||||
|
cameraDir.y=0;
|
||||||
|
_camera->getNodeToWorldTransform().getRightVector(&cameraRightDir);
|
||||||
|
cameraRightDir.normalize();
|
||||||
|
cameraRightDir.y=0;
|
||||||
|
Vec3 cameraPos= _camera->getPosition3D();
|
||||||
|
cameraPos+=cameraDir*newPos.y*0.5;
|
||||||
|
cameraPos+=cameraRightDir*newPos.x*0.5;
|
||||||
|
_camera->setPosition3D(cameraPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void BillBoardTest::rotateCameraCallback(Ref* sender,float value)
|
||||||
|
{
|
||||||
|
Vec3 rotation3D= _camera->getRotation3D();
|
||||||
|
rotation3D.y+= value;
|
||||||
|
_camera->setRotation3D(rotation3D);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BillBoardTestScene::runThisTest()
|
||||||
|
{
|
||||||
|
auto layer = nextSpriteTestAction();
|
||||||
|
addChild(layer);
|
||||||
|
Director::getInstance()->replaceScene(this);
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
/****************************************************************************
|
||||||
|
Copyright (c) 2013 cocos2d-x.org
|
||||||
|
|
||||||
|
http://www.cocos2d-x.org
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _BILLBOARD_TEST_H_
|
||||||
|
#define _BILLBOARD_TEST_H_
|
||||||
|
|
||||||
|
#include "../testBasic.h"
|
||||||
|
#include "../BaseTest.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace cocos2d {
|
||||||
|
class BillBoard;
|
||||||
|
class Camera;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class BillBoardTest : public BaseTest
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual ~BillBoardTest(void);
|
||||||
|
CREATE_FUNC(BillBoardTest);
|
||||||
|
BillBoardTest();
|
||||||
|
virtual std::string title() const override;
|
||||||
|
virtual std::string subtitle() const override;
|
||||||
|
virtual void update(float dt) override;
|
||||||
|
void addNewBillBoradWithCoords(Vec3 p);
|
||||||
|
void addNewAniBillBoradWithCoords(Vec3 p);
|
||||||
|
void rotateCameraCallback(Ref* sender,float value);
|
||||||
|
void onTouchesMoved(const std::vector<Touch*>& touches, Event* event);
|
||||||
|
|
||||||
|
void menuCallback_orientedPoint(Ref* sender);
|
||||||
|
void menuCallback_orientedPlane(Ref* sender);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Camera* _camera;
|
||||||
|
Layer* _layerBillBorad;
|
||||||
|
|
||||||
|
std::vector<BillBoard*> _billboards;
|
||||||
|
};
|
||||||
|
|
||||||
|
class BillBoardTestScene : public TestScene
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void runThisTest();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -999,22 +999,22 @@ Sprite3DReskinTest::Sprite3DReskinTest()
|
||||||
auto listener = EventListenerTouchAllAtOnce::create();
|
auto listener = EventListenerTouchAllAtOnce::create();
|
||||||
listener->onTouchesEnded = CC_CALLBACK_2(Sprite3DReskinTest::onTouchesEnded, this);
|
listener->onTouchesEnded = CC_CALLBACK_2(Sprite3DReskinTest::onTouchesEnded, this);
|
||||||
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
||||||
TTFConfig ttfConfig("fonts/arial.ttf", 20);
|
TTFConfig ttfConfig("fonts/arial.ttf", 20);
|
||||||
auto label1 = Label::createWithTTF(ttfConfig,"Hair");
|
auto label1 = Label::createWithTTF(ttfConfig,"Hair");
|
||||||
auto item1 = MenuItemLabel::create(label1,CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchHair,this) );
|
auto item1 = MenuItemLabel::create(label1,CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchHair,this) );
|
||||||
auto label2 = Label::createWithTTF(ttfConfig,"Glasses");
|
auto label2 = Label::createWithTTF(ttfConfig,"Glasses");
|
||||||
auto item2 = MenuItemLabel::create(label2, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchGlasses,this) );
|
auto item2 = MenuItemLabel::create(label2, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchGlasses,this) );
|
||||||
auto label3 = Label::createWithTTF(ttfConfig,"Coat");
|
auto label3 = Label::createWithTTF(ttfConfig,"Coat");
|
||||||
auto item3 = MenuItemLabel::create(label3,CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchCoat,this) );
|
auto item3 = MenuItemLabel::create(label3,CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchCoat,this) );
|
||||||
auto label4 = Label::createWithTTF(ttfConfig,"Pants");
|
auto label4 = Label::createWithTTF(ttfConfig,"Pants");
|
||||||
auto item4 = MenuItemLabel::create(label4, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchPants,this) );
|
auto item4 = MenuItemLabel::create(label4, CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchPants,this) );
|
||||||
auto label5 = Label::createWithTTF(ttfConfig,"Shoes");
|
auto label5 = Label::createWithTTF(ttfConfig,"Shoes");
|
||||||
auto item5 = MenuItemLabel::create(label5,CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchShoes,this) );
|
auto item5 = MenuItemLabel::create(label5,CC_CALLBACK_1(Sprite3DReskinTest::menuCallback_switchShoes,this) );
|
||||||
item1->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height*4 ) );
|
item1->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height*4 ) );
|
||||||
item2->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height *5 ) );
|
item2->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height *5 ) );
|
||||||
item3->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height*6 ) );
|
item3->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height*6 ) );
|
||||||
item4->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height *7 ) );
|
item4->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height *7 ) );
|
||||||
item5->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height *8 ) );
|
item5->setPosition( Vec2(VisibleRect::left().x+50, VisibleRect::bottom().y+item1->getContentSize().height *8 ) );
|
||||||
auto pMenu1 = CCMenu::create(item1,item2,item3,item4,item5,NULL);
|
auto pMenu1 = CCMenu::create(item1,item2,item3,item4,item5,NULL);
|
||||||
pMenu1->setPosition(Vec2(0,0));
|
pMenu1->setPosition(Vec2(0,0));
|
||||||
this->addChild(pMenu1, 10);
|
this->addChild(pMenu1, 10);
|
||||||
|
|
|
@ -63,6 +63,7 @@ Controller g_aTestNames[] = {
|
||||||
{ "FileUtils", []() { return new FileUtilsTestScene(); } },
|
{ "FileUtils", []() { return new FileUtilsTestScene(); } },
|
||||||
{ "Fonts", []() { return new FontTestScene(); } },
|
{ "Fonts", []() { return new FontTestScene(); } },
|
||||||
{ "Interval", [](){return new IntervalTestScene(); } },
|
{ "Interval", [](){return new IntervalTestScene(); } },
|
||||||
|
{ "Node: BillBoard Test", [](){ return new BillBoardTestScene(); }},
|
||||||
{ "Node: Camera 3D Test", [](){ return new Camera3DTestScene(); }},
|
{ "Node: Camera 3D Test", [](){ return new Camera3DTestScene(); }},
|
||||||
{ "Node: Clipping", []() { return new ClippingNodeTestScene(); } },
|
{ "Node: Clipping", []() { return new ClippingNodeTestScene(); } },
|
||||||
{ "Node: Draw", [](){return new DrawPrimitivesTestScene();} },
|
{ "Node: Draw", [](){return new DrawPrimitivesTestScene();} },
|
||||||
|
|
|
@ -73,5 +73,6 @@
|
||||||
|
|
||||||
#include "Sprite3DTest/Sprite3DTest.h"
|
#include "Sprite3DTest/Sprite3DTest.h"
|
||||||
#include "Camera3DTest/Camera3DTest.h"
|
#include "Camera3DTest/Camera3DTest.h"
|
||||||
|
#include "BillBoardTest/BillBoardTest.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -137,6 +137,7 @@
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\Classes\BaseTest.cpp" />
|
<ClCompile Include="..\Classes\BaseTest.cpp" />
|
||||||
|
<ClCompile Include="..\Classes\BillBoardTest\BillBoardTest.cpp" />
|
||||||
<ClCompile Include="..\Classes\BugsTest\Bug-Child.cpp" />
|
<ClCompile Include="..\Classes\BugsTest\Bug-Child.cpp" />
|
||||||
<ClCompile Include="..\Classes\Camera3DTest\Camera3DTest.cpp" />
|
<ClCompile Include="..\Classes\Camera3DTest\Camera3DTest.cpp" />
|
||||||
<ClCompile Include="..\Classes\ChipmunkTest\ChipmunkTest.cpp" />
|
<ClCompile Include="..\Classes\ChipmunkTest\ChipmunkTest.cpp" />
|
||||||
|
@ -316,6 +317,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\Classes\BaseTest.h" />
|
<ClInclude Include="..\Classes\BaseTest.h" />
|
||||||
|
<ClInclude Include="..\Classes\BillBoardTest\BillBoardTest.h" />
|
||||||
<ClInclude Include="..\Classes\Box2DTestBed\Tests\ConvexHull.h" />
|
<ClInclude Include="..\Classes\Box2DTestBed\Tests\ConvexHull.h" />
|
||||||
<ClInclude Include="..\Classes\Box2DTestBed\Tests\ConveyorBelt.h" />
|
<ClInclude Include="..\Classes\Box2DTestBed\Tests\ConveyorBelt.h" />
|
||||||
<ClInclude Include="..\Classes\Box2DTestBed\Tests\Mobile.h" />
|
<ClInclude Include="..\Classes\Box2DTestBed\Tests\Mobile.h" />
|
||||||
|
|
|
@ -325,6 +325,9 @@
|
||||||
<Filter Include="Classes\Camera3DTest">
|
<Filter Include="Classes\Camera3DTest">
|
||||||
<UniqueIdentifier>{7f85be1c-98c5-4412-afc5-6f39ae1452a7}</UniqueIdentifier>
|
<UniqueIdentifier>{7f85be1c-98c5-4412-afc5-6f39ae1452a7}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Classes\BillBoardTest">
|
||||||
|
<UniqueIdentifier>{54a30b92-ddfb-420e-908b-886c23c21cf1}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="main.cpp">
|
<ClCompile Include="main.cpp">
|
||||||
|
@ -858,6 +861,9 @@
|
||||||
<ClCompile Include="..\Classes\UITest\CocoStudioGUITest\UIEditBoxTest.cpp">
|
<ClCompile Include="..\Classes\UITest\CocoStudioGUITest\UIEditBoxTest.cpp">
|
||||||
<Filter>Classes\UITest\CocostudioGUISceneTest</Filter>
|
<Filter>Classes\UITest\CocostudioGUISceneTest</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Classes\BillBoardTest\BillBoardTest.cpp">
|
||||||
|
<Filter>Classes\BillBoardTest</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="main.h">
|
<ClInclude Include="main.h">
|
||||||
|
@ -1589,5 +1595,8 @@
|
||||||
<ClInclude Include="..\Classes\UITest\CocoStudioGUITest\UIEditBoxTest.h">
|
<ClInclude Include="..\Classes\UITest\CocoStudioGUITest\UIEditBoxTest.h">
|
||||||
<Filter>Classes\UITest\CocostudioGUISceneTest</Filter>
|
<Filter>Classes\UITest\CocostudioGUISceneTest</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\Classes\BillBoardTest\BillBoardTest.h">
|
||||||
|
<Filter>Classes\BillBoardTest</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -136,7 +136,8 @@ skip = Node::[setGLServerState description getUserObject .*UserData getGLServerS
|
||||||
Animation3DCache::[*],
|
Animation3DCache::[*],
|
||||||
Sprite3DMaterialCache::[*],
|
Sprite3DMaterialCache::[*],
|
||||||
Sprite3DCache::[*],
|
Sprite3DCache::[*],
|
||||||
Bone3D::[*]
|
Bone3D::[*],
|
||||||
|
BillBoard::[*]
|
||||||
|
|
||||||
rename_functions = SpriteFrameCache::[addSpriteFramesWithFile=addSpriteFrames getSpriteFrameByName=getSpriteFrame],
|
rename_functions = SpriteFrameCache::[addSpriteFramesWithFile=addSpriteFrames getSpriteFrameByName=getSpriteFrame],
|
||||||
ProgressTimer::[setReverseProgress=setReverseDirection],
|
ProgressTimer::[setReverseProgress=setReverseDirection],
|
||||||
|
|
|
@ -44,7 +44,8 @@ skip = Mesh::[create getAABB],
|
||||||
Bone3D::[*],
|
Bone3D::[*],
|
||||||
Ray::[*],
|
Ray::[*],
|
||||||
AABB::[*],
|
AABB::[*],
|
||||||
OBB::[*]
|
OBB::[*],
|
||||||
|
BillBoard::[create]
|
||||||
|
|
||||||
rename_functions =
|
rename_functions =
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue