示例#1
0
 private static Parser.WatchFace ParseResources(Reader reader)
 {
     Logger.Debug("Parsing parameters...");
     try
     {
         if (previewSize.Width == 176)
         {
             return(ParametersConverter.Parse <WatchFaceBip>(reader.Parameters));
         }
         else if (previewSize.Width == 360)
         {
             return(ParametersConverter.Parse <WatchFaceVerge>(reader.Parameters));
         }
         else if (previewSize.Width == 454 || previewSize.Width == 390)
         {
             return(ParametersConverter.Parse <WatchFaceGTR>(reader.Parameters));
         }
         else
         {
             return(ParametersConverter.Parse <Parser.WatchFace>(reader.Parameters));
         }
     }
     catch (Exception e)
     {
         Logger.Fatal(e);
         return(null);
     }
 }
示例#2
0
        private static void WriteWatchFace(string outputDirectory, string outputFileName, string imagesDirectory, Parser.WatchFace watchFace)
        {
            try
            {
                Logger.Debug("Reading referenced images from '{0}'", imagesDirectory);
                var imagesReader = new ImagesLoader(imagesDirectory);
                imagesReader.Process(watchFace);

                Logger.Trace("Building parameters for watch face...");
                var descriptor = ParametersConverter.Build(watchFace);

                var baseFilename = Path.GetFileNameWithoutExtension(outputFileName);
                GeneratePreviews(descriptor, imagesReader.Images.ToArray(), outputDirectory, baseFilename);

                Logger.Debug("Writing watch face to '{0}'", outputFileName);
                using (var fileStream = File.OpenWrite(outputFileName))
                {
                    var writer = new Writer(fileStream, imagesReader.Images);
                    writer.Write(descriptor);
                    fileStream.Flush();
                }
            }
            catch (Exception e)
            {
                Logger.Fatal(e);
                File.Delete(outputFileName);
            }
        }
        public UrlBuilder(RequestParser requestParser)
        {
            log.Debug("Initialize new Client.UrlBuilder.");

            RequestParser       = requestParser;
            ParametersConverter = new ParametersConverter();
        }
示例#4
0
        private static void WriteWatchFace(string outputDirectory, string outputFileName, string imagesDirectory, Parser.WatchFace watchFace)
        {
            try
            {
                Logger.Debug("从 '{0}' 读取参考图像", imagesDirectory);
                var imagesReader = new ResourcesLoader(imagesDirectory);
                imagesReader.Process(watchFace);

                Logger.Trace("建构表盘参数...");
                var descriptor = ParametersConverter.Build(watchFace);

                var baseFilename = Path.GetFileNameWithoutExtension(outputFileName);
                GeneratePreviews(descriptor, imagesReader.Images, outputDirectory, baseFilename);

                Logger.Debug("写入表盘到: '{0}'", outputFileName);
                using (var fileStream = File.OpenWrite(outputFileName))
                {
                    var writer = new Writer(fileStream, imagesReader.Resources);
                    writer.Write(descriptor);
                    fileStream.Flush();
                }
            }
            catch (Exception e)
            {
                Logger.Fatal(e);
                File.Delete(outputFileName);
            }
        }
        public UrlBuilder(RequestParser requestParser)
        {
            log.Debug("Initialize new Client.UrlBuilder.");

            RequestParser = requestParser;
            ParametersConverter = new ParametersConverter();
        }
示例#6
0
 public AlignmentSideCommand()
 {
     Aliases           = new[] { "side" };
     RequiredRole      = RoleEnum.GameMaster;
     ParentCommandType = typeof(AlignmentCommands);
     Description       = "Set the alignement side of the given target";
     AddParameter("side", "s", "Alignement side", converter: ParametersConverter.GetEnumConverter <AlignmentSideEnum>());
     AddTargetParameter(true);
 }
示例#7
0
 public TransitionResetCommand()
 {
     Aliases           = new[] { "reset" };
     Description       = "Reset the current map transition";
     RequiredRole      = RoleEnum.Administrator;
     ParentCommandType = typeof(TransitionsCommands);
     AddParameter("transition", "t", "Top/Right/Bottom/Left",
                  converter: ParametersConverter.GetEnumConverter <MapNeighbour>());
     AddParameter("from", "f", "The map to modify", isOptional: true, converter: ParametersConverter.MapConverter);
 }
示例#8
0
 internal static void SetSpringBonesAndColliders(
     GameObject instance,
     ParametersConverter swayingParametersConverter
     )
 {
     if (DynamicBoneType != null)
     {
         DynamicBoneReplacer.SetSpringBoneColliderGroups(instance);
         DynamicBoneReplacer.SetSpringBones(instance, swayingParametersConverter);
         DynamicBoneReplacer.RemoveUnusedColliderGroups(instance);
     }
     DynamicBoneReplacer.SetSpringBoneColliderGroupsForVirtualCast(instance);
 }
示例#9
0
 private static Parser.WatchFace ParseResources(Reader reader)
 {
     Logger.Debug("Parsing parameters...");
     try
     {
         return(ParametersConverter.Parse <Parser.WatchFace>(reader.Parameters));
     }
     catch (Exception e)
     {
         Logger.Fatal(e);
         return(null);
     }
 }
示例#10
0
        /// <summary>
        /// 子孫の<see cref="DynamicBone"/>を基に<see cref="VRMSpringBone"/>を設定します。
        /// </summary>
        /// <param name="instance"></param>
        /// <param name="swayingParametersConverter"></param>
        private static void SetSpringBones(GameObject instance, ParametersConverter swayingParametersConverter)
        {
            var boneInfo  = new BoneInfo(instance.GetComponent <VRMMeta>());
            var secondary = instance.transform.Find("secondary").gameObject;

            GameObject.DestroyImmediate(secondary.GetComponent <VRMSpringBone>());

            foreach (var dynamicBones in instance.GetComponentsInChildren(DynamicBoneType)
                     .Select((dynamic dynamicBone) =>
            {
                var parameters = swayingParametersConverter(new DynamicBoneParameters()
                {
                    Damping = dynamicBone.m_Damping,
                    DampingDistrib = dynamicBone.m_DampingDistrib,
                    Elasticity = dynamicBone.m_Elasticity,
                    ElasticityDistrib = dynamicBone.m_ElasticityDistrib,
                    Stiffness = dynamicBone.m_Stiffness,
                    StiffnessDistrib = dynamicBone.m_StiffnessDistrib,
                    Inert = dynamicBone.m_Inert,
                    InertDistrib = dynamicBone.m_InertDistrib,
                }, boneInfo);

                var colliderGroups = new List <VRMSpringBoneColliderGroup>();
                if (dynamicBone.m_Colliders != null)
                {
                    foreach (var collider in dynamicBone.m_Colliders)
                    {
                        if (!collider.transform.IsChildOf(instance.transform))
                        {
                            // ルート外の参照を除外
                            continue;
                        }

                        VRMSpringBoneColliderGroup colliderGroup
                            = collider.GetComponent <VRMSpringBoneColliderGroup>();
                        if (colliderGroup == null || colliderGroups.Contains(colliderGroup))
                        {
                            continue;
                        }

                        colliderGroups.Add(colliderGroup);
                    }
                }

                Vector3 gravity = dynamicBone.m_Gravity;
                return(dynamicBone, parameters, colliderGroups, compare: string.Join("\n", new[]
                {
                    parameters.StiffnessForce,
                    gravity.x,
                    gravity.y,
                    gravity.z,
                    parameters.DragForce,
                    (float)dynamicBone.m_Radius,
                }.Select(parameter => parameter.ToString("F2"))
                                                                                     .Concat(colliderGroups
                                                                                             .Select(colliderGroup => colliderGroup.transform.RelativePathFrom(instance.transform)))
                                                                                     ));
            })
                     .GroupBy(dynamicBones => dynamicBones.compare)) // 同一パラメータでグループ化
            {
                var dynamicBone = dynamicBones.First();
                var springBone  = secondary.AddComponent <VRMSpringBone>();
                springBone.m_stiffnessForce = dynamicBone.parameters.StiffnessForce;
                Vector3 gravity = dynamicBone.dynamicBone.m_Gravity;
                springBone.m_gravityPower = gravity.magnitude;
                springBone.m_gravityDir   = gravity.normalized;
                springBone.m_dragForce    = dynamicBone.parameters.DragForce;
                springBone.RootBones      = dynamicBones.Select(db => (Transform)db.dynamicBone.m_Root)
                                            .Where(transform => transform != null)
                                            .Distinct()
                                            .ToList();
                springBone.m_hitRadius    = dynamicBone.dynamicBone.m_Radius;
                springBone.ColliderGroups = dynamicBone.colliderGroups.ToArray();
            }
        }
 public MonsterSpawnCommand()
 {
     base.Aliases = new string[]
     {
         "spawn"
     };
     base.RequiredRole  = RoleEnum.GameMaster;
     base.Description   = "Spawn a monster on the current location";
     base.ParentCommand = typeof(MonsterCommands);
     base.AddParameter <MonsterTemplate>("monster", "m", "Monster template Id", null, false, ParametersConverter.MonsterTemplateConverter);
     base.AddParameter <sbyte>("grade", "g", "Monster grade", 0, true, null);
     base.AddParameter <sbyte>("id", "id", "Monster group id", 0, true, null);
     base.AddParameter <Map>("map", "map", "Map id", null, true, ParametersConverter.MapConverter);
     base.AddParameter <short>("cell", "cell", "Cell id", 0, true, null);
     base.AddParameter <DirectionsEnum>("direction", "dir", "Direction", DirectionsEnum.DIRECTION_EAST, true, ParametersConverter.GetEnumConverter <DirectionsEnum>());
 }
 public NpcSpawnCommand()
 {
     base.Aliases = new string[]
     {
         "spawn"
     };
     base.RequiredRole  = RoleEnum.GameMaster;
     base.Description   = "Spawn a npc on the current location";
     base.ParentCommand = typeof(NpcsCommands);
     base.AddParameter <NpcTemplate>("npc", "npc", "Npc Template id", null, false, ParametersConverter.NpcTemplateConverter);
     base.AddParameter <Map>("map", "map", "Map id", null, true, ParametersConverter.MapConverter);
     base.AddParameter <short>("cell", "cell", "Cell id", 0, true, null);
     base.AddParameter <DirectionsEnum>("direction", "dir", "Direction", DirectionsEnum.DIRECTION_EAST, true, ParametersConverter.GetEnumConverter <DirectionsEnum>());
 }
示例#13
0
 public NpcSpawnCommand()
 {
     Aliases           = new[] { "spawn" };
     RequiredRole      = RoleEnum.Administrator;
     Description       = "Spawn a npc on the current location";
     ParentCommandType = typeof(NpcsCommands);
     AddParameter("npc", "npc", "Npc Template id", converter: ParametersConverter.NpcTemplateConverter);
     AddParameter("map", "map", "Map id", isOptional: true, converter: ParametersConverter.MapConverter);
     AddParameter <short>("cell", "cell", "Cell id", isOptional: true);
     AddParameter("direction", "dir", "Direction", isOptional: true, converter: ParametersConverter.GetEnumConverter <DirectionsEnum>());
 }
 public static void MyClassInitialize(TestContext testContext)
 {
     log = LogManager.GetLogger(typeof(ParametersConverterTest));
     ParametersConverter = new ParametersConverter();
 }
示例#15
0
 public RequestParser()
 {
     log.Debug("Initialize new RequestParser.");
     ParametersConverter = new ParametersConverter();
 }
 public RequestParser()
 {
     log.Debug("Initialize new RequestParser.");
     ParametersConverter = new ParametersConverter();
 }
示例#17
0
        private static void WriteWatchFace(string outputDirectory, string outputFileName, string imagesDirectory, Parser.WatchFace watchFace)
        {
            try
            {
                Logger.Debug("Reading referenced images from '{0}'", imagesDirectory);
                var imagesReader = new ResourcesLoader(imagesDirectory);

                if (previewSize.Width == 360)
                {
                    imagesReader.Process(watchFace as WatchFaceVerge);
                }
                else if (previewSize.Width == 454 || previewSize.Width == 390)
                {
                    imagesReader.Process(watchFace as WatchFaceGTR);
                }
                else if (previewSize.Width == 176)
                {
                    imagesReader.Process(watchFace as WatchFaceBip);
                }
                else
                {
                    imagesReader.Process(watchFace);
                }


                Logger.Trace("Building parameters for watch face...");
                List <Parameter> descriptor;

                if (previewSize.Width == 360)
                {
                    descriptor = ParametersConverter.Build(watchFace as WatchFaceVerge);
                }
                else if (previewSize.Width == 454 || previewSize.Width == 390)
                {
                    descriptor = ParametersConverter.Build(watchFace as WatchFaceGTR);
                }
                else if (previewSize.Width == 176)
                {
                    descriptor = ParametersConverter.Build(watchFace as WatchFaceBip);
                }
                else
                {
                    descriptor = ParametersConverter.Build(watchFace);
                }

                var baseFilename = Path.GetFileNameWithoutExtension(outputFileName);
                GeneratePreviews(descriptor, imagesReader.Images, outputDirectory, baseFilename);

                Logger.Debug("Writing watch face to '{0}'", outputFileName);
                using (var fileStream = File.OpenWrite(outputFileName))
                {
                    var writer = new Writer(fileStream, imagesReader.Resources)
                    {
                        OutputDirectory = outputDirectory,
                    };

                    writer.Write(descriptor);
                    fileStream.Flush();
                }
            }
            catch (Exception e)
            {
                Logger.Fatal(e);
                File.Delete(outputFileName);
            }
        }
 public AlignmentSideCommand()
 {
     base.Aliases = new string[]
     {
         "side"
     };
     base.RequiredRole  = RoleEnum.Moderator;
     base.ParentCommand = typeof(AlignmentCommands);
     base.Description   = "Set the alignement side of the given target";
     base.AddParameter <AlignmentSideEnum>("side", "s", "Alignement side", AlignmentSideEnum.ALIGNMENT_NEUTRAL, false, ParametersConverter.GetEnumConverter <AlignmentSideEnum>());
     base.AddTargetParameter(true, "Defined target");
 }
示例#19
0
 public MonsterSpawnCommand()
 {
     Aliases           = new[] { "spawn" };
     RequiredRole      = RoleEnum.Administrator;
     Description       = "Spawn a monster on the current location";
     ParentCommandType = typeof(MonsterCommands);
     AddParameter("monster", "m", "Monster template Id", converter: ParametersConverter.MonsterTemplateConverter);
     AddParameter <sbyte>("grade", "g", "Monster grade", isOptional: true);
     AddParameter <sbyte>("id", "id", "Monster group id", isOptional: true);
     AddParameter("map", "map", "Map id", isOptional: true, converter: ParametersConverter.MapConverter);
     AddParameter <short>("cell", "cell", "Cell id", isOptional: true);
     AddParameter("direction", "dir", "Direction", isOptional: true, converter: ParametersConverter.GetEnumConverter <DirectionsEnum>());
 }