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);
    }
Beispiel #2
0
    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();
        }
    }
Beispiel #3
0
    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);
    }
Beispiel #5
0
    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;
            }
        }
    }
Beispiel #6
0
    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);
    }
Beispiel #7
0
 public VisualEffect(IAttackable attackable, ShipVisuals visualEffect, DateTime effectEndTime)
 {
     Entity  = attackable;
     Visual  = visualEffect;
     EndTime = effectEndTime;
 }
Beispiel #8
0
 void Start()
 {
     m_ShipVisuals = transform.parent.GetComponent <ShipVisuals>();
     m_Projector   = GetComponent <Projector>();
 }
Beispiel #9
0
	void Start()
	{
		m_ShipVisuals = transform.parent.GetComponent<ShipVisuals>();
		m_Projector = GetComponent<Projector>();
	}
Beispiel #10
0
 public VisualEffect(Player player, ShipVisuals visualEffect, DateTime effectEndTime) : base(player)
 {
     Visual  = visualEffect;
     EndTime = effectEndTime;
 }