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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }