C# Artemis Entity System Tutorial


Artemis is a high performance Entity System framework for games, originally written in Java by Arni Arent and Tiago Costa, now ported to C#.
Its goal is to provide a clean API to abstract your game world organization into entities, components and systems.
Artemis has no dependencies (for PC, in Xbox and Windows Phone 7 we have one) and can be used with any game framework or library, 2D or 3D, and even multiplatform, if you use it with Mono/MonoTouch/Mono4Android.

Differences from the original version

We support all the features included in the original Java version, but we’ve also added the following features:

  • Multithreading Support (two ways of doing this)
  • Specialized System templates for your multithreading needs
  • Communication between Systems using a Blackboard approach
  • Bugs fixed, performance improvements
  • Xbox/WP7/Mono(Android/Linux/Mac/iOS) support
  • Events for intercepting adding/removal of entities/components
  • Blackboard for sharing common objects between systems
  • Entity Pool (to make objects reusable, minimize garbage collection activity, improve performance)
  • Small goodies, like feeding the EntityWorld with whole Entities(maybe loading from external resources), enabling/disabling systems and entities, getting Entity tag, API shortcuts(see unit tests for more on this), etc.

Getting Started

  • Entities are only an aggregation of Components, identified by a unique id
  • Components are only data
  • Systems publish/subscribe to Components, creating behavior

There is much more to tell about this paradigm and we already have rich articles which inspired this framework. Some of them:

And many more can be found here.

Your components must inherit from the class Component or ComponentPoolable if you want it to use the Artemis Component Pool. Example:

//Add this Attribute and extend ComponentPoolable if you want your Component to use Artemis Component Pool
[Artemis.Attributes.ArtemisComponentPool(InitialSize=5,Resizes=true, ResizeSize=20, isSupportMultiThread=false)]
class Velocity : ComponentPoolable
{
        private float velocity;
        private float angle;

        public Velocity() { }

        public Velocity(float vector)
        {
            velocity = vector;
        }

        public Velocity(float velocity, float angle)
        {
            this.velocity = velocity;
            this.angle = angle;
        }

        public float Speed {
            get { return velocity;}
            set { velocity = value; }
        }

        public float Angle
        {
            get { return angle; }
            set { angle = value;}
        }

        public void AddAngle(float a)
        {
            angle = (angle + a) % 360;
        }

        public float AngleAsRadians
        {
            get { return (float)Math.PI * angle / 180.0f; }
        }

        //obligatory for poolable Components
        public void Cleanup()
        {
             coords = Vector3.Zero;
        }
}

A sample for entity assembling:

Entity e = world.CreateEntity(); // you can pass an unique ID as first parameter.
e.AddComponent(new Transform(200,400));
e.AddComponentFromPool(new Velocity(2.4f,0.9f)); // use AddComponentFromPool if the Component extend from ComponentPoolable
e.Refresh();// always call Refresh() when adding/removing components!

Your systems should inherit from one of the following templates:

  • EntitySystem – the simplest system template, not tied to components, good for stuff like collision
  • EntityProcessingSystem – a template for processing many entities, tied to components
  • IntervalEntitySystem – a simple system template, not tied to components, process periodically, based on world delta.
  • IntervalEntityProcessingSystem – a template that process entities periodically, based on world delta, tied to components.
  • ParallelEntityProcessingSystem – a template to leverage your multicore CPU for processing many entities, tied to components
  • ProcessingSystem – a template that process whichever logic you desire, without being tied to components
  • QueueProcessingSystem – instead of filter by components, this system process entities that are added to its public queue
  • HybridQueueProcessingSystem – process entities by queue and components
  • QueueProcessingSystemThreadSafe – process entities by a public static thread safe queue
  • FQueueSystemProcessingThreadSafe – process anything (not only entities) added to its public static thread safe queue
  • TagSystem – a simple system template, not tied to components, process a tagged entity
  • IntervalTagSystem – a simple system template, not tied to components, process a tagged entity periodically, based on world delta.
  • DelayedEntitySystem – a simple system template that starts process after a given time, based on world delta.
  • DelayedEntityProcessingSystem – a template that starts processing entities after a given time, based on world delta. Tied to components

And here is a system example, using Velocity and Transform components to create the Movement behavior:

//Add this attribute so the EntityWorld knows the systems it should execute, use the Layer to determine execution order
[Artemis.Attributes.ArtemisEntitySystem(ExecutionType = ExecutionType.UpdateSynchronous, Layer = 1)]
public class MovementSystem : EntityProcessingSystem {

    public MovementSystem() : base(Aspect.All(typeof(Transform), typeof(Velocity))) { }

    public override void Initialize() {}

    public override void Process(Entity e) {
        Velocity velocity = e.getComponent();
        float v = velocity.Speed;

        Transform transform = e.getComponent();

        float r = velocity.AngleAsRadians;

        float xn = transform.X + (TrigLUT.Cos(r) * v * world.Delta);
        float yn = transform.Y + (TrigLUT.Sin(r) * v * world.Delta);

        transform.SetLocation(xn, yn);
    }
}

On your game initialization, create a new EntityWorld and initialize it:

var world = new EntityWorld();
world.InitializeAll(true); // pass true/false to enable/disable DataAttributes on Systems

Update or Draw the World:

world.Update();
world.Draw(); // do this on a different loop, e.g: every 15 ms

And you are good to go. The Entity object has some intuitive methods like Delete(), GetComponent(), RemoveComponent(), which you can see in action on the example game.

Aspects

Aspects are used in the constructor of your entity systems to tell them which components they should be interested. At the moment we have three methods to build Aspects:

  • Aspect.All(params Type[] types) – Most of the time you will use this option, so the system processes entities which have all components of the Aspect.
  • Aspect.One(params Type[] types) – The system will process entities which have at least one of the components of the Aspect.
  • Aspect.Exclude(params Type[] types) – The system will not process entities which have at least one of the components of the Aspect.

You can also compose your Aspect utilizing these methods together, example:

public LogEnemySystem() : base(Aspect.All(typeof(Health)).One(typeof(Koopa),typeof(Goomba),typeof(Magikoopa)).exclude(typeof(Ghost))) {}

Extending Systems

It’s quite simple to extend the EntitySystem with your own logic, an example can be found here, which gives us less setup on systems which only uses Aspect.All(), example:

[Artemis.Attributes.ArtemisEntitySystem(ExecutionType = ExecutionType.UpdateSynchronous, Layer = 1)]
public class MovementSystem : EntityComponentProcessingSystem {
    public override void Process(Entity e,Transform transform, Velocity velocity) {
        float v = velocity.Speed;
        float r = velocity.AngleAsRadians;

        float xn = transform.X + (TrigLUT.Cos(r) * v * world.Delta);
        float yn = transform.Y + (TrigLUT.Sin(r) * v * world.Delta);

        transform.SetLocation(xn, yn);
    }
}

Templates

Create your entity templates to avoid manually creating and configuring entities:

[Artemis.Attributes.ArtemisEntityTemplate("BulletExplosion")]
public EnemyTemplate : Artemis.IEntityTemplate {
	public Entity BuildEntity(Entity e,EntityWorld entityWorld, params object[] args) {
		e.AddComponent(new Transform(200,400));
		e.AddComponent(new Velocity(2.4f,0.9f));
	}
}

Create your entities with the template applied:

var enemy = world.CreateEntityFromTemplate("BulletExplosion",array_of_parameters); // you can also use an alternative signature passing a custom unique id as the first parameter.
enemy.Refresh();

Blackboard

You can easily share common objects between systems using the blackboard, here is a XNA example, on the game initialization:

EntitySystem.BlackBoard.SetEntry("ContentManager", Content);
EntitySystem.BlackBoard.SetEntry("GraphicsDevice", GraphicsDevice);
EntitySystem.BlackBoard.SetEntry("SpriteBatch", spriteBatch);

Then you can retrieve the objects inside systems like this:

this.device = EntitySystem.BlackBoard.GetEntry("GraphicsDevice");
this.spriteBatch = EntitySystem.BlackBoard.GetEntry("SpriteBatch");
this.contentManager = EntitySystem.BlackBoard.GetEntry("ContentManager");

Games created with Artemis C#

Magnetic by Nature – by Tripleslash Studios. They also have a Kickstarter running for the game, support it!

Discussion, issues, suggestions

We have a forum section here.

 Use It !!!

,

  1. #1 by http://www.sfj-ror.no/userfiles/html/532.html on 27 de maio de 2017 - 2:56 pm

    Yet not as fancy at real life in case moms wrist is actually maybe not 2small dont pick it reason that it become tight .. its pretty but some thing yur 5year old makes . No the lower it is a great ok gifts and offer yet not letter wow present…cant get wrong whether don’t enjoy much to blow on a gift subsequently become this

  2. #2 by VvyuneapOR on 27 de maio de 2017 - 3:42 pm

    fast payday loan – payday loan online (quick loan)

  3. #3 by rede de protecao taubate on 27 de maio de 2017 - 3:43 pm

    Its hard to find good help I am regularly saying that its difficult to get quality help, but here is

  4. #4 by car insurance pensioner discount on 27 de maio de 2017 - 3:57 pm

    Until I found this I thought I’d have to spend the day inside.

  5. #5 by Pro burn x funciona on 27 de maio de 2017 - 4:01 pm

    A big thank you for your blog.Thanks Again. Great.

  6. #6 by instalação rede de proteção taubate on 27 de maio de 2017 - 4:02 pm

    Usually I do not read article on blogs, but I wish to say that this write-up very pressured me to take a look at and do it! Your writing style has been surprised me. Thanks, very great article.

  7. #7 by glam seamless review on 27 de maio de 2017 - 4:03 pm

    Hello, I enjoy reading all of your article.
    I like to write a little comment to support you.

  8. #8 by Moupxwi on 27 de maio de 2017 - 4:04 pm

    giveawayofthedayはWinX MediaTransを選択したのはなぜですか。 」窓の杜  2月16日マイクロソフト、さまざまなOfficeソフトのうち、OneNoteについては昨年4月から無償にしていたが、その無償版、有償版に比べていくつかの機能の制限を掛けていた。 [url=http://vejaandco.com/wp-content/vejwindows/vejwindows_1/index.html]Windows Server[/url]
    アメリカでは特にコースの長距離化が見られ、ドライバーは距離を稼ぐクラブだからハードヒッター以外はとにかく優しく真っ直ぐに飛ぶクラブが選ばれる傾向が強くなっています。   英語→「えア」と言って、口の形をキープしたまま、閉じずに、喉の奥の方まで「えア」にする感じ。
    [url=http://www.anstoss4-planet.de/Scprite/Forum/wbb216neu/thread.php?threadid=72305&sid=]日本アニメ DRAGON BALL Z / ドラゴンボールZ 全巻 DVD-BOX 価格[/url] どのオプションは Configuration.xml フゔ゗ルで指定する必要がありますか。 E. エグゼクテゖブメールボックスの Microsoft Exchange Online Archiving を有効にします。
    [url=http://forum.tsukaeru.net/viewtopic.php?p=31522#31522]日本ドラマ HERO 1-2 DVD-BOX[/url]
    もう文化祭終わったしお祭りはこれで終わりでいいんじゃないのとか思ってたりするKRMです。 日本のスポーツメーカーでも、同様の傾向が見て取れます。 [url=http://www.kakudate.com/modules/newbb/viewtopic.php?topic_id=82405&post_id=83819&order=0&viewmode=flat&pid=0&forum=5#forumpost83819]日本ドラマ ぼくらの勇気 未満都市 DVD-BOX[/url]
    ツーインワンとは今流行りのノートとしても使えるし、キーボードを切り離してタブレットとしても使えるタイプのものである。 「SNS連携」について詳しくは、下記ページをご覧ください。
    [url=http://mixzing.freeforums.org/topic-t95026.html]韓国ドラマ エンジェルアイズ DVD-BOX 価格[/url] ディレクトリ名に『 』(空白)が含まれていると、空白の前までがパスの指定だとPCが認識してしまう事を避ける為である。 Pass4TestのITエリートたちは彼らの専門的な目で、最新的なMicrosoftの74-325日本語試験トレーニング資料に注目していて、うちのMicrosoftの74-325日本語問題集の高い正確性を保証するのです。
    [url=http://gamersconnect.net/forum/viewtopic.php?f=4&t=71517&p=80829#p80829]日本アニメ人気DVD box[/url]

  9. #9 by http://www.sundbirsta.com/ukclreplica.asp on 27 de maio de 2017 - 4:40 pm

    it comes within a awesome package seems ideal however it really is slightly smaller including of my parents wrist but it appearance ideal just really want that was extended

  10. #10 by corepyl on 27 de maio de 2017 - 5:24 pm

    この試験と試験 70-413 の 2 つを受験することで、Windows Server 2012 環境におけるサービスとインフラストラクチャの設計、展開、および管理に必要な知識とスキルが検証されます。 でないと、すぐにトップで大きくクロスしちゃうからね。 [url=http://www.officehb.com/]office 2016 価格[/url]
    切り抜きや、合成などの機能もあり、とても重宝しています。 D. クラウドサービス とモバイルサー ビスを 作成します。
    [url=http://www.office2016jpjp.net/officeprofessionalplus2013-c-2_17.html]office personal 2013 ダウンロード 版[/url] JapanCertは特別に受験生に便宜を提供するためのサイトで、受験生が首尾よく試験に合格することを助けられます。  一方でミズノは、日本人のトッププロから絶大な支持を集めるあまり、アシックスのように裾野の広い一般選手向けの市場をとらえきれなかった。
    [url=http://www.serialkeys.org/]office2010 ソフト[/url]
    また、STAP幹細胞に関する現象の真実性を疑いの念無く述べることができない。 中には鍛造もあるけれど、海外ではそれほどこだわりがないみたい。 [url=http://softpcjpjp.com/?mode=cate&cbid=2087964&csid=0]Acrobat 11 激安[/url]
    セットアップにかかるが、このWindows10が曲者だった、立ち上げに悪戦苦闘、やっとここにアップ出来るまでにはなったが、慣れるまで時間がかかりそう。 私は自分が使っているパソコンにエラーが無いと思いましたのでエラーを修復せずWin10にアップしました。
    [url=http://softpcjpjp.com/?mode=cate&cbid=2087964&csid=0]Acrobat 11 認証[/url] ですから、はやくPass4Testのサイトに行ってもっと多くの情報を読みましょう。 いまはすっかり評価を落としてしまいましたが、当時はそういう大きな期待を集めた政権でした。
    [url=http://www.office2016jpjp.net/adobe-c-1.html]Adobe 販売[/url]

  11. #11 by coretpg on 27 de maio de 2017 - 5:25 pm

    省電力プロセッサであるCore Mを搭載したモデルもあるが、上位製品はノートPCに幅広く使われているCore i7を装備しており、Windows向けのあらゆるアプリケーションを利用できる。 と、ここまではネットによくある話ですが、リアルにそうなりました。 [url=http://www.keygoodjp.com/office2013-home.html]office2013 プロダクト キー[/url]
    パソコンと同じような使用感で出来そうなので期待出来そうだ。 ボトル1本で燃料電池システムを約1時間稼働させられるという。
    [url=http://www.keygoodjp.com/microsoft-office-project-professional.html]office2013 メディア 購入[/url] 次回は負けないぜ、、、、一つ収穫は、福知山での練習で気付いたとおり、しっかり腰を最後まで回転させるというポイントは実践できた。 仕方ないから、ココから取り込みかけ直したです。
    [url=http://www.keygoodjp.com/norton-security-premium-2016.html]ノートン ログイン[/url]
    特に汚れが集中してたのがGPUで、カバーも外せずなかなかタイヘンやった。 これは、平均訪問者数の2.0倍なので、大体標準に近い。 [url=http://www.keygoodjp.com/windows8-1-01-64.html]windows8 セットアップ[/url]
    推奨ヘッドホンインピーダンスは16~600Ωで、S/N比は112dBとなっている。 メモリは2Gで貧弱ですが、Officeやネット閲覧、動画再生は全く問題ありません。
    [url=http://www.keygoodjp.com/windows7-06.html]windows 7 の インストール[/url] あなたはどのオブジェクト? モデルを使うべきですか?A. Representational State Transfer (REST )ベー スのサービスを使用してください。  MicrosoftとGoogleのオフィススイートはそれぞれ、Webメール、ワープロ、カレンダー、メッセージ、スプレッドシート、スライド作成などのプログラムを含む。
    [url=http://www.keygoodjp.com/windows-10-enterprise-64.html]windows10 ストア アプリ[/url]

  12. #12 by 大發DVD on 27 de maio de 2017 - 5:39 pm

    check beneath, are some absolutely unrelated web sites to ours, on the other hand, they are most trustworthy sources that we use

  13. #13 by FfgrneapNB on 27 de maio de 2017 - 5:45 pm

    instant payday loans – unsecured loans (quick loans)

  14. #14 by Cheap Moncler Mens Jacket on 27 de maio de 2017 - 5:54 pm

    it comes down in a perfect box appearances very good then again their slightly tiny really for my personal parents wrist but it styles great really really want they ended up being further

  15. #15 by FfgrneapNB on 27 de maio de 2017 - 6:01 pm

    loans – payday loans (loans bad credit)

  16. #16 by healthy dinner on 27 de maio de 2017 - 6:59 pm

    Wow! This could be one particular of the most helpful blogs We have ever arrive across on this subject. Basically Great. I am also an expert in this topic so I can understand your effort.

  17. #17 by insurance epli on 27 de maio de 2017 - 7:32 pm

    Hey, that’s powerful. Thanks for the news.

  18. #18 by bitcoin on 27 de maio de 2017 - 9:13 pm

    Would you be serious about exchanging links?

  19. #19 by http://catab.se/wp-content/plugins/symple/450.html on 27 de maio de 2017 - 10:06 pm

    Purchased our as a gifts towards our mother and/or she enjoyed that. amazing high quality cool expense plus our mom loved that. And sent super quickly. When you require a gift fast and you such as this versus this is the an individual it is best to purchase!

  20. #20 by http://cargusweb.cementaresearch.se/lib/jquery/source/page/605.html on 27 de maio de 2017 - 10:06 pm

    Yet not while fancy as part of real life if you think mothers wrist is actually never 2small don’t purchase things influence that it make tight .. their sweet but anything yur 5year existing make . No ones less their a ok present at bring but not one wow present…cant get wrong when don’t posses a great deal to spend on a present subsequently take this

  21. #21 by http://news.cartierloveringreplica.xyz/cartierloveringreplicaxyz/362.asp on 27 de maio de 2017 - 10:06 pm

    Yet not like fancy at real world provided mothers wrist is maybe not 2small dont pick they reason that it be tight .. the pretty although one thing yur 5year existing make . No some sort of reduced their one okay gift and present yet not the best wow gift…cant go wrong whether don’t has a lot to spend for a gift next become they

  22. #22 by CharlesDiado on 27 de maio de 2017 - 10:13 pm

    wh0cd351497 [url=http://baclofen247.us.org/]Baclofen[/url] [url=http://azithromycin24.us.org/]azithromycin price[/url]

  23. #23 by VvyuneapOR on 27 de maio de 2017 - 10:14 pm

    approved cash advance – same day payday loans (online payday loans)

  24. #24 by خرید vps on 27 de maio de 2017 - 10:22 pm

    You happen to be is a fantastic site owner. Your website running pace is definitely incredible. It sort of feels that you are accomplishing any kind of exceptional technique. Additionally, Your contents tend to be must-see. you’ve carried out a fantastic practice for this theme!

  25. #25 by cheap louboutins on 27 de maio de 2017 - 10:43 pm

    it comes down within a striking box appears great although it really is slightly small also to my personal mothers wrist however it appears awesome just desire it ended up being further

  26. #26 by EugeneUnmat on 28 de maio de 2017 - 2:18 am

    wh0cd438689 [url=http://cialis24.us.org/]cialis online pharmacy[/url] [url=http://cheapviagra24.us.org/]black viagra[/url] [url=http://genericviagra24.us.org/]generic viagra[/url]

  27. #27 by red bottom shoes replica on 28 de maio de 2017 - 2:19 am

    it comes within a pretty container appearances ideal although their somewhat slight still concerning my personal moms wrist however it appears very good really want information technology ended up being further

  28. #28 by http://www.counterweight.org/dresses.aspx on 28 de maio de 2017 - 4:01 am

    it comes within a perfect box appears great then again it is slightly smaller even to my personal moms wrist however it styles great only desire information technology had been longer

  29. #29 by cartier love bracelet replica on 28 de maio de 2017 - 4:02 am

    I got this gift for the mom towards Xmas mainly because she are the precious jewelry freak. That one thing she does not wear far of is actually, bracelets. I purchased the lady this one charm bracelet furthermore once she launched it yesterday she absolutley liked that it! This time the issue are, this girl acquiring that it regarding plus off through herself. Haha… total awesome product or service, that delivered as well as came severely early plus our mom is actually experiencing that. Thank we.

  30. #30 by http://news.cartierreplica.pw/cartierreplicapw/602.asp on 28 de maio de 2017 - 4:06 am

    Great headphonespick, nicely priced and also exactly what is presented. Gorgeous gifts package plus poem in addition enclosed. Great of mother’s evening!

  31. #31 by http://news.cheapmoncler.pw/cheapmonclerpw/593.asp on 28 de maio de 2017 - 4:07 am

    The boy provided me your to parents day. He understands im not really around price tag then again what else originates from your heart. I can’t think it has my personal favourite shade furthermore in fact suits the wrist. I did not can look for bracelets to fit headphonesmy little wrist. Most happy to have recieved your as a gift.

  32. #32 by TracyCab on 28 de maio de 2017 - 4:37 am

    wh0cd527014 [url=http://antabusemedication.us.com/]Purchase Antabuse[/url] [url=http://sildenafil4you.us.com/]SILDENAFIL[/url] [url=http://tretinoin2017.us.com/]Purchase Tretinoin[/url]

  33. #33 by farm bureau insurance hampstead nc on 28 de maio de 2017 - 5:20 am

    To think, I was confused a minute ago.

  34. #34 by EugeneUnmat on 28 de maio de 2017 - 6:59 am

    wh0cd601772 [url=http://sildenafilcitrate247.us.org/]sildenafil citrate[/url]

  35. #35 by http://www.marsgatan.com/list/womenshoes.asp on 28 de maio de 2017 - 7:18 am

    I have that present for the our mother towards Christmas considering she was any precious jewelry freak. The particular something she cannot put on far to is actually, bracelets. I purchased the lady this charm bracelet additionally when she launched things yesterday she absolutley loved information technology! Right now the issue is actually, this girl getting information technology at and also down by herself. Haha… overall great product or service, that it shipped additionally came severely very early and my mom is actually experiencing this. Thank you.

  36. #36 by http://cottageofgrace.com/CLshoes.asp on 28 de maio de 2017 - 7:18 am

    it comes down in a awesome package looks ideal then again the slightly smaller really to our parents wrist however it appearance awesome just want that it is extended

  37. #37 by 3 insurance companies on 28 de maio de 2017 - 7:50 am

    Thank you very much…Türkiye turizmi site rehberi turkey hotel list Ä°stanbul turizmi otelleri konaklama yerleri ve tatil Antalya kemer alanya plajları tatil yerleri ve konaklama Apart Hotels Turkey Alanya tatil gezi alanyadaki plajlar oteller rehberi Ankara gezi seyahat ankaradaki oteller ankara konaklama yerleri

  38. #38 by smd ceramic capacitor price on 28 de maio de 2017 - 8:02 am

    Youre so cool! I dont suppose Ive read anything like this before. So nice to seek out someone with some original thoughts on this subject. realy thank you for beginning this up. this website is something that is wanted on the web, someone with somewhat originality. useful job for bringing something new to the web!

  39. #39 by GdcneapYE on 28 de maio de 2017 - 8:26 am

    cash loans – pay day loans (online payday loans)

  40. #40 by http://news.hermesreplica.pw/hermesreplicapw/327.asp on 28 de maio de 2017 - 8:55 am

    My personal son offered me this of moms time. He knows im not about price however what comes from ones heart. I can’t believe it has the favourite color as well as really meets my personal wrist. I by no means can find bracelets to suit headphonesthe small wrist. Very happy to enjoy recieved this being a present.

  41. #41 by http://www.pacesetterfund.org/session/70.html on 28 de maio de 2017 - 8:56 am

    My boy offered myself it for the mothers evening. He realizes im maybe not about price tag but what comes from your center. I cannot feel it has my personal favorite color as well as actually meets my personal wrist. I did not can find out bracelets to fit headphonesthe limited wrist. Quite happy to have recieved it being a gift.

  42. #42 by car insurance vacation hold on 28 de maio de 2017 - 9:21 am

    A smiling visitor here to share the love outstanding style and design. “The worst-tempered people I’ve ever met were the people who knew they were wrong.” by Wilson Mizner.

  43. #43 by http://news.cartierlovebraceletreplica.xyz/cartierlovebraceletreplicaxyz/362.asp on 28 de maio de 2017 - 9:41 am

    Awesome headphonesinvest, well listed to exactly what are presented. Pretty present container and poem always enclosed. Very good concerning mother’s time!

  44. #44 by http://www.aim.org.in/system/68.html on 28 de maio de 2017 - 9:53 am

    I got this particular headphonesfor the our mother of moms time, and/or she definitely adored information technology! It is completely sweet headphonesand the stating in the card it comes within the container is very sentimental!! And the excellent of beads was great!

  45. #45 by http://news.redbottomheels.xyz/redbottomheelsxyz/392.asp on 28 de maio de 2017 - 9:53 am

    I got this particular headphonestowards the mom for the mothers evening, and/or she absolutely adored things! It really is really cute headphonesas well as the saying on the card it goes into the package is really sentimental!! And the high quality of the beads was great!

  46. #46 by auto insurance quotes atlanta on 28 de maio de 2017 - 10:35 am

    That’s a smart way of looking at the world.

  47. #47 by CharlesDiado on 28 de maio de 2017 - 10:44 am

    wh0cd732023 [url=http://buysynthroid.us.com/]Buy Synthroid[/url]

  48. #48 by Make a Craft on 28 de maio de 2017 - 10:56 am

    I must get across my passion for your generosity giving support to persons that must have help with your idea. Your very own dedication to getting the solution around was quite beneficial and has in every case made employees much like me to get to their aims. The valuable hints and tips signifies this much a person like me and extremely more to my peers. Regards; from all of us.

  49. #49 by http://www.nvssf.com/lotta/77.html on 28 de maio de 2017 - 10:57 am

    Purchased this particular being a gifts to the mama and she adored that it. terrific excellent good cost plus my personal mother enjoyed it. Also delivered very quickly. So if you need a gift quick and you like this versus this is actually the one you should go for!

1 811 812 813
(não será publicado)