• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# Multiplayer.MySyncGrid类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中Sandbox.Game.Multiplayer.MySyncGrid的典型用法代码示例。如果您正苦于以下问题:C# MySyncGrid类的具体用法?C# MySyncGrid怎么用?C# MySyncGrid使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



MySyncGrid类属于Sandbox.Game.Multiplayer命名空间,在下文中一共展示了MySyncGrid类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: OnThrustTorqueReceived

        private static void OnThrustTorqueReceived(MySyncGrid sync, ref ThrustAndTorqueMsg msg, MyNetworkClient sender)
        {
            sender.ClientFrameId = msg.ClientFrameId;

            //if (false)
            {
                sync.Entity.GridSystems.ThrustSystem.ControlThrust = msg.Thrust;
                sync.Entity.GridSystems.GyroSystem.ControlTorque = msg.Torque;
            }
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:10,代码来源:MySyncGrid.cs


示例2: OnColorBlocksRequest

        private static void OnColorBlocksRequest(MySyncGrid sync, ref ColorBlocksMsg msg, MyNetworkClient sender)
        {
            var handler = sync.BlocksColored;
            if (handler != null) handler(msg.Min, msg.Max, ColorExtensions.UnpackHSVFromUint(msg.HSV), msg.PlaySound);

            if (Sync.IsServer)
            {
                // Broadcast to clients, use result collection
                Sync.Layer.SendMessageToAll(ref msg);
            }
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:11,代码来源:MySyncGrid.cs


示例3: OnBonesReceived

        private static void OnBonesReceived(MySyncGrid sync, ref BonesMsg msg, MyNetworkClient sender)
        {
            sync.Entity.Skeleton.DeserializePart(msg.MinBone, msg.MaxBone, sync.Entity.GridSize, msg.Bones);

            Vector3I minCube = Vector3I.Zero;
            Vector3I maxCube = Vector3I.Zero;

            // To hit incident cubes
            Vector3I min = msg.MinBone;// -Vector3I.One;
            Vector3I max = msg.MaxBone;// +Vector3I.One;

            sync.Entity.Skeleton.Wrap(ref minCube, ref min);
            sync.Entity.Skeleton.Wrap(ref maxCube, ref max);

            minCube -= Vector3I.One;
            maxCube += Vector3I.One;

            Vector3I pos;
            for (pos.X = minCube.X; pos.X <= maxCube.X; pos.X++)
            {
                for (pos.Y = minCube.Y; pos.Y <= maxCube.Y; pos.Y++)
                {
                    for (pos.Z = minCube.Z; pos.Z <= maxCube.Z; pos.Z++)
                    {
                        sync.Entity.SetCubeDirty(pos);
                    }
                }
            }
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:29,代码来源:MySyncGrid.cs


示例4: OnBuildBlocksAreaSuccess

        private static void OnBuildBlocksAreaSuccess(MySyncGrid sync, ref BuildBlocksAreaSuccessMsg successMsg, MyNetworkClient sender)
        {
            Debug.Assert(sync.BlocksBuiltAreaSuccess != null, "Handler should not be null, build messages will be ignored!");

            var handler = sync.BlocksBuiltAreaSuccess;
            if (handler != null) handler(ref successMsg.Area, successMsg.EntityIdSeed, successMsg.FailList, successMsg.OwnerId);
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:7,代码来源:MySyncGrid.cs


示例5: OnRazeBlocksAreaSuccess

        private static void OnRazeBlocksAreaSuccess(MySyncGrid sync, ref RazeBlocksAreaSuccessMsg successMsg, MyNetworkClient sender)
        {
            Debug.Assert(sync.BlocksRazeAreaSuccess != null, "Handler should not be null, Raze messages will be ignored!");

            var handler = sync.BlocksRazeAreaSuccess;
            if (handler != null) handler(ref successMsg.Pos, ref successMsg.Size, successMsg.FailList);
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:7,代码来源:MySyncGrid.cs


示例6: OnRemoveSplit

        private static void OnRemoveSplit(MySyncGrid grid, ref RemoveSplitMsg msg, MyNetworkClient sender)
        {
            MyCubeGrid m_grid;
            if (MyEntities.TryGetEntityById(msg.GridEntityId, out m_grid))
            {
                m_tmpBlockListReceive.Clear();
                foreach (var position in msg.RemovedBlocks)
                {
                    var block = m_grid.GetCubeBlock(position);
                    Debug.Assert(block != null, "Block was null when trying to remove a grid split. Desync?");
                    if (block == null)
                    {
                        MySandboxGame.Log.WriteLine("Block was null when trying to remove a grid split. Desync?");
                        continue;
                    }

                    m_tmpBlockListReceive.Add(block);
                }

                MyCubeGrid.RemoveSplit(m_grid, m_tmpBlockListReceive, 0, m_tmpBlockListReceive.Count, sync: false);
                m_tmpBlockListReceive.Clear();
            }
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:23,代码来源:MySyncGrid.cs


示例7: OnBuildBlockRequest

        private static void OnBuildBlockRequest(MySyncGrid sync, ref BuildBlockMsg msg, MyNetworkClient sender)
        {
            MyCubeGrid.MyBlockLocation? builtBlock = null;

            MyEntity builder = null;
            MyEntities.TryGetEntityById(msg.BuilderEntityId, out builder);

            var buildHandler = sync.BlockBuilt;
            if (buildHandler != null) buildHandler(ColorExtensions.UnpackHSVFromUint(msg.ColorMaskHsv), msg.Location, msg.BlockObjectBuilder, ref builtBlock, builder);
            
            if (Sync.IsServer)
            {
                Sync.Layer.SendMessageToAll(ref msg);
            }
            
            var afterHandler = sync.AfterBlockBuilt;
            if (afterHandler != null && builtBlock != null) afterHandler(builtBlock.Value);
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:18,代码来源:MySyncGrid.cs


示例8: OnModifyGroupSuccess

 private static void OnModifyGroupSuccess(MySyncGrid sync, ref ModifyBlockGroupMsg msg, MyNetworkClient sender)
 {
     if (msg.Blocks == null || msg.Blocks.Count() == 0)
         foreach (var group in sync.Entity.BlockGroups)
         {
             if (group.Name.ToString().Equals(msg.Name))
             {
                 sync.Entity.RemoveGroup(group);
                 break;
             }
         }
     else
     {
         MyBlockGroup group = new MyBlockGroup(sync.Entity);
         group.Name.Clear().Append(msg.Name);
         foreach (var blockId in msg.Blocks)
         {
             MyTerminalBlock block = null;
             if (MyEntities.TryGetEntityById(blockId, out block))
                 group.Blocks.Add(block);
         }
         sync.Entity.AddGroup(group);
     }
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:24,代码来源:MySyncGrid.cs


示例9: OnConvertedToShipRequest

        private static void OnConvertedToShipRequest(MySyncGrid sync, ref ConvertToShipMsg msg, MyNetworkClient sender)
        {
            if (!sync.Entity.IsStatic)
            {
                Debug.Assert(false, "Grid was not static!");
                return;
            }

            if (Sync.IsServer)
                Sync.Layer.SendMessageToAllAndSelf(ref msg, MyTransportMessageEnum.Success);
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:11,代码来源:MySyncGrid.cs


示例10: OnStockpileFillRequest

        private static void OnStockpileFillRequest(MySyncGrid sync, ref StockpileFillRequestMsg msg, MyNetworkClient sender)
        {
            var block = sync.Entity.GetCubeBlock(msg.BlockPosition);
            Debug.Assert(block != null, "Could not find block whose stockpile fill was requested");
            if (block == null) return;

            MyEntity ownerEntity = null;
            if (!MyEntities.TryGetEntityById(msg.OwnerEntityId, out ownerEntity))
            {
                Debug.Assert(false, "Stockpile fill inventory owner entity was null");
                return;
            }

            var owner = (ownerEntity as IMyInventoryOwner);
            Debug.Assert(owner != null, "Stockpile fill inventory owner was not an inventory owner");

            var inventory = owner.GetInventory(msg.InventoryIndex);
            Debug.Assert(inventory != null, "Stockpile fill inventory owner did not have the given inventory");

            block.MoveItemsToConstructionStockpile(inventory);
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:21,代码来源:MySyncGrid.cs


示例11: OnSetToConstructionRequest

        private static void OnSetToConstructionRequest(MySyncGrid sync, ref SetToConstructionRequestMsg msg, MyNetworkClient sender)
        {
            var block = sync.Entity.GetCubeBlock(msg.BlockPosition);
            Debug.Assert(block != null, "Could not find block to set to construction site");
            if (block == null) return;

            block.SetToConstructionSite();

            MyEntity ownerEntity = null;
            if (!MyEntities.TryGetEntityById(msg.OwnerEntityId, out ownerEntity))
            {
                Debug.Assert(false, "Set to construction site inventory owner entity was null");
                return;
            }

            var owner = (ownerEntity as IMyInventoryOwner);
            Debug.Assert(owner != null, "Set to construction site inventory owner was not an inventory owner");

            var inventory = owner.GetInventory(msg.InventoryIndex);
            Debug.Assert(inventory != null, "Set to construction site inventory owner did not have the given inventory");

            block.MoveItemsToConstructionStockpile(inventory);
            block.IncreaseMountLevel(MyWelder.WELDER_AMOUNT_PER_SECOND * MyEngineConstants.UPDATE_STEP_SIZE_IN_SECONDS, msg.RequestingPlayer);
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:24,代码来源:MySyncGrid.cs


示例12: OnStockpileChanged

 private static void OnStockpileChanged(MySyncGrid sync, ref StockpileChangedMsg msg, MyNetworkClient sender)
 {
     if (sync.BlockStockpileChanged != null)
         sync.BlockStockpileChanged(msg.BlockPosition, msg.SubBlockId, msg.Changes);
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:5,代码来源:MySyncGrid.cs


示例13: OnIntegrityChanged

 private static void OnIntegrityChanged(MySyncGrid sync, ref IntegrityChangedMsg msg, MyNetworkClient sender)
 {
     if (sync.BlockIntegrityChanged != null)
         sync.BlockIntegrityChanged(msg.BlockPosition, msg.SubBlockId, msg.BuildIntegrity, msg.Integrity, msg.IntegrityChangeType, msg.ToolOwner);
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:5,代码来源:MySyncGrid.cs


示例14: OnThrustReceived

 private static void OnThrustReceived(MySyncGrid sync, ref ThrustMsg msg, MyNetworkClient sender)
 {
     sync.Entity.GridSystems.ThrustSystem.ControlThrust = msg.Thrust;
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:4,代码来源:MySyncGrid.cs


示例15: OnChangeDisplayName

 private static void OnChangeDisplayName(MySyncGrid grid, ref ChangeDisplayNameMsg msg, MyNetworkClient sender)
 {
     MyCubeGrid m_grid;
     if (MyEntities.TryGetEntityById(msg.GridEntityId, out m_grid))
         m_grid.DisplayName = msg.DisplayName;
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:6,代码来源:MySyncGrid.cs


示例16: OnConvertedToShipSuccess

        private static void OnConvertedToShipSuccess(MySyncGrid sync, ref ConvertToShipMsg msg, MyNetworkClient sender)
        {
            if (!sync.Entity.IsStatic)
            {
                Debug.Assert(false, "Grid was not static!");
                return;
            }

            sync.Entity.ConvertToDynamic();
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:10,代码来源:MySyncGrid.cs


示例17: OnCreateSplits

        private static void OnCreateSplits(MySyncGrid syncGrid, ref CreateSplitsMsg msg, MyNetworkClient sender)
        {
            m_tmpBlockListReceive.Clear();

            var grid = syncGrid.Entity;
            foreach (var b in msg.SplitBlocks)
            {
                var block = grid.GetCubeBlock(b);
                m_tmpBlockListReceive.Add(block); // Add even null, we cannot break the order
            }
            MyCubeGrid.CreateSplits(grid, m_tmpBlockListReceive, msg.Groups, false);

            m_tmpBlockListReceive.Clear();
        }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:14,代码来源:MySyncGrid.cs


示例18: OnMergeGridSuccess

 private static void OnMergeGridSuccess(MySyncGrid sync, ref MergeMsg msg, MyNetworkClient sender)
 {
     MyCubeGrid grid = null;
     if (MyEntities.TryGetEntityById<MyCubeGrid>(msg.OtherEntityId, out grid))
     {
         Vector3I gridOffset = msg.GridOffset;
         MatrixI transform = new MatrixI(msg.GridOffset, msg.GridForward, msg.GridUp);
         sync.Entity.MergeGridInternal(grid, ref transform);
     }
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:10,代码来源:MySyncGrid.cs


示例19: OnChangeDestructibleBlocks

 private static void OnChangeDestructibleBlocks(MySyncGrid syncObject, ref ChangeDestructibleBlocksMsg msg, MyNetworkClient sender)
 {
     syncObject.Entity.DestructibleBlocks = msg.DestructionEnabled;
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:4,代码来源:MySyncGrid.cs


示例20: OnChangeOwnerRequest

 private static void OnChangeOwnerRequest(MySyncGrid sync, ref ChangeOwnershipMsg msg, MyNetworkClient sender)
 {
     MyCubeBlock block = null;
     if (MyEntities.TryGetEntityById<MyCubeBlock>(msg.BlockId, out block))
     {
         if (Sync.IsServer && ((MyFakes.ENABLE_BATTLE_SYSTEM && MySession.Static.Battle && block.IDModule == null) || (block.IDModule.Owner == 0) || block.IDModule.Owner == msg.RequestingPlayer || (msg.Owner == 0)))
         {
             OnChangeOwner(sync, ref msg, sender);
             Sync.Layer.SendMessageToAll(ref msg, MyTransportMessageEnum.Success);
         }
         else
         {
             System.Diagnostics.Debug.Fail("Invalid ownership change request!");
         }
     }
 }
开发者ID:Krulac,项目名称:SpaceEngineers,代码行数:16,代码来源:MySyncGrid.cs



注:本文中的Sandbox.Game.Multiplayer.MySyncGrid类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Helpers.MyToolbar类代码示例发布时间:2022-05-26
下一篇:
C# Gui.MyHudNotification类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap