public TerrainModification_BlueprintData(TerrainModificationCondition condition)
        {
            this.name = condition.transform.name;

            this.position = condition.transform.localPosition;
            this.rotation = condition.transform.localRotation;
            this.scale    = condition.transform.localScale;

            this.revertOnDestroy  = condition.revertOnDestroy;
            this.modificationType = condition.modificationType;
            this.xScale           = condition.xScale;
            this.zScale           = condition.zScale;

            this.offset = condition.offset;

            this.assingAlphaMaps  = condition.assignTextureOnFlattenArea;
            this.alphaMap         = condition.flattenAreaTextureIndex;
            this.alphaMapStrength = condition.flattenAreaTextureStrength;
        }
        public override void UnPack(GameObject target)
        {
            BaseBuilding building = target.GetComponentInParent <BaseBuilding>();

            if (building != null)
            {
                TerrainModificationCondition condition = (TerrainModificationCondition)building.CreateCondition(name, SocketPositionAnchor.Center, typeof(TerrainModificationCondition));
                condition.transform.localPosition = (Vector3)position;
                condition.transform.localScale    = (Vector3)scale;
                condition.transform.localRotation = (Quaternion)rotation;

                condition.revertOnDestroy  = this.revertOnDestroy;
                condition.modificationType = this.modificationType;
                condition.xScale           = this.xScale;
                condition.zScale           = this.zScale;
                condition.offset           = (Vector3)this.offset;

                condition.assignTextureOnFlattenArea = this.assingAlphaMaps;
                condition.flattenAreaTextureIndex    = this.alphaMap;
                condition.flattenAreaTextureStrength = this.alphaMapStrength;
            }
        }