123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347 |
- /****************************************************************************
- Copyright (C) 2013 Henry van Merode. All rights reserved.
- Copyright (c) 2015-2017 Chukong Technologies Inc.
-
- http://www.cocos2d-x.org
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- ****************************************************************************/
- #ifndef __CC_PU_SCRIPT_TRANSLATOR_H__
- #define __CC_PU_SCRIPT_TRANSLATOR_H__
- #include <iostream>
- #include "base/CCRef.h"
- #include "math/CCMath.h"
- #include "extensions/Particle3D/PU/CCPUScriptCompiler.h"
- NS_CC_BEGIN
- // Define static tokens
- enum eDefineStaticToken
- {
- // Generic
- TOKEN_GROUP_MASK,
- TOKEN_ACCELERATION,
- TOKEN_MAX_INCREMENT,
- TOKEN_MIN_INCREMENT,
- TOKEN_ITERATIONS,
- TOKEN_COLOUR_CHANGE,
- TOKEN_INITIAL_COLOUR,
- TOKEN_RANDOM_INITIAL_COLOUR,
- TOKEN_USE_VERTEX_COLOURS,
- TOKEN_USE_OWN_ROTATION,
- TOKEN_MAX_DEVIATION,
- TOKEN_TIME_STEP,
- TOKEN_BOX_WIDTH,
- TOKEN_BOX_HEIGHT,
- TOKEN_BOX_DEPTH,
- TOKEN_VELOCITY,
- TOKEN_SPEED,
- TOKEN_ROTATION_SPEED,
- TOKEN_ROTATION,
- TOKEN_ROTATION_AXIS,
- TOKEN_NORMAL,
- TOKEN_STEP,
- TOKEN_NUMBER_OF_SEGMENTS,
- TOKEN_MAX_ELEMENTS,
- TOKEN_UPDATE_INTERVAL,
- TOKEN_DISTANCE_THRESHOLD,
- TOKEN_MATERIAL,
- TOKEN_MESH_NAME,
- TOKEN_RADIUS,
- TOKEN_ENABLED,
- TOKEN_POSITION,
- TOKEN_KEEP_LOCAL,
- TOKEN_LESS_THAN,
- TOKEN_GREATER_THAN,
- TOKEN_EQUALS,
- TOKEN_VISUAL_PARTICLE,
- TOKEN_EMITTER_PARTICLE,
- TOKEN_AFFECTOR_PARTICLE,
- TOKEN_TECHNIQUE_PARTICLE,
- TOKEN_SYSTEM_PARTICLE,
- TOKEN_POINT,
- TOKEN_VERTEX,
- TOKEN_INCREASE,
- TOKEN_ALIAS,
- TOKEN_USE_ALIAS,
- TOKEN_SINCE_START_SYSTEM,
-
- // Particle System
- TOKEN_SYSTEM,
- TOKEN_PS_ITERATION_INTERVAL,
- TOKEN_PS_NONVIS_UPDATE_TIMEOUT,
- TOKEN_PS_FIXED_TIMEOUT,
- TOKEN_PS_LOD_DISTANCES,
- TOKEN_PS_MAIN_CAMERA_NAME,
- TOKEN_PS_SMOOTH_LOD,
- TOKEN_PS_FAST_FORWARD,
- TOKEN_PS_SCALE,
- TOKEN_PS_SCALE_VELOCITY,
- TOKEN_PS_SCALE_TIME,
- TOKEN_PS_TIGHT_BOUNDING_BOX,
- TOKEN_PS_CATEGORY,
-
- // Particle Technique
- TOKEN_TECHNIQUE,
- TOKEN_TECH_VISUAL_PARTICLE_QUOTA,
- TOKEN_TECH_EMITTED_EMITTER_QUOTA,
- TOKEN_TECH_EMITTED_AFFECTOR_QUOTA,
- TOKEN_TECH_EMITTED_TECHNIQUE_QUOTA,
- TOKEN_TECH_EMITTED_SYSTEM_QUOTA,
- TOKEN_TECH_LOD_INDEX,
- TOKEN_TECH_DEFAULT_PARTICLE_WIDTH,
- TOKEN_TECH_DEFAULT_PARTICLE_HEIGHT,
- TOKEN_TECH_DEFAULT_PARTICLE_DEPTH,
- TOKEN_TECH_SPHASHING_CELL_DIMENSION,
- TOKEN_TECH_SPHASHING_CELL_OVERLAP,
- TOKEN_TECH_SPHASHING_SIZE,
- TOKEN_TECH_SPHASHING_UPDATE_INTERVAL,
- TOKEN_TECH_MAX_VELOCITY,
-
- // Particle Renderer
- TOKEN_RENDERER,
- TOKEN_RENDERER_Q_GROUP,
- TOKEN_RENDERER_SORTING,
- TOKEN_RENDERER_TEXCOORDS_DEFINE,
- TOKEN_RENDERER_TEXCOORDS_ROWS,
- TOKEN_RENDERER_TEXCOORDS_SET,
- TOKEN_RENDERER_TEXCOORDS_COLUMNS,
- TOKEN_RENDERER_USE_SOFT_PARTICLES,
- TOKEN_RENDERER_SOFT_PARTICLES_CONTRAST_POWER,
- TOKEN_RENDERER_SOFT_PARTICLES_SCALE,
- TOKEN_RENDERER_SOFT_PARTICLES_DELTA,
-
- // Particle Emitter
- TOKEN_EMITTER,
- TOKEN_EMITTER_DIRECTION,
- TOKEN_EMITTER_ORIENTATION,
- TOKEN_EMITTER_ORIENTATION_RANGE_START,
- TOKEN_EMITTER_ORIENTATION_RANGE_END,
- TOKEN_EMITTER_START_ORIENTATION_RANGE,
- TOKEN_EMITTER_END_ORIENTATION_RANGE,
- TOKEN_EMITTER_DURATION,
- TOKEN_EMITTER_REPEAT_DELAY,
- TOKEN_EMITTER_EMITS,
- TOKEN_ANGLE,
- TOKEN_EMITTER_EMISSION_RATE,
- TOKEN_TIME_TO_LIVE,
- TOKEN_EMITTER_MASS,
- TOKEN_EMITTER_START_TEXCOORDS,
- TOKEN_EMITTER_END_TEXCOORDS,
- TOKEN_EMITTER_START_TEXCOORDS_RANGE,
- TOKEN_EMITTER_END_TEXCOORDS_RANGE,
- TOKEN_EMITTER_TEXCOORDS,
- TOKEN_EMITTER_START_COLOUR_RANGE,
- TOKEN_EMITTER_END_COLOUR_RANGE,
- TOKEN_EMITTER_COLOUR,
- TOKEN_EMITTER_ALL_PARTICLE_DIM,
- TOKEN_EMITTER_PARTICLE_WIDTH,
- TOKEN_EMITTER_PARTICLE_HEIGHT,
- TOKEN_EMITTER_PARTICLE_DEPTH,
- TOKEN_EMITTER_AUTO_DIRECTION,
- TOKEN_EMITTER_FORCE_EMISSION,
-
- // Particle Affector
- TOKEN_AFFECTOR,
- TOKEN_AFFECTOR_MASS,
- TOKEN_AFFECTOR_EXCLUDE_EMITTER,
- TOKEN_AFFECTOR_SPECIALISATION,
- TOKEN_AFFECTOR_SPEC_DEFAULT,
- TOKEN_AFFECTOR_SPEC_TTL_INCREASE,
- TOKEN_AFFECTOR_SPEC_TTL_DECREASE,
-
- // Particle Observer
- TOKEN_OBSERVER,
- TOKEN_OBSERVE_PARTICLE_TYPE,
- TOKEN_OBSERVE_INTERVAL,
- TOKEN_OBSERVE_UNTIL_EVENT,
-
- // Particle Event Handler
- TOKEN_HANDLER,
-
- // Particle Behaviour
- TOKEN_BEHAVIOUR,
-
- // Extern
- TOKEN_EXTERN,
- TOKEN_EXTERN_DISTANCE_THRESHOLD,
-
- // Dynamic Attribute
- TOKEN_DYN_CONTROL_POINT,
- TOKEN_DYN_MIN,
- TOKEN_DYN_MAX,
- TOKEN_DYN_OSCILLATE_FREQUENCY,
- TOKEN_DYN_OSCILLATE_PHASE,
- TOKEN_DYN_OSCILLATE_BASE,
- TOKEN_DYN_OSCILLATE_AMPLITUDE,
- TOKEN_DYN_OSCILLATE_TYPE,
- TOKEN_DYN_OSCILLATE,
- TOKEN_DYN_RANDOM,
- TOKEN_DYN_CURVED_LINEAR,
- TOKEN_DYN_CURVED_SPLINE,
- TOKEN_DYN_SINE,
- TOKEN_DYN_SQUARE,
-
- // CameraDependency (unused)
- TOKEN_CAMERA_DEPENDENCY,
-
- // BeamRenderer
- TOKEN_BEAMRENDERER_UPDATE_INTERVAL,
- TOKEN_BEAMRENDERER_MAX_ELEMENTS,
- TOKEN_BEAMRENDERER_DEVIATION,
- TOKEN_BEAMRENDERER_NUMBER_OF_SEGMENTS,
- TOKEN_BEAMRENDERER_JUMP,
- TOKEN_BEAMRENDERER_TEXCOORD_DIRECTION,
- TOKEN_BEAMRENDERER_VERTEX_COLOURS,
- TOKEN_BEAMRENDERER_TCD_U,
- TOKEN_BEAMRENDERER_TCD_V,
-
- // BillboardRenderer
- TOKEN_BILLBOARD_TYPE,
- TOKEN_BILLBOARD_ORIGIN,
- TOKEN_BILLBOARD_ROTATION_TYPE,
- TOKEN_BILLBOARD_COMMON_DIRECTION,
- TOKEN_BILLBOARD_COMMON_UP_VECTOR,
- TOKEN_BILLBOARD_POINT_RENDERING,
- TOKEN_BILLBOARD_ACCURATE_FACING,
- TOKEN_BILLBOARD_ORIENTED_COMMON,
- TOKEN_BILLBOARD_ORIENTED_SELF,
- TOKEN_BILLBOARD_ORIENTED_SHAPE,
- TOKEN_BILLBOARD_PERPENDICULAR_COMMON,
- TOKEN_BILLBOARD_PERPENDICULAR_SELF,
- TOKEN_BILLBOARD_TOP_LEFT,
- TOKEN_BILLBOARD_TOP_CENTER,
- TOKEN_BILLBOARD_TOP_RIGHT,
- TOKEN_BILLBOARD_CENTER_LEFT,
- TOKEN_BILLBOARD_CENTER_RIGHT,
- TOKEN_BILLBOARD_CENTER,
- TOKEN_BILLBOARD_BOTTON_LEFT,
- TOKEN_BILLBOARD_BOTTOM_CENTER,
- TOKEN_BILLBOARD_BOTTOM_RIGHT,
- TOKEN_BILLBOARD_TEXCOORD,
-
- // EntityRenderer
- TOKEN_ENT_MESH_NAME,
- TOKEN_ENT_ORIENTATION_TYPE,
- TOKEN_ENT_ORIENTED_SELF,
- TOKEN_ENT_ORIENTED_SELF_MIRRORED,
- TOKEN_ENT_ORIENTED_SHAPE,
-
- // LightRenderer
- TOKEN_LIGHT_TYPE,
- TOKEN_LIGHT_RENDER_QUEUE,
- TOKEN_LIGHT_SPECULAR,
- TOKEN_LIGHT_ATT_RANGE,
- TOKEN_LIGHT_ATT_CONSTANT,
- TOKEN_LIGHT_ATT_LINEAR,
- TOKEN_LIGHT_ATT_QUADRATIC,
- TOKEN_LIGHT_SPOT_INNER,
- TOKEN_LIGHT_SPOT_OUTER,
- TOKEN_LIGHT_FALLOFF,
- TOKEN_LIGHT_POWERSCALE,
- TOKEN_LIGHT_SPOT,
- TOKEN_FLASH_FREQUENCY,
- TOKEN_FLASH_LENGTH,
- TOKEN_FLASH_RANDOM,
-
- // RibbonTrailRenderer
- TOKEN_RIBBONTRAIL_VERTEX_COLOURS,
- TOKEN_RIBBONTRAIL_MAX_ELEMENTS,
- TOKEN_RIBBONTRAIL_LENGTH,
- TOKEN_RIBBONTRAIL_WIDTH,
- TOKEN_RIBBONTRAIL_RANDOM_INITIAL_COLOUR,
- TOKEN_RIBBONTRAIL_INITIAL_COLOUR,
- TOKEN_RIBBONTRAIL_COLOUR_CHANGE,
-
- // BoxEmitter
- TOKEN_EMITTER_BOX_WIDTH,
- TOKEN_EMITTER_BOX_HEIGHT,
- TOKEN_EMITTER_BOX_DEPTH,
-
- // CircleEmitter
- TOKEN_CIRCLE_RADIUS,
- TOKEN_CIRCLE_STEP,
- TOKEN_CIRCLE_ANGLE,
- TOKEN_CIRCLE_RANDOM,
- TOKEN_EMIT_RANDOM,
- TOKEN_CIRCLE_NORMAL,
-
- // LineEmitter
- TOKEN_LINE_EMIT_END,
- TOKEN_LINE_EMIT_MAX_INCREMENT,
- TOKEN_LINE_EMIT_MIN_INCREMENT,
- TOKEN_LINE_EMIT_MAX_DEVIATION,
-
- // MeshSurfaceEmitter
- TOKEN_MESH_SURFACE_NAME,
- TOKEN_MESH_SURFACE_DISTRIBUTION,
- TOKEN_MESH_SURFACE_MESH_SCALE,
- TOKEN_MESH_SURFACE_EDGE,
- TOKEN_MESH_SURFACE_HETEROGENEOUS_1,
- TOKEN_MESH_SURFACE_HETEROGENEOUS_2,
- TOKEN_MESH_SURFACE_HOMOGENEOUS,
-
- // PositionEmitter
- TOKEN_POS_ADD_POSITION,
- TOKEN_POS_RANDOMIZE,
-
- // SlaveEmitter
- TOKEN_MASTER_TECHNIQUE,
- TOKEN_MASTER_EMITTER,
-
- // SphereSurfaceEmitter
- TOKEN_SPHERE_RADIUS,
-
- // VertexEmitter
- TOKEN_VERTEX_STEP,
- TOKEN_VERTEX_SEGMENTS,
- TOKEN_VERTEX_ITERATIONS,
- TOKEN_VERTEX_MESH_NAME,
-
- // AlignAffector
- TOKEN_ALIGN_RESIZE,
- TOKEN_RESIZE,
-
- // BoxCollider
- TOKEN_BOXCOLL_WIDTH,
- TOKEN_BOXCOLL_HEIGHT,
- TOKEN_BOXCOLL_DEPTH,
-
- // BaseCollider
- TOKEN_FRICTION,
- TOKEN_BOUNCYNESS,
- TOKEN_INTERSECTION,
- TOKEN_COLLIDER_FRICTION,
- TOKEN_COLLIDER_BOUNCYNESS,
- TOKEN_COLLIDER_INTERSECTION,
- TOKEN_COLLIDER_COLLISION_TYPE,
- TOKEN_COLLIDER_BOUNCE,
- TOKEN_COLLIDER_FLOW,
- TOKEN_COLLIDER_NONE,
- TOKEN_COLLIDER_INTERSECTION_POINT,
- TOKEN_COLLIDER_INTERSECTION_BOX,
- TOKEN_INNER_COLLISION,
-
- // CollisionAvoidanceAffector
- TOKEN_AVOIDANCE_RADIUS,
-
- // ColourAffector
- TOKEN_TIME_COLOUR,
- TOKEN_COLOUR_TIME_COLOUR,
- TOKEN_COLOUR_OPERATION,
- TOKEN_COLOUR_MULTIPLY,
- TOKEN_COLOUR_SET,
-
- // BaseForceAffector
- TOKEN_FORCE_VECTOR,
- TOKEN_FORCE_APPLICATION,
- TOKEN_FORCE_AFF_VECTOR,
- TOKEN_FORCE_AFF_APPLICATION,
- TOKEN_FORCE_ADD,
- TOKEN_FORCE_AVERAGE,
-
- // ForceFieldAffector
- TOKEN_FORCEFIELD_TYPE,
- TOKEN_REALTIME,
- TOKEN_MATRIX,
- TOKEN_DELTA,
- TOKEN_FORCE,
- TOKEN_OCTAVES,
- TOKEN_FREQUENCY,
- TOKEN_AMPLITUDE,
- TOKEN_PERSISTENCE,
- TOKEN_FORCEFIELDSIZE,
- TOKEN_WORLDSIZE,
- TOKEN_IGNORE_NEGATIVE_X,
- TOKEN_IGNORE_NEGATIVE_Y,
- TOKEN_IGNORE_NEGATIVE_Z,
- TOKEN_MOVEMENT,
- TOKEN_MOVEMENT_FREQUENCY,
-
- // GeometryRotator
- TOKEN_GEOMROT_USE_OWN_ROTATION,
- TOKEN_GEOMROT_ROTATION_SPEED,
- TOKEN_GEOMROT_ROTATION_AXIS,
-
- // GravityAffector
- TOKEN_GRAVITY,
-
- // InterParticleCollider
- TOKEN_ADJUSTMENT,
- TOKEN_COLLISION_RESPONSE,
- TOKEN_IPC_ADJUSTMENT,
- TOKEN_IPC_COLLISION_RESPONSE,
- TOKEN_IPC_AVERAGE_VELOCITY,
- TOKEN_IPC_ANGLE_BASED_VELOCITY,
-
- // JetAffector
- TOKEN_JET_ACCELERATION,
-
- // LineAffector
- TOKEN_END,
- TOKEN_DRIFT,
- TOKEN_LINE_AFF_MAX_DEVIATION,
- TOKEN_LINE_AFF_TIME_STEP,
- TOKEN_LINE_AFF_END,
- TOKEN_LINE_AFF_DRIFT,
-
- // ParticleFollower
- TOKEN_FOLLOW_MAX_DISTANCE,
- TOKEN_FOLLOW_MIN_DISTANCE,
- TOKEN_MAX_DISTANCE,
- TOKEN_MIN_DISTANCE,
-
- // PathFollower
- TOKEN_PATH_POINT,
-
- // PlaneCollider
- TOKEN_PLANECOLL_NORMAL,
-
- // Randomiser
- TOKEN_RND_MAX_DEVIATION_X,
- TOKEN_RND_MAX_DEVIATION_Y,
- TOKEN_RND_MAX_DEVIATION_Z,
- TOKEN_MAX_DEVIATION_X,
- TOKEN_MAX_DEVIATION_Y,
- TOKEN_MAX_DEVIATION_Z,
- TOKEN_RND_TIME_STEP,
- TOKEN_RND_DIRECTION,
- TOKEN_USE_DIRECTION,
-
- // ScaleAffector
- TOKEN_SCALE_XYZ_SCALE,
- TOKEN_SCALE_X_SCALE,
- TOKEN_SCALE_Y_SCALE,
- TOKEN_SCALE_Z_SCALE,
-
- // ScaleVelocityAffector
- TOKEN_SCALE_VELOCITY_SCALE,
- TOKEN_STOP_AT_FLIP,
-
- // SineForceAffector
- TOKEN_SINE_MIN_FREQUENCY,
- TOKEN_SINE_MAX_FREQUENCY,
- TOKEN_MIN_FREQUENCY,
- TOKEN_MAX_FREQUENCY,
-
- // SphereCollider
- TOKEN_SPHERE_COLLIDER_RADIUS,
-
- // TextureAnimator
- TOKEN_TEXANIM_TIME_STEP,
- TOKEN_TEXANIM_TEXCOORDS_START,
- TOKEN_TEXANIM_TEXCOORDS_END,
- TOKEN_START_TEXANIM_TEXCOORDS_RANGE,
- TOKEN_END_TEXANIM_TEXCOORDS_RANGE,
- TOKEN_TEXANIM_ANIMATION_TYPE,
- TOKEN_TEXANIM_START_RANDOM,
- TOKEN_TEXANIM_LOOP,
- TOKEN_TEXANIM_UP_DOWN,
- TOKEN_TEXANIM_RANDOM,
-
- // TextureRotator
- TOKEN_TEXROT_USE_OWN_ROTATION,
- TOKEN_TEXROT_ROTATION_SPEED,
- TOKEN_TEXROT_ROTATION,
-
- // VelocityMatchingAffector
- TOKEN_VELO_MATCHING_RADIUS,
-
- // VortexAffector
- TOKEN_VORTEX_ROTATION_VECTOR,
- TOKEN_VORTEX_ROTATION_SPEED,
-
- // OnCountObserver
- TOKEN_ONCOUNT_THRESHOLD,
-
- // OnEventFlagObserver
- TOKEN_ONEVENT_FLAG,
-
- // OnPositionObserver
- TOKEN_ONPOSITION_X,
- TOKEN_ONPOSITION_Y,
- TOKEN_ONPOSITION_Z,
-
- // OnRandomObserver
- TOKEN_ONRANDOM_THRESHOLD,
-
- // OnTimeObserver
- TOKEN_ONTIME,
-
- // OnVelocityObserver
- TOKEN_ONVELOCITY_THRESHOLD,
-
- // DoAffectorEventHandler
- TOKEN_FORCE_AFFECTOR,
- TOKEN_FORCE_AFFECTOR_PRE_POST,
-
- // DoEnableComponentEventHandler
- TOKEN_DOENABLE_COMPONENT,
- TOKEN_DOENABLE_EMITTER_COMPONENT,
- TOKEN_DOENABLE_AFFECTOR_COMPONENT,
- TOKEN_DOENABLE_TECHNIQUE_COMPONENT,
- TOKEN_DOENABLE_OBSERVER_COMPONENT,
-
- // DoPlacementParticleEventHandler
- TOKEN_DOPLACE_FORCE_EMITTER,
- TOKEN_DOPLACE_NUMBER_OF_PARTICLES,
- TOKEN_INHERIT_POSITION,
- TOKEN_INHERIT_DIRECTION,
- TOKEN_INHERIT_ORIENTATION,
- TOKEN_INHERIT_TIME_TO_LIVE,
- TOKEN_INHERIT_MASS,
- TOKEN_INHERIT_TEXTURE_COORDINATE,
- TOKEN_INHERIT_COLOUR,
- TOKEN_INHERIT_WIDTH,
- TOKEN_INHERIT_HEIGHT,
- TOKEN_INHERIT_DEPTH,
-
- // DoScaleEventHandler
- TOKEN_DOSCALE_FRACTION,
- TOKEN_DOSCALE_TYPE,
- TOKEN_DOSCALE_TIME_TO_LIVE,
- TOKEN_DOSCALE_VELOCITY,
-
- // SlaveBehaviour
-
- // PhysXActorExtern
- TOKEN_PHYSX_SHAPE_TYPE,
- TOKEN_PHYSX_ACTOR_COLLISION_GROUP,
- TOKEN_PHYSX_SHAPE_COLLISION_GROUP,
- TOKEN_PHYSX_GROUP_MASK,
- TOKEN_PHYSX_ANGULAR_VELOCITY,
- TOKEN_PHYSX_ANGULAR_DAMPING,
- TOKEN_PHYSX_MATERIAL_INDEX,
- TOKEN_SHAPE_TYPE,
- TOKEN_ACTOR_COLLISION_GROUP,
- TOKEN_SHAPE_COLLISION_GROUP,
- TOKEN_ANGULAR_VELOCITY,
- TOKEN_ANGULAR_DAMPING,
- TOKEN_MATERIAL_INDEX,
- TOKEN_PHYSX_BOX,
- TOKEN_PHYSX_SPHERE,
- TOKEN_PHYSX_CAPSULE,
-
- // PhysXFluidExtern
- TOKEN_REST_PARTICLE_PER_METER,
- TOKEN_REST_DENSITY,
- TOKEN_KERNEL_RADIUS_MULTIPLIER,
- TOKEN_MOTION_LIMIT_MULTIPLIER,
- TOKEN_COLLISION_DISTANCE_MULTIPLIER,
- TOKEN_PACKET_SIZE_MULTIPLIER,
- TOKEN_STIFFNESS,
- TOKEN_VISCOSITY,
- TOKEN_SURFACE_TENSION,
- TOKEN_DAMPING,
- TOKEN_EXTERNAL_ACCELERATION,
- TOKEN_RESTITUTION_FOR_STATIC_SHAPES,
- TOKEN_DYNAMIC_FRICTION_FOR_STATIC_SHAPES,
- TOKEN_STATIC_FRICTION_FOR_STATIC_SHAPES,
- TOKEN_ATTRACTION_FOR_STATIC_SHAPES,
- TOKEN_RESTITUTION_FOR_DYNAMIC_SHAPES,
- TOKEN_DYNAMIC_FRICTION_FOR_DYNAMIC_SHAPES,
- TOKEN_STATIC_FRICTION_FOR_DYNAMIC_SHAPES,
- TOKEN_ATTRACTION_FOR_DYNAMIC_SHAPES,
- TOKEN_COLLISION_RESPONSE_COEFFICIENT,
- TOKEN_COLLISION_GROUP,
- TOKEN_SIMULATION_METHOD,
- TOKEN_COLLISION_METHOD,
- TOKEN_FLAGS,
- TOKEN_FLAG_VISUALIZATION,
- TOKEN_FLAG_DISABLE_GRAVITY,
- TOKEN_FLAG_COLLISION_TWOWAY,
- TOKEN_FLAG_FLUID_ENABLED,
- TOKEN_FLAG_HARDWARE,
- TOKEN_FLAG_PRIORITY_MODE,
- TOKEN_FLAG_PROJECT_TO_PLANE,
- TOKEN_FLAG_STRICT_COOKING_FORMAT,
- TOKEN_INTERCOLLISION,
- TOKEN_NOINTERCOLLISION,
- TOKEN_MIX_INTERCOLLISION,
- TOKEN_STATIC,
- TOKEN_DYNAMIC,
-
- // SceneDecoratorExtern
- TOKEN_SCENE_MESH_NAME,
- TOKEN_SCENE_MATERIAL_NAME,
- TOKEN_SCENE_SCALE,
- TOKEN_SCENE_POSITION
- };
- // Static tokens: Note, that the order must be the same as the enum
- static const std::string token[1000] =
- {
- // Generic
- "group_mask",
- "acceleration",
- "max_increment",
- "min_increment",
- "number_of_iterations",
- "colour_change",
- "initial_colour",
- "random_initial_colour",
- "use_vertex_colours",
- "use_own_rotation",
- "max_deviation",
- "time_step",
- "box_width",
- "box_height",
- "box_depth",
- "velocity",
- "speed",
- "rotation_speed",
- "rotation",
- "rotation_axis",
- "normal",
- "step",
- "number_of_segments",
- "max_elements",
- "update_interval",
- "distance_threshold",
- "material",
- "mesh_name",
- "radius",
- "enabled",
- "position",
- "keep_local",
- "less_than",
- "greater_than",
- "equals",
- "visual_particle",
- "emitter_particle",
- "affector_particle",
- "technique_particle",
- "system_particle",
- "point",
- "vertex",
- "increase",
- "alias",
- "use_alias",
- "since_start_system",
-
- // Particle System
- "system",
- "iteration_interval",
- "nonvisible_update_timeout",
- "fixed_timeout",
- "lod_distances",
- "main_camera_name",
- "smooth_lod",
- "fast_forward",
- "scale",
- "scale_velocity",
- "scale_time",
- "tight_bounding_box",
- "category",
-
- // Particle Technique
- "technique",
- "visual_particle_quota",
- "emitted_emitter_quota",
- "emitted_affector_quota",
- "emitted_technique_quota",
- "emitted_system_quota",
- "lod_index",
- "default_particle_width",
- "default_particle_height",
- "default_particle_depth",
- "spatial_hashing_cell_dimension",
- "spatial_hashing_cell_overlap",
- "spatial_hashtable_size",
- "spatial_hashing_update_interval",
- "max_velocity",
-
- // Particle Renderer
- "renderer",
- "render_queue_group",
- "sorting",
- "texture_coords_define",
- "texture_coords_rows",
- "texture_coords_set",
- "texture_coords_columns",
- "use_soft_particles",
- "soft_particles_contrast_power",
- "soft_particles_scale",
- "soft_particles_delta",
-
- // Particle Emitter
- "emitter",
- "direction",
- "orientation",
- "range_start_orientation",
- "range_end_orientation",
- "start_orientation_range",
- "end_orientation_range",
- "duration",
- "repeat_delay",
- "emits",
- "angle",
- "emission_rate",
- "time_to_live",
- "mass",
- "start_texture_coords",
- "end_texture_coords",
- "start_texture_coords_range",
- "end_texture_coords_range",
- "texture_coords",
- "start_colour_range",
- "end_colour_range",
- "colour",
- "all_particle_dimensions",
- "particle_width",
- "particle_height",
- "particle_depth",
- "auto_direction",
- "force_emission",
-
- // Particle Affector
- "affector",
- "mass_affector",
- "exclude_emitter",
- "affect_specialisation",
- "special_default",
- "special_ttl_increase",
- "special_ttl_decrease",
-
- // Particle Observer
- "observer",
- "observe_particle_type",
- "observe_interval",
- "observe_until_event",
-
- // Particle Event Handler
- "handler",
-
- // Particle Behaviour
- "behaviour",
-
- // Extern
- "extern",
- "attachable_distance_threshold",
-
- // Dynamic Attribute
- "control_point",
- "min",
- "max",
- "oscillate_frequency",
- "oscillate_phase",
- "oscillate_base",
- "oscillate_amplitude",
- "oscillate_type",
- "dyn_oscillate",
- "dyn_random",
- "dyn_curved_linear",
- "dyn_curved_spline",
- "sine",
- "square",
-
- // CameraDependency (unused)
- "camera_dependency",
-
- // ------------------------- Renderers -------------------------
- // BeamRenderer
- "beam_update_interval",
- "beam_max_elements",
- "beam_deviation",
- "beam_number_segments",
- "beam_jump_segments",
- "beam_texcoord_direction",
- "beam_vertex_colours",
- "tcd_u",
- "tcd_v",
-
- // BillboardRenderer
- "billboard_type",
- "billboard_origin",
- "billboard_rotation_type",
- "common_direction",
- "common_up_vector",
- "point_rendering",
- "accurate_facing",
- "oriented_common",
- "oriented_self",
- "oriented_shape",
- "perpendicular_common",
- "perpendicular_self",
- "top_left",
- "top_center",
- "top_right",
- "center_left",
- "center_right",
- "center",
- "bottom_left",
- "bottom_center",
- "bottom_right",
- "texcoord",
-
- // BoxRenderer: No properties itself
-
- // EntityRenderer
- "entity_renderer_mesh_name",
- "entity_orientation_type",
- "ent_oriented_self",
- "ent_oriented_self_mirrored",
- "ent_oriented_shape",
-
- // LightRenderer
- "light_renderer_light_type",
- "light_renderer_queue_group",
- "light_renderer_specular",
- "light_renderer_att_range",
- "light_renderer_att_constant",
- "light_renderer_att_linear",
- "light_renderer_att_quadratic",
- "light_renderer_spot_inner",
- "light_renderer_spot_outer",
- "light_renderer_falloff",
- "light_renderer_powerscale",
- "spot",
- "flash_frequency",
- "flash_length",
- "flash_random",
-
- // RibbonTrailRenderer
- "ribbontrail_vertex_colours",
- "ribbontrail_max_elements",
- "ribbontrail_length",
- "ribbontrail_width",
- "ribbontrail_random_initial_colour",
- "ribbontrail_initial_colour",
- "ribbontrail_colour_change",
-
- // SphereRenderer: No properties itself
-
- // ------------------------- Emitters -------------------------
- // BoxEmitter
- "box_em_width",
- "box_em_height",
- "box_em_depth",
-
- // CircleEmitter
- "circle_em_radius",
- "circle_em_step",
- "circle_em_angle",
- "circle_em_random",
- "emit_random",
- "circle_em_normal",
-
- // LineEmitter
- "line_em_end",
- "line_em_max_increment",
- "line_em_min_increment",
- "line_em_max_deviation",
-
- // MeshSurfaceEmitter
- "mesh_surface_mesh_name",
- "mesh_surface_distribution",
- "mesh_surface_scale",
- "edge",
- "heterogeneous_1",
- "heterogeneous_2",
- "homogeneous",
-
- // PointEmitter: No properties itself
-
- // PositionEmitter
- "add_position",
- "random_position",
-
- // SlaveEmitter
- "master_technique_name",
- "master_emitter_name",
-
- // SphereSurfaceEmitter
- "sphere_surface_em_radius",
-
- // VertexEmitter
- "vertex_em_step",
- "vertex_em_segments",
- "vertex_em_iterations",
- "vertex_em_mesh_name",
-
- // ------------------------- Affectors -------------------------
- // AlignAffector
- "align_aff_resize",
- "resize",
-
- // BoxCollider
- "box_collider_width",
- "box_collider_height",
- "box_collider_depth",
-
- // BaseCollider
- "friction",
- "bouncyness",
- "intersection",
- "collision_friction",
- "collision_bouncyness",
- "collision_intersection",
- "collision_type",
- "bounce",
- "flow",
- "none",
- "point",
- "box",
- "inner_collision",
-
- // CollisionAvoidanceAffector
- "avoidance_radius",
-
- // ColourAffector
- "time_colour",
- "colour_aff_time_colour",
- "colour_operation",
- "multiply",
- "set",
-
- // FlockCenteringAffector: No properties itself
-
- // BaseForceAffector
- "force_vector",
- "force_application",
- "force_aff_vector",
- "force_aff_application",
- "add",
- "average",
-
- // ForceFieldAffector
- "forcefield_type",
- "realtime",
- "matrix",
- "delta",
- "force",
- "octaves",
- "frequency",
- "amplitude",
- "persistence",
- "forcefield_size",
- "worldsize",
- "ignore_negative_x",
- "ignore_negative_y",
- "ignore_negative_z",
- "movement",
- "movement_frequency",
-
- // GeometryRotator
- "geom_rot_use_own_rotation",
- "geom_rot_rotation_speed",
- "geom_rot_axis",
-
- // GravityAffector
- "gravity",
-
- // InterParticleCollider
- "adjustment",
- "collision_response",
- "ip_adjustment",
- "ip_collision_response",
- "average_velocity",
- "angle_based_velocity",
-
- // JetAffector
- "jet_aff_accel",
-
- // LineAffector
- "end",
- "drift",
- "line_aff_max_deviation",
- "line_aff_time_step",
- "line_aff_end",
- "line_aff_drift",
-
- // LinearForceAffector: No properties itself
-
- // ParticleFollower
- "follower_max_distance",
- "follower_min_distance",
- "max_distance",
- "min_distance",
-
- // PathFollower
- "path_follower_point",
-
- // PlaneCollider
- "plane_collider_normal",
-
- // Randomiser
- "rand_aff_max_deviation_x",
- "rand_aff_max_deviation_y",
- "rand_aff_max_deviation_z",
- "max_deviation_x",
- "max_deviation_y",
- "max_deviation_z",
- "rand_aff_time_step",
- "rand_aff_direction",
- "use_direction",
-
- // ScaleAffector
- "xyz_scale",
- "x_scale",
- "y_scale",
- "z_scale",
-
- // ScaleVelocityAffector
- "velocity_scale",
- "stop_at_flip",
-
- // SineForceAffector
- "sinef_aff_frequency_min",
- "sinef_aff_frequency_max",
- "min_frequency",
- "max_frequency",
-
- // SphereCollider
- "sphere_collider_radius",
-
- // TextureAnimator
- "time_step_animation",
- "texture_coords_start",
- "texture_coords_end",
- "start_texture_coords_range",
- "end_texture_coords_range",
- "texture_animation_type",
- "texture_start_random",
- "loop",
- "up_down",
- "random",
-
- // TextureRotator
- "tex_rot_use_own_rotation",
- "tex_rot_speed",
- "tex_rot_rotation",
-
- // VelocityMatchingAffector
- "velocity_matching_radius",
-
- // VortexAffector
- "vortex_aff_vector",
- "vortex_aff_speed",
-
- // ------------------------- Observers -------------------------
- // OnClearObserver: No properties itself
-
- // OnCollisionObserver: No properties itself
-
- // OnCountObserver
- "count_threshold",
-
- // OnEmissionObserver: No properties itself
-
- // OnEventFlagObserver
- "event_flag",
-
- // OnExpireObserver: No properties itself
-
- // OnPositionObserver
- "position_x",
- "position_y",
- "position_z",
-
- // OnQuotaObserver: No properties itself
-
- // OnRandomObserver
- "random_threshold",
-
- // OnTimeObserver
- "on_time",
-
- // OnVelocityObserver
- "velocity_threshold",
-
- // ------------------------- Event Handlers -------------------------
- // DoAffectorEventHandler
- "force_affector",
- "pre_post",
-
- // DoEnableComponentEventHandler
- "enable_component",
- "emitter_component",
- "affector_component",
- "technique_component",
- "observer_component",
-
- // DoExpireEventHandler: No properties itself
-
- // DoFreezeEventHandler: No properties itself
-
- // DoPlacementParticleEventHandler
- "force_emitter",
- "number_of_particles",
- "inherit_position",
- "inherit_direction",
- "inherit_orientation",
- "inherit_time_to_live",
- "inherit_mass",
- "inherit_texture_coord",
- "inherit_colour",
- "inherit_width",
- "inherit_height",
- "inherit_depth",
-
- // DoScaleEventHandler
- "scale_fraction",
- "scale_type",
- "st_time_to_live",
- "st_velocity",
-
- // DoStopSystemEventHandler: No properties itself
-
- // ------------------------- Behaviours -------------------------
- // SlaveBehaviour: No properties itself
-
- // ------------------------- Externs -------------------------
- // BoxColliderExtern: Defined in BoxCollider
-
- // GravityExtern: Defined in GravityAffector
-
- // PhysXActorExtern
- "physx_shape",
- "physx_actor_group",
- "physx_shape_group",
- "physx_group_mask",
- "physx_angular_velocity",
- "physx_angular_damping",
- "physx_material_index",
- "shape",
- "actor_group",
- "shape_group",
- "angular_velocity",
- "angular_damping",
- "material_index",
- "Box",
- "Sphere",
- "Capsule",
-
- // PhysXFluidExtern
- "rest_particles_per_meter",
- "rest_density",
- "kernel_radius_multiplier",
- "motion_limit_multiplier",
- "collision_distance_multiplier",
- "packet_size_multiplier",
- "stiffness",
- "viscosity",
- "surface_tension",
- "damping",
- "external_acceleration",
- "restitution_for_static_shapes",
- "dynamic_friction_for_static_shapes",
- "static_friction_for_static_shapes",
- "attraction_for_static_shapes",
- "restitution_for_dynamic_shapes",
- "dynamic_friction_for_dynamic_shapes",
- "static_friction_for_dynamic_shapes",
- "attraction_for_dynamic_shapes",
- "collision_response_coefficient",
- "collision_group",
- "simulation_method",
- "collision_method",
- "flags",
- "visualization",
- "disable_gravity",
- "collision_twoway",
- "fluid_enabled",
- "hardware",
- "priority_mode",
- "project_to_plane",
- "strict_cooking_format",
- "intercollision",
- "no_intercollision",
- "mix_intercollision",
- "static",
- "dynamic",
-
- // SceneDecoratorExtern
- "scene_mesh_name",
- "scene_material_name",
- "scene_node_scale",
- "scene_node_position",
-
- // SphereColliderExtern: Defined in SphereCollider
-
- // VortexExtern: Defined in VortexAffector
- };
- /**script translator*/
- class PUScriptTranslator
- {
- public:
- PUScriptTranslator();
- virtual ~PUScriptTranslator();
-
- public:
- static bool getFloat(const PUAbstractNode &node, float *result);
- static bool getInt(const PUAbstractNode &node, int *result);
- static bool getUInt(const PUAbstractNode &node, unsigned int *result);
- static bool getBoolean(const PUAbstractNode &node, bool *result);
- static bool getString(const PUAbstractNode &node, std::string *result);
-
- //protected:
- // virtual void translate(PUScriptCompiler *compiler, const PUConcreteNode &node) = 0;
-
- public:
-
-
- // Define validation types
- enum ValidationType
- {
- VAL_REAL,
- VAL_BOOL,
- VAL_UINT,
- VAL_INT,
- VAL_STRING,
- VAL_VECTOR2,
- VAL_VECTOR3,
- VAL_VECTOR4,
- VAL_COLOURVALUE,
- VAL_QUATERNION
- };
-
-
- /** @See ScriptTranslator
- */
- virtual void translate(PUScriptCompiler* /*compiler*/, PUAbstractNode* /*node*/)
- {
- // No own implementation
- }
-
- /** Only parses a certain child property
- */
- virtual bool translateChildProperty(PUScriptCompiler* /*compiler*/, PUAbstractNode* /*node*/)
- {
- // No own implementation
- return false;
- }
-
- /** Only parses a certain child objec
- */
- virtual bool translateChildObject(PUScriptCompiler* /*compiler*/, PUAbstractNode* /*node*/)
- {
- // No own implementation
- return false;
- }
-
- /** Parse Vector2
- */
- bool getVector2(PUAbstractNodeList::const_iterator i,
- PUAbstractNodeList::const_iterator end,
- Vec2* result,
- int maxEntries = 2);
-
- /** Parse Vector3
- */
- bool getVector3(PUAbstractNodeList::const_iterator i,
- PUAbstractNodeList::const_iterator end,
- Vec3* result,
- int maxEntries = 3);
-
- /** Parse Vector4
- */
- bool getVector4(PUAbstractNodeList::const_iterator i,
- PUAbstractNodeList::const_iterator end,
- Vec4* result,
- int maxEntries = 4);
-
- /** Parse Quaternion
- */
- bool getQuaternion(PUAbstractNodeList::const_iterator i,
- PUAbstractNodeList::const_iterator end,
- Quaternion* result,
- int maxEntries = 4);
-
- /** Validate a property.
- */
- bool passValidateProperty(PUScriptCompiler* compiler,
- PUPropertyAbstractNode* prop,
- const std::string& token,
- ValidationType validationType);
-
- /** Validate whether a property has values.
- */
- bool passValidatePropertyNoValues(PUScriptCompiler* compiler,
- PUPropertyAbstractNode* prop,
- const std::string& token);
-
- /** Validate whether the number of values is correct.
- */
- bool passValidatePropertyNumberOfValues(PUScriptCompiler* compiler,
- PUPropertyAbstractNode* prop,
- const std::string& token,
- unsigned short numberOfValues);
-
- /** Validate whether the number of values is between a range.
- */
- bool passValidatePropertyNumberOfValuesRange(PUScriptCompiler* compiler,
- PUPropertyAbstractNode* prop,
- const std::string& token,
- unsigned short minNumberOfValues,
- unsigned short maxNumberOfValues);
-
- /** Validate whether the value is a correct Real.
- */
- bool passValidatePropertyValidReal(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Validate whether the value is a correct int.
- */
- bool passValidatePropertyValidInt(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Validate whether the value is a correct uint.
- */
- bool passValidatePropertyValidUint(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Validate whether the value is a correct bool.
- */
- bool passValidatePropertyValidBool(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Validate whether the value is a correct Vector2.
- */
- bool passValidatePropertyValidVector2(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Validate whether the value is a correct Vector3.
- */
- bool passValidatePropertyValidVector3(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Validate whether the value is a correct Vector4.
- */
- bool passValidatePropertyValidVector4(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Validate whether the value is a correct Quaternion.
- */
- bool passValidatePropertyValidQuaternion(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
-
- /** Adds an error to the compiler: An unknown token is read.
- */
- void errorUnexpectedToken(PUScriptCompiler* compiler, PUAbstractNode* node);
-
- /** Adds an error to the compiler: An unknown property is read.
- */
- void errorUnexpectedProperty(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop);
- void processNode(PUScriptCompiler *compiler, PUAbstractNode *node);
-
- virtual bool isParticleSystemTranslator() const { return false; }
- };
- NS_CC_END
- #endif /* defined(__ssaafsdf__CCScriptTranslator__) */
|