コード例 #1
0
    public static IEnumerator RenderOutfit(DCustomOutfit outfit, Color beakColor, Color bodyColor, Color bellyColor, ImageBuilderCameraData cameraData, GameObject avatarGO, Func <ModelRenderer, bool> onProcessModel, AvatarAnimationFrame animationFrame = null)
    {
        AvatarModel avatarModel = avatarGO.GetComponent <AvatarModel>();

        avatarModel.BeakColor  = beakColor;
        avatarModel.BodyColor  = bodyColor;
        avatarModel.BellyColor = bellyColor;
        avatarModel.ClearAllEquipment();
        avatarModel.ApplyOutfit(outfit);
        AvatarView avatarView = avatarGO.GetComponent <AvatarView>();

        yield return(new WaitUntil(() => avatarView.IsReady));

        ModelRendererConfig renderConfig = new ModelRendererConfig(avatarGO.transform, cameraData.ModelOffset, new Vector2(cameraData.IconSize, cameraData.IconSize));

        avatarGO.transform.Rotate(cameraData.ModelRotation);
        renderConfig.FieldOfView = cameraData.FieldOfView;
        ModelRenderer modelRenderer = new ModelRenderer(renderConfig);

        modelRenderer.RotateCamera(cameraData.CameraRotation);
        if (animationFrame != null)
        {
            Animator component = avatarGO.GetComponent <Animator>();
            component.Play(animationFrame.StateName, animationFrame.Layer, animationFrame.Time);
        }
        do
        {
            yield return(null);
        }while (onProcessModel(modelRenderer));
    }
コード例 #2
0
    private IEnumerator renderToTexture(ItemRenderParams param)
    {
        param.OutputTexture = null;
        DCustomEquipment equipment = param.equipment;
        int equipmentTemplateId    = equipment.DefinitionId;
        Dictionary <int, TemplateDefinition> templates = Service.Get <GameData>().Get <Dictionary <int, TemplateDefinition> >();

        if (!templates.ContainsKey(equipmentTemplateId))
        {
            Log.LogErrorFormatted(this, "Unable to locate template {0} in template definitions with id {1}.", equipment.Name, equipmentTemplateId);
            yield break;
        }
        TemplateDefinition templateDefinition = templates[equipmentTemplateId];
        AssetRequest <TemplateRenderData> templateRequest;

        try
        {
            templateRequest = Content.LoadAsync(templateDefinition.RenderDataKey);
        }
        catch (Exception)
        {
            Log.LogErrorFormatted(this, "Could not load render data for template definition {0} at {1}.", templateDefinition.Name, templateDefinition.RenderDataKey.Key);
            yield break;
        }
        if (templateRequest != null)
        {
            yield return(templateRequest);

            TemplateRenderData templateRenderData = templateRequest.Asset;
            penguin.transform.rotation = templateRenderData.ItemRotation;
            ModelRendererConfig config = new ModelRendererConfig(penguin.transform, templateRenderData.ItemPosition, new Vector2(256f, 256f))
            {
                FieldOfView               = templateRenderData.CameraFOV,
                FrameObjectInCamera       = false,
                UseOcclusionCulling       = false,
                AutoDestroyObjectToRender = false
            };
            if (param.BackgroundColor != Color.clear)
            {
                config.CameraBackgroundColor = param.BackgroundColor;
                config.UseSolidBackground    = true;
            }
            ModelRenderer modelRenderer = new ModelRenderer(config);
            modelRenderer.RotateCamera(templateRenderData.CameraRotation.eulerAngles);
            yield return(new WaitForEndOfFrame());

            param.OutputTexture = modelRenderer.Image;
            modelRenderer.Destroy();
        }
    }
コード例 #3
0
    private IEnumerator renderToTexture(RenderParams param, GameObject decorationGameObject, StructureRenderData decorationRenderData)
    {
        ModelRendererConfig config = new ModelRendererConfig(decorationGameObject.transform, decorationRenderData.ItemPosition, new Vector2(256f, 256f))
        {
            FieldOfView               = decorationRenderData.CameraFOV,
            FrameObjectInCamera       = false,
            UseOcclusionCulling       = false,
            AutoDestroyObjectToRender = true
        };

        if (param.BackgroundColor != Color.clear)
        {
            config.CameraBackgroundColor = param.BackgroundColor;
            config.UseSolidBackground    = true;
        }
        ModelRenderer modelRenderer = new ModelRenderer(config);

        modelRenderer.RotateCamera(decorationRenderData.CameraRotation.eulerAngles);
        yield return(new WaitForEndOfFrame());

        param.OutputTexture = modelRenderer.Image;
        modelRenderer.Destroy();
    }
コード例 #4
0
 public ModelRenderer(ModelRendererConfig config)
 {
     this.config = config;
     init();
 }