public static void MoveBroadcaster(MyRadioBroadcaster broadcaster) { if (broadcaster.RadioProxyID != MyVRageConstants.PRUNING_PROXY_ID_UNITIALIZED) { BoundingBoxD box = BoundingBoxD.CreateFromSphere(new BoundingSphereD(broadcaster.BroadcastPosition, broadcaster.BroadcastRadius)); m_aabbTree.MoveProxy(broadcaster.RadioProxyID, ref box, Vector3.Zero); } }
public static void RemoveBroadcaster(MyRadioBroadcaster broadcaster) { if (broadcaster.RadioProxyID != MyVRageConstants.PRUNING_PROXY_ID_UNITIALIZED) { m_aabbTree.RemoveProxy(broadcaster.RadioProxyID); broadcaster.RadioProxyID = MyVRageConstants.PRUNING_PROXY_ID_UNITIALIZED; } }
public static void AddBroadcaster(MyRadioBroadcaster broadcaster) { if (broadcaster.Entity is MyCubeBlock) { MyCubeGrid grid = (broadcaster.Entity as MyCubeBlock).CubeGrid; Debug.Assert(grid.InScene, "adding broadcaster when grid is not in scene"); } if (broadcaster.RadioProxyID == MyVRageConstants.PRUNING_PROXY_ID_UNITIALIZED) { BoundingBoxD box = BoundingBoxD.CreateFromSphere(new BoundingSphereD(broadcaster.BroadcastPosition, broadcaster.BroadcastRadius)); broadcaster.RadioProxyID = m_aabbTree.AddProxy(ref box, broadcaster, 0); } }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { var beaconDefinition = BlockDefinition as MyBeaconDefinition; Debug.Assert(beaconDefinition != null); var sinkComp = new MyResourceSinkComponent(); sinkComp.Init( MyStringHash.GetOrCompute(beaconDefinition.ResourceSinkGroup), MyEnergyConstants.MAX_REQUIRED_POWER_BEACON, UpdatePowerInput); ResourceSink = sinkComp; RadioBroadcaster = new MyRadioBroadcaster(10000); if (((MyObjectBuilder_Beacon)objectBuilder).BroadcastRadius != 0) RadioBroadcaster.BroadcastRadius = ((MyObjectBuilder_Beacon)objectBuilder).BroadcastRadius; base.Init(objectBuilder, cubeGrid); sinkComp.IsPoweredChanged += Receiver_IsPoweredChanged; sinkComp.Update(); RadioBroadcaster.OnBroadcastRadiusChanged += OnBroadcastRadiusChanged; m_largeLight = cubeGrid.GridSizeEnum == MyCubeSize.Large; m_light = MyLights.AddLight(); m_light.Start(MyLight.LightTypeEnum.PointLight, 1.5f); m_light.LightOwner = m_largeLight ? MyLight.LightOwnerEnum.LargeShip : MyLight.LightOwnerEnum.SmallShip; m_light.UseInForwardRender = true; m_light.Range = 1; m_light.GlareOn = true; m_light.GlareIntensity = m_largeLight ? 2 : 1; m_light.GlareQuerySize = m_largeLight ? 15f : 0.2f; m_light.GlareType = VRageRender.Lights.MyGlareTypeEnum.Distant; m_light.GlareMaterial = m_largeLight ? "GlareLsLight" : "GlareSsLight"; m_light.GlareMaxDistance = GLARE_MAX_DISTANCE; if (m_largeLight) m_lightPositionOffset = new Vector3(0f, CubeGrid.GridSize * 0.5f, 0f); else m_lightPositionOffset = Vector3.Zero; UpdateLightPosition(); AddDebugRenderComponent(new MyDebugRenderComponentDrawPowerReciever(ResourceSink,this)); AnimationRunning = true; SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; IsWorkingChanged += MyBeacon_IsWorkingChanged; ShowOnHUD = false; UpdateText(); }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { SyncFlag = true; RadioReceiver = new MyRadioReceiver(); RadioBroadcaster = new MyRadioBroadcaster(50); base.Init(objectBuilder, cubeGrid); MyObjectBuilder_SpaceBall sphereOb = (MyObjectBuilder_SpaceBall)objectBuilder; m_virtualMass.Value = sphereOb.VirtualMass; m_restitution.Value = sphereOb.Restitution; Friction = sphereOb.Friction; IsWorkingChanged += MySpaceBall_IsWorkingChanged; UpdateIsWorking(); RefreshPhysicsBody(); m_savedBroadcast = sphereOb.EnableBroadcast; ShowOnHUD = false; SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME | MyEntityUpdateEnum.BEFORE_NEXT_FRAME; }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { base.Init(objectBuilder, cubeGrid); m_radioBroadcaster = new MyRadioBroadcaster(this, 10000); if (((MyObjectBuilder_Beacon)objectBuilder).BroadcastRadius != 0) { m_radioBroadcaster.BroadcastRadius = ((MyObjectBuilder_Beacon)objectBuilder).BroadcastRadius; } m_radioBroadcaster.OnBroadcastRadiusChanged += OnBroadcastRadiusChanged; m_largeLight = cubeGrid.GridSizeEnum == MyCubeSize.Large; m_light = MyLights.AddLight(); m_light.Start(MyLight.LightTypeEnum.PointLight, 1.5f); m_light.LightOwner = MyLight.LightOwnerEnum.SmallShip; m_light.UseInForwardRender = true; m_light.Range = 1; m_light.GlareOn = true; m_light.GlareIntensity = m_largeLight ? 2 : 1; m_light.GlareQuerySize = m_largeLight ? 7.5f : 1.22f; m_light.GlareType = VRageRender.Lights.MyGlareTypeEnum.Distant; m_light.GlareMaterial = m_largeLight ? "GlareLsLight" : "GlareSsLight"; m_light.GlareMaxDistance = GLARE_MAX_DISTANCE; if (m_largeLight) { m_lightPositionOffset = new Vector3(0f, CubeGrid.GridSize * 0.5f, 0f); } else { m_lightPositionOffset = Vector3.Zero; } UpdateLightPosition(); var beaconDefinition = BlockDefinition as MyBeaconDefinition; Debug.Assert(beaconDefinition != null); var sinkComp = new MyResourceSinkComponent(); sinkComp.Init( MyStringHash.GetOrCompute(beaconDefinition.ResourceSinkGroup), MyEnergyConstants.MAX_REQUIRED_POWER_BEACON, UpdatePowerInput); sinkComp.IsPoweredChanged += Receiver_IsPoweredChanged; sinkComp.Update(); ResourceSink = sinkComp; AddDebugRenderComponent(new MyDebugRenderComponentDrawPowerReciever(ResourceSink, this)); AnimationRunning = true; SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; IsWorkingChanged += MyBeacon_IsWorkingChanged; ShowOnHUD = false; UpdateText(); }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { RadioBroadcaster = new MyRadioBroadcaster(); RadioReceiver = new MyRadioReceiver(); var antennaDefinition = BlockDefinition as MyRadioAntennaDefinition; Debug.Assert(antennaDefinition != null); var sinkComp = new MyResourceSinkComponent(); sinkComp.Init( antennaDefinition.ResourceSinkGroup, MyEnergyConstants.MAX_REQUIRED_POWER_ANTENNA, UpdatePowerInput); sinkComp.IsPoweredChanged += Receiver_IsPoweredChanged; ResourceSink = sinkComp; base.Init(objectBuilder, cubeGrid); MyObjectBuilder_RadioAntenna antennaBuilder = (MyObjectBuilder_RadioAntenna)objectBuilder; if (antennaBuilder.BroadcastRadius != 0) { RadioBroadcaster.BroadcastRadius = antennaBuilder.BroadcastRadius; } else { RadioBroadcaster.BroadcastRadius = CubeGrid.GridSizeEnum == MyCubeSize.Large ? 10000 : 500; } ResourceSink.Update(); RadioBroadcaster.WantsToBeEnabled = antennaBuilder.EnableBroadcasting; m_showShipName.Value = antennaBuilder.ShowShipName; //if (Sync.IsServer) //{ // this.IsWorkingChanged += UpdatePirateAntenna; // this.CustomNameChanged += UpdatePirateAntenna; // this.OwnershipChanged += UpdatePirateAntenna; // UpdatePirateAntenna(this); //} ShowOnHUD = false; m_gizmoColor = new Vector4(0.2f, 0.2f, 0.0f, 0.5f); NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME | MyEntityUpdateEnum.BEFORE_NEXT_FRAME; }
public MySyncRadioBroadcaster(MyRadioBroadcaster broadcaster) { m_broadcaster = broadcaster; }