diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index d22e24a..cbe4118 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | |||
@@ -26,6 +26,7 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | ||
29 | using OpenMetaverse; | 30 | using OpenMetaverse; |
30 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
31 | using OpenSim.Region.Framework.Interfaces; | 32 | using OpenSim.Region.Framework.Interfaces; |
@@ -331,6 +332,65 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
331 | UUID[] objectIDs; | 332 | UUID[] objectIDs; |
332 | m_animations.GetArrays(out animIDs, out sequenceNums, out objectIDs); | 333 | m_animations.GetArrays(out animIDs, out sequenceNums, out objectIDs); |
333 | return animIDs; | 334 | return animIDs; |
335 | } | ||
336 | |||
337 | public BinBVHAnimation GenerateRandomAnimation() | ||
338 | { | ||
339 | int rnditerations = 3; | ||
340 | BinBVHAnimation anim = new BinBVHAnimation(); | ||
341 | List<string> parts = new List<string>(); | ||
342 | parts.Add("mPelvis");parts.Add("mHead");parts.Add("mTorso"); | ||
343 | parts.Add("mHipLeft");parts.Add("mHipRight");parts.Add("mHipLeft");parts.Add("mKneeLeft"); | ||
344 | parts.Add("mKneeRight");parts.Add("mCollarLeft");parts.Add("mCollarRight");parts.Add("mNeck"); | ||
345 | parts.Add("mElbowLeft");parts.Add("mElbowRight");parts.Add("mWristLeft");parts.Add("mWristRight"); | ||
346 | parts.Add("mShoulderLeft");parts.Add("mShoulderRight");parts.Add("mAnkleLeft");parts.Add("mAnkleRight"); | ||
347 | parts.Add("mEyeRight");parts.Add("mChest");parts.Add("mToeLeft");parts.Add("mToeRight"); | ||
348 | parts.Add("mFootLeft");parts.Add("mFootRight");parts.Add("mEyeLeft"); | ||
349 | anim.HandPose = 1; | ||
350 | anim.InPoint = 0; | ||
351 | anim.OutPoint = (rnditerations * .10f); | ||
352 | anim.Priority = 7; | ||
353 | anim.Loop = false; | ||
354 | anim.Length = (rnditerations * .10f); | ||
355 | anim.ExpressionName = "afraid"; | ||
356 | anim.EaseInTime = 0; | ||
357 | anim.EaseOutTime = 0; | ||
358 | |||
359 | string[] strjoints = parts.ToArray(); | ||
360 | anim.Joints = new binBVHJoint[strjoints.Length]; | ||
361 | for (int j = 0; j < strjoints.Length; j++) | ||
362 | { | ||
363 | anim.Joints[j] = new binBVHJoint(); | ||
364 | anim.Joints[j].Name = strjoints[j]; | ||
365 | anim.Joints[j].Priority = 7; | ||
366 | anim.Joints[j].positionkeys = new binBVHJointKey[rnditerations]; | ||
367 | anim.Joints[j].rotationkeys = new binBVHJointKey[rnditerations]; | ||
368 | Random rnd = new Random(); | ||
369 | for (int i = 0; i < rnditerations; i++) | ||
370 | { | ||
371 | anim.Joints[j].rotationkeys[i] = new binBVHJointKey(); | ||
372 | anim.Joints[j].rotationkeys[i].time = (i*.10f); | ||
373 | anim.Joints[j].rotationkeys[i].key_element.X = ((float) rnd.NextDouble()*2 - 1); | ||
374 | anim.Joints[j].rotationkeys[i].key_element.Y = ((float) rnd.NextDouble()*2 - 1); | ||
375 | anim.Joints[j].rotationkeys[i].key_element.Z = ((float) rnd.NextDouble()*2 - 1); | ||
376 | anim.Joints[j].positionkeys[i] = new binBVHJointKey(); | ||
377 | anim.Joints[j].positionkeys[i].time = (i*.10f); | ||
378 | anim.Joints[j].positionkeys[i].key_element.X = 0; | ||
379 | anim.Joints[j].positionkeys[i].key_element.Y = 0; | ||
380 | anim.Joints[j].positionkeys[i].key_element.Z = 0; | ||
381 | } | ||
382 | } | ||
383 | |||
384 | AssetBase Animasset = new AssetBase(UUID.Random(), "Random Animation", (sbyte)AssetType.Animation); | ||
385 | Animasset.Data = anim.ToBytes(); | ||
386 | Animasset.Temporary = true; | ||
387 | Animasset.Local = true; | ||
388 | Animasset.Description = "dance"; | ||
389 | //BinBVHAnimation bbvhanim = new BinBVHAnimation(Animasset.Data); | ||
390 | |||
391 | m_scenePresence.Scene.AssetService.Store(Animasset); | ||
392 | AddAnimation(Animasset.FullID, m_scenePresence.UUID); | ||
393 | return anim; | ||
334 | } | 394 | } |
335 | 395 | ||
336 | /// <summary> | 396 | /// <summary> |