예제 #1
0
Transformation<real> SceneImporter<real>::ReadTransformation( std::istream& stream )
{
	Transformation<real> transformation;

	ReadNextExactToken( stream, "Transformation" );
	ReadNextExactToken( stream, "(" );

	if ( TryReadClosingParenthesis( stream ) )
		return transformation;

	Vector3<real> rotation = ReadVector3( stream ); ReadNextExactToken( stream, "," );
	Vector3<real> translation = ReadVector3( stream ); ReadNextExactToken( stream, "," );
	Vector3<real> scale = ReadVector3( stream );
	ReadNextExactToken( stream, ")" );

	transformation.RotateX( rotation.X() );
	transformation.RotateY( rotation.Y() );
	transformation.RotateZ( rotation.Z() );
	transformation.SetTranslation( translation );
	transformation.SetScaleX( scale.X() );
	transformation.SetScaleY( scale.Y() );
	transformation.SetScaleZ( scale.Z() );

	return transformation;
}
예제 #2
0
BoundingBox Deserializer::ReadBoundingBox()
{
    BoundingBox ret;
    ret.min_ = ReadVector3();
    ret.max_ = ReadVector3();
    ret.defined_ = true;
    return ret;
}
예제 #3
0
Camera<real>* SceneImporter<real>::ReadTurntableCamera( std::istream& stream, const std::string& name )
{
	TurntableCamera<real>* camera = new TurntableCamera<real>();

	camera->SetName( name );
	ReadCameraHeader( stream, camera ); ReadNextExactToken( stream, "," );
	camera->SetCenter( ReadVector3( stream ) ); ReadNextExactToken( stream, "," );
	camera->SetRotationThetaAxis( ReadVector3( stream ) ); ReadNextExactToken( stream, "," );
	camera->SetRotationPhiAxis( ReadVector3( stream ) ); ReadNextExactToken( stream, "," );
	camera->SetRotationPhi( ReadReal( stream ) ); ReadNextExactToken( stream, "," );
	camera->SetRotationTheta( ReadReal( stream ) ); ReadNextExactToken( stream, "," );
	camera->SetDistance( ReadReal( stream ) );

	return camera;
}
예제 #4
0
Variant Deserializer::ReadVariant(VariantType type)
{
    switch (type)
    {
    case VAR_INT:
        return Variant(ReadInt());
        
    case VAR_BOOL:
        return Variant(ReadBool());
        
    case VAR_FLOAT:
        return Variant(ReadFloat());
        
    case VAR_VECTOR2:
        return Variant(ReadVector2());
        
    case VAR_VECTOR3:
        return Variant(ReadVector3());
        
    case VAR_VECTOR4:
        return Variant(ReadVector4());
        
    case VAR_QUATERNION:
        return Variant(ReadQuaternion());
        
    case VAR_COLOR:
        return Variant(ReadColor());
        
    case VAR_STRING:
        return Variant(ReadString());
        
    case VAR_BUFFER:
        return Variant(ReadBuffer());
        
    case VAR_PTR:
        ReadUInt();
        return Variant((void*)0);
        
    case VAR_RESOURCEREF:
        return Variant(ReadResourceRef());
        
    case VAR_RESOURCEREFLIST:
        return Variant(ReadResourceRefList());
        
    case VAR_VARIANTVECTOR:
        return Variant(ReadVariantVector());
        
    case VAR_VARIANTMAP:
        return Variant(ReadVariantMap());
        
    case VAR_INTRECT:
        return Variant(ReadIntRect());
        
    case VAR_INTVECTOR2:
        return Variant(ReadIntVector2());
        
    default:
        return Variant();
    }
}
예제 #5
0
Light<real>* SceneImporter<real>::ReadDirectionalLight( std::istream& stream, const std::string& name )
{
	DirectionalLight<real>* light = new DirectionalLight<real>;
	light->SetName( name );

	ReadLightHeader( stream, light ); ReadNextExactToken( stream, "," );

	light->SetDirection( ReadVector3( stream ) );

	return light;
}
예제 #6
0
Variant Deserializer::ReadVariant(VariantType type)
{
    switch (type)
    {
    case VAR_INT:
        return Variant(ReadInt());

    case VAR_BOOL:
        return Variant(ReadBool());

    case VAR_FLOAT:
        return Variant(ReadFloat());

    case VAR_VECTOR2:
        return Variant(ReadVector2());

    case VAR_VECTOR3:
        return Variant(ReadVector3());

    case VAR_VECTOR4:
        return Variant(ReadVector4());

    case VAR_QUATERNION:
        return Variant(ReadQuaternion());

    case VAR_COLOR:
        return Variant(ReadColor());

    case VAR_STRING:
        return Variant(ReadString());

    case VAR_BUFFER:
        return Variant(ReadBuffer());

        // Deserializing pointers is not supported. Return null
    case VAR_VOIDPTR:
    case VAR_PTR:
        ReadUInt();
        return Variant((void*)0);

    case VAR_RESOURCEREF:
        return Variant(ReadResourceRef());

    case VAR_RESOURCEREFLIST:
        return Variant(ReadResourceRefList());

    case VAR_VARIANTVECTOR:
        return Variant(ReadVariantVector());

    case VAR_STRINGVECTOR:
        return Variant(ReadStringVector());

    case VAR_VARIANTMAP:
        return Variant(ReadVariantMap());

    case VAR_INTRECT:
        return Variant(ReadIntRect());

    case VAR_INTVECTOR2:
        return Variant(ReadIntVector2());

    case VAR_MATRIX3:
        return Variant(ReadMatrix3());

    case VAR_MATRIX3X4:
        return Variant(ReadMatrix3x4());

    case VAR_MATRIX4:
        return Variant(ReadMatrix4());

    case VAR_DOUBLE:
        return Variant(ReadDouble());

    default:
        return Variant();
    }
}