VariantVector ParticleEmitter::GetParticleBillboardsAttr() const { VariantVector ret; if (!serializeParticles_) { ret.push_back((int)billboards_.size()); return ret; } ret.reserve(billboards_.size() * 7 + 1); ret.push_back((int)billboards_.size()); for (auto i = billboards_.begin(); i != billboards_.end(); ++i) { ret.push_back(i->position_); ret.push_back(i->size_); ret.push_back(Vector4(i->uv_.min_.x_, i->uv_.min_.y_, i->uv_.max_.x_, i->uv_.max_.y_)); ret.push_back(i->color_); ret.push_back(i->rotation_); ret.push_back(i->direction_); ret.push_back(i->enabled_); } return ret; }
VariantVector AnimationController::GetAnimationsAttr() const { VariantVector ret; ret.reserve(animations_.size() * 5); for (auto i = animations_.begin(); i != animations_.end(); ++i) { ret.push_back(i->name_); ret.push_back(i->speed_); ret.push_back(i->targetWeight_); ret.push_back(i->fadeTime_); ret.push_back(i->autoFadeTime_); } return ret; }
VariantVector AnimationController::GetNodeAnimationStatesAttr() const { VariantVector ret; ret.reserve(nodeAnimationStates_.size() * 3 + 1); ret.push_back((int)nodeAnimationStates_.size()); for (auto i = nodeAnimationStates_.begin(); i != nodeAnimationStates_.end(); ++i) { AnimationState* state = *i; Animation* animation = state->GetAnimation(); ret.push_back(GetResourceRef(animation, Animation::GetTypeStatic())); ret.push_back(state->IsLooped()); ret.push_back(state->GetTime()); } return ret; }
VariantVector ParticleEmitter::GetParticlesAttr() const { VariantVector ret; if (!serializeParticles_) { ret.push_back((int)particles_.size()); return ret; } ret.reserve(particles_.size() * 8 + 1); ret.push_back((int)particles_.size()); for (auto i = particles_.begin(); i != particles_.end(); ++i) { ret.push_back(i->velocity_); ret.push_back(i->size_); ret.push_back(i->timer_); ret.push_back(i->timeToLive_); ret.push_back(i->scale_); ret.push_back(i->rotationSpeed_); ret.push_back(i->colorIndex_); ret.push_back(i->texIndex_); } return ret; }