Add CocosStudio UserCameraReader

fix Sprite3DReader Test
This commit is contained in:
Ray 2015-02-25 14:19:08 +08:00
parent bd64321e30
commit c66a4f28bc
27 changed files with 382 additions and 28 deletions

View File

@ -828,6 +828,10 @@
182C5CD71A98F30500C30D34 /* Sprite3DReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 182C5CD41A98F30500C30D34 /* Sprite3DReader.cpp */; };
182C5CD81A98F30500C30D34 /* Sprite3DReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 182C5CD51A98F30500C30D34 /* Sprite3DReader.h */; };
182C5CD91A98F30500C30D34 /* Sprite3DReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 182C5CD51A98F30500C30D34 /* Sprite3DReader.h */; };
182C5CE51A9D725400C30D34 /* UserCameraReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 182C5CE31A9D725400C30D34 /* UserCameraReader.cpp */; };
182C5CE61A9D725400C30D34 /* UserCameraReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 182C5CE31A9D725400C30D34 /* UserCameraReader.cpp */; };
182C5CE71A9D725400C30D34 /* UserCameraReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 182C5CE41A9D725400C30D34 /* UserCameraReader.h */; };
182C5CE81A9D725400C30D34 /* UserCameraReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 182C5CE41A9D725400C30D34 /* UserCameraReader.h */; };
1A01C68418F57BE800EFE3A6 /* CCArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A01C67618F57BE800EFE3A6 /* CCArray.cpp */; };
1A01C68518F57BE800EFE3A6 /* CCArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A01C67618F57BE800EFE3A6 /* CCArray.cpp */; };
1A01C68618F57BE800EFE3A6 /* CCArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A01C67718F57BE800EFE3A6 /* CCArray.h */; };
@ -2451,6 +2455,8 @@
182C5CB11A95964700C30D34 /* Node3DReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Node3DReader.h; path = Node3DReader/Node3DReader.h; sourceTree = "<group>"; };
182C5CD41A98F30500C30D34 /* Sprite3DReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sprite3DReader.cpp; path = Sprite3DReader/Sprite3DReader.cpp; sourceTree = "<group>"; };
182C5CD51A98F30500C30D34 /* Sprite3DReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sprite3DReader.h; path = Sprite3DReader/Sprite3DReader.h; sourceTree = "<group>"; };
182C5CE31A9D725400C30D34 /* UserCameraReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UserCameraReader.cpp; path = UserCameraReader/UserCameraReader.cpp; sourceTree = "<group>"; };
182C5CE41A9D725400C30D34 /* UserCameraReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserCameraReader.h; path = UserCameraReader/UserCameraReader.h; sourceTree = "<group>"; };
1A01C67618F57BE800EFE3A6 /* CCArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCArray.cpp; sourceTree = "<group>"; };
1A01C67718F57BE800EFE3A6 /* CCArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCArray.h; sourceTree = "<group>"; };
1A01C67818F57BE800EFE3A6 /* CCBool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCBool.h; sourceTree = "<group>"; };
@ -3804,6 +3810,15 @@
name = Sprite3DReader;
sourceTree = "<group>";
};
182C5CE21A9D70C000C30D34 /* UserCameraReader */ = {
isa = PBXGroup;
children = (
182C5CE31A9D725400C30D34 /* UserCameraReader.cpp */,
182C5CE41A9D725400C30D34 /* UserCameraReader.h */,
);
name = UserCameraReader;
sourceTree = "<group>";
};
1A01C67518F57BE800EFE3A6 /* deprecated */ = {
isa = PBXGroup;
children = (
@ -5647,6 +5662,7 @@
50FCEB6818C72017004AD434 /* WidgetReader */ = {
isa = PBXGroup;
children = (
182C5CE21A9D70C000C30D34 /* UserCameraReader */,
182C5CD31A98F2F400C30D34 /* Sprite3DReader */,
182C5CAF1A95961E00C30D34 /* Node3DReader */,
38F5263A1A48363B000DB7F7 /* ArmatureNodeReader */,
@ -6369,6 +6385,7 @@
1A570204180BCBD40088DEC7 /* CCClippingNode.h in Headers */,
15AE1A7B19AAD40300C27E9E /* b2PolygonContact.h in Headers */,
15AE1A2919AAD3D500C27E9E /* b2Collision.h in Headers */,
182C5CE71A9D725400C30D34 /* UserCameraReader.h in Headers */,
38B8E2D719E66581002D7CE7 /* CSLoader.h in Headers */,
50643BE419BFCF1800EF68ED /* CCPlatformMacros.h in Headers */,
15AE184219AAD2F700C27E9E /* CCSprite3D.h in Headers */,
@ -6941,6 +6958,7 @@
15AE1C0219AAE01E00C27E9E /* CCScrollView.h in Headers */,
B6877AA11A8CA8A700643ABF /* CCPUParticle3DColorAffectorTranslator.h in Headers */,
1A5701A8180BCB590088DEC7 /* CCFontAtlasCache.h in Headers */,
182C5CE81A9D725400C30D34 /* UserCameraReader.h in Headers */,
15AE1A4C19AAD3D500C27E9E /* b2EdgeShape.h in Headers */,
1A5701B4180BCB590088DEC7 /* CCFontFNT.h in Headers */,
B6877ABD1A8CA8A700643ABF /* CCPUParticle3DGravityAffector.h in Headers */,
@ -7664,6 +7682,7 @@
B6877ACA1A8CA8A700643ABF /* CCPUParticle3DJetAffector.cpp in Sources */,
B6877A7A1A8CA8A700643ABF /* CCPUParticle3DBaseCollider.cpp in Sources */,
B63990CC1A490AFE00B07923 /* CCAsyncTaskPool.cpp in Sources */,
182C5CE51A9D725400C30D34 /* UserCameraReader.cpp in Sources */,
1A5701EA180BCB8C0088DEC7 /* CCTransitionPageTurn.cpp in Sources */,
15AE186B19AAD31D00C27E9E /* SimpleAudioEngine.mm in Sources */,
50ABBDAD1925AB4100A911A9 /* CCRenderer.cpp in Sources */,
@ -8020,6 +8039,7 @@
B68779371A8CA84900643ABF /* CCPUParticle3DForceField.cpp in Sources */,
B29A7E1C19EE1B7700872B35 /* SkeletonJson.c in Sources */,
B2CC507C19776DD10041958E /* CCPhysicsJoint.cpp in Sources */,
182C5CE61A9D725400C30D34 /* UserCameraReader.cpp in Sources */,
38B8E2E219E671D2002D7CE7 /* UILayoutComponent.cpp in Sources */,
B2165EEA19921124000BE3E6 /* CCPrimitiveCommand.cpp in Sources */,
15AE185C19AAD31200C27E9E /* CDOpenALSupport.m in Sources */,

View File

@ -490,6 +490,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\TextReader\TextReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\Node3DReader\Node3DReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\WidgetReader.cpp" />
<ClCompile Include="..\math\CCAffineTransform.cpp" />
<ClCompile Include="..\math\CCGeometry.cpp" />
@ -994,6 +995,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\TextReader\TextReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\Node3DReader\Node3DReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\WidgetReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\WidgetReaderProtocol.h" />
<ClInclude Include="..\math\CCAffineTransform.h" />

View File

@ -160,6 +160,9 @@
<Filter Include="cocostudio\reader\WidgetReader\Node3DReader">
<UniqueIdentifier>{9421ece2-69f8-4cee-8e59-51043ba06f15}</UniqueIdentifier>
</Filter>
<Filter Include="cocostudio\reader\WidgetReader\UserCameraReader">
<UniqueIdentifier>{9421e104-69f8-4cee-8e59-51043ba06f15}</UniqueIdentifier>
</Filter>
<Filter Include="cocostudio\reader\WidgetReader\Sprite3DReader">
<UniqueIdentifier>{94210432-69f8-4cee-8e59-51043ba06f15}</UniqueIdentifier>
</Filter>
@ -988,6 +991,9 @@
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.cpp">
<Filter>cocostudio\reader\WidgetReader\Sprite3DReader</Filter>
</ClCompile>
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.cpp">
<Filter>cocostudio\reader\WidgetReader\UserCameraReader</Filter>
</ClCompile>
<ClCompile Include="..\editor-support\cocostudio\CocoLoader.cpp">
<Filter>cocostudio\json</Filter>
</ClCompile>
@ -2452,6 +2458,9 @@
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\Node3DReader\Node3DReader.h">
<Filter>cocostudio\reader\WidgetReader\Node3DReader</Filter>
</ClInclude>
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.h">
<Filter>cocostudio\reader\WidgetReader\UserCameraReader</Filter>
</ClInclude>
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.h">
<Filter>cocostudio\reader\WidgetReader\Sprite3DReader</Filter>
</ClInclude>

View File

@ -516,6 +516,7 @@
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\TextReader\TextReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\Node3DReader\Node3DReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\WidgetReader.h" />
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\WidgetReaderProtocol.h" />
<ClInclude Include="..\math\CCAffineTransform.h" />
@ -1097,6 +1098,7 @@
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\TextReader\TextReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\Node3DReader\Node3DReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.cpp" />
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\WidgetReader.cpp" />
<ClCompile Include="..\math\CCAffineTransform.cpp" />
<ClCompile Include="..\math\CCGeometry.cpp" />

View File

@ -128,6 +128,9 @@
<Filter Include="cocostudio\reader\WidgetReader\Node3DReader">
<UniqueIdentifier>{89da718e-f2fa-4437-83e8-40104f6fc3a2}</UniqueIdentifier>
</Filter>
<Filter Include="cocostudio\reader\WidgetReader\UserCameraReader">
<UniqueIdentifier>{89da718e-f2fa-1043-83e8-40104f6fc3a2}</UniqueIdentifier>
</Filter>
<Filter Include="cocostudio\reader\WidgetReader\Sprite3DReader">
<UniqueIdentifier>{8910718e-f2fa-4437-83e8-40104f6fc3a2}</UniqueIdentifier>
</Filter>
@ -1031,6 +1034,9 @@
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.cpp">
<Filter>cocostudio\reader\WidgetReader\Sprite3DReader</Filter>
</ClCompile>
<ClCompile Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.cpp">
<Filter>cocostudio\reader\WidgetReader\UserCameraReader</Filter>
</ClCompile>
<ClCompile Include="..\editor-support\cocostudio\CocoLoader.cpp">
<Filter>cocostudio\json</Filter>
</ClCompile>
@ -2531,6 +2537,9 @@
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\Sprite3DReader\Sprite3DReader.h">
<Filter>cocostudio\reader\WidgetReader\Sprite3DReader</Filter>
</ClInclude>
<ClInclude Include="..\editor-support\cocostudio\WidgetReader\UserCameraReader\UserCameraReader.h">
<Filter>cocostudio\reader\WidgetReader\UserCameraReader</Filter>
</ClInclude>
<ClInclude Include="..\editor-support\cocostudio\CocoLoader.h">
<Filter>cocostudio\json</Filter>
</ClInclude>

View File

@ -61,6 +61,7 @@
#include "cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.h"
#include "cocostudio/WidgetReader/Node3DReader/Node3DReader.h"
#include "cocostudio/WidgetReader/Sprite3DReader/Sprite3DReader.h"
#include "cocostudio/WidgetReader/UserCameraReader/UserCameraReader.h"
#include "flatbuffers/flatbuffers.h"
#include "flatbuffers/util.h"
@ -208,6 +209,7 @@ CSLoader::CSLoader()
CREATE_CLASS_NODE_READER_INFO(ArmatureNodeReader);
CREATE_CLASS_NODE_READER_INFO(Node3DReader);
CREATE_CLASS_NODE_READER_INFO(Sprite3DReader);
CREATE_CLASS_NODE_READER_INFO(UserCameraReader);
}
void CSLoader::purge()

View File

@ -63,6 +63,7 @@ WidgetReader/TextFieldReader/TextFieldReader.cpp \
WidgetReader/TextReader/TextReader.cpp \
WidgetReader/Node3DReader/Node3DReader.cpp \
WidgetReader/Sprite3DReader/Sprite3DReader.cpp \
WidgetReader/UserCameraReader/UserCameraReader.cpp \
ActionTimeline/CCNodeReader.cpp \
ActionTimeline/CCActionTimelineCache.cpp \
ActionTimeline/CCFrame.cpp \

View File

@ -60,6 +60,7 @@ set(COCOS_CS_SRC
editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.cpp
editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp
editor-support/cocostudio/WidgetReader/Node3DReader/Node3DReader.cpp
editor-support/cocostudio/WidgetReader/UserCameraReader/UserCameraReader.cpp
editor-support/cocostudio/WidgetReader/Sprite3DReader/Sprite3DReader.cpp
editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp
editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp

View File

@ -220,16 +220,16 @@ inline flatbuffers::Offset<Particle3DOptions> CreateParticle3DOptions(flatbuffer
struct UserCameraOptions : private flatbuffers::Table {
const Node3DOption *node3DOption() const { return GetPointer<const Node3DOption *>(4); }
float fov() const { return GetField<float>(6, 60); }
float near() const { return GetField<float>(8, 1); }
float far() const { return GetField<float>(10, 1000); }
float nearClip() const { return GetField<float>(8, 1); }
float farClip() const { return GetField<float>(10, 1000); }
int32_t cameraFlag() const { return GetField<int32_t>(12, 0); }
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<flatbuffers::uoffset_t>(verifier, 4 /* node3DOption */) &&
verifier.VerifyTable(node3DOption()) &&
VerifyField<float>(verifier, 6 /* fov */) &&
VerifyField<float>(verifier, 8 /* near */) &&
VerifyField<float>(verifier, 10 /* far */) &&
VerifyField<float>(verifier, 8 /* nearClip */) &&
VerifyField<float>(verifier, 10 /* farClip */) &&
VerifyField<int32_t>(verifier, 12 /* cameraFlag */) &&
verifier.EndTable();
}
@ -240,8 +240,8 @@ struct UserCameraOptionsBuilder {
flatbuffers::uoffset_t start_;
void add_node3DOption(flatbuffers::Offset<Node3DOption> node3DOption) { fbb_.AddOffset(4, node3DOption); }
void add_fov(float fov) { fbb_.AddElement<float>(6, fov, 60); }
void add_near(float near) { fbb_.AddElement<float>(8, near, 1); }
void add_far(float far) { fbb_.AddElement<float>(10, far, 1000); }
void add_nearClip(float nearClip) { fbb_.AddElement<float>(8, nearClip, 1); }
void add_farClip(float farClip) { fbb_.AddElement<float>(10, farClip, 1000); }
void add_cameraFlag(int32_t cameraFlag) { fbb_.AddElement<int32_t>(12, cameraFlag, 0); }
UserCameraOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); }
UserCameraOptionsBuilder &operator=(const UserCameraOptionsBuilder &);
@ -254,13 +254,13 @@ struct UserCameraOptionsBuilder {
inline flatbuffers::Offset<UserCameraOptions> CreateUserCameraOptions(flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<Node3DOption> node3DOption = 0,
float fov = 60,
float near = 1,
float far = 1000,
float nearClip = 1,
float farClip = 1000,
int32_t cameraFlag = 0) {
UserCameraOptionsBuilder builder_(_fbb);
builder_.add_cameraFlag(cameraFlag);
builder_.add_far(far);
builder_.add_near(near);
builder_.add_farClip(farClip);
builder_.add_nearClip(nearClip);
builder_.add_fov(fov);
builder_.add_node3DOption(node3DOption);
return builder_.Finish();

View File

@ -59,4 +59,4 @@ namespace cocostudio
};
}
#endif /* defined(__cocos2d_libs__SpriteReader__) */
#endif /* defined(__cocos2d_libs__Node3DReader__) */

View File

@ -59,4 +59,4 @@ namespace cocostudio
};
}
#endif /* defined(__cocos2d_libs__SpriteReader__) */
#endif /* defined(__cocos2d_libs__Sprite3DReader__) */

View File

@ -0,0 +1,185 @@
/****************************************************************************
Copyright (c) 2014 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.
****************************************************************************/
#include "UserCameraReader.h"
#include "cocostudio/CSParseBinary_generated.h"
#include "cocostudio/CSParse3DBinary_generated.h"
#include "cocostudio/FlatBuffersSerialize.h"
#include "cocostudio/WidgetReader/Node3DReader/Node3DReader.h"
#include "tinyxml2.h"
#include "flatbuffers/flatbuffers.h"
USING_NS_CC;
using namespace flatbuffers;
namespace cocostudio
{
IMPLEMENT_CLASS_NODE_READER_INFO(UserCameraReader)
UserCameraReader::UserCameraReader()
{
}
UserCameraReader::~UserCameraReader()
{
}
static UserCameraReader* _instanceUserCameraReader = nullptr;
UserCameraReader* UserCameraReader::getInstance()
{
if (!_instanceUserCameraReader)
{
_instanceUserCameraReader = new UserCameraReader();
}
return _instanceUserCameraReader;
}
void UserCameraReader::purge()
{
CC_SAFE_DELETE(_instanceUserCameraReader);
}
Vec2 UserCameraReader::getVec2Attribute(const tinyxml2::XMLAttribute* attribute) const
{
if(!attribute)
return Vec2::ZERO;
Vec2 ret(Vec2::ZERO);
std::string attriname;
while (attribute)
{
attriname = attribute->Name();
std::string value = attribute->Value();
if (attriname == "ValueX")
{
ret.x = atof(value.c_str());
}
else if (attriname == "ValueY")
{
ret.y = atof(value.c_str());
}
attribute = attribute->Next();
}
return ret;
}
Offset<Table> UserCameraReader::createOptionsWithFlatBuffers(const tinyxml2::XMLElement *objectData,
flatbuffers::FlatBufferBuilder *builder)
{
auto temp = Node3DReader::getInstance()->createOptionsWithFlatBuffers(objectData, builder);
auto node3DOptions = *(Offset<Node3DOption>*)(&temp);
float fov = 60.f;
unsigned int cameraFlag = 0;
std::string attriname;
const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute();
while(attribute)
{
attriname = attribute->Name();
std::string value = attribute->Value();
if(attriname == "Fov")
{
fov = atof(value.c_str());
}
else if(attriname == "UserCameraFlagMode")
{
if(value == "DEFAULT") cameraFlag = 1;
else if(value == "USER1") cameraFlag = 1 << 1;
else if(value == "USER2") cameraFlag = 1 << 2;
else if(value == "USER3") cameraFlag = 1 << 3;
}
attribute = attribute->Next();
}
Vec2 clipPlane(1, 1000);
// FileData
const tinyxml2::XMLElement* child = objectData->FirstChildElement();
while (child)
{
std::string name = child->Name();
if (name == "ClipPlane")
{
attribute = child->FirstAttribute();
clipPlane = getVec2Attribute(attribute);
break;
}
child = child->NextSiblingElement();
}
auto options = CreateUserCameraOptions(*builder,
node3DOptions,
fov,
clipPlane.x,
clipPlane.y,
cameraFlag
);
return *(Offset<Table>*)(&options);
}
void UserCameraReader::setPropsWithFlatBuffers(cocos2d::Node *node,
const flatbuffers::Table* userCameraDOptions)
{
auto options = (UserCameraOptions*)userCameraDOptions;
Camera* camera = static_cast<Camera*>(node);
int cameraFlag = options->cameraFlag();
camera->setCameraFlag((CameraFlag)cameraFlag);
auto node3DReader = Node3DReader::getInstance();
node3DReader->setPropsWithFlatBuffers(node, (Table*)(options->node3DOption()));
}
Node* UserCameraReader::createNodeWithFlatBuffers(const flatbuffers::Table *userCameraDOptions)
{
auto options = (UserCameraOptions*)userCameraDOptions;
float fov = options->fov();
float nearClip = options->nearClip();
float farClip = options->farClip();
auto size = Director::getInstance()->getWinSize();
Camera* camera = Camera::createPerspective(fov, size.width / size.height, nearClip, farClip);
setPropsWithFlatBuffers(camera, userCameraDOptions);
return camera;
}
}

View File

@ -0,0 +1,62 @@
/****************************************************************************
Copyright (c) 2014 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 __cocos2d_libs__UserCameraReader__
#define __cocos2d_libs__UserCameraReader__
#include "cocos2d.h"
#include "cocostudio/CocosStudioExport.h"
#include "cocostudio/WidgetReader/NodeReaderProtocol.h"
#include "cocostudio/WidgetReader/NodeReaderDefine.h"
namespace tinyxml2
{
class XMLAttribute;
}
namespace cocostudio
{
class CC_STUDIO_DLL UserCameraReader : public cocos2d::Ref, public NodeReaderProtocol
{
DECLARE_CLASS_NODE_READER_INFO
public:
UserCameraReader();
~UserCameraReader();
static UserCameraReader* getInstance();
static void purge();
flatbuffers::Offset<flatbuffers::Table> createOptionsWithFlatBuffers(const tinyxml2::XMLElement* objectData,
flatbuffers::FlatBufferBuilder* builder);
void setPropsWithFlatBuffers(cocos2d::Node* node, const flatbuffers::Table* userCameraOptions);
cocos2d::Node* createNodeWithFlatBuffers(const flatbuffers::Table* userCameraOptions);
protected:
cocos2d::Vec2 getVec2Attribute(const tinyxml2::XMLAttribute* attribute) const;
};
}
#endif /* defined(__cocos2d_libs__UserCameraReader__) */

View File

@ -39,7 +39,8 @@ static int sceneIdx = -1;
static std::function<Layer*()> createFunctions[] =
{
CL(CSNode3DTest),
CL(CSSprite3DTest)
CL(CSSprite3DTest),
CL(CSUserCameraTest)
};
#define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0]))
@ -176,6 +177,33 @@ std::string CSSprite3DTest::subtitle() const
return "";
}
//------------------------------------------------------------------
//
// CSUserCameraTest
//
//------------------------------------------------------------------
CSUserCameraTest::CSUserCameraTest()
{
auto node = CSLoader::createNode("CocosStudio3DTest/UserCamera.csb");
auto sprite3D = Sprite3D::create("CocosStudio3DTest/dragon/dragon.c3b");
sprite3D->setPosition3D(Vec3(100, 95, 80));
sprite3D->setCameraMask((unsigned int)CameraFlag::USER1);
addChild(node);
addChild(sprite3D);
}
std::string CSUserCameraTest::title() const
{
return "UserCameraReader Test";
}
std::string CSUserCameraTest::subtitle() const
{
return "";
}
//------------------------------------------------------------------
//

View File

@ -65,7 +65,15 @@ public:
CSSprite3DTest();
virtual std::string title() const override;
virtual std::string subtitle() const override;
};
class CSUserCameraTest : public CocosStudio3DTestDemo
{
public:
CREATE_FUNC(CSUserCameraTest);
CSUserCameraTest();
virtual std::string title() const override;
virtual std::string subtitle() const override;
};
class CS3DTestScene : public TestScene

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

View File

@ -8,12 +8,12 @@ CSNode3DTest.__index = CSNode3DTest
function CSNode3DTest.create()
local layer = cc.Layer:create()
Helper.initWithLayer(layer)
Helper.titleLabel:setString("Testing Node3D")
Helper.titleLabel:setString("Node3DReader Test")
local node = cc.CSLoader:createNode("CocosStudio3DTest/Node3D.csb");
layer:addChild(node);
return layer
return layer;
end
----------------------------------------
@ -26,18 +26,42 @@ CSSprite3DTest.__index = CSSprite3DTest
function CSSprite3DTest.create()
local layer = cc.Layer:create()
Helper.initWithLayer(layer)
Helper.titleLabel:setString("Testing Node3D")
Helper.titleLabel:setString("Sprite3DReader Test")
local node = cc.CSLoader:createNode("CocosStudio3DTest/Sprite3D.csb");
local node = cc.CSLoader:createNode("CocosStudio3DTest/Sprite3D.csb")
local sprite3D = node:getChildByTag(8);
local size = cc.Director:getInstance():getWinSize();
local sprite3D = node:getChildByTag(8)
local size = cc.Director:getInstance():getWinSize()
sprite3D:setPosition(size.width / 2, size.height / 2 - 50);
sprite3D:setColor(cc.c3b(255, 255, 255));
sprite3D:setOpacity(255);
sprite3D:setPosition(size.width / 2, size.height / 2 - 50)
sprite3D:setColor(cc.c3b(255, 255, 255))
sprite3D:setOpacity(255)
layer:addChild(node);
layer:addChild(node)
return layer
end
----------------------------------------
----CSUserCameraTest
----------------------------------------
local CSUserCameraTest = {}
CSUserCameraTest.__index = CSUserCameraTest
function CSUserCameraTest.create()
local layer = cc.Layer:create()
Helper.initWithLayer(layer)
Helper.titleLabel:setString("UserCameraReader Test")
local node = cc.CSLoader:createNode("CocosStudio3DTest/UserCamera.csb")
local sprite3D = cc.Sprite3D:create("CocosStudio3DTest/dragon/dragon.c3b")
sprite3D:setPosition3D(cc.vec3(100, 95, 80))
sprite3D:setCameraMask(cc.CameraFlag.USER1)
layer:addChild(node)
layer:addChild(sprite3D)
return layer
end
@ -48,7 +72,8 @@ function CocosStudio3DTest()
Helper.createFunctionTable =
{
CSNode3DTest.create,
CSSprite3DTest.create
CSSprite3DTest.create,
CSUserCameraTest.create
}
scene:addChild(CSNode3DTest.create())