Search Unity

[DEPRECATED] Anima2D - Advanced 2D Skeletal Animation Plugin

Discussion in 'Assets and Asset Store' started by sergi_mandarina, Nov 21, 2015.

Thread Status:
Not open for further replies.
  1. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Hi, thanks for reporting. I've just submitted an update to the asset store, should be live soon.
    You can get it here too:
    https://www.dropbox.com/s/ch37k9136aau5ng/Anima2D_1.1.6.1.unitypackage?dl=0
     
    Peppered_Pig likes this.
  2. boyqnam9x

    boyqnam9x

    Joined:
    Jun 2, 2018
    Posts:
    3
    upload_2018-12-9_0-50-41.png upload_2018-12-9_0-52-34.png Hello can you help me? Yesterday i had coding some error and i close my unity, today i had open unity again but my sprites of my character is lost? only see bone. please help me.!
     
  3. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Open the SpriteMeshEditor and check if your sprites have weights. If not, fix them. If there are weights, try reimporting your textures. If nothing works, please send the project to me :) thanks
     
  4. b33rdy

    b33rdy

    Joined:
    May 6, 2013
    Posts:
    9
    @Sergi_Valls I've got exactly the same issue. Only bones on some of the characters - or a mixture of some with sprites, some without sprites.

    I've tried fixing them, but then they'll disappear again after fixing.

    Spent a far amount of time re-creating some of the meshes, only to have them go again.

    Once re-created, when they do stick, they don't always bind correctly to the bone either. So animations don't work anymore.
     
  5. cooloon

    cooloon

    Joined:
    Nov 25, 2014
    Posts:
    10
    Hi @Sergi_Valls, I've found a bug.
    In the SkinnedMeshCombiner class, we have
    Code (CSharp):
    1. materialPropertyBlock.SetTexture("_MainTex", spriteMeshInstances[0].spriteMesh.sprite.texture);
    at the bottom of the SkinnedMeshCombiner.cs file.

    This line overrides any existing property block. Therefore, if I've set another property block value before, it will be lost by that line. In my case, I change the flash color of the cachedSkinnedRenderer dynamically, but it doesn't work.
    To workaround this, we can put
    Code (CSharp):
    1. cachedSkinnedRenderer.GetPropertyBlock(materialPropertyBlock);
    just before that line.
     
  6. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    In your screenshot I can see you have no material set. Make sure you set a material!

    We resolved this case in private, so time to share with everyone:
    b33rdy's project contained SpriteMeshes created with the very first version of Anima2D. That particular version used prefabs as storage, so the files are named using .prefab (and .prefab.meta) extension (later files were stored using .asset instead). Unity 2018.3 introduces nested prefabs and those "fake" prefabs can't get imported properly. The solution is renaming those SpriteMeshes from spriteMeshName.prefab to spriteMeshName.asset. Meta files also need to be renamed from spriteMeshName.prefab.meta to spriteMeshName.asset.meta. It should be done from the file explorer as Unity's project view doesn't allow to rename extensions.

    Good catch, I'll fix in the next update.
     
    b33rdy likes this.
  7. Sprawl

    Sprawl

    Joined:
    Jan 19, 2014
    Posts:
    42
    We're currently having an issue with the new prefab window in 2018.3.
    When we rename an object inside the new prefab window when anima scripts are present, it goes into an endless loop of reloading the stage and the editor becomes unresponsive. It seems to be linked to Anima modifying the prefab on disk every time it is loaded causing the scene to reload. I've attached a callstack below.

    The current workaround is to modify the prefab inside a scene and apply the changes without going through the new stage for prefabs.

    upload_2018-12-18_11-7-55.png
     
  8. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Look for a file called SpriteMeshInstancePostprocessor.cs. If you have it, do a clean reinstall of Anima2D's latest version (delete Anima2D's folder and import the last package from the AssetStore).
     
  9. Sprawl

    Sprawl

    Joined:
    Jan 19, 2014
    Posts:
    42
    Thanks for the quick answer ! It did fix the issue.

    I'm curious, are there any plans to convert Anima2D to a package instead of an asset on the store ?
     
  10. wolfkillshepard

    wolfkillshepard

    Joined:
    Sep 30, 2016
    Posts:
    14
    Hey, I've been testing Anima2D and I really like it a lot. Currently I am trying to get an aiming system working but having a odd thing happen during my blend. I've attached a gif here showing the problem.
    characterIKproblem.gif

    It seems like the blended animations of him aiming up and down are somehow moving leg bones without the IK. I've been checking the aim animations (which only effect the hip, spine, and arms ik, not the feet) and I can't seem to figure out whats causing that leg to move. I'm going to keep trying to figure it out and will post back if I do but was hoping someone in the community might have an idea of what could be doing this. Thanks anyway for putting out such a cool asset for free.

    Edit: In the documentation I see that there is a way to create avatar masks for your 2D skeleton so I will try and as well as baking my animations and see how that works out
     
    Last edited: Jan 4, 2019
  11. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    If you are using IK at runtime, you need to use an IKGroup component and sort the IKSovers manually. You can also give a try to the preview package called 2D IK in the Package Manager that provides a similar but better workflow in the runtime case.
     
  12. wolfkillshepard

    wolfkillshepard

    Joined:
    Sep 30, 2016
    Posts:
    14
    Thanks a lot for the quick response, I'll try that out first before baking my animations, appreciate the quality support
     
  13. Aykutkaraca

    Aykutkaraca

    Joined:
    Jan 4, 2018
    Posts:
    33
    Hi Guys,
    Thanks for this awesome product!. I have been playing around with Anima2D. I have been having trouble with Sprite Mesh Animation. I use blend tree and I use sprite mesh animation frames for expressions. I for example put scared animation if my vertical speed is below -6 so in that animation, I set the frame to scared face. However I suspect that the blend tree uses interpolation to decide my frame in between speeds during the entire animation. For example when my vertical speed is -5, I see other sprite mesh frames (expressions) which I dont want to show. I set the tangents to "constant" to prevent calculations but I still get unexpected results. How can I stop this. Was I clear enough?
     
  14. codegasm

    codegasm

    Joined:
    May 3, 2015
    Posts:
    38
    After updating to Unity version 2018.3.0f2 I noticed an issue with the bone handles from my scene being rendered inside the prefab editor. Since it isn't possible to hide those gizmos at this time I asked elsewhere on the forum how to handle this and got a suggestion to use the StageUtility.IsGameObjectRenderedByCamera method for checking if the handles should be rendered. This works great in the new version of Unity but I'm not sure when that method was introduced.

    Here is my git diff based on Anima2D version 1.1.6.1 in case someone wants to apply it locally or if @Sergi_Valls wants to add something similar to the next version. From what I can tell this could have been done inside the IsVisible method since this appears to be the only usage of it, but this felt safer:
    Code (CSharp):
    1. diff --git a/Assets/Anima2D/Scripts/Editor/Gizmos.cs b/Assets/Anima2D/Scripts/Editor/Gizmos.cs
    2. index 9c0030f2..6d578fbf 100644
    3. --- a/Assets/Anima2D/Scripts/Editor/Gizmos.cs
    4. +++ b/Assets/Anima2D/Scripts/Editor/Gizmos.cs
    5. @@ -3,6 +3,7 @@ using UnityEditor;
    6. using System.Collections;
    7. using System.Collections.Generic;
    8. using System.Linq;
    9. +using UnityEditor.SceneManagement;
    10.  
    11. namespace Anima2D
    12. {
    13. @@ -60,7 +61,7 @@ namespace Anima2D
    14.              {
    15.                  Bone2D bone = s_Bones[i];
    16.  
    17. -                if(bone && IsVisible(bone))
    18. +                if(bone && IsVisible(bone) && StageUtility.IsGameObjectRenderedByCamera(bone.gameObject, Camera.current))
    19.                  {
    20.                      int controlID = GUIUtility.GetControlID("BoneHandle".GetHashCode(),FocusType.Passive);
    21.                      EventType eventType = Event.current.GetTypeForControl(controlID);
    22. @@ -178,7 +179,7 @@ namespace Anima2D
    23.  
    24.              foreach(Control control in s_Controls)
    25.              {
    26. -                if(control && control.isActiveAndEnabled && IsVisible(control.gameObject))
    27. +                if(control && control.isActiveAndEnabled && IsVisible(control.gameObject) && StageUtility.IsGameObjectRenderedByCamera(control.gameObject, Camera.current))
    28.                  {
    29.                      Transform transform = control.transform;
    30.  
     
  15. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    I uploaded a fix for prefab isolation mode just yesterday, version 1.1.6.2. There were other details to take into account other than gizmos. Anyways thanks for reporting and sharing!
     
    Djayp, biodam and codegasm like this.
  16. codegasm

    codegasm

    Joined:
    May 3, 2015
    Posts:
    38
    I ran into another issue that started after updating to 2018.3.0f2 that wasn't fixed by updating to Anima2D version 1.1.6.2. When I make a change to a prefab with a SpriteMeshInstance
    SpriteMeshInstancePostProcessor.cs line 26 triggers a re-import loop which can only be broken by entering play mode or reverting the changes. The loop is either caused by or causes two changes to the SkinnedMeshRenderer component. It adds a material to it and it removes the mesh. The
    spriteMeshInstance.spriteMesh.sharedMesh variable appears to point to the right mesh so I don't get why it gets removed in the diff. The mesh is still set in the editor and everything appears to work still as long as I comment out the line which sets needsReimport to true. Perhaps something has changed in how that check needs to happen?

    Here is the diff that occurs on my SkinnedMeshRenderer component when making any other change to the prefab:


    For now I am commenting out lines 26-29 in SpriteMeshInstancePostProcessor.cs to avoid the re-import loop and reverting the diff from above once I am done editing the prefab. Or is that diff safe to keep?
     
  17. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    SpriteMeshInstancePostProcessor.cs was removed from the package long ago. Please do a complete reinstall of Anima2D by deleting the folder and importing the package again.
     
    biodam likes this.
  18. codegasm

    codegasm

    Joined:
    May 3, 2015
    Posts:
    38
    That fixed my problem, I guess the way plugins are installed doesn't include a mechanism for dealing with files being removed from plugins. I'll always delete the whole plugin folder when updating plugins from now on. Thanks for your help.
     
    biodam likes this.
  19. Aykutkaraca

    Aykutkaraca

    Joined:
    Jan 4, 2018
    Posts:
    33
    Hi Sergi,

    Have you seen my issue I posted above? Do you have any idea to fix this?
    --------------------
    Hi Guys,
    Thanks for this awesome product!. I have been playing around with Anima2D. I have been having trouble with Sprite Mesh Animation. I use blend tree and I use sprite mesh animation frames for expressions. I for example put scared animation if my vertical speed is below -6 so in that animation, I set the frame to scared face. However I suspect that the blend tree uses interpolation to decide my frame in between speeds during the entire animation. For example when my vertical speed is -5, I see other sprite mesh frames (expressions) which I dont want to show. I set the tangents to "constant" to prevent calculations but I still get unexpected results. How can I stop this. Was I clear enough?
     
  20. Cogniad

    Cogniad

    Joined:
    Feb 17, 2017
    Posts:
    15
    Hello there,
    I'm not sure if I can integrate Anima2D features into my UI. I'd like to use it inside of a canvas with the render mode "Screen Space - Overlay", but I can't find a way to make it display correctly.

    Anyone have any suggestions? Or is there simply no way for me to do it this way?

    Thanks!
     
  21. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Hi Aykutkaraca, yes I've seen your post. It is hard to imagine what is going wrong without a video or a sample project. From your words I can tell that you are setting all your facial expressions in the list. When the BlendTree does its job, it interpolates from 0 to -6 with a certain velocity, showing sprites -1, -2...-5 which are other facial expressions which have nothing to do with the "scared" expression. Tangents here won't help as the interpolation curve is driven by the parameter. You need to make sure the list of SpriteMeshes in SpriteMeshAnimation contains related facial expressions and they map properly with the parameter in the BlendTree. You could write a component that sets a list of SpriteMeshes to the SpriteMeshAnimation depending on the type of facial expression you want to show.

    You need to render your scene (or the subset that you want to be displayed in your UI) into a RenderTexture. Later use that texture in your UI using RawImage component.
     
  22. TargetDetected

    TargetDetected

    Joined:
    Jan 28, 2016
    Posts:
    2
    Hi all,
    How to apply sprites with different resolutions (quality) to the mesh? I need to create separate mesh for every sprite? Cause "pixels per unit" has no effect on sprite size inside the mesh.
     
    Last edited: Jan 21, 2019
  23. mpete

    mpete

    Joined:
    Aug 26, 2013
    Posts:
    10
    Hi,
    I'm experiencing that when building to iOS the spring bone physics don't behave like in the Unity3D Editor. Spring bones seem to have lost their "strength", almost collapsing the rig, and movements are very slow and twisted.
    Does it sound familiar to anyone? Happy for any suggestion to make it work right!
    Thanks!

    - - - UPDATE:
    :oops: I just discovered that the SpringManager is not part of the core Anima2D, but located in Examples. It also has some parts of #if UNITY_EDITOR in itself, and that was the cause of the problem.
     
    Last edited: Feb 7, 2019
  24. Casalye

    Casalye

    Joined:
    Feb 20, 2019
    Posts:
    1
    Hi @Sergi_Valls, I've meet a problem.Everytime when I click on the Screen,it tell me that

    Invalid AABB a
    Assertion failed on expression: 'IsFinite(outDistanceForSort)'
    UnityEngine.GUIUtility:processEvent(Int32, IntPtr)


    I've search this problem but there were few information .i found someone said it might be Anima2D CrushSystem and can be solved by deleting and reinstalling Anima2d.I've tried but it didn't work.How can I solve this?
     

    Attached Files:

    • 1.jpg
      1.jpg
      File size:
      23.2 KB
      Views:
      675
  25. nukespoon

    nukespoon

    Joined:
    Mar 21, 2017
    Posts:
    4

    Check your 'Bounds' in Skinned Mesh Renderer of Anima2D sprites,

    I guess NaN or some trash values are in there.
     
    Last edited: Feb 24, 2019
  26. Frost-Games

    Frost-Games

    Joined:
    May 27, 2018
    Posts:
    18
    Hi there fist post. I have a big problem with Anima2D and i cant find the answer anywhere. Please help me.

    I made some animations for the player character in a separate scene, and when i come back to the regular scene to add and play the animations something incredibly strange happens: there are two carachers! the one who plays the animations and move around and the image on the sprite renderer next two each other.

    They move together and jump as if it was the default player but it does the animations in the Anima2D where the meshes are. I dont know how to solve this i swear for the life of me and is driving me insane. Please please help me....
     
  27. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Hi, please share your project with me and I'll take a look. Thanks
     
  28. Frost-Games

    Frost-Games

    Joined:
    May 27, 2018
    Posts:
    18
    Ok i will try to find how to do that on this forum and hope it helps! Is driving me nuts for Raycasting for example and the flip right or left. Much appreciated Sergi Unity Technologies!

    Edit: Didnt find anything on this website to send it so i need your dropBox email please
     
    Last edited: Mar 4, 2019
  29. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    You can use "Help-> Report a bug..." feature in Unity itself.
     
  30. Frost-Games

    Frost-Games

    Joined:
    May 27, 2018
    Posts:
    18
    Woah thanks, just did that and sent everything with the description, Please take a look at it and wonder what is going on you probably seen weird stuff that sure is unexpected
     
  31. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Perfect, could we get the case number? Thanks
     
  32. Frost-Games

    Frost-Games

    Joined:
    May 27, 2018
    Posts:
    18
    Case 1133721
     
  33. sergey_c

    sergey_c

    Joined:
    Apr 18, 2016
    Posts:
    3
    Hi.
    How can I do this using Anima2D?
    Where can I learn more about API?

     
  34. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Hi, Anima2D doesn't provide a specific solution for aiming. You can definitely achieve it by using IKs, but it is not wrapped up in an easy-to-use way for aiming.
     
  35. george_00

    george_00

    Joined:
    Oct 23, 2015
    Posts:
    19
    I'm getting an error when I hit apply after binding bones - Assertion failed on expression: 'offset + size <= bufLen'

    I see this was mentioned numerous times on the Asset Store comments and people were told to come over here and post, but I can't find any mention of it here. Can anyone shed any light?
     
  36. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Hi, I think this is a regression in the Mesh api. Please try if this workaround fixes the issue https://www.dropbox.com/s/rlqy04r5zi300lm/SpriteMeshInstance.cs?dl=0
    Also please report a bug using "help->report a bug..." That's the best way for us to help.
    Thanks!
     
  37. Reactorcore3

    Reactorcore3

    Joined:
    Nov 27, 2018
    Posts:
    17
    Hello,

    I want to use Anima2D with pixel art, but because the sprites are small I get this problem:



    Setting up the bones works and the IK controls do work, but its akward to work with.

    Unlike the bones, where I can set the Lenght to be usually between 0.11 - 0.20 for the character in the image, I cannot (dont know) how change the size of the IK controls, so they block the view are way too huge.

    Its really akward to work with this due to massive circles blocking the view and having to zoom in a lot just to see my character.

    How do I go about using Anima2D (or other solution) for getting skeletal based animations for pixel art characters (rigid animation only, no deformation of image needed)?

    Thanks in advance!

    EDIT:

    Also there is a curious scaling bug(?) that happens when I try to create a spritemesh out of a sprite:

    First, I have imported a sprite image with the value 40 'Pixels Per Unit':


    Then, I try to convert it to a spritemesh:



    Oh no, the head sprite is shrunk to the size it would be if it were 100 pixels per unit:



    I'm trying to create a similar character like in the old game Soldat, which had very tiny pixel art combined with bone animation:



    It seems most bone animation unity addons are intended for high resolution art only. : (
     
    Last edited: Mar 17, 2019
  38. Caffeen

    Caffeen

    Joined:
    Dec 25, 2013
    Posts:
    34
    Hi, great asset, I've gotta say that I'm amazed at how "stable" it feels. Compared to other options, it's a breath of fresh air to spend my time animating instead of trying to get it to work properly.

    Is there an easy way to set the sprite of a SpriteMesh asset via script at edit time? I've automated most of my asset creation via an editor script, but I figured I'd ask if you had any advice before trying to dig into the source code.

    Thank you!
     
  39. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    For the IK gizmo to work better I recommend disabling 3D Icons in the "Gizmos" dropdown in the SceneView.
    If you are not going to use deformation, you can just parent regular SpriteRenderers to the bone transforms.
    I will take a look to the PixelsPerUnit, maybe is a bug or regression.
    Thanks!

    Hi, you can find most of the stuff you are looking for in SpriteMeshUtils.cs. Cheers!
     
    Reactorcore3 likes this.
  40. Caffeen

    Caffeen

    Joined:
    Dec 25, 2013
    Posts:
    34
    Perfect, that was exactly what I needed! So glad I asked. Thank you.
     
  41. Reactorcore3

    Reactorcore3

    Joined:
    Nov 27, 2018
    Posts:
    17
    Thank you! Disabling 3D icons in gizmos fixed the issue instantly!



    Please let me know if Pixels Per Unit can be corrected. I'll be using a tilemap terrain with 32x32 pixel tiles, so they'll become larger than the character's spritemeshes if I set the tile's PPUs to 32.
     
  42. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    If you decide to change the PPU after binding the mesh, select your SpriteMesh, open the SpriteMesh editor and hit "Apply". Please try this workaround first.
     
    Reactorcore3 likes this.
  43. MadeFromPolygons

    MadeFromPolygons

    Joined:
    Oct 5, 2013
    Posts:
    3,983
    I am confused, should we be using anima2d or the 2d animation package from package manager? What is the difference?
     
  44. Reactorcore3

    Reactorcore3

    Joined:
    Nov 27, 2018
    Posts:
    17
    Thank you so much!

    That was way more simple than I thought this would be! That indeed fixed the issue instantly and now I'm able to continue building the game with full confidence using Anima2D.

    Before this moment, I thought this was a bug and I would need to wait for a fix/patch before I can go on, but it was no issue at all in the end. Thank you again, this took away a major concern and source of confusion I had and made my day a whole lot better! <3
     
  45. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    6,619
    I downloaded Anima2D (v1.1.6.3 2019-02-27) from the Asset Store. Opening the "TRex.unity" Scene in Unity 2018.2.20f1 outputs the following error message to the Console window when pressing "Play" in the editor:
    Code (CSharp):
    1. Mesh.uv is out of bounds. The supplied array needs to be the same size as the Mesh.vertices array.
    2. UnityEngine.Mesh:set_uv(Vector2[])
    3. SkinnedMeshCombiner:Start() (at assets/Anima2D/Examples/Scripts/SkinnedMeshCombiner.cs:105)
    Reproduce
    • Open Unity 2018.2.20f1
    • Switch build target to Android
    • Install Anima2D (v1.1.6.3)
    • Open "assets/Anima2D/Examples/Scenes/TRex.unity"
    • Press Play
    Observe Anima2D outputs an error.
     
  46. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    6,619
    After testing Anima2D for about 2 hours now, I noticed that it started to slow-down the editor. I duplicated the "UnityChan" character from the provided example scene about 13 times and this causes the editor to be very unresponsive.

    anima2d_profile.png

    anima2d_deep_profile.png


    Reproduce
    • Open UnityChan example scene
    • Switch Scene View to 2D Mode
    • Duplicate character 13 times
    • Hold middle-mouse-button to draw SceneView camera
    Observe that it's very unresponsive.

    It seems the reason for the performance issue is that it always draws the bone, for every object in the scene. It doesn't matter if the character is in view.
     
  47. alanmthomas

    alanmthomas

    Joined:
    Sep 7, 2015
    Posts:
    197
    I was running into the same issue and replaced the SpriteMeshInstance code with this. It seems to have solved the issue for the time being.
     
  48. lilwayn3

    lilwayn3

    Joined:
    Apr 4, 2019
    Posts:
    2
    Hello Sergi.
    I just realized my Anima 2D version is only compatible with unity 5.5 and I'm on 5.6, so I get the Set Method not found for recording when I try to bake my animation. Any possibily to transfer all I did to a more recent version of anima 2d ? Also when I try to import the latest ANIMA2D version it doesnt replace my old version and doesnt appear anywhere :/ Thank you so much
     
  49. Sergi_Valls

    Sergi_Valls

    Unity Technologies

    Joined:
    Dec 2, 2016
    Posts:
    212
    Hi, from the symptoms you describe looks like the package you import is not updated. Make sure you update it before importing. Cheers
     
    lilwayn3 likes this.
  50. lilwayn3

    lilwayn3

    Joined:
    Apr 4, 2019
    Posts:
    2
    I red earlier in this forum that to flip character

    " You should rotate the root transform of your character 180º on the Y axis."

    Sorry I'm a newbie how do I rotate the root transform ?
    Thanks every one without the great community I'd be completely lost
     
Thread Status:
Not open for further replies.