コード例 #1
0
ファイル: Util.cs プロジェクト: andyhebear/ymfas
 public void Add(Mogre.Quaternion value)
 {
     Add(value.w);
     Add(value.x);
     Add(value.y);
     Add(value.z);
 }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
ファイル: CameraEditor.cs プロジェクト: andyhebear/likeleon
        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);
            }
        }
コード例 #4
0
 internal static extern void PhysicsActor_SetOrientation(IntPtr ptr, Mogre.Quaternion newVal);
コード例 #5
0
ファイル: NodeEditor.cs プロジェクト: andyhebear/likeleon
        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;
        }
コード例 #6
0
 internal static extern void VisualParticle_SetOriginalOrientation(IntPtr ptr, Mogre.Quaternion newValue);
コード例 #7
0
        /// <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;
        }
コード例 #8
0
ファイル: Box.cs プロジェクト: MogreBindings/MogreAddons
 public Mogre.Quaternion GetOrientation()
 {
     Mogre.Quaternion vec = *(((Mogre.Quaternion *)Box_GetOrientation(nativePtr).ToPointer()));
     return(vec);
 }
コード例 #9
0
ファイル: CameraEditor.cs プロジェクト: andyhebear/likeleon
        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);
        }
コード例 #10
0
        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;
                }
        }
コード例 #11
0
        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));
        }
コード例 #12
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;
            }
        }
コード例 #13
0
ファイル: Sphere.cs プロジェクト: MogreBindings/MogreAddons
 internal static extern void Sphere_SetmOrientation(IntPtr ptr, Mogre.Quaternion newVal);