Skip to content

Instantly share code, notes, and snippets.

View jaredjenkins's full-sized avatar

Jared Jenkins jaredjenkins

  • Chronosphere
  • Chicago
View GitHub Profile
@jaredjenkins
jaredjenkins / crossdomain
Last active December 16, 2015 12:19
Unity Crossdomain
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
@jaredjenkins
jaredjenkins / gist:5421985
Created April 19, 2013 17:53
Parallel http requests in Unity
private IEnumerator ProcessRequests()
{
if(isProcessing || taskQueue.Count == 0){
yield break;
}
isProcessing = true;
//get a temp variable, otherwise we could be stuck in an infinite-loop (offline scenario)
int itemsToProcess = taskQueue.Count;
while(itemsToProcess > 0){
@jaredjenkins
jaredjenkins / gist:5421919
Last active December 16, 2015 10:39
Polling for completed requests in MonoBehavior
void Update()
{
//the http worker has a method which returns (dequeues)
//an IEnumerable set of completed requests,
//internall it is enqueueing the completed requests
foreach(ApiResponse response in httpWorker.GetCompletedResponses())
{
if(response.Request.RequestCompleteHandler != null)
{
//we want to notify an object that we have completed the request
@jaredjenkins
jaredjenkins / ConcurrentQueue.cs
Last active November 13, 2017 00:00
Concurrent Queue for Unity
using System;
using System.Collections.Generic;
namespace PlaynomicsPlugin
{
internal class ConcurrentQueue<T>{
private readonly object syncLock = new object();
private Queue<T> queue;
@jaredjenkins
jaredjenkins / gist:5421868
Last active December 16, 2015 10:39
Unity HTTP Background Worker
while(taskQueue.Count > 0)
{
WebRequest httpRequest = null;
HttpWebResponse response = null;
Stream stream = null;
bool requestSucceeded = false;
var request = taskQueue.Dequeue();
request.Attempts ++;
try{
void OnUSDCurrencyExchange(long? transactionId, double usDollars, string purchasedCurrencyType, double amountPurchased){
if(!transactionId.HasValue){
//transactionId has no value so generate one
transactionId = GetRandomLong();
}
var currencies = new TransactionCurrency[2];
currencies[0] = TransactionCurrency.createReal(Math.Abs(usDollars) * -1, CurrencyType.USD);
currencies[1] = TransactionCurrency.createVirtual(Math.Abs(amountPurchased), purchasedCurrencyType);
Playnomics.instance.transaction(transactionId, TransactionType.CurrencyConvert, currencies, null, null, null);
@jaredjenkins
jaredjenkins / UnityMessagingSetup
Last active December 15, 2015 23:10
Unity Messaging
using PlaynomicsPlugin;
using UntiyEngine;
public class Scene : MonoBehavior {
private MessagingFrame frame;
private bool shown;
private void Awake(){
MessagingFrame frame = Playnomics.instance.initMessagingFrame(<PLAYNOMICS-FRAME-ID>);
//enabled code callbacks, eg PNA
import PlaynomicsPlugin;
function Start () {
Playnomics.instance.startPlaynomics(1234567890123456789L);
}
using UnityEngine;
using PlaynomicsPlugin;
public class FirstScene : MonoBehaviour
{
void Start() {
Playnomics.instance.start(1234567890123456789L, "Z6q3UAtVwcxw35p9y");
}
}
@jaredjenkins
jaredjenkins / Unity PlayRM engagement
Created April 5, 2013 18:50
Initialize the PlayRM engagement module
Playnomics.instance.startPlaynomics(<APPLICATION-ID>, <USERT-ID>);
Playnomics.instance.startPlaynomics(<APPLICATION-ID>);