

== Codegen Introduction

Code generator for various - cross platform programming languages and paradims. All in one!


Powered by AtomCore and JME3.



==== Inspired by

ECore


UML


MetaWidget


Other game engines and editor: UDK, Unity, Blender, GameMaker…


Other node base editor: 


Web world: 



=== Features

Node &amp; Flow &amp; Graph base


Model base


Scope &amp; Instruction &amp; Control base



=== Comparasion


==== VS MetaWidget OIM

link:http://metawidget.org/[http://metawidget.org/]


is for generating UI from objects. 


*CodeGen* is for generating data (objects) from (data) objects.



==== VS EMF

link:https://www.eclipse.org/modeling/emf/[https://www.eclipse.org/modeling/emf/]


link:http://www.eclipse.org/ecoretools/[http://www.eclipse.org/ecoretools/]


is for model based generation.


*CodeGen* works upon EMF and also support others: flow base - scope base paradigm.


CodeGen tools toward Netbean instead of Eclipse to suite with JME3's SDK. Also CodeGen toward Games, not general applications!



==== VS Morph/ BeanMapping / ORM

Work in higher level than those.


That's said!


*CodeGen* work in higher level, solve other problems and depends on MetaWidget, EMF, Morph, BeanMapping and ORM.



== First look


=== Generation

link:http://en.wikipedia.org/wiki/Code_generation_%28compiler%29[http://en.wikipedia.org/wiki/Code_generation_%28compiler%29]


Atom support code generation from multiple sources and to various targets to help speed up and unite production pipeline. CodeGen - Ultimate tools for code genration corporate with AtomExAsset - Ultimate tools for game assets management is 2 facilities in charge for the job.


Sources


*  UML
*  ECore
*  Java code or Java classes with annotations
*  Code gen diagrams (modified UML diagrams for games)
*  3D Model and assets

Targets


*  Other Model format - via ECore, UML
*  Groovy or Java - via ECore, UML, ANTLR
*  Java bytecode - via instrument and transformation ASM
*  JavaScript - via GWT, ANTLR (supervisor translation)
*  StringTemplate, XML, Text, Configurations … and other textbased - via StringTemplate
*  Assetpack and other kind of assets - via processing pipeline


=== Simulation


== Architecture & Designs


=== MetaWidget Architecture

link:http://metawidget.sourceforge.net/doc/reference/en/html/ch02.html[http://metawidget.sourceforge.net/doc/reference/en/html/ch02.html]


link:http://metawidget.sourceforge.net/elevator.php[http://metawidget.sourceforge.net/elevator.php]


“



=== EMF Architecture

link:http://wiki.eclipse.org/index.php/EMF/FAQ[http://wiki.eclipse.org/index.php/EMF/FAQ]






=== CodeGen Architecture

The initial idea of CodeGen is “there is similarity between two, there is a transform available, learnt from above.


Also take a look at wisdoms and <<jme3/advanced/atom_framework/atomcore/algorithms#,Algorithms>> which AtomCore sketchs for Generation:


*  [Math] A function from one set to another set.
*  [Physics] Energy from one form to another.
*  [Language] Translate sematic from one to another language need a dictionary.
*  [Art] Nothing new, just a cover
*  [Computing] Template is a good abstraction of algorimths.
*  [Programming] DRY and open source. 
*  [New techs &amp; trends] Topology and well defined network actually a virtue. 


=== Layouts

GraphLayout



=== Builders

BlockBuilder



=== Blocks

CodeBlock


PlaceHolderBlock



== Documentation
