public void Add(Mogre.Quaternion value) { Add(value.w); Add(value.x); Add(value.y); Add(value.z); }
public override void ProcessParameters(Mogre.NameValuePairList parameters) { Mogre.NameValuePairList.Iterator ni; if ((ni = parameters.Find("Name")) != parameters.End()) { this.name = ni.Value; } if ((ni = parameters.Find("Position")) != parameters.End()) { this.position = Mogre.StringConverter.ParseVector3(ni.Value); } if ((ni = parameters.Find("Orientation")) != parameters.End()) { this.orientation = Mogre.StringConverter.ParseQuaternion(ni.Value); } if ((ni = parameters.Find("Scale")) != parameters.End()) { this.scale = Mogre.StringConverter.ParseVector3(ni.Value); } if ((ni = parameters.Find("AutoTrackTarget")) != parameters.End()) { this.autoTrackTarget = ni.Value; } }
public override void ProcessParameters(Mogre.NameValuePairList parameters) { Mogre.NameValuePairList.Iterator ni; if ((ni = parameters.Find("Name")) != parameters.End()) { this.name = ni.Value; } if ((ni = parameters.Find("Position")) != parameters.End()) { this.position = Mogre.StringConverter.ParseVector3(ni.Value); } if ((ni = parameters.Find("Orientation")) != parameters.End()) { this.orientation = Mogre.StringConverter.ParseQuaternion(ni.Value); } if ((ni = parameters.Find("ClipDistance")) != parameters.End()) { this.clipDistance = MogreX.StringConverter.ParseVector2(ni.Value); } if ((ni = parameters.Find("FOV")) != parameters.End()) { this.fov = Mogre.StringConverter.ParseReal(ni.Value); } }
internal static extern void PhysicsActor_SetOrientation(IntPtr ptr, Mogre.Quaternion newVal);
public override void ProcessParameters(Mogre.NameValuePairList parameters) { Mogre.NameValuePairList.Iterator ni; if ((ni = parameters.Find("Name")) != parameters.End()) this.name = ni.Value; if ((ni = parameters.Find("Position")) != parameters.End()) this.position = Mogre.StringConverter.ParseVector3(ni.Value); if ((ni = parameters.Find("Orientation")) != parameters.End()) this.orientation = Mogre.StringConverter.ParseQuaternion(ni.Value); if ((ni = parameters.Find("Scale")) != parameters.End()) this.scale = Mogre.StringConverter.ParseVector3(ni.Value); if ((ni = parameters.Find("AutoTrackTarget")) != parameters.End()) this.autoTrackTarget = ni.Value; }
internal static extern void VisualParticle_SetOriginalOrientation(IntPtr ptr, Mogre.Quaternion newValue);
/// <summary> /// Perform the given location change if valid. /// </summary> public static void DeserializeLocations(string contents, Connection sender) { var AsXML = XElement.Parse(contents); // anonymous types! var Karts = (from x in AsXML.Elements("Kart") select new { IDStr = x.Attribute("Id").Value, PositionStr = x.Attribute("Pos").Value, SpeedStr = x.Attribute("Vel").Value, OrientationStr = x.Attribute("Or").Value }).ToDictionary((a) => Int32.Parse(a.IDStr)); foreach (NetworkEntity ne in LKernel.Get<NetworkManager>().Players) { if (Karts.ContainsKey(ne.GlobalID) && !ne.local) { if (ne.owner == sender || ne.nm.NetworkType == NetworkTypes.Client) { try { var Kart = Karts[ne.GlobalID]; var PosList = Kart.PositionStr.Split(' ').Select((s) => float.Parse(s)).ToList(); var SpeedList = Kart.SpeedStr.Split(' ').Select((s) => float.Parse(s)).ToList(); var OrList = Kart.OrientationStr.Split(' ').Select((s) => float.Parse(s)).ToList(); var Pos = new Mogre.Vector3(PosList[0], PosList[1], PosList[2]); var Speed = new Mogre.Vector3(SpeedList[0], SpeedList[1], SpeedList[2]); var Or = new Mogre.Quaternion(OrList[0], OrList[1], OrList[2], OrList[3]); ne.player.Kart.SetState(Pos, Speed, Or); } catch (Exception e) { } } } } return; }
public Mogre.Quaternion GetOrientation() { Mogre.Quaternion vec = *(((Mogre.Quaternion *)Box_GetOrientation(nativePtr).ToPointer())); return(vec); }
public override void ProcessParameters(Mogre.NameValuePairList parameters) { Mogre.NameValuePairList.Iterator ni; if ((ni = parameters.Find("Name")) != parameters.End()) this.name = ni.Value; if ((ni = parameters.Find("Position")) != parameters.End()) this.position = Mogre.StringConverter.ParseVector3(ni.Value); if ((ni = parameters.Find("Orientation")) != parameters.End()) this.orientation = Mogre.StringConverter.ParseQuaternion(ni.Value); if ((ni = parameters.Find("ClipDistance")) != parameters.End()) this.clipDistance = MogreX.StringConverter.ParseVector2(ni.Value); if ((ni = parameters.Find("FOV")) != parameters.End()) this.fov = Mogre.StringConverter.ParseReal(ni.Value); }
public virtual void Update() { //TURN ME LEFT! if (m_bLeft) m_Pose.willTurnLeft(); //TURN ME RIGHT! if (m_bRight)m_Pose.willTurnRight(); //MOVE FORWARD if ( m_bForward || (m_State != CharacterState.IDLE && (m_bRight==true || m_bLeft==true )) ) {//i want to go forward, can i in this position? m_Pose.willForward(); } //MOVE BACKWARD if (m_bBackward) m_Pose.willBackward(); //zerowanie wektoras kretu if (!m_bLeft && !m_bRight && !m_bForward && !m_bBackward) {//jezeli nie ma przycisnietego przcyisku to keiruj sie zawsze tam gdzie wskazuje //looking at czyli grafika m_GoTo = m_PlayerNode.Orientation; } }
public PlayerController(Mogre.Node node, Mogre.Entity entity, float mass) { //init logic states for controler initLogicStates(); //force direction m_GoTo = Mogre.Quaternion.IDENTITY; //node to update m_PlayerNode = node; //Ball MogreNewt.ConvexCollision collision = new MogreNewt.CollisionPrimitives.Ellipsoid( Core.Singleton.NewtonWorld, new Mogre.Vector3(0.25f, 0.25f, 0.25f), new Mogre.Quaternion(new Mogre.Radian(1.57f), new Mogre.Vector3(0, 1, 0)), Core.Singleton.GetUniqueBodyId()); Mogre.Vector3 inertia, offset; collision.CalculateInertialMatrix(out inertia, out offset); inertia *= mass;//mass m_MainBody = new MogreNewt.Body(Core.Singleton.NewtonWorld, collision, true); m_MainBody.SetMassMatrix(mass, inertia); m_MainBody.AutoSleep = false; m_MainBody.LinearDamping = 1.0f; m_MainBody.Transformed += BodyTransformCallback; m_MainBody.ForceCallback += BodyForceCallback; m_MainBody.UserData = this; m_MainBody.Type = (int)PhysicsManager.BodyTypes.PLAYER; collision.Dispose(); m_MainBody.MaterialGroupID = Core.Singleton.PhysicsManager.getMaterialID("Player"); //Ball end m_Pose = m_myPoses["normal"]; ///Second helper body Mogre.Vector3 inertia2, offset2; m_Pose.m_collision.CalculateInertialMatrix(out inertia2, out offset2); inertia2 *= 1; m_SecondBody = new MogreNewt.Body(Core.Singleton.NewtonWorld, m_Pose.m_collision, true); m_SecondBody.SetMassMatrix(1, inertia2); m_SecondBody.AutoSleep = false; m_SecondBody.IsGravityEnabled = false; m_SecondBody.SetPositionOrientation(new Mogre.Vector3(0, 1f, 0), Mogre.Quaternion.IDENTITY); m_SecondBody.MaterialGroupID = Core.Singleton.PhysicsManager.getMaterialID("Player"); m_SecondBody.UserData = null; //set Y joint for second body MogreNewt.Joint upVector = new MogreNewt.BasicJoints.UpVector( Core.Singleton.NewtonWorld, m_SecondBody, Mogre.Vector3.UNIT_Y); //connections between player bodies! player_join = new MogreNewt.BasicJoints.BallAndSocket(Core.Singleton.NewtonWorld, m_MainBody, m_SecondBody, new Mogre.Vector3(0, 0, 0)); }
private unsafe void GetMeshInformationEx(Mogre.MeshPtr mesh, out uint vertexCount, out Mogre.Vector3[] vertices, out uint indexCount, out uint[] indices, Mogre.Vector3 position, Mogre.Quaternion orient, Mogre.Vector3 scale) { bool addedShared = false; vertexCount = indexCount = 0; // Calculate how many vertices and indicies we're going to need foreach (var subMesh in mesh.GetSubMeshIterator()) { // We only need to add the shared vertices once if (subMesh.useSharedVertices) { if (!addedShared) { vertexCount += mesh.sharedVertexData.vertexCount; addedShared = true; } } else { vertexCount += subMesh.vertexData.vertexCount; } // Add the indices indexCount += subMesh.indexData.indexCount; } // Allocate space for the vertices and indices vertices = new Mogre.Vector3[vertexCount]; indices = new uint[indexCount]; addedShared = false; uint sharedOffset = 0; uint currentOffset = 0; uint nextOffset = 0; uint indexOffset = 0; // Run through the submeshes again, adding the data into the arrays foreach (var subMesh in mesh.GetSubMeshIterator()) { Mogre.VertexData vertexData = subMesh.useSharedVertices ? mesh.sharedVertexData : subMesh.vertexData; if ((!subMesh.useSharedVertices) || (subMesh.useSharedVertices && !addedShared)) { if (subMesh.useSharedVertices) { addedShared = true; sharedOffset = currentOffset; } Mogre.VertexElement posElem = vertexData.vertexDeclaration.FindElementBySemantic(Mogre.VertexElementSemantic.VES_POSITION); Mogre.HardwareVertexBufferSharedPtr vbuf = vertexData.vertexBufferBinding.GetBuffer(posElem.Source); byte * vertex = (byte *)vbuf.Lock(Mogre.HardwareBuffer.LockOptions.HBL_READ_ONLY); float *pReal; for (uint j = 0; j < vertexData.vertexCount; ++j, vertex += vbuf.VertexSize) { posElem.BaseVertexPointerToElement(vertex, &pReal); Mogre.Vector3 pt = new Mogre.Vector3(pReal[0], pReal[1], pReal[2]); vertices[currentOffset + j] = (orient * (pt * scale)) + position; } vbuf.Unlock(); nextOffset += vertexData.vertexCount; } Mogre.IndexData indexData = subMesh.indexData; uint numTris = indexData.indexCount / 3; Mogre.HardwareIndexBufferSharedPtr ibuf = indexData.indexBuffer; bool use32bitIndexes = (ibuf.Type == Mogre.HardwareIndexBuffer.IndexType.IT_32BIT); uint * pLong = (uint *)(ibuf.Lock(Mogre.HardwareBuffer.LockOptions.HBL_READ_ONLY)); ushort *pShort = (ushort *)(pLong); uint offset = (subMesh.useSharedVertices) ? sharedOffset : currentOffset; if (use32bitIndexes) { for (uint k = 0; k < numTris * 3; ++k) { indices[indexOffset++] = pLong[k] + (uint)offset; } } else { for (uint k = 0; k < numTris * 3; ++k) { indices[indexOffset++] = (uint)(pShort[k]) + (uint)offset; } } ibuf.Unlock(); currentOffset = nextOffset; } }
internal static extern void Sphere_SetmOrientation(IntPtr ptr, Mogre.Quaternion newVal);