OSDN Git Service

Broken commit, partial work on easein/ease out, so i can sync up for working on this...
authorRobin Cornelius <robin.cornelius@gmail.com>
Sun, 18 Mar 2012 17:39:51 +0000 (17:39 +0000)
committerRobin Cornelius <robin.cornelius@gmail.com>
Sun, 18 Mar 2012 17:39:51 +0000 (17:39 +0000)
git-svn-id: https://radegast.googlecode.com/svn/trunk@1232 f7a694da-4d33-11de-9ad6-1127a62b9fcd

Radegast/GUI/Rendering/RenderAvatar.cs
plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj

index 0740fdb..7802026 100644 (file)
@@ -885,6 +885,32 @@ namespace Radegast.Rendering
     {\r
         public Vector3 offset;\r
         public Quaternion rotation;\r
+    }\r
+\r
+    public class animationwrapper\r
+    {\r
+        public BinBVHAnimationReader anim;\r
+\r
+        public float mRunTime;\r
+\r
+        public enum animstate\r
+        {\r
+            STATE_EASEIN,\r
+            STATE_EASEOUT,\r
+            STATE_PLAY,\r
+            STATE_STOP\r
+        }\r
+\r
+        public animstate playstate;\r
+\r
+        public animationwrapper(BinBVHAnimationReader anim)\r
+        {\r
+            this.anim = anim;\r
+            playstate = animstate.STATE_EASEIN;\r
+            mRunTime = 0;\r
+        }\r
+\r
+\r
     }
 
     public class skeleton
@@ -897,7 +923,8 @@ namespace Radegast.Rendering
         public static Dictionary<int, string> mLowerMeshMapping = new Dictionary<int, string>();
         public static Dictionary<int, string> mHeadMeshMapping = new Dictionary<int, string>();
 
-        public List<BinBVHAnimationReader> mAnimations = new List<BinBVHAnimationReader>();
+       // public List<BinBVHAnimationReader> mAnimations = new List<BinBVHAnimationReader>();\r
+        public List<animationwrapper> mAnimationsWrapper = new List<animationwrapper>();
 
         public static Dictionary<UUID, RenderAvatar> mAnimationTransactions = new Dictionary<UUID, RenderAvatar>();
 
@@ -919,8 +946,7 @@ namespace Radegast.Rendering
 
             public int loopinframe;
             public int loopoutframe;\r
-\r
-            public bool finished;
+
         }
 
 
@@ -1050,10 +1076,10 @@ namespace Radegast.Rendering
 
 
         public void flushanimations()
-        {
-            lock (mAnimations)
-            {
-                mAnimations.Clear();
+        {\r
+            lock (mAnimationsWrapper)
+            {\r
+                mAnimationsWrapper.Clear();
             }
         }
 
@@ -1090,11 +1116,7 @@ namespace Radegast.Rendering
                 state.currenttime_pos = 0;
 
                 state.loopinframe = 0;
-                state.loopoutframe = joint.rotationkeys.Length - 1;\r
-\r
-                state.finished = false;
-
-               
+                state.loopoutframe = joint.rotationkeys.Length - 1;
 
                 if (b.Loop == true)
                 {
@@ -1119,40 +1141,42 @@ namespace Radegast.Rendering
 
                 b.joints[pos].Tag = state;
                 pos++;
-            }
-
-            lock (av.glavatar.skel.mAnimations)
-            {
-                av.glavatar.skel.mAnimations.Add(b);\r
+            }\r
 \r
+            lock (av.glavatar.skel.mAnimationsWrapper)
+            {\r
+                av.glavatar.skel.mAnimationsWrapper.Add(new animationwrapper(b));
 \r
                 //pre calculate all joint priorities here\r
                 av.glavatar.skel.mPriority.Clear();\r
 \r
-                foreach (BinBVHAnimationReader bb in av.glavatar.skel.mAnimations)\r
+                foreach (animationwrapper ar in av.glavatar.skel.mAnimationsWrapper)\r
                 {\r
                     int jpos = 0;\r
-                    foreach (binBVHJoint joint in bb.joints)\r
+                    foreach (binBVHJoint joint in ar.anim.joints)\r
                     {\r
-                        if (bb == null)\r
+                        if (ar.anim == null)\r
                             continue;\r
 \r
                         //warning struct copy non reference\r
-                        binBVHJointState state = (binBVHJointState)bb.joints[jpos].Tag;\r
+                        binBVHJointState state = (binBVHJointState)ar.anim.joints[jpos].Tag;\r
 \r
-                        if (state.finished == true)\r
+                        if (ar.playstate == animationwrapper.animstate.STATE_STOP)\r
                             continue;\r
 \r
+                        //FIX ME need to consider ease out here on priorities somehow\r
+\r
+\r
                         int prio = 0;\r
                         //Quick hack to stack animations in the correct order\r
                         //TODO we need to do this per joint as they all have their own priorities as well ;-(\r
                         if (av.glavatar.skel.mPriority.TryGetValue(joint.Name, out prio))\r
                         {\r
-                            if (prio > (bb.Priority))\r
+                            if (prio > (ar.anim.Priority))\r
                                 continue;\r
                         }\r
 \r
-                        av.glavatar.skel.mPriority[joint.Name] = bb.Priority;\r
+                        av.glavatar.skel.mPriority[joint.Name] = ar.anim.Priority;\r
 \r
                         jpos++;\r
                     }\r
@@ -1163,23 +1187,25 @@ namespace Radegast.Rendering
         public void animate(float lastframetime)\r
         {\r
 \r
-            lock (mAnimations)\r
+            lock (mAnimationsWrapper)\r
             {\r
               \r
                 jointdeforms.Clear();\r
 \r
-                foreach (BinBVHAnimationReader b in mAnimations)\r
+                foreach (animationwrapper ar in mAnimationsWrapper)\r
                 {\r
-                    if (b == null)\r
+                    if (ar.anim == null)\r
                         continue;\r
 \r
+                    ar.mRunTime += lastframetime;\r
+\r
                     int jpos = 0;\r
-                    foreach (binBVHJoint joint in b.joints)\r
+                    foreach (binBVHJoint joint in ar.anim.joints)\r
                     {\r
                         //warning struct copy non reference\r
-                        binBVHJointState state = (binBVHJointState)b.joints[jpos].Tag;\r
+                        binBVHJointState state = (binBVHJointState)ar.anim.joints[jpos].Tag;\r
 \r
-                        if (state.finished == true)\r
+                        if (ar.playstate == animationwrapper.animstate.STATE_STOP)\r
                             continue;\r
 \r
                         int prio = 0;\r
@@ -1187,7 +1213,7 @@ namespace Radegast.Rendering
                         //TODO we need to do this per joint as they all have their own priorities as well ;-(\r
                         if (mPriority.TryGetValue(joint.Name, out prio))\r
                         {\r
-                            if (prio > (b.Priority))\r
+                            if (prio > (ar.anim.Priority))\r
                                 continue;\r
                         }\r
 \r
@@ -1196,7 +1222,7 @@ namespace Radegast.Rendering
 \r
                         // Position\r
 \r
-                        if ( b.joints[jpos].positionkeys.Length >= 2 && joint.Name == "mPelvis")\r
+                        if (ar.anim.joints[jpos].positionkeys.Length >= 2 && joint.Name == "mPelvis")\r
                         {\r
 \r
                             //Console.WriteLine("Animate time " + state.currenttime_pos.ToString());\r
@@ -1206,16 +1232,16 @@ namespace Radegast.Rendering
                             float currentime = state.currenttime_pos;\r
                             bool overrun = false;\r
 \r
-                            if (state.currenttime_pos > b.OutPoint)\r
+                            if (state.currenttime_pos > ar.anim.OutPoint)\r
                             {\r
                                 //overrun state\r
-                                int itterations = (int)(state.currenttime_pos / b.OutPoint) + 1;\r
-                                state.currenttime_pos = currentime = b.InPoint + ((b.OutPoint - b.InPoint) - (((b.OutPoint - b.InPoint) * itterations) - state.currenttime_pos));\r
+                                int itterations = (int)(state.currenttime_pos / ar.anim.OutPoint) + 1;\r
+                                state.currenttime_pos = currentime = ar.anim.InPoint + ((ar.anim.OutPoint - ar.anim.InPoint) - (((ar.anim.OutPoint - ar.anim.InPoint) * itterations) - state.currenttime_pos));\r
                                 overrun = true;\r
                             }\r
 \r
-                            binBVHJointKey pos_next = b.joints[jpos].positionkeys[state.nextkeyframe_pos];\r
-                            binBVHJointKey pos_last = b.joints[jpos].positionkeys[state.lastkeyframe_pos];\r
+                            binBVHJointKey pos_next = ar.anim.joints[jpos].positionkeys[state.nextkeyframe_pos];\r
+                            binBVHJointKey pos_last = ar.anim.joints[jpos].positionkeys[state.lastkeyframe_pos];\r
 \r
                             // if the current time > than next key frame time we move keyframes\r
                             if (currentime >= pos_next.time || overrun)\r
@@ -1225,7 +1251,7 @@ namespace Radegast.Rendering
                                 state.lastkeyframe_pos++;\r
                                 state.nextkeyframe_pos++;\r
 \r
-                                if (b.Loop)\r
+                                if (ar.anim.Loop)\r
                                 {\r
                                     if (state.nextkeyframe_pos > state.loopoutframe)\r
                                         state.nextkeyframe_pos = state.loopinframe;\r
@@ -1234,35 +1260,36 @@ namespace Radegast.Rendering
                                         state.lastkeyframe_pos = state.loopinframe;\r
 \r
 \r
-                                    if (state.nextkeyframe_pos >= b.joints[jpos].positionkeys.Length)\r
+                                    if (state.nextkeyframe_pos >= ar.anim.joints[jpos].positionkeys.Length)\r
                                         state.nextkeyframe_pos = state.loopinframe;\r
 \r
-                                    if (state.lastkeyframe_pos >= b.joints[jpos].positionkeys.Length)\r
+                                    if (state.lastkeyframe_pos >= ar.anim.joints[jpos].positionkeys.Length)\r
                                         state.lastkeyframe_pos = state.loopinframe;\r
 \r
                                 }\r
                                 else\r
                                 {\r
-                                    if(state.nextkeyframe_pos >= b.joints[jpos].positionkeys.Length)\r
-                                        state.nextkeyframe_pos = b.joints[jpos].positionkeys.Length-1;\r
+                                    if (state.nextkeyframe_pos >= ar.anim.joints[jpos].positionkeys.Length)\r
+                                        state.nextkeyframe_pos = ar.anim.joints[jpos].positionkeys.Length - 1;\r
 \r
-                                    if (state.lastkeyframe_pos >= b.joints[jpos].positionkeys.Length)\r
+                                    if (state.lastkeyframe_pos >= ar.anim.joints[jpos].positionkeys.Length)\r
                                     {\r
-                                        state.lastkeyframe_pos = b.joints[jpos].positionkeys.Length - 1;\r
-                                        state.finished = true;\r
+                                        state.lastkeyframe_pos = ar.anim.joints[jpos].positionkeys.Length - 1;\r
+\r
+                                        //ar.playstate = animationwrapper.animstate.STATE_EASEOUT;\r
                                         //animation over\r
                                     }\r
                                 }\r
                             }\r
 \r
-                            if (pos_next.time == pos_last.time)\r
-                            {\r
-                                state.finished = true;\r
-                            }\r
+                            //if (pos_next.time == pos_last.time)\r
+                            //{\r
+                            //    ar.playstate = animationwrapper.animstate.STATE_EASEOUT;\r
+                            //}\r
 \r
                             // update the pointers incase they have been moved\r
-                            pos_next = b.joints[jpos].positionkeys[state.nextkeyframe_pos];\r
-                            pos_last = b.joints[jpos].positionkeys[state.lastkeyframe_pos];\r
+                            pos_next = ar.anim.joints[jpos].positionkeys[state.nextkeyframe_pos];\r
+                            pos_last = ar.anim.joints[jpos].positionkeys[state.lastkeyframe_pos];\r
 \r
                             // TODO the lerp/delta is faulty\r
                             // it is not going to handle loop points when we wrap around as last will be > next\r
@@ -1281,8 +1308,8 @@ namespace Radegast.Rendering
                         // end of position\r
 \r
                         //rotation\r
-                        \r
-                        if ( b.joints[jpos].rotationkeys.Length >= 2)\r
+\r
+                        if (ar.anim.joints[jpos].rotationkeys.Length >= 2)\r
                         {\r
 \r
                             state.currenttime_rot += lastframetime;\r
@@ -1290,16 +1317,16 @@ namespace Radegast.Rendering
                             float currentime = state.currenttime_rot;\r
                             bool overrun = false;\r
 \r
-                            if (state.currenttime_rot > b.OutPoint)\r
+                            if (state.currenttime_rot > ar.anim.OutPoint)\r
                             {\r
                                 //overrun state\r
-                                int itterations = (int)(state.currenttime_rot / b.OutPoint) + 1;\r
-                                state.currenttime_rot = currentime = b.InPoint + ((b.OutPoint - b.InPoint) - (((b.OutPoint - b.InPoint) * itterations) - state.currenttime_rot));\r
+                                int itterations = (int)(state.currenttime_rot / ar.anim.OutPoint) + 1;\r
+                                state.currenttime_rot = currentime = ar.anim.InPoint + ((ar.anim.OutPoint - ar.anim.InPoint) - (((ar.anim.OutPoint - ar.anim.InPoint) * itterations) - state.currenttime_rot));\r
                                 overrun = true;\r
                             }\r
 \r
-                            binBVHJointKey rot_next = b.joints[jpos].rotationkeys[state.nextkeyframe_rot];\r
-                            binBVHJointKey rot_last = b.joints[jpos].rotationkeys[state.lastkeyframe_rot];\r
+                            binBVHJointKey rot_next = ar.anim.joints[jpos].rotationkeys[state.nextkeyframe_rot];\r
+                            binBVHJointKey rot_last = ar.anim.joints[jpos].rotationkeys[state.lastkeyframe_rot];\r
 \r
                             // if the current time > than next key frame time we move keyframes\r
                             if (currentime >= rot_next.time || overrun)\r
@@ -1308,7 +1335,7 @@ namespace Radegast.Rendering
                                 state.lastkeyframe_rot++;\r
                                 state.nextkeyframe_rot++;\r
 \r
-                                if (b.Loop)\r
+                                if (ar.anim.Loop)\r
                                 {\r
                                     if (state.nextkeyframe_rot > state.loopoutframe)\r
                                         state.nextkeyframe_rot = state.loopinframe;\r
@@ -1319,26 +1346,26 @@ namespace Radegast.Rendering
                                 }\r
                                 else\r
                                 {\r
-                                    if (state.nextkeyframe_rot >= b.joints[jpos].rotationkeys.Length)\r
-                                        state.nextkeyframe_rot = b.joints[jpos].rotationkeys.Length - 1;\r
+                                    if (state.nextkeyframe_rot >= ar.anim.joints[jpos].rotationkeys.Length)\r
+                                        state.nextkeyframe_rot = ar.anim.joints[jpos].rotationkeys.Length - 1;\r
 \r
-                                    if (state.lastkeyframe_rot >= b.joints[jpos].rotationkeys.Length)\r
+                                    if (state.lastkeyframe_rot >= ar.anim.joints[jpos].rotationkeys.Length)\r
                                     {\r
-                                        state.lastkeyframe_rot = b.joints[jpos].rotationkeys.Length - 1;\r
-                                        state.finished = true;\r
+                                        state.lastkeyframe_rot = ar.anim.joints[jpos].rotationkeys.Length - 1;\r
+                                        //ar.playstate = animationwrapper.animstate.STATE_EASEOUT;\r
                                         //animation over\r
                                     }\r
                                 }\r
                             }\r
 \r
-                            if (rot_next.time == rot_last.time)\r
-                            {\r
-                                state.finished = true;\r
-                            }\r
+                            //if (rot_next.time == rot_last.time)\r
+                            //{\r
+                            //    ar.playstate = animationwrapper.animstate.STATE_EASEOUT;\r
+                            //}\r
 \r
                             // update the pointers incase they have been moved\r
-                            rot_next = b.joints[jpos].rotationkeys[state.nextkeyframe_rot];\r
-                            rot_last = b.joints[jpos].rotationkeys[state.lastkeyframe_rot];\r
+                            rot_next = ar.anim.joints[jpos].rotationkeys[state.nextkeyframe_rot];\r
+                            rot_last = ar.anim.joints[jpos].rotationkeys[state.lastkeyframe_rot];\r
 \r
                             // TODO the lerp/delta is faulty\r
                             // it is not going to handle loop points when we wrap around as last will be > next\r
@@ -1350,37 +1377,61 @@ namespace Radegast.Rendering
                             rotlerp = new Quaternion(rotlerpv.X, rotlerpv.Y, rotlerpv.Z);\r
                         }\r
 \r
+                        //end of rotation\r
 \r
                         joint jointstate;\r
 \r
-                        if (jointdeforms.TryGetValue(b.joints[jpos].Name, out jointstate))\r
+                        float factor = 1.0f;\r
+\r
+                        if (ar.playstate == animationwrapper.animstate.STATE_EASEIN)\r
                         {\r
-                            jointstate.offset += poslerp;\r
-                            jointstate.rotation *= rotlerp;\r
+                            if (ar.mRunTime >= ar.anim.EaseInTime)\r
+                            {\r
+                                ar.playstate = animationwrapper.animstate.STATE_PLAY;\r
+                            }\r
+                            else\r
+                            {\r
+                                factor = 1.0f - ((ar.anim.EaseInTime - ar.mRunTime) / ar.anim.EaseInTime);\r
+                            }\r
+                        }\r
+\r
+                        if (ar.playstate == animationwrapper.animstate.STATE_EASEOUT)\r
+                        {\r
+                            if (ar.mRunTime >= ar.anim.EaseOutTime)\r
+                            {\r
+                                ar.playstate = animationwrapper.animstate.STATE_STOP;\r
+                                factor = 0;\r
+                            }\r
+                            else\r
+                            {\r
+                                factor = 1.0f - ((ar.anim.EaseOutTime - ar.mRunTime) / ar.anim.EaseOutTime);\r
+                            }\r
+                        }\r
+\r
+                        if (jointdeforms.TryGetValue(ar.anim.joints[jpos].Name, out jointstate))\r
+                        {\r
+                            jointstate.offset += poslerp* factor;\r
+                            jointstate.rotation *= rotlerp * factor;\r
                         }\r
                         else\r
                         {\r
                             jointstate = new joint();\r
                             jointstate.rotation = rotlerp;\r
                             jointstate.offset = poslerp;\r
-                            jointdeforms.Add(b.joints[jpos].Name, jointstate);\r
+                            jointdeforms.Add(ar.anim.joints[jpos].Name, jointstate);\r
                         }\r
 \r
 \r
-                        //end of rotation\r
-\r
-                        //deformbone(joint.Name, poslerp, rotlerp);\r
-                        //mNeedsMeshRebuild = true;\r
-\r
                         //warning struct copy non reference\r
-                        b.joints[jpos].Tag = state;\r
+                        ar.anim.joints[jpos].Tag = state;\r
 \r
                         jpos++;\r
                     }\r
                 }\r
             }\r
 \r
-   \r
+\r
+            float amount = 1.0f;\r
 \r
             foreach (KeyValuePair<string, joint> kvp in jointdeforms)\r
             {\r
index 93304a3..5a17925 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">\r
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">\r
   <PropertyGroup>\r
+    <ProjectType>Local</ProjectType>\r
+    <ProductVersion>10.0.20506</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{D5255DAA-AEE9-4045-BFFA-8348615FDD2E}</ProjectGuid>\r
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D19A654B-FE91-4010-A654-FC88AE62F7CC}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>RadSpeechWin</RootNamespace>\r
+    <ApplicationIcon></ApplicationIcon>\r
+    <AssemblyKeyContainerName>\r
+    </AssemblyKeyContainerName>\r
     <AssemblyName>RadSpeechWin</AssemblyName>\r
+    <DefaultClientScript>JScript</DefaultClientScript>\r
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>\r
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>\r
+    <DelaySign>false</DelaySign>\r
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-    <ReleaseVersion>0.4</ReleaseVersion>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <Optimize>false</Optimize>\r
-    <OutputPath>..\..\..\bin\Debug\</OutputPath>\r
-    <DefineConstants>DEBUG;TRACE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <Optimize>true</Optimize>\r
-    <OutputPath>..\..\..\bin\Release\</OutputPath>\r
-    <DefineConstants>TRACE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
+    <OutputType>Library</OutputType>\r
+    <AppDesignerFolder></AppDesignerFolder>\r
+    <RootNamespace>RadSpeechWin</RootNamespace>\r
+    <StartupObject></StartupObject>\r
+    <FileUpgradeFlags>\r
+    </FileUpgradeFlags>\r
   </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <OutputPath>..\..\..\bin\Debug\</OutputPath>\r
-    <DefineConstants>DEBUG;TRACE</DefineConstants>\r
-    <DebugType>full</DebugType>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">\r
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>\r
+    <BaseAddress>285212672</BaseAddress>\r
+    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>\r
+    <ConfigurationOverrideFile>\r
+    </ConfigurationOverrideFile>\r
+    <DefineConstants>TRACE;VISUAL_STUDIO</DefineConstants>\r
+    <DocumentationFile></DocumentationFile>\r
+    <DebugSymbols>False</DebugSymbols>\r
+    <FileAlignment>4096</FileAlignment>\r
+    <Optimize>True</Optimize>\r
+    <OutputPath>..\..\..\bin\</OutputPath>\r
+    <RegisterForComInterop>False</RegisterForComInterop>\r
+    <RemoveIntegerChecks>False</RemoveIntegerChecks>\r
+    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>\r
+    <WarningLevel>3</WarningLevel>\r
+    <NoStdLib>False</NoStdLib>\r
+    <NoWarn>1591,1574,0419,0618,0414,0169</NoWarn>\r
     <PlatformTarget>x86</PlatformTarget>\r
-    <ErrorReport>prompt</ErrorReport>\r
   </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">\r
-    <OutputPath>..\..\..\bin\Release\</OutputPath>\r
-    <DefineConstants>TRACE</DefineConstants>\r
-    <Optimize>true</Optimize>\r
-    <DebugType>pdbonly</DebugType>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">\r
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>\r
+    <BaseAddress>285212672</BaseAddress>\r
+    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>\r
+    <ConfigurationOverrideFile>\r
+    </ConfigurationOverrideFile>\r
+    <DefineConstants>TRACE;DEBUG;VISUAL_STUDIO</DefineConstants>\r
+    <DocumentationFile></DocumentationFile>\r
+    <DebugSymbols>True</DebugSymbols>\r
+    <FileAlignment>4096</FileAlignment>\r
+    <Optimize>False</Optimize>\r
+    <OutputPath>..\..\..\bin\</OutputPath>\r
+    <RegisterForComInterop>False</RegisterForComInterop>\r
+    <RemoveIntegerChecks>False</RemoveIntegerChecks>\r
+    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>\r
+    <WarningLevel>3</WarningLevel>\r
+    <NoStdLib>False</NoStdLib>\r
+    <NoWarn>1591,1574,0419,0618,0414,0169</NoWarn>\r
     <PlatformTarget>x86</PlatformTarget>\r
-    <ErrorReport>prompt</ErrorReport>\r
   </PropertyGroup>\r
   <ItemGroup>\r
-    <Reference Include="System" />\r
+    <Reference Include="System">\r
+        <Name>System</Name>\r
+    </Reference>\r
     <Reference Include="System.Core">\r
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
+        <Name>System.Core</Name>\r
     </Reference>\r
     <Reference Include="System.Speech">\r
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>\r
+        <Name>System.Speech</Name>\r
     </Reference>\r
     <Reference Include="System.Xml.Linq">\r
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
+        <Name>System.Xml.Linq</Name>\r
     </Reference>\r
     <Reference Include="System.Data.DataSetExtensions">\r
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
+        <Name>System.Data.DataSetExtensions</Name>\r
+    </Reference>\r
+    <Reference Include="System.Data">\r
+        <Name>System.Data</Name>\r
+    </Reference>\r
+    <Reference Include="System.Xml">\r
+        <Name>System.Xml</Name>\r
     </Reference>\r
-    <Reference Include="System.Data" />\r
-    <Reference Include="System.Xml" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Compile Include="WinRecog.cs" />\r
-    <Compile Include="WinSpeech.cs" />\r
-    <Compile Include="Properties\AssemblyInfo.cs" />\r
-    <Compile Include="WinSynth.cs" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <ProjectReference Include="..\..\..\..\libopenmetaverse\OpenMetaverse.StructuredData\OpenMetaverse.StructuredData.csproj">\r
-      <Project>{E63618CF-B21B-44CD-BBDE-BCE26CF6AF0D}</Project>\r
-      <Name>OpenMetaverse.StructuredData</Name>\r
+    <ProjectReference Include="..\..\..\..\libopenmetaverse\OpenMetaverse\OpenMetaverse.csproj">\r
+      <Name>OpenMetaverse</Name>\r
+      <Project>{EFB884DF-5C6E-4A81-AC5C-DD531EDC6884}</Project>\r
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>\r
     </ProjectReference>\r
     <ProjectReference Include="..\..\..\..\libopenmetaverse\OpenMetaverseTypes\OpenMetaverseTypes.csproj">\r
-      <Project>{1A303634-82F1-4C91-9E1C-C96B8B03D10A}</Project>\r
       <Name>OpenMetaverseTypes</Name>\r
+      <Project>{8D118FC4-38D8-4865-8119-680C0787FFCB}</Project>\r
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\..\..\..\libopenmetaverse\OpenMetaverse\OpenMetaverse.csproj">\r
-      <Project>{30D9F2AE-42FE-4ACD-9E52-A819CB36EE05}</Project>\r
-      <Name>OpenMetaverse</Name>\r
+    <ProjectReference Include="..\..\..\..\libopenmetaverse\OpenMetaverse.StructuredData\OpenMetaverse.StructuredData.csproj">\r
+      <Name>OpenMetaverse.StructuredData</Name>\r
+      <Project>{B8F3F541-928B-4003-B932-AA0C0EBD9B1C}</Project>\r
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>\r
     </ProjectReference>\r
     <ProjectReference Include="..\..\..\Radegast\Radegast.csproj">\r
-      <Project>{A6D955CD-1F55-459F-A7AD-01E591404989}</Project>\r
       <Name>Radegast</Name>\r
+      <Project>{1348B1D9-A7CA-427F-964B-9DD831E6AF04}</Project>\r
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RadSpeech\Radegast.Plugin.Speech.csproj">\r
-      <Project>{BA078535-BB58-45F0-9225-D2F6DF1197E4}</Project>\r
       <Name>Radegast.Plugin.Speech</Name>\r
+      <Project>{377E4985-1D77-46DE-AE62-F547699741D3}</Project>\r
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\..\..\Radegast\Radegast.csproj">\r
+      <Name>Radegast</Name>\r
+      <Project>{1348B1D9-A7CA-427F-964B-9DD831E6AF04}</Project>\r
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>\r
     </ProjectReference>\r
   </ItemGroup>\r
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-</Project>
\ No newline at end of file
+  <ItemGroup>\r
+    <Compile Include="WinRecog.cs">\r
+    </Compile>\r
+    <Compile Include="WinSpeech.cs">\r
+    </Compile>\r
+    <Compile Include="WinSynth.cs">\r
+    </Compile>\r
+    <Compile Include="Properties\AssemblyInfo.cs">\r
+    </Compile>\r
+  </ItemGroup>\r
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />\r
+  <PropertyGroup>\r
+    <PreBuildEvent>\r
+    </PreBuildEvent>\r
+    <PostBuildEvent>\r
+    </PostBuildEvent>\r
+  </PropertyGroup>\r
+</Project>\r