コード例 #1
0
        public uint PushInstance(Vector3 Position, float scale, Vector3 rotation)
        {
            Matrix matRot = Matrix.Identity;

            matRot *= Matrix.RotationX(rotation.X);
            matRot *= Matrix.RotationY(rotation.Y);
            matRot *= Matrix.RotationZ(rotation.Z);

            Matrix matTrans = Matrix.Translation(Position);
            Matrix matScale = Matrix.Scaling(scale, scale, scale);

            Models.MDX.MdxInstanceData inst = new Models.MDX.MdxInstanceData()
            {
                ModelMatrix =
                    matRot * matScale * matTrans,
                IsSelected = 0xFFFFFFFF,
            };

            uint id = 0;

            lock (mInstLock)
            {
                id = RequestInstanceId();
                inst.InstanceId = id;
                WaitingInstances.Add(inst);
            }

            Game.GameManager.GraphicsThread.CallOnThread(
                () =>
            {
                ExecuteTask();
            },
                true
                );

            return(id);
        }
コード例 #2
0
ファイル: M2BatchRenderer.cs プロジェクト: remixod/sharpwow
        public uint PushInstance(Vector3 Position, float scale, Vector3 rotation)
        {
            Matrix matRot = Matrix.Identity;
            matRot *= Matrix.RotationX(rotation.X);
            matRot *= Matrix.RotationY(rotation.Y);
            matRot *= Matrix.RotationZ(rotation.Z);

            Matrix matTrans = Matrix.Translation(Position);
            Matrix matScale = Matrix.Scaling(scale, scale, scale);

            Models.MDX.MdxInstanceData inst = new Models.MDX.MdxInstanceData()
            {
                ModelMatrix =
                matRot * matScale * matTrans,
                IsSelected = 0xFFFFFFFF,
            };

            uint id = 0;

            lock (mInstLock)
            {
                id = RequestInstanceId();
                inst.InstanceId = id;
                WaitingInstances.Add(inst);
            }

            Game.GameManager.GraphicsThread.CallOnThread(
                () =>
                {
                    ExecuteTask();
                },
                true
            );

            return id;
        }