Merge branch 'master' into careminster
commit
400f876d98
|
@ -592,3 +592,11 @@ ALTER TABLE prims ADD COLUMN `Friction` double NOT NULL default '0.6';
|
||||||
ALTER TABLE prims ADD COLUMN `Restitution` double NOT NULL default '0.5';
|
ALTER TABLE prims ADD COLUMN `Restitution` double NOT NULL default '0.5';
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
|
:VERSION 29 #---------------- Keyframes
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
|
||||||
|
ALTER TABLE prims ADD COLUMN `KeyframeMotion` blob;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
|
@ -732,6 +732,8 @@ namespace OpenSim.Data.SQLite
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneObjectGroup group = new SceneObjectGroup(prim);
|
SceneObjectGroup group = new SceneObjectGroup(prim);
|
||||||
|
if (prim.KeyframeMotion != null)
|
||||||
|
prim.KeyframeMotion.UpdateSceneObject(group);
|
||||||
createdObjects.Add(group.UUID, group);
|
createdObjects.Add(group.UUID, group);
|
||||||
retvals.Add(group);
|
retvals.Add(group);
|
||||||
LoadItems(prim);
|
LoadItems(prim);
|
||||||
|
@ -1241,6 +1243,7 @@ namespace OpenSim.Data.SQLite
|
||||||
createCol(prims, "Friction", typeof(Double));
|
createCol(prims, "Friction", typeof(Double));
|
||||||
createCol(prims, "Restitution", typeof(Double));
|
createCol(prims, "Restitution", typeof(Double));
|
||||||
|
|
||||||
|
createCol(prims, "KeyframeMotion", typeof(Byte[]));
|
||||||
// Add in contraints
|
// Add in contraints
|
||||||
prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] };
|
prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] };
|
||||||
|
|
||||||
|
@ -1736,6 +1739,20 @@ namespace OpenSim.Data.SQLite
|
||||||
prim.Friction = Convert.ToSingle(row["Friction"]);
|
prim.Friction = Convert.ToSingle(row["Friction"]);
|
||||||
prim.Restitution = Convert.ToSingle(row["Restitution"]);
|
prim.Restitution = Convert.ToSingle(row["Restitution"]);
|
||||||
|
|
||||||
|
|
||||||
|
if (!(row["KeyframeMotion"] is DBNull))
|
||||||
|
{
|
||||||
|
Byte[] data = (byte[])row["KeyframeMotion"];
|
||||||
|
if (data.Length > 0)
|
||||||
|
prim.KeyframeMotion = KeyframeMotion.FromData(null, data);
|
||||||
|
else
|
||||||
|
prim.KeyframeMotion = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prim.KeyframeMotion = null;
|
||||||
|
}
|
||||||
|
|
||||||
return prim;
|
return prim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2168,6 +2185,13 @@ namespace OpenSim.Data.SQLite
|
||||||
row["GravityModifier"] = (double)prim.GravityModifier;
|
row["GravityModifier"] = (double)prim.GravityModifier;
|
||||||
row["Friction"] = (double)prim.Friction;
|
row["Friction"] = (double)prim.Friction;
|
||||||
row["Restitution"] = (double)prim.Restitution;
|
row["Restitution"] = (double)prim.Restitution;
|
||||||
|
|
||||||
|
if (prim.KeyframeMotion != null)
|
||||||
|
row["KeyframeMotion"] = prim.KeyframeMotion.Serialize();
|
||||||
|
else
|
||||||
|
row["KeyframeMotion"] = new Byte[0];
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -822,6 +822,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tell the physics engines that this prim changed.
|
// Tell the physics engines that this prim changed.
|
||||||
|
if (ParentGroup != null && ParentGroup.Scene != null && ParentGroup.Scene.PhysicsScene != null)
|
||||||
ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
|
ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -940,7 +941,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//m_log.Info("[PART]: RO2:" + actor.Orientation.ToString());
|
//m_log.Info("[PART]: RO2:" + actor.Orientation.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ParentGroup != null)
|
if (ParentGroup != null && ParentGroup.Scene != null && ParentGroup.Scene.PhysicsScene != null)
|
||||||
ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
|
ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5136,6 +5136,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
double invS = 1.0 / s;
|
double invS = 1.0 / s;
|
||||||
|
if (rot.s < 0) invS = -invS;
|
||||||
return new LSL_Vector(rot.x * invS, rot.y * invS, rot.z * invS);
|
return new LSL_Vector(rot.x * invS, rot.y * invS, rot.z * invS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5146,19 +5147,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
if (rot.s > 1) // normalization needed
|
if (Math.Abs(rot.s) > 1) // normalization needed
|
||||||
{
|
rot.Normalize();
|
||||||
double length = Math.Sqrt(rot.x * rot.x + rot.y * rot.y +
|
|
||||||
rot.z * rot.z + rot.s * rot.s);
|
|
||||||
|
|
||||||
rot.x /= length;
|
|
||||||
rot.y /= length;
|
|
||||||
rot.z /= length;
|
|
||||||
rot.s /= length;
|
|
||||||
}
|
|
||||||
|
|
||||||
double angle = 2 * Math.Acos(rot.s);
|
double angle = 2 * Math.Acos(rot.s);
|
||||||
if ((double.IsNaN(angle)) || double.IsInfinity(angle)) angle = 0;
|
if (angle > Math.PI)
|
||||||
|
angle = 2 * Math.PI - angle;
|
||||||
|
|
||||||
return angle;
|
return angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -377,10 +377,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
double length = Math.Sqrt(x * x + y * y + z * z + s * s);
|
double length = Math.Sqrt(x * x + y * y + z * z + s * s);
|
||||||
if (length < float.Epsilon)
|
if (length < float.Epsilon)
|
||||||
{
|
{
|
||||||
x = 1;
|
x = 0;
|
||||||
y = 0;
|
y = 0;
|
||||||
z = 0;
|
z = 0;
|
||||||
s = 0;
|
s = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue