Пример #1
0
        public static byte[] GetBytes(Data.LocationAbsValues value, Data.ParentEffectType parentEffectType)
        {
            List <byte[]> data = new List <byte[]>();

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.Gravity)
            {
                var bytes = TranslationAbs_Gravity_Values.Create(value.Gravity).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.AttractiveForce)
            {
                var bytes = TranslationAbs_AttractiveForce_Values.Create(value.AttractiveForce).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.None)
            {
                data.Add(((int)0).GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #2
0
        public static byte[] GetBytes(Data.GenerationLocationValues value, Data.ParentEffectType parentEffectType, Dictionary <string, int> model_and_index)
        {
            List <byte[]> data = new List <byte[]>();

            if (value.EffectsRotation)
            {
                data.Add((1).GetBytes());
            }
            else
            {
                data.Add((0).GetBytes());
            }

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Point)
            {
                data.Add(value.Point.Location.GetBytes(1.0f));
            }
            else if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Sphere)
            {
                data.Add((value.Sphere.Radius.Max).GetBytes());
                data.Add((value.Sphere.Radius.Min).GetBytes());
                data.Add((value.Sphere.RotationX.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationX.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationY.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationY.Min / 180.0f * (float)Math.PI).GetBytes());
            }
            if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Model)
            {
                var path = value.Model.Model.RelativePath;
                if (model_and_index.ContainsKey(path))
                {
                    data.Add(model_and_index[path].GetBytes());
                }
                else
                {
                    data.Add(((int)-1).GetBytes());
                }

                data.Add(((int)value.Model.Type.Value).GetBytes());
            }
            else if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Circle)
            {
                data.Add((value.Circle.Division.Value).GetBytes());
                data.Add((value.Circle.Radius.Max).GetBytes());
                data.Add((value.Circle.Radius.Min).GetBytes());
                data.Add((value.Circle.AngleStart.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleStart.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleEnd.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleEnd.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add(((int)value.Circle.Type.Value).GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #3
0
        public static byte[] GetBytes(Data.LocationAbsValues value, Data.ParentEffectType parentEffectType)
        {
            List <byte[]> data = new List <byte[]>();

            // Force field
            List <Data.LocalForceField> lffs = new List <Data.LocalForceField>
            {
                value.LocalForceField1,
                value.LocalForceField2,
                value.LocalForceField3,
            };

            data.Add((lffs.Count).GetBytes());

            foreach (var lff in lffs)
            {
                data.Add(lff.Type.GetValueAsInt().GetBytes());

                if (lff.Type.Value == Data.LocalForceFieldType.Turbulence)
                {
                    data.Add(lff.Turbulence.Seed.Value.GetBytes());
                    data.Add(lff.Turbulence.FieldScale.Value.GetBytes());
                    data.Add(lff.Turbulence.Strength.Value.GetBytes());
                    data.Add(lff.Turbulence.Octave.Value.GetBytes());
                }
            }

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.Gravity)
            {
                var bytes = TranslationAbs_Gravity_Values.Create(value.Gravity).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.AttractiveForce)
            {
                var bytes = TranslationAbs_AttractiveForce_Values.Create(value.AttractiveForce).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.None)
            {
                data.Add(((int)0).GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #4
0
        public static byte[] GetBytes(Data.LocationValues value, Data.ParentEffectType parentEffectType)
        {
            //if (parentEffectType != Data.ParentEffectType.NotBind) magnification = 1.0f;

            List <byte[]> data = new List <byte[]>();

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.LocationValues.ParamaterType.Fixed)
            {
                var bytes = Translation_Fixed_Values.Create(value.Fixed, 1.0f).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationValues.ParamaterType.PVA)
            {
                var bytes = Translation_PVA_Values.Create(value.PVA, 1.0f).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationValues.ParamaterType.Easing)
            {
                var easing = Utl.MathUtl.Easing((float)value.Easing.StartSpeed.Value, (float)value.Easing.EndSpeed.Value);

                List <byte[]> _data = new List <byte[]>();
                _data.Add(value.Easing.Start.GetBytes(1.0f));
                _data.Add(value.Easing.End.GetBytes(1.0f));
                _data.Add(BitConverter.GetBytes(easing[0]));
                _data.Add(BitConverter.GetBytes(easing[1]));
                _data.Add(BitConverter.GetBytes(easing[2]));
                var __data = _data.ToArray().ToArray();
                data.Add(__data.Count().GetBytes());
                data.Add(__data);
            }
            else if (value.Type.GetValue() == Data.LocationValues.ParamaterType.LocationFCurve)
            {
                var bytes1 = value.LocationFCurve.FCurve.GetBytes();

                List <byte[]> _data = new List <byte[]>();
                data.Add(bytes1.Count().GetBytes());
                data.Add(bytes1);
            }

            return(data.ToArray().ToArray());
        }
Пример #5
0
        public static byte[] GetBytes(Data.LocationValues value, Data.ParentEffectType parentEffectType, Dictionary <string, int> curveAndIndex, ExporterVersion version)
        {
            //if (parentEffectType != Data.ParentEffectType.NotBind) magnification = 1.0f;

            var type = value.Type.Value;

            // Fall back
            if (version < ExporterVersion.Ver16Alpha1)
            {
                if (type == Data.LocationValues.ParamaterType.NurbsCurve ||
                    type == Data.LocationValues.ParamaterType.ViewOffset)
                {
                    type = Data.LocationValues.ParamaterType.Fixed;
                }
            }

            List <byte[]> data = new List <byte[]>();

            data.Add(((int)type).GetBytes());

            if (type == Data.LocationValues.ParamaterType.Fixed)
            {
                var refBuf  = value.Fixed.Location.DynamicEquation.Index.GetBytes();
                var mainBuf = Translation_Fixed_Values.Create(value.Fixed, 1.0f).GetBytes();
                data.Add((mainBuf.Count() + refBuf.Count()).GetBytes());
                data.Add(refBuf);
                data.Add(mainBuf);
            }
            else if (type == Data.LocationValues.ParamaterType.PVA)
            {
                var refBuf1_1 = value.PVA.Location.DynamicEquationMax.Index.GetBytes();
                var refBuf1_2 = value.PVA.Location.DynamicEquationMin.Index.GetBytes();
                var refBuf2_1 = value.PVA.Velocity.DynamicEquationMax.Index.GetBytes();
                var refBuf2_2 = value.PVA.Velocity.DynamicEquationMin.Index.GetBytes();
                var refBuf3_1 = value.PVA.Acceleration.DynamicEquationMax.Index.GetBytes();
                var refBuf3_2 = value.PVA.Acceleration.DynamicEquationMin.Index.GetBytes();

                var mainBuf = Translation_PVA_Values.Create(value.PVA, 1.0f).GetBytes();
                data.Add((mainBuf.Count() + refBuf1_1.Count() * 6).GetBytes());
                data.Add(refBuf1_1);
                data.Add(refBuf1_2);
                data.Add(refBuf2_1);
                data.Add(refBuf2_2);
                data.Add(refBuf3_1);
                data.Add(refBuf3_2);
                data.Add(mainBuf);
            }
            else if (type == Data.LocationValues.ParamaterType.Easing)
            {
                Utils.ExportEasing(value.Easing, 1.0f, data, version);
            }
            else if (type == Data.LocationValues.ParamaterType.LocationFCurve)
            {
                var bytes1 = value.LocationFCurve.FCurve.GetBytes();

                List <byte[]> _data = new List <byte[]>();
                data.Add(bytes1.Count().GetBytes());
                data.Add(bytes1);
            }
            else if (type == Data.LocationValues.ParamaterType.NurbsCurve)
            {
                if (value.NurbsCurve.FilePath.RelativePath != string.Empty)
                {
                    // export index
                    var relative_path = value.NurbsCurve.FilePath.RelativePath;

                    if (relative_path != System.IO.Path.GetFileName(value.NurbsCurve.FilePath.RelativePath))
                    {
                        relative_path = System.IO.Path.GetDirectoryName(relative_path) + "/" + System.IO.Path.GetFileNameWithoutExtension(relative_path) + ".efkcurve";
                    }
                    else
                    {
                        relative_path = System.IO.Path.GetFileNameWithoutExtension(relative_path) + ".efkcurve";
                    }

                    data.Add(curveAndIndex[relative_path].GetBytes());
                }
                else
                {
                    data.Add((-1).GetBytes());
                }

                data.Add(BitConverter.GetBytes(value.NurbsCurve.Scale));

                data.Add(BitConverter.GetBytes(value.NurbsCurve.MoveSpeed));

                data.Add(value.NurbsCurve.LoopType.GetValueAsInt().GetBytes());
            }
            else if (type == Data.LocationValues.ParamaterType.ViewOffset)
            {
                data.Add(value.ViewOffset.Distance.Max.GetBytes());
                data.Add(value.ViewOffset.Distance.Min.GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #6
0
        public static byte[] GetBytes(Data.ScaleValues value, Data.ParentEffectType parentEffectType, ExporterVersion version)
        {
            float magnification = 1.0f;

            List <byte[]> data = new List <byte[]>();

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.Fixed)
            {
                var refBuf  = value.Fixed.Scale.DynamicEquation.Index.GetBytes();
                var mainBuf = Scaling_Fixed_Values.Create(value.Fixed, magnification).GetBytes();
                data.Add((mainBuf.Count() + refBuf.Count()).GetBytes());
                data.Add(refBuf);
                data.Add(mainBuf);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.PVA)
            {
                var refBuf1_1 = value.PVA.Scale.DynamicEquationMax.Index.GetBytes();
                var refBuf1_2 = value.PVA.Scale.DynamicEquationMin.Index.GetBytes();
                var refBuf2_1 = value.PVA.Velocity.DynamicEquationMax.Index.GetBytes();
                var refBuf2_2 = value.PVA.Velocity.DynamicEquationMin.Index.GetBytes();
                var refBuf3_1 = value.PVA.Acceleration.DynamicEquationMax.Index.GetBytes();
                var refBuf3_2 = value.PVA.Acceleration.DynamicEquationMin.Index.GetBytes();

                var mainBuf = Scaling_PVA_Values.Create(value.PVA, magnification).GetBytes();
                data.Add((mainBuf.Count() + refBuf1_1.Count() * 6).GetBytes());
                data.Add(refBuf1_1);
                data.Add(refBuf1_2);
                data.Add(refBuf2_1);
                data.Add(refBuf2_2);
                data.Add(refBuf3_1);
                data.Add(refBuf3_2);
                data.Add(mainBuf);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.Easing)
            {
                Utils.ExportEasing(value.Easing, magnification, data, version);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.SinglePVA)
            {
                var bytes = Scaling_SinglePVA_Values.Create(value.SinglePVA, magnification).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.SingleEasing)
            {
                var easing = Utl.MathUtl.Easing(
                    (float)value.SingleEasing.StartSpeed.Value,
                    (float)value.SingleEasing.EndSpeed.Value);

                List <byte[]> _data = new List <byte[]>();
                _data.Add(value.SingleEasing.Start.Max.GetBytes());
                _data.Add(value.SingleEasing.Start.Min.GetBytes());
                _data.Add(value.SingleEasing.End.Max.GetBytes());
                _data.Add(value.SingleEasing.End.Min.GetBytes());
                _data.Add(BitConverter.GetBytes(easing[0]));
                _data.Add(BitConverter.GetBytes(easing[1]));
                _data.Add(BitConverter.GetBytes(easing[2]));
                var __data = _data.ToArray().ToArray();
                data.Add(__data.Count().GetBytes());
                data.Add(__data);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.FCurve)
            {
                var bytes = value.FCurve.FCurve.GetBytes();

                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }

            return(data.ToArray().ToArray());
        }
Пример #7
0
        public static byte[] GetBytes(Data.LocationAbsValues value, Data.ParentEffectType parentEffectType, ExporterVersion version)
        {
            List <byte[]> data = new List <byte[]>();

            // Force field
            List <Data.LocalForceField> lffs = new List <Data.LocalForceField>
            {
                value.LocalForceField1,
                value.LocalForceField2,
                value.LocalForceField3,
            };

            data.Add((lffs.Count).GetBytes());

            foreach (var lff in lffs)
            {
                if (version >= ExporterVersion.Ver1600)
                {
                    data.Add(lff.Type.GetValueAsInt().GetBytes());

                    var pi = (float)Math.PI;

                    data.Add(BitConverter.GetBytes(lff.Power));
                    data.Add(BitConverter.GetBytes(lff.Position.X));
                    data.Add(BitConverter.GetBytes(lff.Position.Y));
                    data.Add(BitConverter.GetBytes(lff.Position.Z));
                    data.Add(BitConverter.GetBytes(lff.Rotation.X / 180.0f * pi));
                    data.Add(BitConverter.GetBytes(lff.Rotation.Y / 180.0f * pi));
                    data.Add(BitConverter.GetBytes(lff.Rotation.Z / 180.0f * pi));

                    if (lff.Type.Value == Data.LocalForceFieldType.Force)
                    {
                        data.Add((lff.Force.Gravitation.GetValue() ? 1 : 0).GetBytes());
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Wind)
                    {
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Vortex)
                    {
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Maginetic)
                    {
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Turbulence)
                    {
                        data.Add(lff.Turbulence.Seed.Value.GetBytes());
                        data.Add(lff.Turbulence.FieldScale.Value.GetBytes());
                        data.Add(lff.Turbulence.Strength.Value.GetBytes());
                        data.Add(lff.Turbulence.Octave.Value.GetBytes());
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Drag)
                    {
                    }

                    data.Add(lff.Falloff.Type.GetValueAsInt().GetBytes());

                    if (lff.Falloff.Type.Value != Data.ForceFieldFalloffType.None)
                    {
                        data.Add(lff.Falloff.Power.GetBytes());
                        data.Add(lff.Falloff.MaxDistance.GetBytes());
                        data.Add(lff.Falloff.MinDistance.GetBytes());

                        if (lff.Falloff.Type.Value == Data.ForceFieldFalloffType.Tube)
                        {
                            data.Add(lff.Falloff.Tube.RadiusPower.GetBytes());
                            data.Add(lff.Falloff.Tube.MaxRadius.GetBytes());
                            data.Add(lff.Falloff.Tube.MinRadius.GetBytes());
                        }

                        if (lff.Falloff.Type.Value == Data.ForceFieldFalloffType.Cone)
                        {
                            data.Add(lff.Falloff.Cone.AnglePower.GetBytes());
                            data.Add(lff.Falloff.Cone.MaxAngle.GetBytes());
                            data.Add(lff.Falloff.Cone.MinAngle.GetBytes());
                        }
                    }
                }
                else
                {
                    // 1.5 or later
                    if (lff.Type.Value == Data.LocalForceFieldType.Turbulence)
                    {
                        data.Add(lff.Type.GetValueAsInt().GetBytes());
                    }
                    else
                    {
                        data.Add(((int)(Data.LocalForceFieldType.None)).GetBytes());
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Turbulence)
                    {
                        data.Add(lff.Turbulence.Seed.Value.GetBytes());
                        data.Add(lff.Turbulence.FieldScale.Value.GetBytes());
                        data.Add(lff.Turbulence.Strength.Value.GetBytes());
                        data.Add(lff.Turbulence.Octave.Value.GetBytes());
                    }
                }
            }

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.Gravity)
            {
                var bytes = TranslationAbs_Gravity_Values.Create(value.Gravity).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.AttractiveForce)
            {
                var bytes = TranslationAbs_AttractiveForce_Values.Create(value.AttractiveForce).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.LocationAbsValues.ParamaterType.None)
            {
                data.Add(((int)0).GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #8
0
        public static byte[] GetBytes(Data.LocationAbsValues value, Data.ParentEffectType parentEffectType, ExporterVersion version)
        {
            List <byte[]> data = new List <byte[]>();

            // Force field
            List <Data.LocalForceField> lffs = new List <Data.LocalForceField>
            {
                value.LocalForceField1,
                value.LocalForceField2,
                value.LocalForceField3,
                value.LocalForceField4,
            };

            data.Add((lffs.Count).GetBytes());

            foreach (var lff in lffs)
            {
                if (version >= ExporterVersion.Ver16Alpha1)
                {
                    data.Add(lff.Type.GetValueAsInt().GetBytes());

                    var pi = (float)Math.PI;

                    data.Add(BitConverter.GetBytes(lff.Power));
                    data.Add(BitConverter.GetBytes(lff.Position.X));
                    data.Add(BitConverter.GetBytes(lff.Position.Y));
                    data.Add(BitConverter.GetBytes(lff.Position.Z));
                    data.Add(BitConverter.GetBytes(lff.Rotation.X / 180.0f * pi));
                    data.Add(BitConverter.GetBytes(lff.Rotation.Y / 180.0f * pi));
                    data.Add(BitConverter.GetBytes(lff.Rotation.Z / 180.0f * pi));

                    if (lff.Type.Value == Data.LocalForceFieldType.Force)
                    {
                        data.Add((lff.Force.Gravitation.GetValue() ? 1 : 0).GetBytes());
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Wind)
                    {
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Vortex)
                    {
                        var ftype = lff.Vortex.VortexType.Value;
                        data.Add(((int)ftype).GetBytes());
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Turbulence)
                    {
                        var ftype = lff.Turbulence.TurbulenceType.Value;
                        data.Add(((int)ftype).GetBytes());
                        data.Add(lff.Turbulence.Seed.Value.GetBytes());
                        data.Add(lff.Turbulence.FieldScale.Value.GetBytes());
                        data.Add(lff.Turbulence.Octave.Value.GetBytes());
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Drag)
                    {
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Gravity)
                    {
                        data.Add((byte[])lff.Gravity.Gravity);
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.AttractiveForce)
                    {
                        //data.Add(BitConverter.GetBytes(lff.AttractiveForce.Force.GetValue()));
                        data.Add(BitConverter.GetBytes(lff.AttractiveForce.Control.GetValue()));
                        data.Add(BitConverter.GetBytes(lff.AttractiveForce.MinRange.GetValue()));
                        data.Add(BitConverter.GetBytes(lff.AttractiveForce.MaxRange.GetValue()));
                    }

                    data.Add(lff.Falloff.Type.GetValueAsInt().GetBytes());

                    if (lff.Falloff.Type.Value != Data.ForceFieldFalloffType.None)
                    {
                        data.Add(lff.Falloff.Power.GetBytes());
                        data.Add(lff.Falloff.MaxDistance.GetBytes());
                        data.Add(lff.Falloff.MinDistance.GetBytes());

                        if (lff.Falloff.Type.Value == Data.ForceFieldFalloffType.Tube)
                        {
                            data.Add(lff.Falloff.Tube.RadiusPower.GetBytes());
                            data.Add(lff.Falloff.Tube.MaxRadius.GetBytes());
                            data.Add(lff.Falloff.Tube.MinRadius.GetBytes());
                        }

                        if (lff.Falloff.Type.Value == Data.ForceFieldFalloffType.Cone)
                        {
                            data.Add(lff.Falloff.Cone.AnglePower.GetBytes());
                            data.Add(lff.Falloff.Cone.MaxAngle.GetBytes(1.0f / 180.0f * pi));
                            data.Add(lff.Falloff.Cone.MinAngle.GetBytes(1.0f / 180.0f * pi));
                        }
                    }
                }
                else
                {
                    // 1.5 or later
                    if (lff.Type.Value == Data.LocalForceFieldType.Turbulence)
                    {
                        data.Add(lff.Type.GetValueAsInt().GetBytes());
                    }
                    else
                    {
                        data.Add(((int)(Data.LocalForceFieldType.None)).GetBytes());
                    }

                    if (lff.Type.Value == Data.LocalForceFieldType.Turbulence)
                    {
                        var strength = lff.Power.Value / 10.0f;

                        data.Add(lff.Turbulence.Seed.Value.GetBytes());
                        data.Add(lff.Turbulence.FieldScale.Value.GetBytes());
                        data.Add(strength.GetBytes());
                        data.Add(lff.Turbulence.Octave.Value.GetBytes());
                    }
                }
            }

            // For compatibility
            if (version < ExporterVersion.Ver16Alpha2)
            {
                var type = 0;
                data.Add(((int)type).GetBytes());
                data.Add(((int)0).GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #9
0
        public static byte[] GetBytes(Data.ScaleValues value, Data.ParentEffectType parentEffectType)
        {
            float magnification = 1.0f;

            List <byte[]> data = new List <byte[]>();

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.Fixed)
            {
                var bytes = Scaling_Fixed_Values.Create(value.Fixed, magnification).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.PVA)
            {
                var bytes = Scaling_PVA_Values.Create(value.PVA, magnification).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.Easing)
            {
                var easing = Utl.MathUtl.Easing(
                    (float)value.Easing.StartSpeed.Value,
                    (float)value.Easing.EndSpeed.Value);

                List <byte[]> _data = new List <byte[]>();
                _data.Add(value.Easing.Start.GetBytes(magnification));
                _data.Add(value.Easing.End.GetBytes(magnification));
                _data.Add(BitConverter.GetBytes(easing[0]));
                _data.Add(BitConverter.GetBytes(easing[1]));
                _data.Add(BitConverter.GetBytes(easing[2]));
                var __data = _data.ToArray().ToArray();
                data.Add(__data.Count().GetBytes());
                data.Add(__data);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.SinglePVA)
            {
                var bytes = Scaling_SinglePVA_Values.Create(value.SinglePVA, magnification).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.SingleEasing)
            {
                var easing = Utl.MathUtl.Easing(
                    (float)value.SingleEasing.StartSpeed.Value,
                    (float)value.SingleEasing.EndSpeed.Value);

                List <byte[]> _data = new List <byte[]>();
                _data.Add(value.SingleEasing.Start.Max.GetBytes());
                _data.Add(value.SingleEasing.Start.Min.GetBytes());
                _data.Add(value.SingleEasing.End.Max.GetBytes());
                _data.Add(value.SingleEasing.End.Min.GetBytes());
                _data.Add(BitConverter.GetBytes(easing[0]));
                _data.Add(BitConverter.GetBytes(easing[1]));
                _data.Add(BitConverter.GetBytes(easing[2]));
                var __data = _data.ToArray().ToArray();
                data.Add(__data.Count().GetBytes());
                data.Add(__data);
            }
            else if (value.Type.GetValue() == Data.ScaleValues.ParamaterType.FCurve)
            {
                var bytes = value.FCurve.FCurve.GetBytes();

                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }

            return(data.ToArray().ToArray());
        }
Пример #10
0
        public static byte[] GetBytes(Data.LocationValues value, Data.ParentEffectType parentEffectType)
        {
            //if (parentEffectType != Data.ParentEffectType.NotBind) magnification = 1.0f;

            List <byte[]> data = new List <byte[]>();

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.LocationValues.ParamaterType.Fixed)
            {
                var refBuf  = Core.Dynamic.Equations.GetIndex(value.Fixed.Location.DynamicEquation).GetBytes();
                var mainBuf = Translation_Fixed_Values.Create(value.Fixed, 1.0f).GetBytes();
                data.Add((mainBuf.Count() + refBuf.Count()).GetBytes());
                data.Add(refBuf);
                data.Add(mainBuf);
            }
            else if (value.Type.GetValue() == Data.LocationValues.ParamaterType.PVA)
            {
                var refBuf1_1 = Core.Dynamic.Equations.GetIndex(value.PVA.Location.DynamicEquationMax).GetBytes();
                var refBuf1_2 = Core.Dynamic.Equations.GetIndex(value.PVA.Location.DynamicEquationMin).GetBytes();
                var refBuf2_1 = Core.Dynamic.Equations.GetIndex(value.PVA.Velocity.DynamicEquationMax).GetBytes();
                var refBuf2_2 = Core.Dynamic.Equations.GetIndex(value.PVA.Velocity.DynamicEquationMin).GetBytes();
                var refBuf3_1 = Core.Dynamic.Equations.GetIndex(value.PVA.Acceleration.DynamicEquationMax).GetBytes();
                var refBuf3_2 = Core.Dynamic.Equations.GetIndex(value.PVA.Acceleration.DynamicEquationMin).GetBytes();

                var mainBuf = Translation_PVA_Values.Create(value.PVA, 1.0f).GetBytes();
                data.Add((mainBuf.Count() + refBuf1_1.Count() * 6).GetBytes());
                data.Add(refBuf1_1);
                data.Add(refBuf1_2);
                data.Add(refBuf2_1);
                data.Add(refBuf2_2);
                data.Add(refBuf3_1);
                data.Add(refBuf3_2);
                data.Add(mainBuf);
            }
            else if (value.Type.GetValue() == Data.LocationValues.ParamaterType.Easing)
            {
                var easing = Utl.MathUtl.Easing((float)value.Easing.StartSpeed.Value, (float)value.Easing.EndSpeed.Value);

                var refBuf1_1 = Core.Dynamic.Equations.GetIndex(value.Easing.Start.DynamicEquationMax).GetBytes();
                var refBuf1_2 = Core.Dynamic.Equations.GetIndex(value.Easing.Start.DynamicEquationMin).GetBytes();
                var refBuf2_1 = Core.Dynamic.Equations.GetIndex(value.Easing.End.DynamicEquationMax).GetBytes();
                var refBuf2_2 = Core.Dynamic.Equations.GetIndex(value.Easing.End.DynamicEquationMin).GetBytes();

                List <byte[]> _data = new List <byte[]>();
                _data.Add(refBuf1_1);
                _data.Add(refBuf1_2);
                _data.Add(refBuf2_1);
                _data.Add(refBuf2_2);
                _data.Add(value.Easing.Start.GetBytes(1.0f));
                _data.Add(value.Easing.End.GetBytes(1.0f));
                _data.Add(BitConverter.GetBytes(easing[0]));
                _data.Add(BitConverter.GetBytes(easing[1]));
                _data.Add(BitConverter.GetBytes(easing[2]));
                var __data = _data.ToArray().ToArray();
                data.Add(__data.Count().GetBytes());
                data.Add(__data);
            }
            else if (value.Type.GetValue() == Data.LocationValues.ParamaterType.LocationFCurve)
            {
                var bytes1 = value.LocationFCurve.FCurve.GetBytes();

                List <byte[]> _data = new List <byte[]>();
                data.Add(bytes1.Count().GetBytes());
                data.Add(bytes1);
            }

            return(data.ToArray().ToArray());
        }
Пример #11
0
        public static byte[] GetBytes(Data.GenerationLocationValues value, Data.ParentEffectType parentEffectType, Dictionary <string, int> model_and_index)
        {
            List <byte[]> data = new List <byte[]>();

            if (value.EffectsRotation)
            {
                data.Add((1).GetBytes());
            }
            else
            {
                data.Add((0).GetBytes());
            }

            data.Add(value.Type.GetValueAsInt().GetBytes());

            if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Point)
            {
                data.Add(value.Point.Location.GetBytes(1.0f));
            }
            else if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Sphere)
            {
                data.Add((value.Sphere.Radius.Max).GetBytes());
                data.Add((value.Sphere.Radius.Min).GetBytes());
                data.Add((value.Sphere.RotationX.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationX.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationY.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationY.Min / 180.0f * (float)Math.PI).GetBytes());
            }
            if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Model)
            {
                var relative_path = value.Model.Model.RelativePath;

                if (!string.IsNullOrEmpty(relative_path))
                {
                    relative_path = System.IO.Path.GetDirectoryName(relative_path) + "/" + System.IO.Path.GetFileNameWithoutExtension(relative_path) + ".efkmodel";
                }

                if (model_and_index.ContainsKey(relative_path))
                {
                    data.Add(model_and_index[relative_path].GetBytes());
                }
                else
                {
                    data.Add(((int)-1).GetBytes());
                }

                data.Add(((int)value.Model.Type.Value).GetBytes());
            }
            else if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Circle)
            {
                data.Add((value.Circle.Division.Value).GetBytes());
                data.Add((value.Circle.Radius.Max).GetBytes());
                data.Add((value.Circle.Radius.Min).GetBytes());
                data.Add((value.Circle.AngleStart.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleStart.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleEnd.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleEnd.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add(((int)value.Circle.Type.Value).GetBytes());

                // Version 1.30(10)
                data.Add(((int)value.Circle.AxisDirection.Value).GetBytes());

                data.Add((value.Circle.AngleNoize.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleNoize.Min / 180.0f * (float)Math.PI).GetBytes());
            }

            else if (value.Type.GetValue() == Data.GenerationLocationValues.ParameterType.Line)
            {
                data.Add((value.Line.Division.Value).GetBytes());
                data.Add(value.Line.PositionStart.GetBytes(1.0f));
                data.Add(value.Line.PositionEnd.GetBytes(1.0f));
                data.Add((value.Line.PositionNoize.Max).GetBytes());
                data.Add((value.Line.PositionNoize.Min).GetBytes());
                data.Add(((int)value.Line.Type.Value).GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #12
0
        public static byte[] GetBytes(Data.GenerationLocationValues value, Data.ParentEffectType parentEffectType, SortedDictionary <string, int> model_and_index, Dictionary <Data.ProceduralModelParameter, int> pmodel_and_index, ExporterVersion version)
        {
            List <byte[]> data = new List <byte[]>();

            if (value.EffectsRotation)
            {
                data.Add((1).GetBytes());
            }
            else
            {
                data.Add((0).GetBytes());
            }

            var type = value.Type.GetValue();

            // Fallback
            if (version < ExporterVersion.Ver16Alpha1)
            {
                if (type == Data.GenerationLocationValues.ParameterType.Model && value.Model.ModelReference.Value == Data.ModelReferenceType.ProceduralModel)
                {
                    type = Data.GenerationLocationValues.ParameterType.Point;
                }
            }

            data.Add(((int)type).GetBytes());

            if (type == Data.GenerationLocationValues.ParameterType.Point)
            {
                data.Add(value.Point.Location.GetBytes(1.0f));
            }
            else if (type == Data.GenerationLocationValues.ParameterType.Sphere)
            {
                data.Add((value.Sphere.Radius.Max).GetBytes());
                data.Add((value.Sphere.Radius.Min).GetBytes());
                data.Add((value.Sphere.RotationX.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationX.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationY.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Sphere.RotationY.Min / 180.0f * (float)Math.PI).GetBytes());
            }
            if (type == Data.GenerationLocationValues.ParameterType.Model)
            {
                if (version >= ExporterVersion.Ver16Alpha3)
                {
                    var refType = (int)value.Model.ModelReference.Value;
                    data.Add((refType).GetBytes());
                }

                if (value.Model.ModelReference.Value == Data.ModelReferenceType.File)
                {
                    var relative_path = value.Model.Model.RelativePath;

                    if (!string.IsNullOrEmpty(relative_path))
                    {
                        relative_path = Utils.GetModelPath(value.Model.Model);

                        if (model_and_index.ContainsKey(relative_path))
                        {
                            data.Add(model_and_index[relative_path].GetBytes());
                        }
                        else
                        {
                            data.Add(((int)-1).GetBytes());
                        }
                    }
                    else
                    {
                        data.Add(((int)-1).GetBytes());
                    }
                }
                else if (value.Model.ModelReference.Value == Data.ModelReferenceType.ProceduralModel)
                {
                    if (value.Model.Reference.Value != null)
                    {
                        var ind = pmodel_and_index[value.Model.Reference.Value];
                        data.Add(ind.GetBytes());
                    }
                    else
                    {
                        data.Add(((int)-1).GetBytes());
                    }
                }
                else
                {
                    throw new Exception();
                }

                data.Add(((int)value.Model.Type.Value).GetBytes());
            }
            else if (type == Data.GenerationLocationValues.ParameterType.Circle)
            {
                data.Add((value.Circle.Division.Value).GetBytes());
                data.Add((value.Circle.Radius.Max).GetBytes());
                data.Add((value.Circle.Radius.Min).GetBytes());
                data.Add((value.Circle.AngleStart.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleStart.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleEnd.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleEnd.Min / 180.0f * (float)Math.PI).GetBytes());
                data.Add(((int)value.Circle.Type.Value).GetBytes());

                // Version 1.30(10)
                data.Add(((int)value.Circle.AxisDirection.Value).GetBytes());

                data.Add((value.Circle.AngleNoize.Max / 180.0f * (float)Math.PI).GetBytes());
                data.Add((value.Circle.AngleNoize.Min / 180.0f * (float)Math.PI).GetBytes());
            }

            else if (type == Data.GenerationLocationValues.ParameterType.Line)
            {
                data.Add((value.Line.Division.Value).GetBytes());
                data.Add(value.Line.PositionStart.GetBytes(1.0f));
                data.Add(value.Line.PositionEnd.GetBytes(1.0f));
                data.Add((value.Line.PositionNoize.Max).GetBytes());
                data.Add((value.Line.PositionNoize.Min).GetBytes());
                data.Add(((int)value.Line.Type.Value).GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #13
0
        public static byte[] GetBytes(Data.LocationValues value, Data.ParentEffectType parentEffectType, Dictionary <string, int> curveAndIndex, ExporterVersion version)
        {
            //if (parentEffectType != Data.ParentEffectType.NotBind) magnification = 1.0f;

            var type = value.Type.Value;

            // Fall back
            if (version < ExporterVersion.Ver1600)
            {
                if (type == Data.LocationValues.ParamaterType.NurbsCurve ||
                    type == Data.LocationValues.ParamaterType.ViewOffset)
                {
                    type = Data.LocationValues.ParamaterType.Fixed;
                }
            }

            List <byte[]> data = new List <byte[]>();

            data.Add(((int)type).GetBytes());

            if (type == Data.LocationValues.ParamaterType.Fixed)
            {
                var refBuf  = value.Fixed.Location.DynamicEquation.Index.GetBytes();
                var mainBuf = Translation_Fixed_Values.Create(value.Fixed, 1.0f).GetBytes();
                data.Add((mainBuf.Count() + refBuf.Count()).GetBytes());
                data.Add(refBuf);
                data.Add(mainBuf);
            }
            else if (type == Data.LocationValues.ParamaterType.PVA)
            {
                var refBuf1_1 = value.PVA.Location.DynamicEquationMax.Index.GetBytes();
                var refBuf1_2 = value.PVA.Location.DynamicEquationMin.Index.GetBytes();
                var refBuf2_1 = value.PVA.Velocity.DynamicEquationMax.Index.GetBytes();
                var refBuf2_2 = value.PVA.Velocity.DynamicEquationMin.Index.GetBytes();
                var refBuf3_1 = value.PVA.Acceleration.DynamicEquationMax.Index.GetBytes();
                var refBuf3_2 = value.PVA.Acceleration.DynamicEquationMin.Index.GetBytes();

                var mainBuf = Translation_PVA_Values.Create(value.PVA, 1.0f).GetBytes();
                data.Add((mainBuf.Count() + refBuf1_1.Count() * 6).GetBytes());
                data.Add(refBuf1_1);
                data.Add(refBuf1_2);
                data.Add(refBuf2_1);
                data.Add(refBuf2_2);
                data.Add(refBuf3_1);
                data.Add(refBuf3_2);
                data.Add(mainBuf);
            }
            else if (type == Data.LocationValues.ParamaterType.Easing)
            {
                var easing = Utl.MathUtl.Easing((float)value.Easing.StartSpeed.Value, (float)value.Easing.EndSpeed.Value);

                var refBuf1_1 = value.Easing.Start.DynamicEquationMax.Index.GetBytes();
                var refBuf1_2 = value.Easing.Start.DynamicEquationMin.Index.GetBytes();
                var refBuf2_1 = value.Easing.End.DynamicEquationMax.Index.GetBytes();
                var refBuf2_2 = value.Easing.End.DynamicEquationMin.Index.GetBytes();

                List <byte[]> _data = new List <byte[]>();
                _data.Add(refBuf1_1);
                _data.Add(refBuf1_2);
                _data.Add(refBuf2_1);
                _data.Add(refBuf2_2);
                _data.Add(value.Easing.Start.GetBytes(1.0f));
                _data.Add(value.Easing.End.GetBytes(1.0f));
                _data.Add(BitConverter.GetBytes(easing[0]));
                _data.Add(BitConverter.GetBytes(easing[1]));
                _data.Add(BitConverter.GetBytes(easing[2]));
                var __data = _data.ToArray().ToArray();
                data.Add(__data.Count().GetBytes());
                data.Add(__data);
            }
            else if (type == Data.LocationValues.ParamaterType.LocationFCurve)
            {
                var bytes1 = value.LocationFCurve.FCurve.GetBytes();

                List <byte[]> _data = new List <byte[]>();
                data.Add(bytes1.Count().GetBytes());
                data.Add(bytes1);
            }
            else if (type == Data.LocationValues.ParamaterType.NurbsCurve)
            {
                if (value.NurbsCurve.FilePath.RelativePath != string.Empty)
                {
                    // export index
                    var relative_path = value.NurbsCurve.FilePath.RelativePath;
                    data.Add(curveAndIndex[relative_path].GetBytes());
                }
                else
                {
                    data.Add((-1).GetBytes());
                }

                data.Add(BitConverter.GetBytes(value.NurbsCurve.Scale));

                data.Add(BitConverter.GetBytes(value.NurbsCurve.MoveSpeed));

                data.Add(value.NurbsCurve.LoopType.GetValueAsInt().GetBytes());
            }
            else if (type == Data.LocationValues.ParamaterType.ViewOffset)
            {
                data.Add(value.ViewOffset.Distance.Max.GetBytes());
                data.Add(value.ViewOffset.Distance.Min.GetBytes());
            }

            return(data.ToArray().ToArray());
        }
Пример #14
0
        public static byte[] GetBytes(Data.ScaleValues value, Data.ParentEffectType parentEffectType, ExporterVersion version)
        {
            float magnification = 1.0f;

            var type = value.Type.Value;

            if (version < ExporterVersion.Ver16Alpha1)
            {
                if (type == Data.ScaleValues.ParamaterType.SingleFCurve)
                {
                    type = Data.ScaleValues.ParamaterType.Fixed;
                }
            }

            List <byte[]> data = new List <byte[]>();

            data.Add(((int)type).GetBytes());

            if (type == Data.ScaleValues.ParamaterType.Fixed)
            {
                var refBuf  = value.Fixed.Scale.DynamicEquation.Index.GetBytes();
                var mainBuf = Scaling_Fixed_Values.Create(value.Fixed, magnification).GetBytes();
                data.Add((mainBuf.Count() + refBuf.Count()).GetBytes());
                data.Add(refBuf);
                data.Add(mainBuf);
            }
            else if (type == Data.ScaleValues.ParamaterType.PVA)
            {
                var refBuf1_1 = value.PVA.Scale.DynamicEquationMax.Index.GetBytes();
                var refBuf1_2 = value.PVA.Scale.DynamicEquationMin.Index.GetBytes();
                var refBuf2_1 = value.PVA.Velocity.DynamicEquationMax.Index.GetBytes();
                var refBuf2_2 = value.PVA.Velocity.DynamicEquationMin.Index.GetBytes();
                var refBuf3_1 = value.PVA.Acceleration.DynamicEquationMax.Index.GetBytes();
                var refBuf3_2 = value.PVA.Acceleration.DynamicEquationMin.Index.GetBytes();

                var mainBuf = Scaling_PVA_Values.Create(value.PVA, magnification).GetBytes();
                data.Add((mainBuf.Count() + refBuf1_1.Count() * 6).GetBytes());
                data.Add(refBuf1_1);
                data.Add(refBuf1_2);
                data.Add(refBuf2_1);
                data.Add(refBuf2_2);
                data.Add(refBuf3_1);
                data.Add(refBuf3_2);
                data.Add(mainBuf);
            }
            else if (type == Data.ScaleValues.ParamaterType.Easing)
            {
                Utils.ExportEasing(value.Easing, magnification, data, version);
            }
            else if (type == Data.ScaleValues.ParamaterType.SinglePVA)
            {
                var bytes = Scaling_SinglePVA_Values.Create(value.SinglePVA, magnification).GetBytes();
                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (type == Data.ScaleValues.ParamaterType.SingleEasing)
            {
                Utils.ExportEasing(value.SingleEasing, 1.0f, data, version, true);
            }
            else if (type == Data.ScaleValues.ParamaterType.FCurve)
            {
                var bytes = value.FCurve.FCurve.GetBytes();

                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }
            else if (type == Data.ScaleValues.ParamaterType.SingleFCurve)
            {
                var bytes = value.SingleFCurve.GetBytes();

                data.Add(bytes.Count().GetBytes());
                data.Add(bytes);
            }

            return(data.ToArray().ToArray());
        }