本文整理汇总了C++中Renderable::setDrawable方法的典型用法代码示例。如果您正苦于以下问题:C++ Renderable::setDrawable方法的具体用法?C++ Renderable::setDrawable怎么用?C++ Renderable::setDrawable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Renderable
的用法示例。
在下文中一共展示了Renderable::setDrawable方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadExit
void Level::loadExit(MvUint tileX, MvUint tileY)
{
LOGME_CALL("Level::loadExit");
LOGME_DEBUG("Exit at %d, %d", tileX, tileY);
auto e = mEcsContext.e();
auto c = mEcsContext.c();
EngineContext& ctx = mEngineContext;
MvAnimation::Ptr aSpawn(new MvAnimation(RepeatMode::Loop));
for (int i = 0; i < 3; ++i) {
StaticDrawable::Ptr ptr(new StaticDrawable(ctx, Tex::Blob, BlueSpawn[i]));
aSpawn->addDrawable(std::move(ptr));
aSpawn->addFrame(i, sf::milliseconds(240));
}
Entity eSpawn = createEntity();
CrawlComponents& cSpawn = c->attach<Transform, Renderable, Sensor>(eSpawn);
Renderable* cRenderable = cSpawn.get<Renderable>();
Sensor* cSensor = cSpawn.get<Sensor>();
Transform* cTransform = cSpawn.get<Transform>();
cRenderable->setLayer(def::layer::BackgroundNear);
cRenderable->setDrawable(std::move(aSpawn));
cTransform->setPosition(tileX * TW, tileY * TH);
cSensor->setShapeCircle(2.f, sf::Vector2f(tileX * TW, tileY * TH));
cSensor->setCollisionCategory(Collision::World);
cSensor->setCollisionWith(Collision::Player);
cSensor->setCategory(Category::ExitSensor);
mEcsContext.s()->get<PhysicsSystem>()->initialize(eSpawn);
}
示例2: receive
void Level::receive(const BulletSpawn &entity)
{
LOGME_CALL("Level::receive<BulletSpawn>");
Transform* cTransform = mEcsContext.c()->get(entity.spawner).get<Transform>();
LOGME_ASSERT(nullptr != cTransform, "Transform component is required");
sf::Vector2f pos = cTransform->getPosition();
const int bulletNum = 12;
for (int i = 0; i < bulletNum; ++i)
{
float fi = i * 2 * M_PI / bulletNum;
Entity e = createEntity();
CrawlComponents& d = mEcsContext.c()->attach<Transform, RigidBody, Renderable, Kinematic>(e);
Kinematic* cKinematic = d.get<Kinematic>();
Renderable* cRenderable = d.get<Renderable>();
RigidBody* cRigidBody = d.get<RigidBody>();
Transform* cTransform = d.get<Transform>();
sf::Vector2f v(1.0f * cos(fi), 1.0f * sin(fi));
cKinematic->setLinearVelocity(120.f * v);
cTransform->setPosition(pos);
StaticDrawable::Ptr dBullet(new StaticDrawable(mEngineContext, Tex::Blob,
sf::IntRect(14 * 16, 16, 5, 4)));
cRenderable->setDrawable(std::move(dBullet));
cRigidBody->setBodyDynamic();
cRigidBody->setBulletMode(true);
cRigidBody->setCollisionCategory(Collision::Bullet);
cRigidBody->setCollisionWith(Collision::Player);
cRigidBody->setCollisionWith(Collision::World);
cRigidBody->setShapeBox(5, 4);
mEcsContext.s()->get<PhysicsSystem>()->initialize(e);
}
}
示例3: loadLevel
void Level::loadLevel(MvId level)
{
LOGME_CALL("Level::loadLevel");
LOGME_INFO("Loading level %d", level);
reset();
// loadWorldBounds();
// Level image is 4x4
const MvUint col = level % 4;
const MvUint row = level / 4;
const MvUint x0 = col * WorldTileWidth;
const MvUint y0 = row * WorldTileHeight;
const MvUint W = WorldTileWidth;
const MvUint H = WorldTileHeight;
for (MvUint j = 0; j < H; ++j) {
for (MvUint i = 0; i < W; ++i) {
handleColor(i, j, mData.getPixel(x0 + i, y0 + j));
}
}
auto c = mEcsContext.c();
Entity world = createEntity();
CrawlComponents& cWorld = c->attach<Renderable>(world);
Renderable* cRenderable = cWorld.get<Renderable>();
MvDrawable* tilemap = mTileMap.get();
tilemap->setPosition(-8, -8);
cRenderable->setDrawable(std::move(mTileMap));
cRenderable->setLayer(def::layer::BackgroundNear);
LOGME_INFO("Level loaded. Created entities: %d, to destroy: %d",
mCreatedEntities.size(), mDeadEntities.size());
}
示例4: loadPlayerSpawner
void Level::loadPlayerSpawner(MvUint tileX, MvUint tileY)
{
LOGME_CALL("Level::loadPlayerSpawner");
LOGME_DEBUG("Player at %d, %d", tileX, tileY);
auto c = mEcsContext.c();
EngineContext& ctx = mEngineContext;
MvAnimation::Ptr aSpawn(new MvAnimation(RepeatMode::Loop));
{
for (int i = 0; i < 3; ++i) {
StaticDrawable::Ptr ptr(new StaticDrawable(ctx, Tex::Blob, GreenSpawn[i]));
aSpawn->addDrawable(std::move(ptr));
aSpawn->addFrame(i, sf::milliseconds(240));
}
mve::Entity eSpawn = createEntity();
CrawlComponents& cSpawn = c->attach<Transform, Renderable>(eSpawn);
Renderable* cRenderable = cSpawn.get<Renderable>();
Transform* cTransform = cSpawn.get<Transform>();
cRenderable->setLayer(def::layer::BackgroundNear);
cRenderable->setDrawable(std::move(aSpawn));
cTransform->setPosition(tileX * TW, tileY * TH - 6);
}
// Initialize the player
DirectionalDrawable::Ptr dPlayer(new DirectionalDrawable);
for (std::size_t i = 0; i < Direction::Count; ++i) {
MvAnimation::Ptr aIdle(new MvAnimation(RepeatMode::Loop));
MvAnimation::Ptr aMove(new MvAnimation(RepeatMode::Loop));
StaticDrawable::Ptr ptr;
for (std::size_t j = 0; j < AnimIdleSize; ++j) {
ptr.reset(new StaticDrawable(ctx, Tex::Blob, PlayerIdle[i * AnimIdleSize + j]));
aIdle->addDrawable(std::move(ptr));
aIdle->addFrame(j, AnimIdleSpeed);
}
for (std::size_t j = 0; j < AnimMoveSize; ++j) {
ptr.reset(new StaticDrawable(ctx, Tex::Blob, PlayerMove[i * AnimMoveSize + j]));
aMove->addDrawable(std::move(ptr));
aMove->addFrame(j, AnimMoveSpeed);
}
dPlayer->setDrawable(CharState::Idle, i, std::move(aIdle));
dPlayer->setDrawable(CharState::Move, i, std::move(aMove));
}
mPlayerEntity = createEntity();
CrawlComponents& cPlayer = c->attach<Transform, Kinematic, Renderable, State,
RigidBody, Attributes>(mPlayerEntity);
Attributes* cAttributes = cPlayer.get<Attributes>();
Kinematic* cKinematic = cPlayer.get<Kinematic>();
Renderable* cRenderable = cPlayer.get<Renderable>();
RigidBody* cRigidBody = cPlayer.get<RigidBody>();
State* cState = cPlayer.get<State>();
Transform* cTransform = cPlayer.get<Transform>();
cAttributes->baseSpeed = 150.0f; // px/s
cKinematic->setDirection(Direction::Down);
cRenderable->setDrawable(std::move(dPlayer), DrawableType::Directional);
cRenderable->setLayer(def::layer::ForegroundMiddle);
cRigidBody->disableRotation();
cRigidBody->setBodyDynamic();
cRigidBody->setCollisionCategory(Collision::Player);
cRigidBody->setCollisionWith(Collision::Bullet);
cRigidBody->setCollisionWith(Collision::Enemy);
cRigidBody->setCollisionWith(Collision::World);
cRigidBody->setShapeBox(10, 10, sf::Vector2f(0, 1));
cState->setState(CharState::Idle);
cTransform->setPosition(tileX * TW, tileY * TH);
mPhysics->initialize(mPlayerEntity);
}
示例5: loadEnemySpawner
void Level::loadEnemySpawner(MvUint tileX, MvUint tileY, MvUint feature)
{
LOGME_CALL("Level::loadEnemySpawner");
LOGME_DEBUG("Spawning enemy at %d, %d", tileX * TW, tileY * TH);
auto e = mEcsContext.e();
auto c = mEcsContext.c();
EngineContext& ctx = mEngineContext;
sf::Time frames[] = {
sf::milliseconds(3600 + randOf(-480, 480)),
sf::milliseconds(1200),
sf::milliseconds(120),
sf::milliseconds(1200)
};
MvAnimation::Ptr dEnemy(new MvAnimation(RepeatMode::Loop));
StaticDrawable::Ptr ptr;
ptr.reset(new StaticDrawable(ctx, Tex::Blob, EnemyFrames[1]));
dEnemy->addDrawable(std::move(ptr));
ptr.reset(new StaticDrawable(ctx, Tex::Blob, EnemyFrames[0]));
dEnemy->addDrawable(std::move(ptr));
dEnemy->addFrame(0, frames[0]);
dEnemy->addFrame(1, frames[1]);
dEnemy->addFrame(0, frames[2]);
dEnemy->addFrame(1, frames[3]);
Entity enemy = createEntity();
CrawlComponents& cEnemy = c->attach<Attributes, Behavior, Renderable,
RigidBody, Sensor, Transform>(enemy);
Attributes* cAttributes = cEnemy.get<Attributes>();
Behavior* cBehavior = cEnemy.get<Behavior>();
Renderable* cRenderable = cEnemy.get<Renderable>();
RigidBody* cEnemyBody = cEnemy.get<RigidBody>();
Sensor* cSensor = cEnemy.get<Sensor>();
Transform* cTransform = cEnemy.get<Transform>();
cAttributes->baseSpeed = 50.0f;
cAttributes->visionRange = 50.0f;
if (feature & 0xE0) {
cAttributes->canShootBullets = true;
cAttributes->hasShootBullets = false;
}
// Values working with animation frames
cBehavior->addAction(Behavior::Sleeping, frames[0]);
cBehavior->addAction(Behavior::Gazing, frames[1]);
cBehavior->addAction(Behavior::Sleeping, frames[2]);
cBehavior->addAction(Behavior::Gazing, frames[3]);
cTransform->setPosition(tileX * TW, tileY * TH);
cRenderable->setDrawable(std::move(dEnemy), mve::DrawableType::Default);
cRenderable->setLayer(def::layer::ForegroundMiddle);
cSensor->setCategory(Category::EnemySensor);
cSensor->setCollisionCategory(Collision::Enemy);
cSensor->setCollisionWith(Collision::Player);
cSensor->setShapeCircle(cAttributes->visionRange);
cSensor->setAttachToEntity();
cEnemyBody->enableCollision();
cEnemyBody->disableRotation();
cEnemyBody->setBodyKinematic();
cEnemyBody->setShapeBox(9, 10);
cEnemyBody->setDensity(10.f);
cEnemyBody->setCollisionCategory(Collision::Enemy);
cEnemyBody->setCollisionWith(Collision::Player | Collision::World);
mEcsContext.s()->get<PhysicsSystem>()->initialize(enemy);
}