コード例 #1
0
ファイル: HotSceneExporter.cs プロジェクト: aologos/Citrus
 void WriteDistortionMeshPointProperties(DistortionMeshPoint node)
 {
     WritePointObjectProperties(node);
     WriteProperty("Anchor", node.Position, Vector2.Zero);
     WriteProperty("Color", node.Color, Color4.White);
     WriteProperty("UV", node.UV, Vector2.Zero);
 }
コード例 #2
0
        void RestorePointsIfNeeded(DistortionMesh mesh)
        {
            if (ValidateMeshPoints(mesh))
            {
                return;
            }
            var rootFolder = mesh.RootFolder();

            foreach (var item in rootFolder.Items.ToList())
            {
                UnlinkFolderItem.Perform(mesh, item);
            }
            for (int i = 0; i <= mesh.NumRows; i++)
            {
                for (int j = 0; j <= mesh.NumCols; j++)
                {
                    var pos   = new Vector2((float)j / mesh.NumCols, (float)i / mesh.NumRows);
                    var point = new DistortionMeshPoint {
                        Id       = $"{i};{j}",
                        Color    = Color4.White,
                        UV       = pos,
                        Position = pos
                    };
                    InsertFolderItem.Perform(mesh, new FolderItemLocation(rootFolder, rootFolder.Items.Count), point);
                }
            }
        }
コード例 #3
0
ファイル: HotSceneImporter.cs プロジェクト: klenin/Citrus
        protected void ParseMeshPointProperty(Node node, string name)
        {
            DistortionMeshPoint point = (DistortionMeshPoint)node;

            switch (name)
            {
            case "Position":
                point.Offset = lexer.ParseVector2();
                break;

            case "Anchor":
                point.Position = lexer.ParseVector2();
                break;

            case "UV":
                point.UV = lexer.ParseVector2();
                break;

            case "Color":
                point.Color = lexer.ParseColor4();
                break;

            case "SkinningWeights":
                point.SkinningWeights = lexer.ParseSkinningWeights();
                break;

            default:
                ParseActorProperty(point, name);
                break;
            }
        }
コード例 #4
0
        private static Rectangle ExpandMeshLocalAABB(
            Rectangle aabb,
            Vector2 size,
            DistortionMeshPoint point,
            BoneArray bones,
            Matrix32 weightsMatrix,
            Matrix32 weightsMatrixInversed
            )
        {
            var position = size * point.Position + point.Offset;

            if (point.SkinningWeights != null)
            {
                position = weightsMatrixInversed.TransformVector(bones.ApplySkinningToVector(
                                                                     weightsMatrix.TransformVector(position),
                                                                     point.SkinningWeights
                                                                     ));
            }
            return(aabb.IncludingPoint(position));
        }
コード例 #5
0
 private void SetUV(DistortionMeshPoint pointObject, Vector2 value)
 {
     Core.Operations.SetAnimableProperty.Perform(pointObject, nameof(DistortionMeshPoint.UV), value, CoreUserPreferences.Instance.AutoKeyframes);
 }
コード例 #6
0
 private void SetUV(DistortionMeshPoint pointObject, Vector2 value)
 {
     Core.Operations.SetAnimableProperty.Perform(pointObject, nameof(DistortionMeshPoint.UV), value);
 }