| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "Wrappers/BsScriptGUIContentImages.h"
- #include "BsScriptResourceManager.h"
- #include "BsScriptSpriteTexture.generated.h"
- namespace bs
- {
- MonoField* ScriptGUIContentImages::mNormalField;
- MonoField* ScriptGUIContentImages::mHoverField;
- MonoField* ScriptGUIContentImages::mActiveField;
- MonoField* ScriptGUIContentImages::mFocusedField;
- MonoField* ScriptGUIContentImages::mNormalOnField;
- MonoField* ScriptGUIContentImages::mHoverOnField;
- MonoField* ScriptGUIContentImages::mActiveOnField;
- MonoField* ScriptGUIContentImages::mFocusedOnField;
- ScriptGUIContentImages::ScriptGUIContentImages(MonoObject* instance)
- :ScriptObject(instance)
- { }
- void ScriptGUIContentImages::initRuntimeData()
- {
- mNormalField = metaData.scriptClass->getField("normal");
- mHoverField = metaData.scriptClass->getField("hover");
- mActiveField = metaData.scriptClass->getField("active");
- mFocusedField = metaData.scriptClass->getField("focused");
- mNormalOnField = metaData.scriptClass->getField("normalOn");
- mHoverOnField = metaData.scriptClass->getField("hoverOn");
- mActiveOnField = metaData.scriptClass->getField("activeOn");
- mFocusedOnField = metaData.scriptClass->getField("focusedOn");
- }
- GUIContentImages ScriptGUIContentImages::getNative(MonoObject* instance)
- {
- GUIContentImages output;
- struct Entry
- {
- Entry(MonoField* field, HSpriteTexture& outputImage)
- :field(field), outputImage(outputImage)
- { }
- MonoField* field;
- HSpriteTexture& outputImage;
- };
- Entry entries[8] =
- {
- { mNormalField, output.normal },
- { mHoverField, output.hover },
- { mActiveField, output.active },
- { mFocusedField, output.focused },
- { mNormalOnField, output.normalOn },
- { mHoverOnField, output.hoverOn },
- { mActiveOnField, output.activeOn },
- { mFocusedOnField, output.focusedOn },
- };
- for (auto& entry : entries)
- {
- MonoObject* managedImage;
- entry.field->get(instance, &managedImage);
- if (managedImage != nullptr)
- entry.outputImage = ScriptSpriteTexture::toNative(managedImage)->getHandle();
- }
- return output;
- }
- MonoObject* ScriptGUIContentImages::getManaged(const GUIContentImages& images)
- {
- struct Entry
- {
- Entry(MonoField* field, const HSpriteTexture& outputImage)
- :field(field), image(outputImage)
- { }
- MonoField* field;
- const HSpriteTexture& image;
- };
- Entry entries[8] =
- {
- { mNormalField, images.normal },
- { mHoverField, images.hover },
- { mActiveField, images.active },
- { mFocusedField, images.focused },
- { mNormalOnField, images.normalOn },
- { mHoverOnField, images.hoverOn },
- { mActiveOnField, images.activeOn },
- { mFocusedOnField, images.focusedOn },
- };
- MonoObject* output = metaData.scriptClass->createInstance();
- for (auto& entry : entries)
- {
- MonoObject* managedImage = nullptr;
- if (entry.image != nullptr)
- {
- ScriptResourceBase* scriptImage = ScriptResourceManager::instance().getScriptResource(entry.image, true);
- managedImage = scriptImage->getManagedInstance();
- }
- entry.field->set(output, managedImage);
- }
- return output;
- }
- }
|