private static void UpdateStartDummy(MyDummyPointFlags flags, Matrix position) { MyDummyPoint playerStartDummy = null; foreach (var entity in MyEntities.GetEntities()) { MyDummyPoint dummy = entity as MyDummyPoint; if (dummy != null && (dummy.DummyFlags & flags) > 0) { playerStartDummy = dummy; break; } } if (playerStartDummy == null) { MyMwcObjectBuilder_DummyPoint dummyPointObjectBuilder = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.DummyPoint, null) as MyMwcObjectBuilder_DummyPoint; playerStartDummy = MyEntities.CreateFromObjectBuilderAndAdd(null, dummyPointObjectBuilder, Matrix.Identity) as MyDummyPoint; playerStartDummy.DummyFlags |= flags; } playerStartDummy.SetWorldMatrix(position); }
public virtual void Init(string hudLabelText, MyMwcObjectBuilder_DummyPoint objectBuilder, Matrix matrix) { StringBuilder hudLabelTextSb = (hudLabelText == null) ? null : new StringBuilder(hudLabelText); base.Init(hudLabelTextSb, objectBuilder); Type = objectBuilder.Type; Size = objectBuilder.Size; Flags |= EntityFlags.EditableInEditor; DummyFlags = objectBuilder.DummyFlags; CastShadows = false; if (Type == MyDummyPointType.Sphere) { Radius = Size.X / 2.0f; } SetWorldMatrix(matrix); Color = objectBuilder.Color.ToVector4(); Argument = objectBuilder.Argument; RespawnPointFaction = objectBuilder.RespawnPointFaction; RefreshParticleEffect(); foreach (MyRenderObject ro in RenderObjects) { ro.SkipIfTooSmall = false; } StartEffect(); }
public void BeforeLoad(MyMwcObjectBuilder_Checkpoint checkpoint) { MyEntityIdentifier.AllocationSuspended = true; //if (MyMultiplayerGameplay.IsRunning && !MyMultiplayerGameplay.IsHost) //{ // MyMwcPositionAndOrientation position = MyMultiplayerGameplay.Static.GetSafeRespawnPositionNearPlayer(checkpoint.PlayerObjectBuilder.ShipObjectBuilder.ShipType); // checkpoint.PlayerObjectBuilder.ShipObjectBuilder.PositionAndOrientation = position; // return; //} // Try find player start location and set player location if (checkpoint.SectorObjectBuilder != null && checkpoint.SectorObjectBuilder.SectorObjects != null) { int playerStartsCount = 0; foreach (var builder in checkpoint.SectorObjectBuilder.SectorObjects) { MyMwcObjectBuilder_DummyPoint dummyBuilder = builder as MyMwcObjectBuilder_DummyPoint; if (dummyBuilder != null) { if ((dummyBuilder.DummyFlags & MyDummyPointFlags.PLAYER_START) > 0) { checkpoint.PlayerObjectBuilder.ShipObjectBuilder.PositionAndOrientation = dummyBuilder.PositionAndOrientation; playerStartsCount++; } } } } MotherShipPosition.Load(checkpoint.Dictionary); }
protected override MyMwcObjectBuilder_Base GetObjectBuilderInternal(bool getExactCopy) { MyMwcObjectBuilder_DummyPoint objectBuilder = (MyMwcObjectBuilder_DummyPoint)base.GetObjectBuilderInternal(getExactCopy); objectBuilder.Type = Type; if (Type == MyDummyPointType.Box) { objectBuilder.Size = Size; } else { objectBuilder.Size = new Vector3(Radius * 2, 1f, 1f); } objectBuilder.DummyFlags = DummyFlags; objectBuilder.Color = new Color(Color); objectBuilder.Argument = Argument; objectBuilder.RespawnPointFaction = RespawnPointFaction; return(objectBuilder); }