#include "fsCNativeLine.h"
#include <base/CCDirector.h>
#include <2d/CCDrawNode.h>
#include <fsCore/fsSColour.h>
#include <fsCore/fsAffineMtx2d.h>
void fsCNativeLine::renderDo()
{
mImpl->visit(cocos2d::Director::getInstance()->getRenderer(), mRenderMatrix, cocos2d::Node::FLAGS_TRANSFORM_DIRTY);
}
void fsCNativeLine::alphaBlendModeSetDo(fsS32 pAlphaBlendMode)
{
// if (fsCMaterial::eALPHA_ADD == pAlphaBlendMode)
// {
// mImpl->setBlendFunc(cocos2d::BlendFunc::ALPHA_PREMULTIPLIED);
// }
// mImpl->setOpacityModifyRGB(true);
}
void fsCNativeLine::vertsSetDo(std::vector<fsVec2d> const& pVerts)
{
mRawVerts.clear();
for (auto vert : pVerts)
{
mRawVerts.push_back(cocos2d::Vec2(vert.x, vert.y));<--- Consider using std::transform algorithm instead of a raw loop.
}
mImpl->clear();
mImpl->drawPoly(&mRawVerts[0], mRawVerts.size(), false, cocos2d::Color4F::MAGENTA);
}
cocos2d::Node* fsCNativeLine::implGet() const
{
return mImpl;
}
void fsCNativeLine::matrixApplyDo(const fsAffineMtx2d& pRenderMatrix)
{
mRenderMatrix.m[12] = pRenderMatrix.get(0, 2);
mRenderMatrix.m[13] = pRenderMatrix.get(1, 2);
mRenderMatrix.m[0] = pRenderMatrix.get(0, 0);
mRenderMatrix.m[1] = pRenderMatrix.get(1, 0);
mRenderMatrix.m[4] = pRenderMatrix.get(0, 1);
mRenderMatrix.m[5] = pRenderMatrix.get(1, 1);
}
void fsCNativeLine::colourSetDo(const fsSColour4B& pColour)
{
mImpl->setOpacity(pColour.mA);
mImpl->setColor(cocos2d::Color3B(pColour.mR, pColour.mG, pColour.mB));
}
fsCNativeLine::fsCNativeLine():
fsINative(),
mRawVerts(2)
{
mImpl = cocos2d::DrawNode::create();
mImpl->retain();
}
fsCNativeLine::~fsCNativeLine()
{
if (mImpl->getParent())
{
mImpl->removeFromParentAndCleanup(true);
}
mImpl->release();
mImpl = nullptr;
}