private ComputeBuffer GetInstanceDataComputeBuffertoUse(ShipVisuals key, int sizeNeeded) { ComputeBuffer instanceDataComputeBuffer = null; _instanceComputeBuffers.TryGetValue(key, out instanceDataComputeBuffer); if (instanceDataComputeBuffer == null || instanceDataComputeBuffer.count < sizeNeeded) { if (instanceDataComputeBuffer != null) { instanceDataComputeBuffer.Release(); } unsafe { instanceDataComputeBuffer = new ComputeBuffer(sizeNeeded, sizeof(InstanceData), ComputeBufferType.Default); } _instanceComputeBuffers[key] = instanceDataComputeBuffer; } return(instanceDataComputeBuffer); }
void OnRespawn(Vector3 spawnPosition, Quaternion spawnRotation) { transform.position = spawnPosition; transform.rotation = spawnRotation; SetVisibility(true); m_Health = 50; OnHealthChanged(); //The OnRespawn functions of other components make sure that all values are properly reset to their initial values again ShipMovement.OnRespawn(spawnRotation.eulerAngles.y); ShipVisuals.OnRespawn(); if (GetComponent <ShipInput>() != null) { GetComponent <ShipInput>().OnRespawn(); } CameraShipFollow cameraFollow = Camera.main.GetComponent <CameraShipFollow>(); if (cameraFollow != null && cameraFollow.GetTarget() == this) { cameraFollow.OnRespawn(); } }
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { //Multiple components need to synchronize values over the network. //The SerializeState methods are made up, but they're useful to keep //all the data separated into their respective components SerializeState(stream, info); ShipVisuals.SerializeState(stream, info); ShipMovement.SerializeState(stream, info); }
private ComputeBuffer GetIndirectArgsBufferToUse(ShipVisuals key) { ComputeBuffer indirectArgsBuffer = null; _indirectArgsComputeBuffers.TryGetValue(key, out indirectArgsBuffer); if (indirectArgsBuffer == null) { indirectArgsBuffer = new ComputeBuffer(1, 5 * sizeof(uint), ComputeBufferType.IndirectArguments); _indirectArgsComputeBuffers[key] = indirectArgsBuffer; } return(indirectArgsBuffer); }
public void SetTeam(Team team) { //This method gets called right after a ship is created m_Team = team; ShipVisuals.SetTeamColors(team); DecalIcon icon = GetComponent <DecalIcon>(); if (icon != null) { if (team == Team.Blue) { icon.Color = Color.blue; } else { icon.Color = Color.red; } } }
void OnHealthChanged(Ship damageDealer) { if (m_Health <= 0) { m_Health = 0; Instantiate(ExplosionPrefab, transform.position, Quaternion.identity); SetVisibility(false); //If our local ship dies, call the respawn function after 2 seconds and award //the kill to the damage dealer if (PhotonView.isMine == true) { if (damageDealer != null) { damageDealer.OnKilledShip(this); } Invoke("SendRespawn", 2f); } } //The ShipVisuals component shows the smoke when the ship is damaged ShipVisuals.OnHealthChanged(m_Health); }
public VisualEffect(IAttackable attackable, ShipVisuals visualEffect, DateTime effectEndTime) { Entity = attackable; Visual = visualEffect; EndTime = effectEndTime; }
void Start() { m_ShipVisuals = transform.parent.GetComponent <ShipVisuals>(); m_Projector = GetComponent <Projector>(); }
void Start() { m_ShipVisuals = transform.parent.GetComponent<ShipVisuals>(); m_Projector = GetComponent<Projector>(); }
public VisualEffect(Player player, ShipVisuals visualEffect, DateTime effectEndTime) : base(player) { Visual = visualEffect; EndTime = effectEndTime; }