Beispiel #1
0
        public void SetupCosmeticInformation(ViewerAffecterConfig model, DataTreeObject dataTreeParent)
        {
            if (dataTreeParent == null)
            {
                return;
            }
            ViewerEffectConfig effect = model.effect;
            string             cls    = JavaClassNameStripper.GetWholeClassName(effect.getClass());

            if (cls == null)
            {
                XanLogger.WriteLine("WARNING: Attempt to get class of ViewerEffectConfig failed!");
                return;
            }

            DataTreeObjectProperty implementationPropKey = dataTreeParent.FindSimpleProperty("Implementation");
            DataTreeObject         implementationProp    = dataTreeParent.Properties[implementationPropKey].First();

            implementationProp.Text = cls.Replace("$", "::");
            if (effect is Skybox skybox)
            {
                dataTreeParent.ImageKey = SilkImage.Sky;
                string name = skybox.model?.getName();
                if (name == null && dataTreeParent.Parent != null && dataTreeParent.Parent.ImageKey == SilkImage.Schemed)
                {
                    dataTreeParent.ImageKey = SilkImage.Scheme;
                    dataTreeParent.AddSimpleProperty("Data Type", "Render Scheme", SilkImage.Scheme);
                }
                else
                {
                    // Name may still be null here.
                    SilkImage target = name == null ? SilkImage.Missing : SilkImage.ModelSet;
                    dataTreeParent.AddSimpleProperty("Model Reference", name, SilkImage.Reference, target, false);
                }

                Transform3D newTrs = new Transform3D(skybox.translationOrigin, Quaternion.IDENTITY, skybox.translationScale.x);
                dataTreeParent.AddSimpleProperty("Transform", newTrs.toString(), SilkImage.Matrix);
            }
        }
Beispiel #2
0
        public void HandleModelConfig(FileInfo sourceFile, ModelConfig baseModel, List <Model3D> modelCollection, DataTreeObject dataTreeParent = null, Transform3D globalTransform = null, Dictionary <string, dynamic> extraData = null)
        {
            ViewerAffecterConfig vac    = (ViewerAffecterConfig)baseModel.implementation;
            ViewerEffectConfig   effect = vac.effect;

            SetupCosmeticInformation(vac, dataTreeParent);

            SKAnimatorToolsProxy.IncrementEnd();
            if (effect is Skybox skybox)
            {
                string filePathRelativeToRsrc = skybox.model?.getName();
                if (filePathRelativeToRsrc != null)
                {
                    // If this is null, it is okay!
                    // Certain implementations, (for instance, schemed implementations) use this to define their render scheme.

                    if (filePathRelativeToRsrc.StartsWith("/"))
                    {
                        filePathRelativeToRsrc = filePathRelativeToRsrc.Substring(1);
                    }
                    FileInfo referencedModel = new FileInfo(ResourceDirectoryGrabber.ResourceDirectoryPath + filePathRelativeToRsrc);
                    if (!referencedModel.Exists)
                    {
                        throw new ClydeDataReadException($"ViewerEffectConfig::Skybox at [{ResourceDirectoryGrabber.GetFormattedPathFromRsrc(sourceFile, false)}] attempted to reference [{filePathRelativeToRsrc}], but this file could not be found!");
                    }

                    // Note to self: DO NOT USE SCALE.
                    // The scale value of skyboxes is used for a parallax effect (the scale = "how much does the skybox move relative to the camera")
                    // Applying this scale is not proper.
                    Transform3D newTrs = new Transform3D(skybox.translationOrigin, Quaternion.IDENTITY);

                    // Now one thing to note is that transforms do NOT affect skyboxes.
                    // As such, the new translation should NOT be affected by the global transform.
                    ClydeFileHandler.HandleClydeFile(referencedModel, modelCollection, false, dataTreeParent, false, newTrs);
                }
            }
            SKAnimatorToolsProxy.IncrementProgress();
        }