public static void Set(EffectVariable variable, object o, int len) {
if (o == null) {
// TODO (?)
} else {
CacheObject cobj;
if (!Cache.TryGetValue(len, out cobj)) {
cobj = new CacheObject(len);
Cache[len] = cobj;
Debug.WriteLine("CACHED MEMORY AREA CREATED: " + len);
}
Marshal.StructureToPtr(o, cobj.Pointer, true);
Marshal.Copy(cobj.Pointer, CacheObject.Array, 0, len);
variable.SetRawValue(cobj.Data, len);
}
}