Search Unity

Ferr2D Terrain Tool

Discussion in 'Assets and Asset Store' started by koujaku, Oct 9, 2013.

  1. p6r

    p6r

    Joined:
    Nov 6, 2010
    Posts:
    1,158
    I'm working on Textures + VARIANTS to avoid "monotony", as you cans see here :
    http://forum.unity3d.com/threads/seamless-textures-variants.341986/

    @koujaku : Do you think you could add (after the Main texture) 1 or 2 or 3 "Random Textures" in your plugin that could be automatically drawn sometimes and randomly when we build the level... to avoid this monotony ???
    (I don't know if you understand what I mean !?!)

    6R
     
  2. Pharan

    Pharan

    Joined:
    Oct 28, 2013
    Posts:
    102
    @koujaku
    Sounds great! And the explicitly defined/seamless corners (and new smoothing) sounds exciting.

    There's also another weird thing I found in the current version that looks like it's been fixed in the new system too.
    My straight horizontal lines of edges seem to get skewed really often. I used a prototyping material in the gif but this looks terrible for artificial/architectural stuff, where you'd want your vertical lines to stay vertical.
    Adding points doesn't seem to fix it. Check out the attachment.

    Again, just confirming... and checking if there are currently ways to fix it.
     

    Attached Files:

  3. Skyboard_Studios

    Skyboard_Studios

    Joined:
    Jul 20, 2013
    Posts:
    51
    Hi @koujaku

    Can you confirm if Ferr2d will work with the pathfinding asset PolyNav



    Seems I got a whole boat load of compiler errors... Can you confirm this.

    https://www.assetstore.unity3d.com/en/#!/content/14718

    Perhaps I am just testing a old version. I am trying to see which AI / Pathfinding system I should be using for 2D ...

    Update #1
    Looks like PolyNav establishes a Polygon Class in PolyNav2D.cs line 482+

    //defines a polygon
    class Polygon{

    public List<Vector2> points = new List<Vector2>();

    public Polygon(List<Vector2> points){
    this.points = points;
    }
    }


    I will see if I can refactor things and see where I get.

    Update #2

    I just refactored the polygon class and seemed to have fixed things so no more fatal errors are present. whoo hoo
     
    Last edited: Jul 23, 2015
  4. rxmarccall

    rxmarccall

    Joined:
    Oct 13, 2011
    Posts:
    353
    I'd be interested in knowing how PolyNav works for you with Ferr2D, will be using PolyNav in the future when we get around to building AI.
     
  5. Skyboard_Studios

    Skyboard_Studios

    Joined:
    Jul 20, 2013
    Posts:
    51
    @rxmarccall

    no prob. I am just starting to get things setup.. I will post back with some results! hopefully in a few hours. :)

    Update #1 (2½ hours later)

    I just managed to extend the PolyNav into EdgeNav :) and well... I managed to make the polynav detect edgecolliders so that edge colliders can become a working PolyNav Obstacle.... whoo hoo!

    you can see the Pink Collider that flows completely around the ferr2d's generated collider.

    Update #2 (45 Min later)
    I just seen a issue that requires the Ferr2D component to have to rebuild it's collider for the Nav Collider to fully envelope the terrain.. not a big issue.. but is easy to overcome as seen in video...



    EdgeNav Collider in Pink sealing up both ends of pipe... (AI won't be able to enter pipe)


    Ferr2D Collider in green with the Gold Starting Cap/pipe entrance.... (with no exit)
     
    Last edited: Jul 23, 2015
  6. rxmarccall

    rxmarccall

    Joined:
    Oct 13, 2011
    Posts:
    353
    Wow awesome work, good to see it working out!
     
    Skyboard_Studios likes this.
  7. Skyboard_Studios

    Skyboard_Studios

    Joined:
    Jul 20, 2013
    Posts:
    51
    @rxmarccall Thanks!

    I will now get it working with my game "Cell Splitters" and see how things work out. The video showing the space ships navigate around the Ferr2D terrain was sweet to finally see.
     
  8. GoldenSkullArt

    GoldenSkullArt

    Joined:
    Aug 14, 2013
    Posts:
    49
    Hello there, I got Ferr2D recently and I love its functions!

    Since the project I am working on uses a quite big scale I ran into the problem of having tiny gizmos.
    Is there a way to re-size the gizmos for dot, dot+ etc.?
    I tried adjusting the gizmo size, re-sizing the images, setting some values in the script but nothing seemed to fix the issue.
    How can I make the icons bigger?
     
  9. rxmarccall

    rxmarccall

    Joined:
    Oct 13, 2011
    Posts:
    353
    @MaxHey, Wish I could help but I have no idea on that.

    Is anyone else having strange issues with Fill's disappearing? All the sudden the fill of my terrain is just a flat color, missing the texture.
     
  10. p6r

    p6r

    Joined:
    Nov 6, 2010
    Posts:
    1,158
    Here is what I meant : If we could use other (random) textures for the Fill material.
    I have made the wall with Ferr2D and I have placed 2 similar but modified textures in front of the wall. No monotony !
    Why not an option with random textures ?



    6R
     
  11. Jkc_dev

    Jkc_dev

    Joined:
    Apr 20, 2015
    Posts:
    35
    Hi, i just bought the asset, but when i import it, the materials of the terrain don't work, i have these errors:

     
  12. Pharan

    Pharan

    Joined:
    Oct 28, 2013
    Posts:
    102
    The shader errors should be harmless. I saw those too but nothing really broke.

    What's that first one from though?

    And what's your current settings' build target?
     
  13. Kiori

    Kiori

    Joined:
    Jun 25, 2014
    Posts:
    161

    Hi there, would you mind sharing the code for your work, so we can also benefit from your implementation?
     
  14. JAMiller

    JAMiller

    Joined:
    Apr 2, 2009
    Posts:
    78
    Juaks: I was getting the same shader errors & pinkness after upgrading to the latest Ferr2D in Unity 5. I fixed it by opening Ferr2DTCommon.cginc and commented out the line "#define Unity4"

    No idea why I had to do this (never was a problem in previous versions), but it worked for me.
     
    Jkc_dev likes this.
  15. Jkc_dev

    Jkc_dev

    Joined:
    Apr 20, 2015
    Posts:
    35
  16. Skyboard_Studios

    Skyboard_Studios

    Joined:
    Jul 20, 2013
    Posts:
    51
    @Kiori Yeah I can see a benefit for others that want to use the PolyNav with Ferr2D. I will see what I can do to make a list of mods that I did. :) I am in the midst of trying to get my game released and finished. I need help in getting things done I think... Anyone that wants to help out in pushing to a release is welcome to message me. I am in the midst of finalizing my game and getting Soomla integrated...
     
  17. MrKato

    MrKato

    Joined:
    Aug 10, 2015
    Posts:
    4
    Hi. I need to be able to not split corners but I still need to be able to use all texture directions, not only top.
    (There need to be sharp corners but without grass that hides the gaps between the different texture directions).
    Image #1 is the shape I want. Image #2 are the textures I want
     

    Attached Files:

  18. koujaku

    koujaku

    Joined:
    Aug 28, 2013
    Posts:
    321
    Too-Nerd-To-Die likes this.
  19. MrKato

    MrKato

    Joined:
    Aug 10, 2015
    Posts:
    4
    Thanks for your reply.
    Edge override with Split corners disabled? Doesn't do anything for me. Should this work?
    Edge override with Split corners enabled works but edges are ... split. Image #2 (see above).
    I need a solid mesh like Image #1 (Split corners disabled), but be able to use all texture directions.
     
  20. koujaku

    koujaku

    Joined:
    Aug 28, 2013
    Posts:
    321
    Split corners disabled isn't going to help in this case, sorry. I'll have to look into making that work as such in future versions! You'll just have to line 'em up to get that to work right. A half circle end cap might make that a little easier to do as well, especially since you've got a lot of solid colors going on~ Regardless, do make sure your edge images line up vertically, it can also help to keep the regions the same height in the terrain material editor!
     
  21. MrKato

    MrKato

    Joined:
    Aug 10, 2015
    Posts:
    4
    Ok. I understand. Please make support for it in the future.
    Attaching another example of the problem for future reference. (Now without side textures)
    Style to left works as a cube, start manipulating it and it "doesn't work".
    Wanted result is, for the new feature, corners of the edge images should align with the body shape. Like Split corners disabled seems to do.
     

    Attached Files:

  22. p6r

    p6r

    Joined:
    Nov 6, 2010
    Posts:
    1,158
    Thanks for your reply...
    Wait and see.
    6R
     
  23. SwitchNZ

    SwitchNZ

    Joined:
    Jan 22, 2015
    Posts:
    3
    Hey just wondering if I can overwrite the light restriction on the shader ? If I change max_lights manually within the shader my terrain renders as pink "no texture" terrain... not exactly ideal.
     
  24. koujaku

    koujaku

    Joined:
    Aug 28, 2013
    Posts:
    321
    You definitely can! Within reason of course. If you're going above 4 lights, you'll need to put in a #pragma target 3.0 above the #includes. This tells Unity to require graphics cards that support Pixel Shader 3.0, and gives you extra instructions to work with! I'm not entirely sure what the instruction cap is there, but you can definitely do at least 8 lights (see the ferr lightmap shaders!) You could try pushing that higher, or moving up to PS 4.0 too, but just remember that pretty much all of this is a really awful idea (especially on mobile) due to requiring bigger hardware, and the significant performance implications! More simultaneous lights means slower shaders.

    Some better things to do:
    -Space your lights out, Unity automatically prioritizes lights closest to the camera. Limit it to 4 on-screen at any given point.
    -Fake lighting! You can tint the terrain pretty easily, and you can always use sprites with particle/addative shaders.
    -Baking lights into the terrain! I've got a light baking tool that might be ready for some beta testing sometime in the near future, but there might be other solutions around too.
     
  25. SwitchNZ

    SwitchNZ

    Joined:
    Jan 22, 2015
    Posts:
    3
    Thanks heaps for the response, didn't know it was that easy. Haven't really had to deal with shaders that much.
     
    koujaku likes this.
  26. mwozniak93

    mwozniak93

    Joined:
    Feb 4, 2015
    Posts:
    11
    Has anyone tried to use this tool to top-down 2d ? does it work like other tile editors?
     
  27. Deleted User

    Deleted User

    Guest

    Hi.
    Material Setup for Ferr is the most tricky part especially when caps are involved. I'm trying to achieve an inverted closed system with rounded corners but have failed to. Using caps and inner caps give problems cause both share a common cap offset parameter. My solution was to make inner caps wider than the regular caps but this resulted in overlapping caps and edges. Could you guide (with a tutorial or a documentation) so as how to achieve the desired result?
     
  28. Dahlvash

    Dahlvash

    Joined:
    Feb 9, 2014
    Posts:
    54
    Hi all.
    After looking through the docs and code I am stuck trying to find a clean way to join/merge terrains (of fill type) together, either by collision or by being 'close enough'.
    I just cant work out how to detect what 'nodes' should be merged in from terrain A to B also where exactly in the path veracities they should be inserted.
    Has anyone already experimented with this?
     
  29. Doireth

    Doireth

    Joined:
    Jul 3, 2012
    Posts:
    11
    Every time I click play the console says "Prebuilding Terrain Prefab (1): 7000ms", is there any way to avoid this annoying delay? I tried the "Assets->Prebuild Ferr2D Terrain" but it doesn't seem to do anything. I don't remember having this problem before but it's making testing nearly impossible.

    Also, on mobile my terrain doesn't seem to work. It's visually present but objects/rays just pass straight through.

    Any thoughts?
    Thanks.
     
  30. perleh

    perleh

    Joined:
    Aug 18, 2015
    Posts:
    2
    Why I can't change the physics material of the terrain? Or yes I can but it has no effect.
     
  31. Omi

    Omi

    Joined:
    Dec 2, 2012
    Posts:
    9
    Popping in to say: Keep up the great work! I'm sure plenty of people have this thread bookmarked.
     
  32. maltadirk

    maltadirk

    Joined:
    Mar 12, 2014
    Posts:
    43
    Has anyone run into the following Shader issue using Ferr2D on Unity (5.0.1f1)

     
  33. Jkc_dev

    Jkc_dev

    Joined:
    Apr 20, 2015
    Posts:
    35
    @maltadirk :
    Thanks @JAMiller for the solution =)
     
    maltadirk likes this.
  34. Skyboard_Studios

    Skyboard_Studios

    Joined:
    Jul 20, 2013
    Posts:
    51
    hi @koujaku

    just to revisit my issue.. I have been working on other areas of my game and have now came back to the issue with the pipes...As I am trying to push to a release and have put off the pipe issue for as long as I can.

    I am in need of making a Pipe that is an actual pipe.. Ie: one that can go in from one side and out the other...

    Since the collider building process leaves one side of the pipe open .. I have been trying without any luck to make the other side open....Could you let me know on where I would make such a modification....



    Here is what I need.. I need the top path to be offset.. like I have it.. but perhaps 2 edge colliders.. not just one.. so that each edge of a single segment (top) is actually 2 with no 90degree ends (green arrow)...

    I know you have mentioned that your working on a update .... wondering how this is coming along and if this feature will be available, as of current using a pipe material with 2D edge collider makes a pipe that is only enter-able from one opening...

    Thanks,
     
  35. MrKato

    MrKato

    Joined:
    Aug 10, 2015
    Posts:
    4
    How do you snap to unity's grid? oO
    Snap global and ctrl + click on a dot makes it snap to 0,0,0. (worldspace)

    (Solved)
    (It was a unity bug. Edit > Snap settings, change any value and set it. It will work now.)
     
    Last edited: Sep 3, 2015
  36. perleh

    perleh

    Joined:
    Aug 18, 2015
    Posts:
    2
    Why different physics materials of the ferr2D does not change anything? All the materials works similarly, but they works differently when attached to "normal" material. Any ideas?
     
  37. Skyboard_Studios

    Skyboard_Studios

    Joined:
    Jul 20, 2013
    Posts:
    51
    Wow I managed to get a working tube!!

    After spending a few hours on this issue I finally got her working. for a few weeks now I have been trying to wrap my brain around the issue... Today was the day where I said no more wondering... I will make it work. Here is a little video showing fully working pipes/tubes. :)



     
  38. Vekta

    Vekta

    Joined:
    Jun 22, 2014
    Posts:
    9
    @koujaku

    Hi I was wondering if support could be added for bezier curves and different point types.

    I made a terrain engine for cocos2d a while back, and I was able to have 1 continuous path by having each point hold info about its type.

    The 3 point type I had were, Straight Line, Bezier Curve (with control points), and Smooth Curve (Like the Tiny Wings Hills)

    Any chance you could investigate something like this, I find the Smooth Curve function really doesn't achieve what I need (it very rarely makes a nice shape) and adding lots of Terrains results in unsmooth sharp edges (especially collision edges)

    Thanks!
     
    Last edited: Sep 26, 2015
  39. Skyboard_Studios

    Skyboard_Studios

    Joined:
    Jul 20, 2013
    Posts:
    51
    @perleh I have just confirmed that the physics 2D materials work.. I was working on a system that allowed a player to enter a pipe and to be pushed in a certain direction only... here is an example showing 2D Surface Effector and 2D Materials working quite well.

     
  40. rck

    rck

    Joined:
    Nov 11, 2014
    Posts:
    2
    Im currently testing some textures and they look pretty cool on iphone 6, 6plus, ipad air and up (Im testing on iOS first). But when the test was made on ipad 3rd generation, iphone 5c and iphone 5 the textures look bad, as seen in the attached images. The textures have the "smooth path" activated and the borders are not the defect ones, I've change them to accomplish the forms I need. I think that is the problem, I hope there is a way to solve it
     
    Last edited: Sep 17, 2015
  41. rck

    rck

    Joined:
    Nov 11, 2014
    Posts:
    2

    Ok, found the solution. For some reason for the iphone 5c and less you need to edit the image used to create the material used to create the ferr2D terrain. You need to explicit tell unity that it is a texture, with the alpha transparency on and the Wrap Mode need to be set on true as shown in the attached image. Really hope this to be helpful for those who encounter this problem.

    image solution.png
     
    Last edited: Sep 13, 2015
  42. Thoor

    Thoor

    Joined:
    Jun 12, 2015
    Posts:
    5
    Skärmavbild 2015-09-21 kl. 09.23.04.png
    I have some performance issues with my game, it's a flappy bird likeish kind of game where you are supposed to navigate throughout a cave system by just taping the screen and keeping your player from crashing into the walls.

    The map consists of 2 "chunks" that are moved when the player reaches the end of the screen to keep the map infinte, we are using the lit shader to create some more cave like feeling with lighting, the 2 chunks are rather long and consists of 1 big background object, 1 upper cave object, 1 lower cave object and a couple of "islands" in the middle of the cave.

    When deploying to mobile devices (especially android) there is a very low fps and the game feels very un-smooth.

    The large background object is using the non-transparent shader, the top, bottom and middle objects are using non-transparent shader for the filling material and the transparent shader for the edges.

    When switching to the non-lit shaders the performance is roughly doubled but the game still isn't running smoothly

    By disabling objects we've comed to the conclusion that it's some/all of the Ferr2D-objects that is causing the un-smooth feeling of the game

    Anyone got any ideas on why our game isn't performing, since I've seen games using Ferr2D performing exceptionally well.

    Any and all advices are most welcome!

    Cheers,
    Jonas
     
  43. Kellyrayj

    Kellyrayj

    Joined:
    Aug 29, 2011
    Posts:
    936
    @Thoor

    Have you checked the profiler? See where your spikes are?

    Have you tried breaking the level into more than two chunks and deactivating the chunks of level that the camera can no longer see?
     
  44. biscito

    biscito

    Joined:
    Apr 3, 2013
    Posts:
    138

    i don't have this version ..??
     
  45. fractalbear

    fractalbear

    Joined:
    Nov 12, 2013
    Posts:
    2
    Hi! Firstly I'd like to say great job to koujaku for making such an excellent tool, really loving using it!

    Unfortunately I'm experiencing a problem, some of the edge handles that control orientation and scale are being set to a seemingly random orientation and a scale of zero.

    It tends to happen after previewing the build and then moving a point.

    Has anyone else experienced this?

    In the attached screenshot you can see result of the bug.

    This even happens if the X button is selected to hide the edge handles.

    Thanks so much for your help :)

    (have send this as an email as well sorry for duplicate)
     

    Attached Files:

  46. koujaku

    koujaku

    Joined:
    Aug 28, 2013
    Posts:
    321
    @fractalbear, does your scale change in Preferences->Ferr area? Are you getting any warnings or errors in the console window? And which version of Unity are you using? This isn't one I've heard of yet!

    @oneuglyrobot, it's something I've considered, and at some point I might! Right now, I'm redoing the pathing system to make stuff like that easier and better, so you will see improvements in that area in the next version!

    I emailed @Thoor a while back, and suggested breaking up the terrain into multiple chunks. Ferr2D won't take up processing time when the game is running, but doing collision calls on massive polygon colliders that Ferr2D will generate like that will definitely take a fair bit of time! Breaking it up allows Unity's physics to quickly discard large portions of the colliders up front.
     
  47. chrisMary

    chrisMary

    Joined:
    Nov 27, 2013
    Posts:
    16
    Hello !
    First of all, thank you for this wonderful tool !
    I have a question, though...
    Is there a way to get a position along a line path ?
    As long as it is angular, i can just get all nodes and move an object along that "broken line", but when it is smoothed, can we get the curved path info to, say, create a smoothed rail movement along a tube, for example ? I have seen something similar in megashapes, with a path follow script...


    Edit : Nevermind I just found the GetVertsSmoothed function that returns all generated points, just what i needed !

    for those interested :

    Code (CSharp):
    1.  
    2. using UnityEngine;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5.  
    6. public class PathFollow : MonoBehaviour {
    7.  
    8.  
    9.     [System.Serializable]
    10.     public class NodeInfo {
    11.         public Vector2 startPos;
    12.         public Vector2 endPos;
    13.         public float startValue;
    14.         public float endValue;
    15.         public float length;
    16.  
    17.     }
    18.  
    19.     [System.Serializable]
    20.     public class PathInfo {
    21.         public float TotalLength;
    22.         public List<NodeInfo> nodes;
    23.         public int currentNode;
    24.         public float currentDist;
    25.  
    26.         public void SetCurrentNode(float alpha) {
    27.             currentDist = alpha * TotalLength;
    28.  
    29.             if (nodes[currentNode].startValue <= currentDist && nodes[currentNode].endValue >= currentDist)
    30.             {
    31.                 return;
    32.             }
    33.  
    34.             for (int i = 0; i < nodes.Count; i++) {
    35.                 if (nodes[i].startValue <= currentDist && nodes[i].endValue >= currentDist)
    36.                 {
    37.                     currentNode = i;
    38.                     break;
    39.                 }
    40.             }
    41.  
    42.         }
    43.  
    44.     }
    45.  
    46.  
    47.  
    48.     public PathInfo info;
    49.  
    50.     public Ferr2D_Path path;
    51.     Ferr2DT_PathTerrain terr;
    52.  
    53.     [Range(0f, 1f)]
    54.     public float alpha;
    55.  
    56.     public Transform dummy;
    57.     public Vector3 pos;
    58.  
    59.     public List<Vector2> vert;
    60.  
    61.  
    62.     void Start () {
    63.         if (path == null) {
    64.             path = GetComponent<Ferr2D_Path>();
    65.         }
    66.         terr = path.GetComponent<Ferr2DT_PathTerrain>();
    67.  
    68.  
    69.         if(dummy != null)
    70.         dummy.SetParent(path.transform);
    71.  
    72.         SetPathInfo();
    73.  
    74.  
    75.     }
    76.  
    77.     void SetPathInfo() {
    78.         vert = path.GetVertsSmoothed(terr.splitDist, false, false);
    79.         info.TotalLength = 0;
    80.         for (int i = 0; i < vert.Count - 1; i++)
    81.         {
    82.             NodeInfo n = new NodeInfo();
    83.             n.startValue = info.TotalLength;
    84.             n.startPos = vert[i];
    85.             n.endPos = vert[i + 1];
    86.             n.length = Vector2.Distance(n.startPos, n.endPos);
    87.             n.endValue = n.startValue + n.length;
    88.  
    89.             info.TotalLength += n.length;
    90.  
    91.             info.nodes.Add(n);
    92.         }
    93.  
    94.  
    95.     }
    96.  
    97.  
    98.     void SetDummyPosition() {
    99.         float alphaPos = (info.currentDist - info.nodes[info.currentNode].startValue) / info.nodes[info.currentNode].length;
    100.         Vector3 wantedPos = Vector3.Lerp(info.nodes[info.currentNode].startPos, info.nodes[info.currentNode].endPos, alphaPos);
    101.  
    102.         dummy.localPosition = wantedPos;
    103.     }
    104.  
    105.  
    106.     void Update () {
    107.         info.SetCurrentNode(alpha);
    108.         SetDummyPosition();
    109.  
    110.     }
    111. }
    112.  
    113.  

    Just add the script to an open (not closed) Ferr2DPath, tweak the Alpha value and have a dummy transform (child of the Ferr) assigned.
     
    Last edited: Oct 14, 2015
  48. fractalbear

    fractalbear

    Joined:
    Nov 12, 2013
    Posts:
    2
    Hi @koujaku thanks so much for your reply.

    I'm using the latest version of Unity 5.2.1f1 (although this was also happening on the previous version)

    I do receive a warning that I think is related:

    Cleaning up leaked objects in scene since no game object, component or manager is referencing them
    Material Hidden/Ferr Gizmo Shader 2D has been leaked 1 times.

    Other things to note is that my project is set up for GIT so meta files etc as Text based.

    So I have managed to save a scene where this bug always happens. Load and it's fine move one point and the vertex scales / directions become corrupted.

    I then save the scene and when I look in GIT I can see :

    propertyPath: vertScales.Array.size
    (removed) value: 63
    (added) value: 64
    objectReference: {fileID: 0}
    - target: {fileID: 11452728, guid: 43b72bb25510da4408d51c549cc0b8ad, type: 2}
    propertyPath: directionOverrides.Array.size
    (removed) value: 63
    (added) value: 64

    So it seems to be related to the length on the vertScales and directionOverrides arrays. Maybe the array length is wrong so it is ready garbage memory?

    Fortunately I have found a workaround (other than individually correcting verts!) which is to delete the Ferr 2DT_Path Terrain and add a new one.

    Would be great to know why this is happening I'm happy to send you the corrupted scene where it always happens if that helps solve the issue.

    Many thanks,

    Adam :)
     
  49. mrwogs

    mrwogs

    Joined:
    Aug 20, 2014
    Posts:
    36
    Hi @koujaku

    Just wanted to follow up on your post from late June regarding the new Ferr Blend/Paint tool. Any updates on the development and release time frame? This tool would be incredibly useful on the project I'm working on currently. Really looking forward to this.

    Thanks!
     
  50. pat68

    pat68

    Joined:
    Dec 15, 2013
    Posts:
    34