// This file is a part of Framsticks SDK. http://www.framsticks.com/ // Copyright (C) 1999-2018 Maciej Komosinski and Szymon Ulatowski. // See LICENSE.txt for details. #ifndef _GENEPROPS_H #define _GENEPROPS_H #include #include #define F14_MODIFIERS_VISUAL "DdGgBbHh" #define F14_MODIFIERS_RARE "EeWwAaSs" //expdef would need to handle these properly/specifically to ensure reasonable behavior, and hardly any expdef does. Modifying initial energy of a creature as a result of its genes (Ee) is in general not a good idea. Weight (Ww) works only in water, and in water sinking/going up should usually be caused by real "intentional" activity of a creature, not by its inherited weight. For assimilation (Aa), there is a dedicated parameter in CreaturesGroup. Stamina (Ss) is no longer needed as destructive collisions are not supported, and even if they were, some expdef would need to impose reasonable restrictions on the value of this parameter (e.g. similar to normalizeBiol4()) so there is some cost associated with it, and the specific consequences of destructions should be defined as needed. #define F14_MODIFIERS "LlRrCcQqFfMmIi" F14_MODIFIERS_RARE F14_MODIFIERS_VISUAL /** * Contains physical, biological and other properties of * stick, except for rotation. The constructor initializes properties of sticks with * default values. In order to change a property of a stick, the executeModifier() method * should be called. Modification of length, curvedness and twist properties * usually affects further sticks, so new sticks should have properties of * parents (prop) modified with the prop.propagateAlong() method. * "Biological" properties (assimilation, stamina, muscle strength and * ingestion) should be normalized after modification with normalizeBiol4(). */ struct GeneProps { public: double length; ///