Beispiel #1
0
 public override SupportInfo GetSupportInfo(LeapGraphicGroup group)
 {
     if (!group.renderingMethod.IsValidGraphic <LeapMeshGraphicBase>())
     {
         return(SupportInfo.Error("Blend shapes require a renderer that supports mesh graphics."));
     }
     else
     {
         return(SupportInfo.FullSupport());
     }
 }
Beispiel #2
0
 public override SupportInfo GetSpaceSupportInfo(LeapSpace space)
 {
     if (space == null ||
         space is LeapCylindricalSpace ||
         space is LeapSphericalSpace)
     {
         return(SupportInfo.FullSupport());
     }
     else
     {
         return(SupportInfo.Error("Dynamic Renderer does not support " + space.GetType().Name));
     }
 }
        public override SupportInfo GetSupportInfo(LeapGraphicGroup group)
        {
            foreach (var feature in group.features)
            {
                if (feature == this)
                {
                    continue;
                }

                var channelFeature = feature as ICustomChannelFeature;
                if (channelFeature != null && channelFeature.channelName == channelName)
                {
                    return(SupportInfo.Error("Cannot have two custom channels with the same name."));
                }
            }

            return(SupportInfo.FullSupport());
        }
        public void RebuildFeatureSupportInfo()
        {
            using (new ProfilerSample("Rebuild Support Info")) {
                var typeToFeatures = new Dictionary <Type, List <LeapGraphicFeatureBase> >();
                foreach (var feature in _features)
                {
                    Type featureType = feature.GetType();
                    List <LeapGraphicFeatureBase> list;
                    if (!typeToFeatures.TryGetValue(featureType, out list))
                    {
                        list = new List <LeapGraphicFeatureBase>();
                        typeToFeatures[featureType] = list;
                    }

                    list.Add(feature);
                }

                var featureToInfo = new Dictionary <LeapGraphicFeatureBase, SupportInfo>();

                foreach (var pair in typeToFeatures)
                {
                    var featureType = pair.Key;
                    var featureList = pair.Value;
                    var infoList    = new List <SupportInfo>().FillEach(featureList.Count, () => SupportInfo.FullSupport());

                    var castList = Activator.CreateInstance(typeof(List <>).MakeGenericType(featureType)) as IList;
                    foreach (var feature in featureList)
                    {
                        castList.Add(feature);
                    }

                    try {
                        if (_renderingMethod.Value == null)
                        {
                            continue;
                        }

                        var interfaceType = typeof(ISupportsFeature <>).MakeGenericType(featureType);
                        if (!interfaceType.IsAssignableFrom(_renderingMethod.Value.GetType()))
                        {
                            infoList.FillEach(() => SupportInfo.Error("This renderer does not support this feature."));
                            continue;
                        }

                        var supportDelegate = interfaceType.GetMethod("GetSupportInfo");

                        if (supportDelegate == null)
                        {
                            Debug.LogError("Could not find support delegate.");
                            continue;
                        }

                        supportDelegate.Invoke(_renderingMethod.Value, new object[] { castList, infoList });
                    } finally {
                        for (int i = 0; i < featureList.Count; i++)
                        {
                            featureToInfo[featureList[i]] = infoList[i];
                        }
                    }
                }

                _supportInfo = new List <SupportInfo>();
                foreach (var feature in _features)
                {
                    _supportInfo.Add(feature.GetSupportInfo(this).OrWorse(featureToInfo[feature]));
                }
            }
        }
Beispiel #5
0
 public virtual SupportInfo GetSupportInfo(LeapGraphicGroup group)
 {
     return(SupportInfo.FullSupport());
 }
 public override SupportInfo GetSpaceSupportInfo(LeapSpace space)
 {
     return(SupportInfo.FullSupport());
 }