/**
         * 组件的公共部分 Rect
         */
        public static void SetRect(this JContainer jsonNode, string desc, Rect data, int?digits = null)
        {
            JArray arr = new JArray();

            arr.AddNumber(data.x, digits);
            arr.AddNumber(data.y, digits);
            arr.AddNumber(data.width, digits);
            arr.AddNumber(data.height, digits);
            jsonNode.Add(new JProperty(desc, arr));
        }
        //-------------------------------扩展部分--------------------------------

        /**
         * 组件的公共部分,Vector2
         */
        public static void SetVector2(this JContainer jsonNode, string desc, Vector2 value, Vector2?defalutValue = null, int?digits = null)
        {
            if (defalutValue == null || (defalutValue != null && !value.Equals(defalutValue)))
            {
                JArray arr = new JArray();
                arr.AddNumber(value.x, digits);
                arr.AddNumber(value.y, digits);
                jsonNode.Add(new JProperty(desc, arr));
            }
        }
        public static void SetUVTransform(this JContainer jsonNode, string desc, Vector4 data, int?digits = null)
        {
            var tx       = data.z;
            var ty       = data.w;
            var sx       = data.x;
            var sy       = data.y;
            var cx       = 0.0f;
            var cy       = 0.0f;
            var rotation = 0.0f;
            var c        = Math.Cos(rotation);
            var s        = Math.Sin(rotation);

            JArray arr = new JArray();

            arr.AddNumber(sx * c);
            arr.AddNumber(sx * s);
            arr.AddNumber(-sx * (c * cx + s * cy) + cx + tx);
            arr.AddNumber(-sy * s);
            arr.AddNumber(sy * c);
            arr.AddNumber(-sy * (-s * cx + c * cy) + cy + ty);
            arr.AddNumber(0.0);
            arr.AddNumber(0.0);
            arr.AddNumber(1.0);
            jsonNode.Add(new JProperty(desc, arr));
        }
 public static void SetColor3(this JContainer jsonNode, string desc, Color value, Color?defalutValue = null, int?digits = null)
 {
     if (defalutValue == null || (defalutValue != null && !value.Equals(defalutValue)))
     {
         JArray arr = new JArray();
         arr.AddNumber(value.r, digits);
         arr.AddNumber(value.g, digits);
         arr.AddNumber(value.b, digits);
         jsonNode.Add(new JProperty(desc, arr));
     }
 }
Example #5
0
        protected override void Serialize(Component component, ComponentData compData)
        {
            SphereCollider comp = component as SphereCollider;
            var            arr  = new JArray();

            arr.AddNumber(comp.center.x);
            arr.AddNumber(comp.center.y);
            arr.AddNumber(comp.center.z);
            arr.AddNumber(comp.radius);

            compData.properties.Add("sphere", arr);
        }
Example #6
0
        protected void AddCurve(JObject curveItem, string key, Keyframe[] keys)
        {
            JArray frmes = new JArray();

            foreach (Keyframe k in keys)
            {
                JArray keyItem = new JArray();
                keyItem.AddNumber(k.time);
                keyItem.AddNumber(k.value);
                frmes.Add(keyItem);
            }
            curveItem.Add(key, frmes);
        }
        protected override void Serialize(Component component, ComponentData compData)
        {
            BoxCollider comp = component as BoxCollider;

            var    halfSize = comp.size * 0.5f;
            var    minimum  = comp.center - halfSize;
            var    maximum  = comp.center + halfSize;
            JArray aabbItem = new JArray();

            aabbItem.AddNumber(minimum.x);
            aabbItem.AddNumber(minimum.y);
            aabbItem.AddNumber(minimum.z);
            aabbItem.AddNumber(maximum.x);
            aabbItem.AddNumber(maximum.y);
            aabbItem.AddNumber(maximum.z);

            compData.properties.Add("aabb", aabbItem);
        }
Example #8
0
        protected override void Serialize(Component component, ComponentData compData)
        {
            var            obj  = component.gameObject;
            ParticleSystem comp = component as ParticleSystem;

            //main
            {
                var main     = comp.main;
                var mainItem = new JObject();
                compData.properties.Add(new JProperty("main", mainItem));
                mainItem.SetNumber("duration", main.duration);
                mainItem.SetBool("loop", main.loop);
                this.AddMinMaxCurve(mainItem, "startDelay", main.startDelay);
                this.AddMinMaxCurve(mainItem, "startLifetime", main.startLifetime);
                this.AddMinMaxCurve(mainItem, "startSpeed", main.startSpeed);

                mainItem.SetBool("startSize3D", main.startSize3D);
                if (main.startSize3D)
                {
                    this.AddMinMaxCurve(mainItem, "startSizeX", main.startSizeX);
                    this.AddMinMaxCurve(mainItem, "startSizeY", main.startSizeY);
                    this.AddMinMaxCurve(mainItem, "startSizeZ", main.startSizeZ);
                }
                else
                {
                    this.AddMinMaxCurve(mainItem, "startSizeX", main.startSize);
                    this.AddMinMaxCurve(mainItem, "startSizeY", main.startSize);
                    this.AddMinMaxCurve(mainItem, "startSizeZ", main.startSize);
                }

                mainItem.SetBool("_startRotation3D", main.startRotation3D);
                if (main.startRotation3D)
                {
                    this.AddMinMaxCurve(mainItem, "startRotationX", main.startRotationX);
                    this.AddMinMaxCurve(mainItem, "startRotationY", main.startRotationY);
                    this.AddMinMaxCurve(mainItem, "startRotationZ", main.startRotationZ);
                }
                else
                {
                    this.AddMinMaxCurve(mainItem, "startRotationX", main.startRotation);
                    this.AddMinMaxCurve(mainItem, "startRotationY", main.startRotation);
                    this.AddMinMaxCurve(mainItem, "startRotationZ", main.startRotation);
                }

                this.AddMinMaxGradient(mainItem, "startColor", main.startColor);
                this.AddMinMaxCurve(mainItem, "gravityModifier", main.gravityModifier);
                mainItem.SetEnum("_simulationSpace", main.simulationSpace);
                mainItem.SetEnum("scaleMode", main.scalingMode);
                mainItem.SetBool("playOnAwake", main.playOnAwake);
                var value = this.EstimateMaxParticles(comp);
                mainItem.SetInt("_maxParticles", value);
                MyLog.Log(comp.gameObject.name + " 粒子估算:" + value);
            }

            //emission
            {
                var emissionItem = new JObject();
                compData.properties.Add(new JProperty("emission", emissionItem));
                // compData.properties.Add("emission", emissionItem);
                this.AddMinMaxCurve(emissionItem, "rateOverTime", comp.emission.rateOverTime);
                var burstsArr = new JArray();
                emissionItem.Add("bursts", burstsArr);
                var bursts = new ParticleSystem.Burst[comp.emission.burstCount];
                comp.emission.GetBursts(bursts);
                foreach (var burst in bursts)
                {
                    JArray burstItem = new JArray();
                    burstItem.AddNumber(burst.time);
                    burstItem.AddInt(burst.minCount);
                    burstItem.AddInt(burst.maxCount);
                    burstItem.AddInt(burst.cycleCount);
                    burstItem.AddNumber(burst.repeatInterval);
                    burstsArr.Add(burstItem);
                }
            }
            //shape
            if (comp.shape.enabled)
            {
                var shapItem = new JObject();
                compData.properties.Add(new JProperty("shape", shapItem));
                // compData.properties.Add("shape", shapItem);

                shapItem.SetEnum("shapeType", comp.shape.shapeType);
                shapItem.SetNumber("angle", comp.shape.angle);
                shapItem.SetNumber("length", comp.shape.length);
                shapItem.SetEnum("arcMode", comp.shape.arcMode);
                shapItem.SetNumber("arc", comp.shape.arc);
                shapItem.SetNumber("arcSpread", comp.shape.arcSpread);
                shapItem.SetEnum("radiusMode", comp.shape.radiusMode);
                shapItem.SetNumber("radius", comp.shape.radius);
                shapItem.SetNumber("radiusSpread", comp.shape.radiusSpread);
                shapItem.SetVector3("box", comp.shape.box);
                shapItem.SetBool("randomDirection", comp.shape.randomDirectionAmount > 0);
                shapItem.SetBool("spherizeDirection", comp.shape.sphericalDirectionAmount > 0);
                this.AddMinMaxCurve(shapItem, "arcSpeed", comp.shape.arcSpeed);
            }
            //velocityOverLifetiem
            if (comp.velocityOverLifetime.enabled)
            {
                var velocityOverItem = new JObject();
                compData.properties.Add(new JProperty("velocityOverLifetime", velocityOverItem));
                // compData.properties.Add("velocityOverLifetime", velocityOverItem);

                velocityOverItem.SetEnum("_mode", comp.velocityOverLifetime.x.mode);
                velocityOverItem.SetEnum("_space", comp.velocityOverLifetime.space);
                this.AddMinMaxCurve(velocityOverItem, "_x", comp.velocityOverLifetime.x);
                this.AddMinMaxCurve(velocityOverItem, "_y", comp.velocityOverLifetime.y);
                this.AddMinMaxCurve(velocityOverItem, "_z", comp.velocityOverLifetime.z);
            }
            //colorOverLifetime
            if (comp.colorOverLifetime.enabled)
            {
                var colorOverItem = new JObject();
                compData.properties.Add(new JProperty("colorOverLifetime", colorOverItem));
                // compData.properties.Add("colorOverLifetime", colorOverItem);

                this.AddMinMaxGradient(colorOverItem, "_color", comp.colorOverLifetime.color);
            }
            //sizeOverLifetime
            if (comp.sizeOverLifetime.enabled)
            {
                var sizeOverItem = new JObject();
                compData.properties.Add(new JProperty("sizeOverLifetime", sizeOverItem));
                // compData.properties.Add("sizeOverLifetime", sizeOverItem);

                sizeOverItem.SetBool("_separateAxes", comp.sizeOverLifetime.separateAxes);
                this.AddMinMaxCurve(sizeOverItem, "_size", comp.sizeOverLifetime.size);
                this.AddMinMaxCurve(sizeOverItem, "_x", comp.sizeOverLifetime.x);
                this.AddMinMaxCurve(sizeOverItem, "_y", comp.sizeOverLifetime.y);
                this.AddMinMaxCurve(sizeOverItem, "_z", comp.sizeOverLifetime.z);
            }
            //rotationOverLifetime
            if (comp.rotationOverLifetime.enabled)
            {
                var rotationOverItem = new JObject();
                compData.properties.Add(new JProperty("rotationOverLifetime", rotationOverItem));
                // compData.properties.Add("rotationOverLifetime", rotationOverItem);

                rotationOverItem.SetBool("_separateAxes", comp.rotationOverLifetime.separateAxes);
                this.AddMinMaxCurve(rotationOverItem, "_x", comp.rotationOverLifetime.x);
                this.AddMinMaxCurve(rotationOverItem, "_y", comp.rotationOverLifetime.y);
                this.AddMinMaxCurve(rotationOverItem, "_z", comp.rotationOverLifetime.z);
            }
            //textureSheetAnimationModule
            if (comp.textureSheetAnimation.enabled)
            {
                var textureSheetAnimation = new JObject();
                compData.properties.Add(new JProperty("textureSheetAnimation", textureSheetAnimation));
                // compData.properties.Add("textureSheetAnimation", textureSheetAnimation);

                textureSheetAnimation.SetInt("_numTilesX", comp.textureSheetAnimation.numTilesX);
                textureSheetAnimation.SetInt("_numTilesY", comp.textureSheetAnimation.numTilesY);
                textureSheetAnimation.SetEnum("_animation", comp.textureSheetAnimation.animation);
                textureSheetAnimation.SetBool("_useRandomRow", comp.textureSheetAnimation.useRandomRow);
                textureSheetAnimation.SetInt("_cycleCount", comp.textureSheetAnimation.cycleCount);
                textureSheetAnimation.SetInt("_rowIndex", comp.textureSheetAnimation.rowIndex);
                this.AddMinMaxCurve(textureSheetAnimation, "_frameOverTime", comp.textureSheetAnimation.frameOverTime, comp.textureSheetAnimation.numTilesX * comp.textureSheetAnimation.numTilesY);
                this.AddMinMaxCurve(textureSheetAnimation, "_startFrame", comp.textureSheetAnimation.startFrame);
            }
        }