void WriteDistortionMeshPointProperties(DistortionMeshPoint node) { WritePointObjectProperties(node); WriteProperty("Anchor", node.Position, Vector2.Zero); WriteProperty("Color", node.Color, Color4.White); WriteProperty("UV", node.UV, Vector2.Zero); }
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); } } }
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; } }
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)); }
private void SetUV(DistortionMeshPoint pointObject, Vector2 value) { Core.Operations.SetAnimableProperty.Perform(pointObject, nameof(DistortionMeshPoint.UV), value, CoreUserPreferences.Instance.AutoKeyframes); }
private void SetUV(DistortionMeshPoint pointObject, Vector2 value) { Core.Operations.SetAnimableProperty.Perform(pointObject, nameof(DistortionMeshPoint.UV), value); }