/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dali-toolkit/internal/controls/scene3d-view/gltf-shader.h>
// EXTERNAL INCLUDES
-#include <fstream>
#include <dali/integration-api/debug.h>
#include <dali/devel-api/adaptor-framework/image-loading.h>
-#include <dali/devel-api/adaptor-framework/file-loader.h>
+#include <dali/devel-api/adaptor-framework/file-stream.h>
namespace Dali
{
}
else if( node->GetType() == TreeNode::INTEGER )
{
- int32_t tempNum;
+ int32_t tempNum = 0;
ReadInt( node, tempNum );
num = static_cast<float>( tempNum );
returnValue = true;
template <typename T>
bool ReadBinFile( Vector<T> &dataBuffer, std::string url, int32_t offset, int32_t count )
{
- dataBuffer.Resize( count );
- FILE* fp = fopen( url.c_str(), "rb" );
- if( fp == NULL )
+ Dali::FileStream fileStream( url, FileStream::READ | FileStream::BINARY );
+ FILE* fp = fileStream.GetFile();
+ if( !fp )
{
return false;
}
+
+ dataBuffer.Resize( count );
ssize_t result = -1;
if( !fseek( fp, offset, SEEK_SET ) )
{
result = fread( &dataBuffer[0], sizeof( T ), count, fp );
}
- fclose( fp );
return ( result >= 0 );
}
}
template <typename T>
-PropertyBuffer CreatePropertyBuffer( Vector<T> bufferData, std::string map, int32_t type )
+VertexBuffer CreateVertexBuffer( Vector<T> bufferData, std::string map, int32_t type )
{
Property::Map positionMap;
positionMap[map] = type;
- PropertyBuffer propertyBuffer = PropertyBuffer::New( positionMap );
- propertyBuffer.SetData( bufferData.Begin(), bufferData.Count() );
- return propertyBuffer;
+ VertexBuffer vertexBuffer = VertexBuffer::New( positionMap );
+ vertexBuffer.SetData( bufferData.Begin(), bufferData.Count() );
+ return vertexBuffer;
}
void SetVertexBufferData( MeshInfo& meshInfo, std::string path, std::vector<AccessorInfo>& accessorArray, std::vector<BufferViewInfo>& bufferViewArray, std::vector<BufferInfo>& bufferArray, int32_t accessorIdx, std::string map, int32_t type )
LoadDataFromAccessor( accessorIdx, bufferData, path, accessorArray, bufferViewArray, bufferArray );
SetMeshInfoAndCanonize( meshInfo, bufferData );
- PropertyBuffer propertyBuffer = CreatePropertyBuffer<Vector3>( bufferData, map, type );
- meshInfo.geometry.AddVertexBuffer( propertyBuffer );
+ VertexBuffer vertexBuffer = CreateVertexBuffer<Vector3>( bufferData, map, type );
+ meshInfo.geometry.AddVertexBuffer( vertexBuffer );
}
}
Dali::Vector<T> bufferData;
LoadDataFromAccessor( accessorIdx, bufferData, path, accessorArray, bufferViewArray, bufferArray );
- PropertyBuffer propertyBuffer = CreatePropertyBuffer<T>( bufferData, map, type );
- meshInfo.geometry.AddVertexBuffer( propertyBuffer );
+ VertexBuffer vertexBuffer = CreateVertexBuffer<T>( bufferData, map, type );
+ meshInfo.geometry.AddVertexBuffer( vertexBuffer );
}
}
bufferData[i].z = inputBufferData[i].z;
bufferData[i].w = 1.0;
}
- PropertyBuffer propertyBuffer = CreatePropertyBuffer<Vector4>( bufferData, "aVertexColor", Property::VECTOR4 );
- meshInfo.geometry.AddVertexBuffer( propertyBuffer );
+ VertexBuffer vertexBuffer = CreateVertexBuffer<Vector4>( bufferData, "aVertexColor", Property::VECTOR4 );
+ meshInfo.geometry.AddVertexBuffer( vertexBuffer );
}
else if( accessorArray[accessorIdx].type == "VEC4" )
{
bool Loader::ParseGltf( const std::string& filePath )
{
- std::ifstream fileStream( filePath.c_str() );
- std::string fileBuffer( ( std::istreambuf_iterator<char>( fileStream ) ),
- ( std::istreambuf_iterator<char>() ) );
- mParser = Dali::Toolkit::JsonParser::New();
+ std::streampos bufferSize = 0;
+ Dali::Vector<char> buffer;
+ std::string fileBuffer;
+ if( !Dali::FileLoader::ReadFile( filePath, bufferSize, buffer, FileLoader::FileType::BINARY ) )
+ {
+ return false;
+ }
+ fileBuffer.assign( &buffer[0], bufferSize );
+ mParser = Dali::Toolkit::JsonParser::New();
return mParser.Parse( fileBuffer );
}
}
CameraActor cameraActor = CameraActor::New();
- cameraActor.SetParentOrigin( ParentOrigin::CENTER );
- cameraActor.SetAnchorPoint( AnchorPoint::CENTER );
+ cameraActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+ cameraActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
if( cameraInfo.type == "orthographic" )
{
for( auto nodeIter = tempNode->CBegin(), end = tempNode->CEnd(); nodeIter != end; ++nodeIter )
{
Actor actor = AddNode( scene3dView, ( ( *nodeIter ).second ).GetInteger() );
- actor.SetParentOrigin( ParentOrigin::CENTER );
+ actor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
scene3dView.GetRoot().Add( actor );
}
renderer.SetTextures( textureSet );
anchorPoint = meshInfo.pivot;
- actor.SetAnchorPoint( anchorPoint );
+ actor.SetProperty( Actor::Property::ANCHOR_POINT, anchorPoint );
- actor.SetSize( Vector3( meshInfo.size.x, meshInfo.size.y, meshInfo.size.z ) );
+ actor.SetProperty( Actor::Property::SIZE, Vector3( meshInfo.size.x, meshInfo.size.y, meshInfo.size.z ) );
actor.AddRenderer( renderer );
- actor.SetScale( scale );
+ actor.SetProperty( Actor::Property::SCALE, scale );
actor.RotateBy( orientation );
- actor.SetPosition( translation );
+ actor.SetProperty( Actor::Property::POSITION, translation );
shader.RegisterProperty( "uLightType", ( scene3dView.GetLightType() & ~Toolkit::Scene3dView::LightType::IMAGE_BASED_LIGHT ) );
shader.RegisterProperty( "uLightVector", scene3dView.GetLightVector() );
}
else
{
- actor.SetAnchorPoint( AnchorPoint::CENTER );
- actor.SetPosition( translation );
+ actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
+ actor.SetProperty( Actor::Property::POSITION, translation );
actor.RotateBy( orientation );
- actor.SetSize( actorSize );
+ actor.SetProperty( Actor::Property::SIZE, actorSize );
}
tempNode = node->GetChild( "camera" );
{
std::string nameString;
ReadString( tempNode, nameString );
- actor.SetName( nameString );
+ actor.SetProperty( Dali::Actor::Property::NAME, nameString );
}
SetActorCache( actor, index );
for( auto childIter = tempNode->CBegin(), end = tempNode->CEnd(); childIter != end; ++childIter )
{
Actor childActor = AddNode( scene3dView, ( ( *childIter ).second ).GetInteger() );
- childActor.SetParentOrigin( anchorPoint );
+ childActor.SetProperty( Actor::Property::PARENT_ORIGIN, anchorPoint );
actor.Add( childActor );
}
}
}
Animation animation = Animation::New( duration );
- Animation::Interpolation interpolation = Animation::Interpolation::Linear;
+ Animation::Interpolation interpolation = Animation::Interpolation::LINEAR;
if( animationInfo.samplerArray[currentChannel.sampler].interpolation == "CUBICSPLINE" )
{
- interpolation = Animation::Interpolation::Cubic;
+ interpolation = Animation::Interpolation::CUBIC;
}
if( animationInfo.samplerArray[currentChannel.sampler].interpolation == "STEP" )
{