Files
opennurbs/opennurbs_rendering.h
Bozo The Builder 01cdb463e6 Sync changes from upstream repository
Co-authored-by: Andrew Le Bihan <andy@mcneel.com>
Co-authored-by: chuck <chuck@mcneel.com>
Co-authored-by: Dale Fugier <dale@mcneel.com>
Co-authored-by: Dale Lear <dalelear@mcneel.com>
Co-authored-by: David Eränen <david.eranen@mcneel.com>
Co-authored-by: Greg Arden <greg@mcneel.com>
Co-authored-by: John Croudy <john.croudy@mcneel.com>
Co-authored-by: Lowell Walmsley <lowell@mcneel.com>
Co-authored-by: Nathan Letwory <nathan@mcneel.com>
Co-authored-by: piac <giulio@mcneel.com>
Co-authored-by: Steve Baer <steve@mcneel.com>
Co-authored-by: Tim Hemmelman <tim@mcneel.com>
2020-03-12 09:00:26 -07:00

219 lines
5.3 KiB
C++

/* $NoKeywords: $ */
/*
//
// Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved.
// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
// McNeel & Associates.
//
// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
// MERCHANTABILITY ARE HEREBY DISCLAIMED.
//
// For complete openNURBS copyright information see <http://www.opennurbs.org>.
//
////////////////////////////////////////////////////////////////
*/
#if !defined(OPENNURBS_RENDERING_INC_)
#define OPENNURBS_RENDERING_INC_
class ON_CLASS ON_RenderingAttributes
{
public:
ON_RenderingAttributes();
void Default();
int Compare( const ON_RenderingAttributes& other ) const;
bool Write( ON_BinaryArchive& archive ) const;
bool Read( ON_BinaryArchive& archive );
bool IsValid( ON_TextLog* text_log ) const;
const ON_MaterialRef* MaterialRef( const ON_UUID& plugin_id ) const;
ON_ClassArray<ON_MaterialRef> m_materials;
};
class ON_CLASS ON_ObjectRenderingAttributes : public ON_RenderingAttributes
{
public:
ON_ObjectRenderingAttributes();
void Default();
int Compare( const ON_ObjectRenderingAttributes& other ) const;
bool Write( ON_BinaryArchive& archive ) const;
bool Read( ON_BinaryArchive& archive );
bool IsValid( ON_TextLog* text_log ) const;
/*
Description:
Update mapping channel transformations.
Parameters:
xform - [in]
Transformation applied to parent object.
Returns:
True is successful. False if there are mapping channels
and xform cannot be inverted.
*/
bool Transform( const ON_Xform& xform );
/*
Parameters:
plugin_id - [in]
Returns:
A pointer to the plug-in's mapping reference, if there
is one. Otherwise nullptr is returned.
*/
const ON_MappingRef* MappingRef(
const ON_UUID& plugin_id
) const;
/*
Parameters:
plugin_id - [in]
Returns:
If a mapping ref exists, it is returned. Otherwise
one is added.
*/
ON_MappingRef* AddMappingRef(
const ON_UUID& plugin_id
);
/*
Parameters:
plugin_id - [in]
Returns:
If a mapping ref exists, it is returned. Otherwise
one is added.
*/
bool DeleteMappingRef(
const ON_UUID& plugin_id
);
/*
Parameters:
plugin_id - [in]
mapping_channel_id - [in]
mapping_id - [in]
ON_TextureMapping id
Returns:
A pointer to the plug-in's mapping channel, if there
is one. Otherwise nullptr is returned.
*/
const ON_MappingChannel* MappingChannel(
const ON_UUID& plugin_id,
int mapping_channel_id
) const;
const ON_MappingChannel* MappingChannel(
const ON_UUID& plugin_id,
const ON_UUID& mapping_id
) const;
/*
Returns:
The mapping channel id to use when calling MappingChannel to retrieve the OCS mapping if there is one.
See CRhinoTextureMapping::OcsMappingTransformForObject for an easy helper function to get the transform per object
*/
static int OCSMappingChannelId(void);
/*
Parameters:
plugin_id - [in]
mapping_channel_id - [in]
mapping_id - [in]
ON_TextureMapping id
Returns:
True if the mapping channel was added or a pefect
match already existed. False if a mapping channel
with a different mapping_id already exists for this
plug-in and channel.
*/
bool AddMappingChannel(
const ON_UUID& plugin_id,
int mapping_channel_id,
const ON_UUID& mapping_id
);
/*
Parameters:
plugin_id - [in]
mapping_channel_id - [in]
mapping_id - [in]
ON_TextureMapping id
Returns:
True if a matching mapping channel was deleted.
*/
bool DeleteMappingChannel(
const ON_UUID& plugin_id,
int mapping_channel_id
);
bool DeleteMappingChannel(
const ON_UUID& plugin_id,
const ON_UUID& mapping_id
);
/*
Parameters:
plugin_id - [in]
old_mapping_channel_id - [in]
new_mapping_channel_id - [in]
Returns:
True if a matching mapping channel was found and changed.
*/
bool ChangeMappingChannel(
const ON_UUID& plugin_id,
int old_mapping_channel_id,
int new_mapping_channel_id
);
// Use AddMappingRef() or AddMappingChannel() if you
// want to add an element to this array.
//
// Every mapping ref in this array must have
// a distinct value of ON_MappingRef.m_plugin_id.
ON_ClassArray<ON_MappingRef> m_mappings;
/*
Parameters:
bEnable - [in]
false - (default)
Do not generate bitmap textures that
approximate procedural textures.
true -
generate bitmap textures that approximate
procedural textures and use these for
quick previews.
Returns:
True if advancded texture preview is enabled.
*/
void EnableAdvancedTexturePreview(bool b);
/*
Returns:
True if advancded texture preview is enabled.
*/
bool AdvancedTexturePreview() const;
bool m_bCastsShadows; // default is true
bool m_bReceivesShadows; // default is true
private:
// m_bits encodes 8 true/false settings
unsigned char m_bits; // (m_bits & 1) == AdvancedTexturePreview();
unsigned char m_reserved1;
};
#if defined(ON_DLL_TEMPLATE)
ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_RenderingAttributes>;
ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_ObjectRenderingAttributes>;
#endif
#endif